Indexation géospatiale avec PostGIS
Ajoutez l’extension PostGIS, stockez des données de géométrie ou de géographie et interrogez les relations spatiales avec des index GiST.
Indexation géospatiale avec PostGIS est une leçon SQL Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage SQL Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours SQL Academy comprend 4 leçons au total.
Qu'est-ce que PostGIS ?
L'extension géospatiale la plus puissante de toute base de données à code source ouvert. Elle ajoute les types geometry/geography, des centaines de fonctions spatiales et des index GiST/SP-GiST pour accélérer les requêtes spatiales.
Activer PostGIS
Il s'agit d'une extension contrib :
CREATE EXTENSION postgis;
SELECT PostGIS_Version();GEOMETRY ou GEOGRAPHY
- GEOMETRY — planaire, rapide, unités du système de coordonnées (souvent mètres / degrés)
- GEOGRAPHY — Terre sphérique, plus lent, unités toujours en mètres
Choisissez GEOGRAPHY pour les « distances sur Terre » avec des données couvrant plusieurs régions ; choisissez GEOMETRY pour les systèmes de coordonnées projetées (SIG régional, opérations rapides).
Stocker des points
Modèle courant : stocker une latitude/longitude comme point GEOGRAPHY :
CREATE TABLE places (
id BIGSERIAL PRIMARY KEY,
name TEXT NOT NULL,
location GEOGRAPHY(POINT, 4326)
);
INSERT INTO places (name, location)
VALUES ('Berlin', ST_GeogFromText('SRID=4326;POINT(13.405 52.520)'));SRID
Le « Spatial Reference ID » définit le système de coordonnées. WGS84 (identifiant 4326) est la norme pour la latitude/longitude GPS.
Index spatial GiST
Indexer votre colonne de géométrie avec GiST :
CREATE INDEX places_location_idx ON places USING GIST (location);
-- Now spatial filters are fast.Voisin le plus proche : <->
L'opérateur KNN <-> avec un index renvoie les résultats les plus proches en quelques millisecondes :
SELECT name, ST_Distance(location, ST_GeogFromText('SRID=4326;POINT(13.4 52.5)')) AS m
FROM places
ORDER BY location <-> ST_GeogFromText('SRID=4326;POINT(13.4 52.5)')
LIMIT 10;À une distance donnée
Rechercher les lieux situés à moins de 2 km d'un point :
SELECT name FROM places
WHERE ST_DWithin(
location,
ST_GeogFromText('SRID=4326;POINT(13.4 52.5)'),
2000 -- meters
);Polygones et surfaces
Stocker et interroger des polygones (limites de villes, zones de livraison) :
CREATE TABLE zones (
id BIGSERIAL PRIMARY KEY,
name TEXT,
area GEOGRAPHY(POLYGON, 4326)
);
-- Find places inside a zone:
SELECT p.name FROM places p
JOIN zones z ON ST_Within(p.location::GEOMETRY, z.area::GEOMETRY)
WHERE z.name = 'Mitte';Intersection, contenance et inclusion
Un riche ensemble de prédicats spatiaux : ST_Intersects, ST_Contains, ST_Within, ST_Touches, ST_Disjoint, ST_Equals.
Charger du GeoJSON
Importer directement du GeoJSON dans PostGIS :
INSERT INTO zones (name, area)
SELECT 'Mitte', ST_GeogFromGeoJSON('{"type":"Polygon","coordinates":[...]}');Générer des tuiles vectorielles
PostGIS 3.0+ peut générer directement des tuiles vectorielles Mapbox avec ST_AsMVT — alimentez les interfaces cartographiques directement depuis la base de données.
Récapitulatif
PostGIS transforme Postgres en un véritable moteur SIG.
- GEOMETRY pour les coordonnées projetées, GEOGRAPHY pour les distances terrestres
- Index GiST pour les filtres spatiaux et KNN
- ST_DWithin, ST_Distance, ST_Within
- SRID 4326 = latitude/longitude WGS84
Vérification rapide
Vous stockez les emplacements des utilisateurs comme GEOGRAPHY(POINT). Quel type d'index accélère les requêtes « trouver dans un rayon de 5 km » ?
Questions Fréquemment Posées
La leçon « Indexation géospatiale avec PostGIS » est-elle gratuite ?
Oui — le texte complet de « Indexation géospatiale avec PostGIS » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours SQL Academy, passe à CoddyKit PRO. Le cours SQL Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Indexation géospatiale avec PostGIS » ?
Ajoutez l’extension PostGIS, stockez des données de géométrie ou de géographie et interrogez les relations spatiales avec des index GiST. Tu pratiques SQL Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer SQL Academy ?
Aucune expérience préalable n'est requise. SQL Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.
Combien de temps prend la leçon « Indexation géospatiale avec PostGIS » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon SQL Academy ?
Oui. Chaque leçon SQL Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Recherche par trigrammes (pg_trgm) pour la correspondance approximative
- Recherche en texte intégral avec tsvector et GIN
- Indexation géospatiale avec PostGIS
- Recherche vectorielle avec pgvector