Changeset 9
- Timestamp:
- 22/09/2011 12:54:08 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/workshop-foss4g/introduction.rst
r8 r9 74 74 Les index spatiaux actuellement utilisés par les différents systÚme de gestion de bases de données varient considérablement. L'implémentation la plus commune est l'`arbre R <http://en.wikipedia.org/wiki/R-tree>`_ (utilisé dans PostGIS), mais il existe aussi des implémentations de type `Quadtrees <http://en.wikipedia.org/wiki/Quadtree>`_, et des `indexes basés sur une grille <http://en.wikipedia.org/wiki/Grid_(spatial_index)>`_. 75 75 76 Fonctions spatiales76 Les Fonctions spatiales 77 77 ------------------- 78 78 79 For manipulating data during a query, an ordinary database provides **functions** such as concatenating strings, performing hash operations on strings, doing mathematics on numbers, and extracting information from dates. A spatial database provides a complete set of functions for analyzing geometric components, determining spatial relationships, and manipulating geometries. These spatial functions serve as the building block for any spatial project. 80 81 The majority of all spatial functions can be grouped into one of the following five categories: 82 83 #. **Conversion**: Functions that *convert* between geometries and external data formats. 84 #. **Management**: Functions that *manage* information about spatial tables and PostGIS administration. 85 #. **Retrieval**: Functions that *retrieve* properties and measurements of a Geometry. 86 #. **Comparison**: Functions that *compare* two geometries with respect to their spatial relation. 87 #. **Generation**: Functions that *generate* new geometries from others. 88 89 The list of possible functions is very large, but a common set of functions is defined by the :term:`OGC` :term:`SFSQL` and implemented (along with additional useful functions) by PostGIS. 90 91 What is PostGIS? 92 ================ 93 94 PostGIS turns the `PostgreSQL <http://www.postgresql.org/>`_ Database Management System into a spatial database by adding adding support for the three features: spatial types, indexes, and functions. Because it is built on PostgreSQL, PostGIS automatically inherits important "enterprise" features as well as open standards for implementation 95 96 But what is PostgreSQL? 97 ----------------------- 98 99 PostgreSQL is a powerful, object-relational database management system (ORDBMS). It is released under a BSD-style license and is thus free and open source software. As with many other open source programs, PostgreSQL is not controlled by any single company, but has a global community of developers and companies to develop it. 100 101 PostgreSQL was designed from the very start with type extension in mind -- the ability to add new data types, functions and access methods at run-time. Because of this, the PostGIS extension can be developed by a separate development team, yet still integrate very tightly into the core PostgreSQL database. 102 103 Why choose PostgreSQL? 104 ~~~~~~~~~~~~~~~~~~~~~~ 105 106 A common question from people familiar with open source databases is, "Why wasn't PostGIS built on MySQL?". 107 108 PostgreSQL has: 109 110 * Proven reliability and transactional integrity by default (ACID) 111 * Careful support for SQL standards (full SQL92) 112 * Pluggable type extension and function extension 113 * Community-oriented development model 114 * No limit on column sizes ("TOAST"able tuples) to support big GIS objects 115 * Generic index structure (GiST) to allow R-Tree index 116 * Easy to add custom functions 117 118 Combined, PostgreSQL provides a very easy development path to add new spatial types. In the proprietary world, only Illustra (now Informix Universal Server) allows such easy extension. This is no coincidence; Illustra is a proprietary re-working of the original PostgreSQL code base from the 1980's. 119 120 Because the development path for adding types to PostgreSQL was so straightforward, it made sense to start there. When MySQL released basic spatial types in version 4.1, the PostGIS team took a look at their code, and the exercise reinforced the original decision to use PostgreSQL. Because MySQL spatial objects had to be hacked on top of the string type as a special case, the MySQL code was spread over the entire code base. Development of PostGIS 0.1 took under a month. Doing a "MyGIS" 0.1 would have taken a lot longer, and as such, might never have seen the light of day. 121 122 Why not Shapefiles? 123 ------------------- 124 125 The `shapefile <http://en.wikipedia.org/wiki/Shapefile>`_ (and other file formats) have been the standard way of storing and interacting with spatial data since GIS software was first written. However, these "flat" files have the following disadvantages: 126 127 * **Files require special software to read and write.** SQL is an abstraction for random data access and analysis. Without that abstraction, you will need to write all the access and analysis code yourself. 128 * **Concurrent users can cause corruption.** While it's possible to write extra code to ensure that multiple writes to the same file do not corrupt the data, by the time you have solved the problem and also solved the associated performance problem, you will have written the better part of a database system. Why not just use a standard database? 129 * **Complicated questions require complicated software to answer.** Complicated and interesting questions (spatial joins, aggregations, etc) that are expressible in one line of SQL in the database take hundreds of lines of specialized code to answer when programming against files. 130 131 Most users of PostGIS are setting up systems where multiple applications will be expected to access the data, so having a standard SQL access method simplifies deployment and development. Some users are working with large data sets; with files, they might be segmented into multiple files, but in a database they can be stored as a single large table. 132 133 In summation, the combination of support for multiple users, complex ad hoc queries, and performance on large data sets are what sets spatial databases apart from file-based systems. 134 135 A brief history of PostGIS 136 -------------------------- 137 138 In the May of 2001, `Refractions Research <http://www.refractions.net/>`_ released the first version of PostGIS. PostGIS 0.1 had objects, indexes and a handful of functions. The result was a database suitable for storage and retrieval, but not analysis. 139 140 As the number of functions increased, the need for an organizing principle became clear. The "Simple Features for SQL" (:term:`SFSQL`) specification from the Open Geospatial Consortium provided such structure with guidelines for function naming and requirements. 141 142 With PostGIS support for simple analysis and spatial joins, `Mapserver <http://mapserver.org/>`_ became the first external application to provide visualization of data in the database. 143 144 Over the next several years the number of PostGIS functions grew, but its power remained limited. Many of the most interesting functions (e.g., ST_Intersects(), ST_Buffer(), ST_Union()) were very difficult to code. Writing them from scratch promised years of work. 145 146 Fortunately a second project, the "Geometry Engine, Open Source" or `GEOS <http://trac.osgeo.org/geos>`_, came along. The GEOS library provides the necessary algorithms for implementing the :term:`SFSQL` specification. By linking in GEOS, PostGIS provided complete support for :term:`SFSQL` by version 0.8. 79 Pour manipuler les données lors d'une requête, une base de données classique fournit des **fonctions** comme la concaténation de chaînes de caractÚres, le cacul de la clef md5 d'une chaîne, la réalisation d'opérations mathématiques sur les nombres ou l'extraction d'informations spécifiques sur une date. Une base de données spatiales fournit un ensemble complet de fonctions pour analyser les composants géographiques, déterminer les relations spatiales et manipuler les objets géographiques. Ces fonctions spatiales servent de piÚce de légo pour de noombreux projet SIG. 80 81 La majorité des fonctions spatiales peuvent être regroupées dans l'une des cinq catégories suivantes : 82 83 #. **Conversion**: fonctions qui *convertissent* les données géographiques dans un format externe.. 84 #. **Gestion**: fonctions qui permettre de *gérer* les informations relatives aux tables spatiales et l'administration de PostGIS. 85 #. **Récupération**: fonctions qui permettent de *récupérer* les propriété et les mesures d'une géométrie. 86 #. **Comparaison**: fonctions qui permettent de *comprer* deux géométries en respectant leur relations spatiales. 87 #. **Contruction**: fonctions qui permettent de *construire* de nouvelles géométrie à partir d'autre. 88 89 La liste des fonctions possibles est trÚs vaste, mais un ensemble communs à l'ensemble des implémentation est défini par la spécification term:`OGC` :term:`SFSQL` et sont implémentées (ainsi que certaines supplémentaires) dans PostGIS. 90 91 92 Quest-ce que PostGIS ? 93 ====================== 94 95 PostGIS confÚre au `systÚme de gestion de base de données PostgreSQL <http://www.postgresql.org/>`_ le status de base de données spatiales en ajoutant les trois supports suivants : les types de données spatiales, les indexes et les fonctions. Ãtant donné que cela est basé sur PostgreSQL, PostGIS bénéficie automatiquement des capacités orienté "entreprise" ainsi que le respect des standards de cette implémentation. 96 97 Mais qu'est-ce que PostgreSQL ? 98 ------------------------------- 99 100 PostgreSQL est une puissant systÚme de gestion de données relationel à objets (SGBDRO). Il a été publié sous la licence de style BSD et est donc un logiciel libre. Comme avec beaucoup de logiciels libres, PostgreSQL n'est pas controlé par une société unique mais par une communauté de développeurs et de sociétés qui le développer. 101 102 PostgreSQL a été conçu depuis le début en conservant à l'esprit qu'il serait potentiellement nécessaire de l'étendre à l'aide d'extensions particuliÚres -- la possibilité d'ajouter de nouveau types, des nouvelles fonctions et des méthodes d'accÚs à chaud. Grâce à cela, une extension de PostgreSQL peut être développé par une équipe de développement séparé, bien que le lien soit encore trÚs fortement lié au coeur de la base de données PostgreSQL. 103 104 Pourquoi choisir PostgreSQL ? 105 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 106 107 Une question que se pose souvent les gens familliés avec les bases de données libres est : "Pourquoi PostGIS n'a pas été basé sur MySQL ?" 108 109 PostgreSQL a: 110 111 * prouvé sa fiabilité et respect l'intégrité des données ( propriétés ACID) 112 * un support soigneux des standard SQL (respecte la norme SQL92) 113 * un support pour le développement d'extensions et de nouvelles fonctions 114 * un modÚle de développement orienté communauté 115 * pas de limite sur la taille des colonne (les tuples peuvent être "TOAST"és) pour supporter des objets géographiques 116 * un structure d'index générique (GiST) permettant l'indéxation à l'aide d'abres R 117 * facile ajout de fonctions personalisées 118 119 Tout ceci combiné, PostgreSQL permet un cheminement simple du développement nécessaire à l'ajout des types spatiaux. Dans le monde propriétaires, seul Illustra (maintenant Informix Universal Server) permet une extension aussi simple. Ceci n'est pas une cohincidence, Illustra estune version propriétaire modifiées du code original de PostgreSQL publié dans les années 1980. 120 121 Puisque le cheminement du développement nécessaire à l'ajout de types à PostgreSQL est direct, il semblé naturel de commencer par là . Lorsque MySQL a publié des types de données spatiales de base dans sa version 4.1, l'équipe de PostGIS a jeuté un coup d'oueil dans leur code et cela a confirmé le choix initial d'utiliser PostgreSQL. Puisque les objets géographiques de MySQL doivent être considérés comme un cas particulier de chaînes de caractÚres, le code de MySQL a été diffus dans l'intégralité du code de base. Le développement de PostGIS version 0.1 a prit un mois. Réaliser un projet "MyGIS" 0.1 aurait prit beaucoup plus de temps, c'est sans doute pourquoi il n'a jamais vu le jour. 122 123 Pourquoi pas des fichier Shapefile ? 124 ------------------------------------ 125 126 Les fichiers `shapefile <http://en.wikipedia.org/wiki/Shapefile>`_ (et les autres formats) ont été la maniÚre standard de stoquer et d'interragir avec les données spatiales depuis l'origine des SIG. Néanmoins, ces fichiers "plats" ont les inconvénients suivants : 127 128 * **Les fichier au formats SIG requiÚrent un logiciel spécifique pour les lire et les écrire.** Le langage SQL est une abstraction de l'accÚs alléatoire au données et à leur analyse. Sans cette bastraction, vous devrez développer l'accÚs et l'anayse par cos propre moyens. 129 * **L'accÚs concurent au données peut entraine foier un stoquage de données corrompues.** Alors qu'il est possible d'écrire du code supplémentaire afin de garantir la cohérence des données, une fois ce problÚme solutionné et celui de la performance associée, vous aurez re-écrit la partie la plus important d'un systÚme de base de données. Pourquoi ne pas simplement utilisé une base de données standard dans ce cas ? 130 * **Les questions compliquées nécessitent des logiciels compliqués pour y répondre.** Les question intéressantes et compliquées (jointures spatiales, aggrégations, etc) qui sont exprimables en une ligne de SQL grâce à la base de données, nécessitent une centaines de lignes de code spécifiques pour y répondre dans le cas de fichiers. 131 132 La plupart des utilisateurs de PostGIS ont mis en place des systÚmes où diverses applications sont succeptible d'accéder aux données, donc avoir les méthodes d'accÚs SQL standard simplifit le déploiement et le développement. Certains utilisateurs travaille avec de grand jeux de données, avec des fichiers, qui peuvent être segmenté en plusieurs fichiers, mais dans une base de données ces données peuvent être stoqué dans une seule grande table. 133 134 En résumé, la combinaison du support de l'accÚs cocurent, des requêtes complexes spécifiques et de la performance sur de grand jeux de données sont ce qui différencies les base de données spatiales des systÚmes utilisant des fichiers. 135 136 Un bref histoirique de PostGIS 137 ------------------------------ 138 139 En mai 2001, la société `Refractions Research <http://www.refractions.net/>`_ publie la permiÚre version de PostGIS. PostGIS 0.1 fournissait les objets, les indexes et des fonctions utilies. Le résultat était une base de données permettant le stockage et l'accÚs mais pas encore l'analyse. 140 141 Comme le nombre de fonctions augmenté, le besoin d'un principe d'organisation devint clair. La spécification "Simple Features for SQL" (:term:`SFSQL`) publiée par l'Open Geospatial Consortium fournit une telle structure avec des indications pour le nommage des fonctions et les pré-requis. 142 143 Avec le support dans PostGIS de simples fonctions d'analises et de jointures spatiales, 144 `Mapserver <http://mapserver.org/>`_ devint la premiÚre application externe permettant de visualiser les données de la base de données. 145 146 Au cours de ces derniÚres années le nombre de focntions fournies par PostGIS grandit, mais sa puissance restait limité. La plupart des fonctions interressantes (ex : ST_Intersects(), ST_Buffer(), ST_Union()) étaient difficile à implémenter. Les écrire en repartant du début promettait des années de travail. 147 148 Heureusement un second projet, la librarie "Geometry Engine, Open Source" or `GEOS <http://trac.osgeo.org/geos>`_ arriva. Cette librairie fournit l'ensemble des algorythmes nécessaire à l'implémentation de la spécification :term:`SFSQL` . En se liant à GEOS, PostGIS fournit alors le support complet de la :term:`SFSQL` depuis la version 0.8. 147 149 148 150 As PostGIS data capacity grew, another issue surfaced: the representation used to store geometry proved relatively inefficient. For small objects like points and short lines, the metadata in the representation had as much as a 300% overhead. For performance reasons, it was necessary to put the representation on a diet. By shrinking the metadata header and required dimensions, overhead greatly reduced. In PostGIS 1.0, this new, faster, lightweight representation became the default.
Note: See TracChangeset
for help on using the changeset viewer.