Base de données Countries (PostGIS) : tables spatiales et exercices SQL
Countries est une base PostGIS pour apprendre le SQL spatial : pays et capitales du monde, ainsi que des couches de New York avec îlots de recensement, quartiers, rues et stations de métro. Sur SQLtest.online, vous l'interrogez directement dans le navigateur : vous résolvez des exercices corrigés automatiquement et exécutez vos propres requêtes dans le bac à sable, sans rien installer.
- 7 tables spatiales
- 246 pays
- 491 stations de métro
- 11 exercices SQL
Qu'est-ce que Countries
PostGIS est l'extension de PostgreSQL qui ajoute des types géométriques et des centaines de fonctions spatiales : distances, surfaces, intersections, transformations de coordonnées. Cette base permet de les essayer sur des données familières.
Les tables de New York proviennent du célèbre atelier PostGIS « Introduction to PostGIS », et les tables mondiales contiennent les frontières des pays et les capitales. Ensemble, elles couvrent points, lignes et polygones dans deux systèmes de coordonnées.
Contenu de la base
Les tables se répartissent en deux groupes.
Monde
countries avec les polygones des frontières et capitals avec des points, tous deux en SRID 4326 (longitude et latitude).
New York
nyc_census_blocks, nyc_neighborhoods, nyc_streets, nyc_subway_stations et nyc_homicides, en SRID 26918 (UTM zone 18N, mètres).
L'essentiel à retenir : les tables mondiales stockent des degrés, celles de New York des mètres. Dans les couches de New York, distances et surfaces sortent directement en mètres ; pour les tables mondiales, convertissez d'abord en geography ou transformez la géométrie.
Volume de données des tables :
| Table | Lignes | Contenu |
|---|---|---|
| countries | 246 | pays et leurs frontières |
| capitals | 192 | capitales |
| nyc_census_blocks | 38 794 | îlots de recensement avec population |
| nyc_neighborhoods | 129 | quartiers |
| nyc_streets | 19 091 | rues |
| nyc_subway_stations | 491 | stations de métro |
| nyc_homicides | 3 982 | homicides |
Structure des tables
Cliquez sur une table pour voir ses colonnes, une ligne d'exemple et ses clés.
Liste des tables
- ididentifiant unique de l'enregistrement (PK)
- namenom du pays
- bordergéométrie du pays (MultiPolygon, SRID 4326)
| id | name | border |
|---|---|---|
| 1 | France | MultiPolygon(...) [SRID=4326] |
- PRIMARY KEY, btree (id)
- ididentifiant unique de l'enregistrement (PK)
- namenom de la capitale
- country_idréférence au pays (FK)
- locationemplacement de la capitale (Point, SRID 4326)
| id | name | country_id | location |
|---|---|---|---|
| 1 | Paris | 1 | Point(...) [SRID=4326] |
- PRIMARY KEY, btree (id)
- FOREIGN KEY (country_id) REFERENCES countries(id)
- gididentifiant unique de l'enregistrement (PK)
- blkididentifiant du bloc de recensement
- popn_totalpopulation totale
- popn_whitepopulation blanche
- popn_blackpopulation noire
- popn_nativpopulation autochtone
- popn_asianpopulation asiatique
- popn_otherautre population
- boronamenom de l'arrondissement (borough)
- geomgéométrie du bloc de recensement (MultiPolygon, SRID 4326)
| gid | blkid | popn_total | popn_white | popn_black | popn_nativ | popn_asian | popn_other | boroname | geom |
|---|---|---|---|---|---|---|---|---|---|
| 1 | 360050001001000 | 1000 | 500 | 200 | 50 | 150 | 100 | Manhattan | MultiPolygon(...) [SRID=4326] |
- PRIMARY KEY, btree (gid)
- gididentifiant unique de l'enregistrement (PK)
- incident_ddate de l'incident
- boronamenom de l'arrondissement
- num_victimnombre de victimes
- primary_momobile principal
- ididentifiant de l'incident
- weaponarme utilisée
- light_darkcondition de luminosité (jour/nuit)
- yearannée de l'incident
- geomemplacement de l'incident (Point, SRID 4326)
| gid | incident_d | boroname | num_victim | primary_mo | id | weapon | light_dark | year | geom |
|---|---|---|---|---|---|---|---|---|---|
| 1 | 2003-01-01 | Manhattan | 1 | Inconnu | 1 | Arme à feu | D | 2003 | Point(...) [SRID=4326] |
- PRIMARY KEY, btree (gid)
- gididentifiant unique de l'enregistrement (PK)
- boronamenom de l'arrondissement
- namenom du quartier
- geomgéométrie du quartier (MultiPolygon, SRID 4326)
| gid | boroname | name | geom |
|---|---|---|---|
| 1 | Manhattan | Financial District | MultiPolygon(...) [SRID=4326] |
- PRIMARY KEY, btree (gid)
- gididentifiant unique de l'enregistrement (PK)
- ididentifiant de la rue
- namenom de la rue
- onewayindicateur de sens unique
- typetype de rue
- geomgéométrie de la rue (LineString, SRID 4326)
| gid | id | name | oneway | type | geom |
|---|---|---|---|---|---|
| 1 | 1 | Broadway | NO | avenue | LineString(...) [SRID=4326] |
- PRIMARY KEY, btree (gid)
- gididentifiant unique de l'enregistrement (PK)
- objectididentifiant d'objet
- ididentifiant de la station
- namenom de la station
- alt_namenom alternatif
- cross_strue transversale
- long_namenom long
- labelétiquette
- borougharrondissement
- nghbhdquartier
- routeslignes
- transferscorrespondances
- colorcouleur
- expressindicateur express
- closedindicateur de fermeture
- geomemplacement de la station (Point, SRID 4326)
| gid | objectid | id | name | alt_name | cross_st | long_name | label | borough | nghbhd | routes | transfers | color | express | closed | geom |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | 1 | Times Square | Times Sq | 7th Ave | Times Square-42nd Street | Times Sq | Manhattan | Midtown | 1,2,3,7,A,C,E,N,Q,R,S,W | 42nd St | Rouge | Oui | Non | Point(...) [SRID=4326] |
- PRIMARY KEY, btree (gid)
Exemples de requêtes
Ces requêtes montrent comment les données sont reliées. Copiez-en une et exécutez-la dans le bac à sable.
Une capitale dans son pays : coordonnées du point avec ST_X / ST_Y et vérification spatiale avec ST_Contains.
SELECT c.name AS capital, co.name AS country,
round(ST_Y(c.location)::numeric, 2) AS lat,
round(ST_X(c.location)::numeric, 2) AS lon,
ST_Contains(co.border, c.location) AS inside_border
FROM capitals c
JOIN countries co ON co.id = c.country_id
ORDER BY c.name
LIMIT 3;
| capital | country | lat | lon | inside_border |
|---|---|---|---|---|
| Abu Dhabi | United Arab Emirates | 24.30 | 54.70 | true |
| Abuja | Nigeria | 9.08 | 7.40 | true |
| Accra | Ghana | 5.60 | -0.19 | true |
Les stations de métro et leur SRID : les couches de New York utilisent la projection 26918.
SELECT s.name AS station, s.borough, s.routes, ST_SRID(s.geom) AS srid
FROM nyc_subway_stations s
ORDER BY s.gid
LIMIT 3;
| station | borough | routes | srid |
|---|---|---|---|
| Cortlandt St | Manhattan | R,W | 26918 |
| Rector St | Manhattan | 1 | 26918 |
| South Ferry | Manhattan | 1 | 26918 |
Exercices SQL par thème
Cette base compte 11 exercices PostGIS : distances, surfaces, longueurs, conversions en texte et en JSON, jointures spatiales. Les solutions sont vérifiées automatiquement sur un vrai PostgreSQL avec PostGIS. Le nombre à droite indique combien d'exercices compte le thème ; les points colorés montrent la plage de difficulté.
Par où commencer
Les premiers exercices sur la base Countries :
- Extraire la géométrie en texte
- Extraire la géométrie en JSON
- Distance entre villes
- Superficie d'un pays
- Stations de métro à Manhattan
- Superficie du quartier
- Superficie : plus petit et plus grand quartier
- Superficie moyenne des quartiers
- Longueur des rues de New York
- Stations Little Italy
Tous les exercices Countries →
Questions fréquentes
Faut-il installer PostGIS pour utiliser cette base ?
Non. Les exercices et le bac à sable de SQLtest.online exécutent les requêtes sur nos serveurs : un navigateur suffit. Dans le bac à sable, choisissez PostgreSQL 17 + PostGIS WorkShop.
Qu'est-ce qu'un SRID ?
Un identifiant de système de référence spatiale : il indique dans quel système sont exprimées les coordonnées. 4326 correspond à la longitude et la latitude en degrés (WGS 84) ; 26918 à l'UTM zone 18N en mètres, utilisé pour New York.
D'où viennent les tables de New York ?
Du jeu de données de l'atelier « Introduction to PostGIS » publié sur postgis.net, un point de départ courant pour apprendre PostGIS.