PostGIS est une extension (plugin) du SGBD PostgreSQL, qui active la manipulation d'informations géographiques (spatiales) sous forme de géométries (points, lignes, polygones), conformément aux standards établis par l'Open Geospatial Consortium. Il permet à PostgreSQL d'être un SGBD spatial (SGBDs) pour pouvoir être utilisé par les systèmes d'informations géographiques.
Le nom provient de la contraction de PostgreSQL et de GIS (acronyme anglais de SIG). Concrètement, PostGIS permet le traitement d'objets spatiaux dans PostgreSQL, autorisant le stockage des objets graphiques en base de données pour les SIG, un peu comme le SDE[Quoi ?] de ESRI, la base de données spatiale d'IBM Informix Dynamic Server ou l'extension spatiale d'Oracle.
Beaucoup de logiciels peuvent utiliser PostGIS comme base de données, dont :
GEO Software de la société Business Geografic
ArcGIS (via ST-Links PgMap, ZigGIS, ArcSDE et autres connecteurs tiers)
Cadcorp SIS distribué en France par la société Geomod
CitySurf Globe
Everest GIS
ERDAS APOLLO
Feature Manipulation Engine
GeoMedia
GeoServer
GRASS GIS (GPL)
gvSIG (GPL)
Interoperability Extension d'Esri
Ionic Red Spider
KIS (Altereo)
Kosmo (GPL)
Manifold System
MapInfo Professional
Mapnik (LGPL)
MapDotNet Server
MapServer (BSD)
MapGuide (LGPL)
MezoGIS
OpenJUMP (GPL)
QGIS (GPL)
TerraLib (LGPL)
TerraView (GPL)
uDig (LGPL)
La première version a été publiée en 2001 par Refractions Research sous la Licence publique générale GNU. Une version stable 1.0 est sortie le 19 avril 2005.
En 2006, PostGIS a été enregistré conforme aux standards établis par l'Open Geospatial Consortium, pour l'utilisation simple du SQL. Il suit les recommandations de l'OpenGIS.
Caractéristiques
Logiciel libre
S'appuie sur GDAL (raster), OGR (vecteur), PROJ.4 (projections), GEOS (géométrie)...
Import/export grâce à GDAL/OGR
Fonctions de base SIG (rééchantillonnage, rognage, intersection, union, projection...)
Fonctions algébriques
Utilisation des rasters et des vecteurs
Robuste et fiable (contrôle de cohérence)
Pas vraiment de limite de taille (max. 32 To)
3. Requêtes SQL Simples
• Sélectionner la base de données nyc
• Cliquez sur Tools > Query Tool
• SELECT name FROM nyc_neighborhoods;
• Cliquez sur le bouton Exécuter dans la barre d'outils
• La requête retourne 129 résultats
4. Requêtes SQL Simples
• SELECT, qui renvoie des lignes en réponse à une requête.
• INSERT, ajoute de nouvelles lignes à une table
• UPDATE, modifie les lignes existantes dans une table
• DELETE, supprime des lignes d'un tableau.
Nous travaillerons presque exclusivement avec SELECT afin de poser des
requêtes aux tables en utilisant les fonctions spatiales
Exemple:
23 résultats
SELECT some_columns FROM some_data_source WHERE some_condition;
SELECT name FROM nyc_neighborhoods WHERE boroname = 'Brooklyn'; ;
5. Requêtes SQL Simples
• Liste des fonctions
• avg(expression) : Fonction d'agrégation PostgreSQL qui retourne la valeur
moyenne d'une colonne numérique.
• char_length(string) : Fonction de chaîne PostgreSQL qui retourne le nombre de
caractères dans une chaîne.
• stddev(expression) : Fonction d'agrégation PostgreSQL qui retourne la
déviation standard des valeurs d'entrée.
6. Requêtes SQL Simples
• Quel est le nombre de lettres dans les noms de tous les
quartiers de Brooklyn ?
SELECT char_length(name) FROM
nyc_neighborhoods WHERE
boroname ='Brooklyn';
7. Requêtes SQL Simples
• Quel est le nombre moyen de lettres et l'écart-type du nombre de lettres
dans les noms de tous les quartiers de Brooklyn ?
SELECT avg(char_length(name)), stddev(char_length(name)) FROM
nyc_neighborhoods WHERE boroname = 'Brooklyn';
8. Requêtes SQL Simples
• Quel est le nombre moyen de lettres dans les noms de tous les quartiers de
la ville de New York, rapporté par arrondissement ?
SELECT boroname, avg(char_length(name)), stddev(char_length(name))FROM
nyc_neighborhoods GROUP BY boroname;
10. Exercices SQL Simples
• En utilisant la table nyc_census_blocks, répondez aux questions suivantes
blkid Un code à 15 chiffres qui définit de manière unique chaque bloc ressencé
popn_total Nombre total de personnes dans un bloc ressensé
popn_white Nombre de personnes se déclarant “blancs”
popn_black Nombre de personnes se déclarant “noirs”
popn_nativ Nombre de personnes se déclarant comme “nés aux états-unis”
popn_asian Nombre de personne se déclarant comme “asiatiques”
popn_other Nombre de personne se déclarant d'une autre catégorie
boroname
Nom du quartier de New York. Manhattan, The Bronx, Brooklyn, Staten
Island, Queens
geom Polygone délimitant le bloc
• certaines des fonctions
d'aggrégation qui vous
seront utiles pour répondre
aux questions :
• avg() - la moyenne des
valeurs dans un ensemble
d'enregistrements
• sum() - la somme des
valeurs d'un ensemble
d'enregistrements
• count() - le nombre
d'éléments contenus dans
un ensemble
d'enregistrements.
11. Exercices SQL Simples
• avg() - la moyenne des
valeurs dans un ensemble
d'enregistrements
• sum() - la somme des
valeurs d'un ensemble
d'enregistrements
• count() - le nombre
d'éléments contenus dans
un ensemble
d'enregistrements.
Q1:“Quelle est la population de la ville de New York ?”
blkid Un code à 15 chiffres qui définit de manière unique chaque bloc ressencé
popn_total Nombre total de personnes dans un bloc ressensé
popn_white Nombre de personnes se déclarant “blancs”
popn_black Nombre de personnes se déclarant “noirs”
popn_nativ Nombre de personnes se déclarant comme “nés aux états-unis”
popn_asian Nombre de personne se déclarant comme “asiatiques”
popn_other Nombre de personne se déclarant d'une autre catégorie
boroname
Nom du quartier de New York. Manhattan, The Bronx, Brooklyn, Staten
Island, Queens
geom Polygone délimitant le bloc
12. Exercices SQL Simples
R1: SELECT Sum(popn_total) FROM nyc_census_blocks;
au lieu que notre colonne résultat soit nommée sum nous utilisons le AS pour la renommer en population.
SELECT Sum(popn_total) AS population FROM nyc_census_blocks;
13. Exercices SQL Simples
• avg() - la moyenne des
valeurs dans un ensemble
d'enregistrements
• sum() - la somme des
valeurs d'un ensemble
d'enregistrements
• count() - le nombre
d'éléments contenus dans
un ensemble
d'enregistrements.
Q3:“Quelle est en moyenne le nombre de personnes vivant dans
chaque appartement de la ville de New York ?
blkid Un code à 15 chiffres qui définit de manière unique chaque bloc ressencé
popn_total Nombre total de personnes dans un bloc ressensé
popn_white Nombre de personnes se déclarant “blancs”
popn_black Nombre de personnes se déclarant “noirs”
popn_nativ Nombre de personnes se déclarant comme “nés aux états-unis”
popn_asian Nombre de personne se déclarant comme “asiatiques”
popn_other Nombre de personne se déclarant d'une autre catégorie
boroname
Nom du quartier de New York. Manhattan, The Bronx, Brooklyn, Staten
Island, Queens
geom Polygone délimitant le bloc
14. Exercices SQL Simples
R3: SELECT boroname ,100*Sum(popn_white)/Sum(popn_total) AS white_pct
FROM nyc_census_blocks GROUP BY boroname;
15. Exercices SQL Simples
• avg() - la moyenne des
valeurs dans un ensemble
d'enregistrements
• sum() - la somme des
valeurs d'un ensemble
d'enregistrements
• count() - le nombre
d'éléments contenus dans
un ensemble
d'enregistrements.
Q3:“Quelle est en moyenne le nombre de personnes vivant dans chaque appartement de la
ville de New York ?”
blkid Un code à 15 chiffres qui définit de manière unique chaque bloc ressencé
popn_total Nombre total de personnes dans un bloc ressensé
popn_white Nombre de personnes se déclarant “blancs”
popn_black Nombre de personnes se déclarant “noirs”
popn_nativ Nombre de personnes se déclarant comme “nés aux états-unis”
popn_asian Nombre de personne se déclarant comme “asiatiques”
popn_other Nombre de personne se déclarant d'une autre catégorie
boroname
Nom du quartier de New York. Manhattan, The Bronx, Brooklyn, Staten
Island, Queens
geom Polygone délimitant le bloc
16. Exercices SQL Simples
R3: SELECT Sum(popn_total) /Sum(hous_total) AS white_pct FROM
nyc_census_blocks GROUP BY boroname