Bienvenue sur PostGIS.fr

Bienvenue sur PostGIS.fr , le site de la communauté des utilisateurs francophones de PostGIS.

PostGIS ajoute le support d'objets géographique à la base de données PostgreSQL. En effet, PostGIS "spatialise" le serverur PostgreSQL, ce qui permet de l'utiliser comme une base de données SIG.

Maintenu à jour, en fonction de nos disponibilités et des diverses sorties des outils que nous testons, nous vous proposons l'ensemble de nos travaux publiés en langue française.


Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/workshop-foss4g/introduction.rst

    r60 r1  
    11.. _introduction: 
    22 
    3 Partie 1 : Introduction 
     3Partie 1 : Introduction  
    44************************ 
    55 
     
    77============================================ 
    88 
    9 PostGIS est une base de données spatiale. Oracle Spatial et SQL Server 2008 sont aussi des bases de données spatiales. Mais qu'est-ce que cela signifie? Qu'est-ce qui différencie un serveur de base de données spatiales d'un serveur de base de données non spatiale ? 
     9PostGIS est une base de données spatiales. Oracle Spatial et SQL Server 2008 sont aussi des bases de données spatiales. Mais qu'est-ce que cela signifie, qu'est-ce qui différentie un serveur de base de données spatiales d'un non spatiale ? 
    1010 
    1111La réponse courte, est ... 
    1212 
    13 **Les bases de données spatiales permettent le stockage et la manipulation des objets spatiaux comme les autres objets de la base de données.** 
    14  
    15 Ce qui suit présente briÚvement l'évolution des bases de données spatiales, puis les liens 
    16 entre les données spatiales et la base de données (types de données, index et fonctions). 
    17  
    18 #. **Types de données spatiales** fait référence aux géométries de type point, ligne et polygone; 
    19 #. L'**indexation spatiale** est utilisée pour améliorer les performances d'exécution des opérations spatiales; 
    20 #. Les **fonctions spatiales**, au sens :term:`SQL`, sont utilisées pour accéder à des propriétés ou à des relations spatiales. 
    21  
    22 Utilisés de maniÚre combinée, les types de données spatiales, les index et les fonctions fournissent une structure flexible pour optimiser les performances et les analyses. 
     13**Les base de données spatiales permettent les stocage et la manipulation des objets spatiaux comme les autres objets de la base de données.** 
     14 
     15Ce qui suit présente briÚvement l'évolution des base de données spatiales, puis les liens 
     16entre les données spatiales et la base de données (types de données, indexes et fonctions). 
     17 
     18#. **Types de données spatiales** fait référence aux géométries de type point, ligne et polygone;  
     19#. L'**indexation spatiale** est utilisée pour améliorer les performance d'exécution des opérations spatiales; 
     20#. Les **fonctions spatiales**, au sens :term:`SQL`, sont utilsées pour accéder à des propriétées ou des relations spatiales. 
     21 
     22Conbiné, les types de données spatiales, les indexes et les fonctions fournissent une structure flexible pour optimiser les performance et les analyses. 
    2323 
    2424Au commencement 
    2525---------------- 
    2626 
    27 Dans les premiÚres implémentations :term:`SIG`, toutes les données spatiales étaient stockées sous la forme de fichiers plats et certaines applications :term:`SIG` spécifiques étaient nécessaires pour les interpréter et les manipuler. Ces outils de gestion de premiÚre génération avaient été conçus pour répondre aux besoins des utilisateurs pour lesquels toutes les données étaient localisées au sein de leur agence. Ces outils propriétaires étaient des systÚmes specifiquement créés pour gérer les données spatiales. 
    28  
    29 La seconde génération des systÚmes de gestion de données spatiales stockait certaines données dans une base de données relationelle (habituellement les "attributs" ou autres parties non spatiales) mais ne fournissaient pas encore la flexibilité offerte par une intégration complÚte des données spatiales. 
    30  
    31 **Effectivement, les bases de données spatiales sont nées lorsque les gens ont commencé à considérer les objet spatiaux comme les autres objets d'une base de données .** 
    32  
    33 Les bases de données spatiales intÚgrent les données spatiales sous forme d'objets de la base de données relationnelle. Le changement opéré passe d'une vision centrée sur le SIG à une vision centrée sur les bases de données. 
     27Dans les premiÚres implémentations :term:`SIG` historiques, toutes les données  
     28spatiales étaient stoquées sous la forme de fichiers plats et certaines applications  
     29 :term:`SIG` spécifiques étaient nécessaires pour interpréter et manipuler les données. 
     30Ces outils de gestion de premiÚre génération, avaient été conçu pour répondre aux  
     31besoins des utilisateurs pour lesquels toute les données étaient localisé au sein de leur 
     32agence. C'est outils étaient propriétaire, des systÚme specifiquement créé pour gérer les  
     33données spatiales. 
     34 
     35La seconde génération des systÚmes de gestion de données spatiales stoque certaines données dans une base de données relationelle  
     36 
     37Second-generation spatial systems store some data in relational databases (usually the "attribute" or non-spatial parts) but still lack the flexibility afforded with direct integration.   
     38 
     39**Effectivement, les bases de données spatiales sont nés lorsque les gens ont commencé à considérer les objet spatiaux comme des objets de base de données.**   
     40 
     41Spatial databases fully integrate spatial data with an object relational database.  The orientation changes from GIS-centric to database-centric.      
    3442 
    3543.. image:: ./introduction/beginning.png 
    3644 
    37 .. note:: Un systÚme de gestion de base de données peut être utilisé dans d'autres cadres que celui des SIG. Les bases de données spatiales sont utilisées dans divers domaines : l'anatomie humaine, les circuits intégrés de grandes envergures, les structures moléculaires, les champs electro-magnétiques et bien d'autres encore. 
    38  
    39  
    40 Les types de données spatiales 
    41 ------------------------------ 
    42  
    43 Une base de données classique propose par exemple les types chaînes de caractÚres et date. Une base de données spatiales ajoute les types de données (spatiales) pour représenter les **entités géographiques**. Ces types de données spatiales permettent d'accéder à des propriétés de l'entité géographique comme ses contours ou sa dimension. Pour bien des aspects, les types de données spatiales peuvent être vus simplement comme des formes. 
     45.. note:: A spatial database management system may be used in applications besides the geographic world.  Spatial databases are used to manage data related to the anatomy of the human body, large-scale integrated circuits, molecular structures, and electro-magnetic fields, among others. 
     46 
     47 
     48Spatial Data Types 
     49------------------ 
     50 
     51An ordinary database has strings, numbers, and dates. A spatial database adds additional (spatial) types for representing **geographic features**. These spatial data types abstract and encapsulate spatial structures such as boundary and dimension. In many respects, spatial data types can be understood simply as shapes.   
    4452 
    4553.. image:: ./introduction/hierarchy.png 
    4654   :align: center 
    4755 
    48 Les types de données spatiales sont organisés par une hiérarchie de type. Chaque sous-type hérite de la structure (les attributs) et du comportement (les méthodes et fonctions) de son type supérieur dans la hierarchie. 
    49  
    50  
    51 Index spatiaux et étendue 
    52 --------------------------- 
    53  
    54 Une base de données ordinaire fournit des "méthodes d'accÚs" -- connues sous le nom d'**index** -- pour permettre un accÚs efficace et non séquentiel à un sous ensemble de données. L'indexation des types non géographiques (nombre, chaînes de caractÚres, dates) est habituellement faite à l'aide des index de type `arbres binaires <http://en.wikipedia.org/wiki/B-tree>`__. Un arbre binaire est un partitionnement des données utilisant l'ordre naturel pour stocker les données hiérarchiquement. 
    55  
    56 L'ordre naturel des nombres, des chaînes de caractÚres et des dates est assez simple à déterminer -- chaque valeur est inférieure, plus grande ou égale à toutes les autres valeurs. Mais, étant donné que les polygones peuvent se chevaucher, peuvent être contenus dans un autre et sont représentés par un tableau en deux dimensions (ou plus), un arbre binaire ne convient pas pour indexer les valeurs. Les vraies bases de données spatiales fournissent un "index spatial" qui répond plutÃŽt à la question : "quel objet se trouve dans une étendue spécifique ?" 
    57  
    58 Une **étendue** correspond au rectangle de plus petite taille capable de contenir un objet géographique. 
     56Spatial data types are organized in a type hierarchy.  Each sub-type inherits the structure (attributes) and the behavior (methods or functions) of its super-type.  
     57 
     58 
     59Spatial Indexes and Bounding Boxes 
     60---------------------------------- 
     61 
     62An ordinary database provides "access methods" -- commonly known as **indexes** -- to allow for fast and random access to subsets of data.  Indexing for standard types (numbers, strings, dates) is usually done with `B-tree <http://en.wikipedia.org/wiki/B-tree>`_ indexes.  A B-tree partitions the data using the natural sort order to put the data into a hierarchical tree. 
     63 
     64The natural sort order of numbers, strings, and dates is simple to determine -- every value is less than, greater than or equal to every other value. But because polygons can overlap, can be contained in one another, and are arrayed in a two-dimensional (or more) space, a B-tree cannot be used to efficiently index them. Real spatial databases provide a "spatial index" that instead answers the question "which objects are within this particular bounding box?".   
     65 
     66A **bounding box** is the smallest size rectangle capable of containing a given feature.  
    5967 
    6068.. image:: ./introduction/boundingbox.png 
    6169   :align: center 
    6270 
    63 Les étendues sont utilisées car répondre à la question : "est-ce que A se trouve à l'intérieur de B ? " est une opération coûteuse pour les polygones mais rapide dans le cas ou ce sont des rectangles. Même des polygones et des lignes complexes peuvent être représentés par une simple étendue. 
    64  
    65 Les index spatiaux doivent réaliser leur ordonnancement rapidement afin d'être utiles. Donc au lieu de fournir des résultats exacts, comme le font les arbres binaires, les index spatiaux fournissent des résultats approximatifs. La question "quelles lignes sont à l'intérieur de ce polygone" sera interprétée par un index spatial comme : "quelles lignes ont une étendue qui est contenue dans l'étendue de ce polygone ?" 
    66  
    67 Les incréments spatiaux réels mis en application par diverses bases de données varient considérablement. 
    68 Les index spatiaux actuellement utilisés par les différents systÚmes de gestion de bases de données varient aussi 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 `index basés sur une grille <http://en.wikipedia.org/wiki/Grid_(spatial_index)>`_. 
    69  
    70 Les fonctions spatiales 
     71Bounding boxes are used because answering the question "is A inside B?" is very computationally intensive for polygons but very fast in the case of rectangles.  Even the most complex polygons and linestrings can be represented by a simple bounding box. 
     72 
     73Indexes have to perform quickly in order to be useful. So instead of providing exact results, as B-trees do, spatial indexes provide approximate results. The question "what lines are inside this polygon?" will be instead interpreted by a spatial index as "what lines have bounding boxes that are contained inside this polygon's bounding box?"  
     74 
     75The actual spatial indexes implemented by various databases vary widely. The most common implementation is the `R-tree <http://en.wikipedia.org/wiki/R-tree>`_ (used in PostGIS), but there are also implementations of `Quadtrees <http://en.wikipedia.org/wiki/Quadtree>`_, and `grid-based indexes <http://en.wikipedia.org/wiki/Grid_(spatial_index)>`_ in shipping spatial databases. 
     76 
     77Spatial Functions 
     78----------------- 
     79 
     80For 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. 
     81 
     82The majority of all spatial functions can be grouped into one of the following five categories: 
     83 
     84#. **Conversion**: Functions that *convert* between geometries and external data formats.  
     85#. **Management**: Functions that *manage* information about spatial tables and PostGIS administration. 
     86#. **Retrieval**: Functions that *retrieve* properties and measurements of a Geometry.  
     87#. **Comparison**: Functions that *compare* two geometries with respect to their spatial relation.  
     88#. **Generation**: Functions that *generate* new geometries from others. 
     89 
     90The 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. 
     91 
     92What is PostGIS? 
     93================ 
     94 
     95PostGIS 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  
     96 
     97But what is PostgreSQL? 
    7198----------------------- 
    7299 
    73 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 calcul 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 sont utilisées comme des piÚces de Lego pour de nombreux projets SIG. 
    74  
    75 La majorité des fonctions spatiales peuvent être regroupées dans l'une des cinq catégories suivantes : 
    76  
    77 #. **Conversion**: fonctions qui *convertissent* les données géographiques dans un format externe. 
    78 #. **Gestion**: fonctions qui permettent de *gérer* les informations relatives  aux tables spatiales et l'administration de PostGIS. 
    79 #. **Récupération**: fonctions qui permettent de *récupérer* les propriétés et les mesures d'une géométrie. 
    80 #. **Comparaison**: fonctions qui permettent de *comparer* deux géométries en respectant leurs relations spatiales. 
    81 #. **Contruction**: fonctions qui permettent de *construire* de nouvelles géométries à partir d'autres. 
    82  
    83 La liste des fonctions possibles est trÚs vaste, mais un ensemble commun à l'ensemble des implémentations est défini par la spécification term:`OGC` :term:`SFSQL`. Cet ensemble commun (avec d'autres fonctions supplémentaires) est implémenté dans PostGIS. 
    84  
    85  
    86 Qu'est-ce que PostGIS ? 
    87 ======================= 
    88  
    89 PostGIS confÚre au `systÚme de gestion de base de données PostgreSQL <http://www.postgresql.org/>`_ le statut de base de données spatiales en ajoutant les trois supports suivants : les types de données spatiales, les index et les fonctions. Étant donné qu'il est basé sur PostgreSQL, PostGIS bénéficie automatiquement des capacités orientées "entreprise" ainsi que le respect des standards de cette implémentation. 
    90  
    91 Mais qu'est-ce que PostgreSQL ? 
    92 ------------------------------- 
    93  
    94 PostgreSQL est un puissant systÚme de gestion de données relationnel à 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 contrÃŽlé par une société unique mais par une communauté de développeurs et de sociétés qui le développe. 
    95  
    96 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 nouveaux types, des nouvelles fonctions et des méthodes d'accÚs à chaud. Grâce à cela, une extension de PostgreSQL peut être développée par une équipe de développement indépendante, bien que le lien soit trÚs fortement lié au coeur de la base de données PostgreSQL. 
    97  
    98 Pourquoi choisir PostgreSQL ? 
    99 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    100  
    101 Une question que se posent souvent les gens déja familiarisés avec les bases de données libres est : "Pourquoi PostGIS n'a pas été basé sur MySQL ?" 
    102  
    103 PostgreSQL a: 
    104  
    105   * prouvé sa fiabilité et son respect de l'intégrité des données (propriétés ACID) 
    106   * un support soigneux des standard SQL (respecte la norme SQL92) 
    107   * un support pour le développement d'extensions et de nouvelles fonctions 
    108   * un modÚle de développement communautaire 
    109   * pas de limite sur la taille des colonne (les tuples peuvent être "TOAST"és) pour supporter des objets géographiques 
    110   * un structure d'index générique (GiST) permettant l'indexation à l'aide d'arbres R 
    111   * une facilité d'ajout de fonctions personalisées 
    112  
    113 Tout ceci combiné, PostgreSQL permet un cheminement simple du développement nécessaire à l'ajout des types spatiaux. Dans le monde propriétaire, seul Illustra (maintenant Informix Universal Server) permet une extension aussi simple. Ceci n'est pas une coïncidence, Illustra est une version propriétaire modifiée du code original de PostgreSQL publié dans les années 1980. 
    114  
    115 Puisque le cheminement du développement nécessaire à l'ajout de types à PostgreSQL est direct, il semblait naturel de commencer par là. Lorsque MySQL a publié des types de données spatiaux de base dans sa version 4.1, l'équipe de PostGIS a jeté un coup d'oeil dans leur code source 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 pris un mois. Réaliser un projet "MyGIS" 0.1 aurait pris beaucoup plus de temps, c'est sans doute pourquoi il n'a jamais vu le jour. 
    116  
    117 Pourquoi pas des fichiers Shapefile ? 
    118 ------------------------------------- 
    119  
    120 Les fichiers `shapefile <http://en.wikipedia.org/wiki/Shapefile>`_ (et les autres formats) ont été la maniÚre standard de stocker et d'interagir avec les données spatiales depuis l'origine des SIG. Néanmoins, ces fichiers "plats" ont les inconvénients suivants : 
    121  
    122 * **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 aléatoire aux données et à leur analyse. Sans cette abstraction, vous devrez développer l'accÚs et l'analyse par vos propre moyens. 
    123 * **L'accÚs concurrent aux données peut parfois entraîner un stockage 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 importante d'un systÚme de base de données. Pourquoi ne pas simplement utiliser une base de données standard dans ce cas ? 
    124 * **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 centaine de lignes de code spécifiques pour y répondre dans le cas de fichiers. 
    125  
    126 La plupart des utilisateurs de PostGIS ont mis en place des systÚmes où diverses applications sont susceptibles d'accéder aux données, et donc d'avoir les méthodes d'accÚs SQL standard, qui simplifient le déploiement et le développement. Certains utilisateurs travaillent avec de grands jeux de données sous forme de fichiers, qui peuvent être segmentés en plusieurs fichiers, mais dans une base de données ces données peuvent être stockées dans une seule grande table. 
    127  
    128 En résumé, la combinaison du support de l'accÚs concurrent, des requêtes complexes spécifiques et de la performance sur de grands jeux de données différencient les bases de données spatiales des systÚmes utilisant des fichiers. 
    129  
    130 Un bref historique de PostGIS 
    131 ------------------------------ 
    132  
    133 En mai 2001, la société `Refractions Research <http://www.refractions.net/>`_  publie la premiÚre version de PostGIS. PostGIS 0.1 fournissait les objets, les index et des fonctions utiles. Le résultat était une base de données permettant le stockage et l'accÚs mais pas encore l'analyse. 
    134  
    135 Comme le nombre de fonctions augmentait, 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. 
    136  
    137 Avec le support dans PostGIS de simples fonctions d'analyses et de jointures spatiales, 
    138 `Mapserver <http://mapserver.org/>`_ devint la premiÚre application externe permettant de visualiser les données de la base de données. 
    139  
    140 Au cours de ces derniÚres années, le nombre de fonctions fournies par PostGIS grandissait, mais leur puissance restait limitée. La plupart des fonctions intéressantes (ex : ST_Intersects(), ST_Buffer(), ST_Union()) étaient difficiles à implémenter. Les écrire en repartant du début promettait des années de travail. 
    141  
    142 Heureusement un second projet, nommé "Geometry Engine, Open Source" ou `GEOS <http://trac.osgeo.org/geos>`_ vit le jour. Cette librairie fournit l'ensemble des algorithmes nécessaires à 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. 
    143  
    144 Alors que les capacités de PostGIS grandissaient, un autre problÚme fit surface : la représentation utilisée pour stocker les géométries n'était pas assez efficace. Pour de petits objets comme les points ou de courtes lignes, les métadonnées dans la représentation occupaient plus de 300% supplémentaires. Pour des raisons de performances, il fut nécessaire de faire faire un régime à la représentation. En réduisant l'entête des métadonnées et les dimensions requises, l'espace supplémentaire fut réduit drastiquement. Dans PostGIS 1.0, cette nouvelle représentation plus rapide et plus légÚre devint la représentation par défaut. 
    145  
    146 Les mises à jour récentes de PostGIS ont permis d'étendre la compatibilité avec les standards, d'ajouter les géométries courbes et les signatures de fonctions spécifiées dans la norme ISO :term:`SQL/MM`. Dans un soucis de performance, PostGIS 1.4 a aussi augmenté considérablement la rapidité d'exécution des fonctions de tests sur les géométries. 
    147  
    148 Qui utilise PostGIS ? 
    149 --------------------- 
    150  
    151 Pour une liste complÚte des cas d'utilisation, consultez la page web : `Cas d'utilisations de PostGIS (en anglais) <http://www.postgis.org/documentation/casestudies/>`_. 
    152  
    153 Institut Géographique National, France 
     100PostgreSQL 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. 
     101 
     102PostgreSQL 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. 
     103 
     104Why choose PostgreSQL? 
     105~~~~~~~~~~~~~~~~~~~~~~ 
     106 
     107A common question from people familiar with open source databases is, "Why wasn't PostGIS built on MySQL?". 
     108 
     109PostgreSQL has: 
     110 
     111  * Proven reliability and transactional integrity by default (ACID) 
     112  * Careful support for SQL standards (full SQL92) 
     113  * Pluggable type extension and function extension 
     114  * Community-oriented development model 
     115  * No limit on column sizes ("TOAST"able tuples) to support big GIS objects 
     116  * Generic index structure (GiST) to allow R-Tree index 
     117  * Easy to add custom functions 
     118 
     119Combined, 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.  
     120 
     121Because 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. 
     122 
     123Why not Shapefiles? 
     124------------------- 
     125 
     126The `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: 
     127 
     128* **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. 
     129* **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? 
     130* **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. 
     131 
     132Most 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. 
     133 
     134In 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. 
     135 
     136A brief history of PostGIS 
     137-------------------------- 
     138 
     139In 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. 
     140 
     141As 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. 
     142 
     143With 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.  
     144 
     145Over 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. 
     146 
     147Fortunately 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. 
     148 
     149As 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. 
     150 
     151Recent updates of PostGIS have worked on expanding standards compliance, adding support for curve-based geometries and function signatures specified in the ISO :term:`SQL/MM` standard. Through a continued focus on performance,  PostGIS 1.4 significantly improved the speed of geometry testing routines. 
     152 
     153Who uses PostGIS? 
     154----------------- 
     155 
     156For a complete list of case studies, see the `PostGIS case studies <http://www.postgis.org/documentation/casestudies/>`_ page. 
     157 
     158Institut Geographique National, France 
    154159~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    155160 
    156 L'IGN utilise PostGIS pour stocker des cartes topographiques de grande résolution de la France : la "BDUni". La BDUni a plus de 100 millions d'entités, et est maintenue par une équipe de 100 personnes qui vérifie les observations et ajoute quotidiennement de nouvelles données à la base. L'installation de l'IGN utilise le systÚme transactionnel de la base de données pour assurer la consistance durant les phases de mises à jour et utilise un `serveur de warm-standby par transfert de journaux <http://docs.postgresql.fr/9.1/warm-standby.html>`_ afin de conserver un état cohérent en cas de défaillance du systÚme. 
     161IGN is the national mapping agency of France, and uses PostGIS to store the high resolution topographic map of the country, "BDUni". BDUni has more than 100 million features, and is maintained by a staff of over 100 field staff who verify observations and add new mapping to the database daily. The IGN installation uses the database transactional system to ensure consistency during update processes, and a `warm standby system <http://developer.postgresql.org/pgdocs/postgres/warm-standby.html>`_ to maintain uptime in the event of a system failure. 
    157162 
    158163GlobeXplorer 
    159164~~~~~~~~~~~~ 
    160165 
    161 GlobeXplorer est un service web fournissant un accÚs en ligne à une imagerie satellite et photos aériennes de plusieurs petabytes. GlobeXplorer utilise PostGIS pour gérer les métadonnées associées avec le catalogue d'images. Les requêtes pour accéder aux images recherchent d'abord dans le catalogue PostGIS pour récupérer la localisation des images demandées, puis récupÚrent ces images et les retournent au client. Lors du proccessus de mise en place de leur systÚme, GlobeXplorer a essayé d'autres systÚmes de base de données spatiales mais a conservé PostGIS à cause de la combinaison du prix et de la performance qu'il offre. 
    162  
    163 Quest-ce qu'une application qui supporte PostGIS ? 
    164 -------------------------------------------------- 
    165  
    166 PostGIS est devenu une base de données spatiale communément utilisée, et le nombre d'applications tierces qui supportent le stockage ou la récupération des données n'a cessé d'augmenter. `Les application qui supportent PostGIS <http://trac.osgeo.org/postgis/wiki/UsersWikiToolsSupportPostgis>`_  contiennent à la fois des applications libres et des application propriétaires tournant sur un serveur ou localement depuis votre bureau. 
    167  
    168 La table suivante propose une liste des logiciels qui tirent profit de PostGIS : 
     166GlobeXplorer is a web-based service providing online access to petabytes of global satellite and aerial imagery. GlobeXplorer uses PostGIS to manage the metadata associated with the imagery catalogue, so queries for imagery first search the PostGIS catalogue to find the location of the relevant images, then pull the images from storage and return them to the client. In building their system, GlobeXplorer tried other spatial databases but eventually settled on PostGIS because of the great combination of price and performance it offers. 
     167 
     168What applications support PostGIS? 
     169---------------------------------- 
     170 
     171PostGIS has become a widely used spatial database, and the number of third-party programs that support storing and retrieving data using it has increased as well. The `programs that support PostGIS <http://trac.osgeo.org/postgis/wiki/UsersWikiToolsSupportPostgis>`_ include both open source and proprietary software on both server and desktop systems. 
     172 
     173The following table shows a list of some of the software that leverages PostGIS: 
    169174 
    170175+-------------------------------------------------+----------------------------------------------+ 
    171 | Libre/Gratuit                                   | Fermé/Propriétaire                           | 
     176| Open/Free                                       | Closed/Proprietary                           | 
    172177+=================================================+==============================================+ 
    173 |                                                 |                                              | 
    174 | * Chargement/Extraction                         | * Chargement/Extraction                      | 
    175 |                                                 |                                              | 
    176 |   * Shp2Pgsql                                   |   * Safe FME Desktop Translator/Converter    | 
    177 |   * ogr2ogr                                     |                                              | 
    178 |   * Dxf2PostGIS                                 |                                              | 
    179 |                                                 | * Basé sur le web                            | 
    180 | * Basé sur le web                               |                                              | 
    181 |                                                 |   * Ionic Red Spider (now ERDAS)             | 
    182 |   * Mapserver                                   |   * Cadcorp GeognoSIS                        | 
    183 |   * GeoServer (Java-based WFS / WMS -server )   |   * Iwan Mapserver                           | 
    184 |   * SharpMap SDK - for ASP.NET 2.0              |   * MapDotNet Server                         | 
    185 |   * MapGuide Open Source (using FDO)            |   * MapGuide Enterprise (using FDO)          | 
    186 |                                                 |   * ESRI ArcGIS Server 9.3+                  | 
    187 | * Logiciels bureautiques                        |                                              | 
    188 |                                                 | * Logiciels bureautiques                     | 
    189 |   * uDig                                        |                                              | 
    190 |   * QGIS                                        |   * Cadcorp SIS                              | 
    191 |   * mezoGIS                                     |   * Microimages TNTmips GIS                  | 
    192 |   * OpenJUMP                                    |   * ESRI ArcGIS 9.3+                         | 
    193 |   * OpenEV                                      |   * Manifold                                 | 
    194 |   * SharpMap SDK for Microsoft.NET 2.0          |   * GeoConcept                               | 
    195 |   * ZigGIS for ArcGIS/ArcObjects.NET            |   * MapInfo (v10)                            | 
    196 |   * GvSIG                                       |   * AutoCAD Map 3D (using FDO)               | 
    197 |   * GRASS                                       |                                              | 
    198 |                                                 |                                              | 
     178|                                                 |                                              |    
     179| * Loading/Extracting                            | * Loading/Extracting                         |    
     180|                                                 |                                              |      
     181|   * Shp2Pgsql                                   |   * Safe FME Desktop Translator/Converter    |       
     182|   * ogr2ogr                                     |                                              |         
     183|   * Dxf2PostGIS                                 |                                              |           
     184|                                                 | * Web-Based                                  |          
     185| * Web-Based                                     |                                              |              
     186|                                                 |   * Ionic Red Spider (now ERDAS)             |               
     187|   * Mapserver                                   |   * Cadcorp GeognoSIS                        |             
     188|   * GeoServer (Java-based WFS / WMS -server )   |   * Iwan Mapserver                           |      
     189|   * SharpMap SDK - for ASP.NET 2.0              |   * MapDotNet Server                         |       
     190|   * MapGuide Open Source (using FDO)            |   * MapGuide Enterprise (using FDO)          |    
     191|                                                 |   * ESRI ArcGIS Server 9.3+                  |          
     192| * Desktop                                       |                                              |            
     193|                                                 | * Desktop                                    |                
     194|   * uDig                                        |                                              |            
     195|   * QGIS                                        |   * Cadcorp SIS                              |       
     196|   * mezoGIS                                     |   * Microimages TNTmips GIS                  |          
     197|   * OpenJUMP                                    |   * ESRI ArcGIS 9.3+                         |            
     198|   * OpenEV                                      |   * Manifold                                 |    
     199|   * SharpMap SDK for Microsoft.NET 2.0          |   * GeoConcept                               |        
     200|   * ZigGIS for ArcGIS/ArcObjects.NET            |   * MapInfo (v10)                            |            
     201|   * GvSIG                                       |   * AutoCAD Map 3D (using FDO)               |    
     202|   * GRASS                                       |                                              |            
     203|                                                 |                                              |              
    199204+-------------------------------------------------+----------------------------------------------+ 
    200205 
Note: See TracChangeset for help on using the changeset viewer.