Guide d'utilisation de postgis
postgis
est le module d'extension géospatiale de PostgreSQL, qui fournit des types et des fonctions géométriques et géospatiales, permettant à PostgreSQL de stocker et de requêter des données géospatiales. Cet article détaille comment installer et utiliser postgis
dans ServBay.
Installation de postgis
ServBay inclut déjà le module d'extension postgis
, vous devez simplement l'activer dans la base de données. Voici les étapes pour activer postgis
:
Connectez-vous à la base de données PostgreSQL :
bashpsql -U votre_nom_utilisateur -d votre_base_de_données
1Créez l'extension :
sqlCREATE EXTENSION postgis;
1Vérifiez l'installation :
sql\dx
1
Configuration de postgis
Une fois postgis
activé, vous pouvez créer et gérer des types de données géospatiales et utiliser diverses fonctions géospatiales.
Création d'une table géospatiale
Voici un exemple montrant comment créer une table contenant des données géospatiales.
Créez la table :
sqlCREATE TABLE locations ( id SERIAL PRIMARY KEY, name VARCHAR(100), geom GEOMETRY(Point, 4326) );
1
2
3
4
5Insérez des exemples de données :
sqlINSERT INTO locations (name, geom) VALUES ('Location A', ST_GeomFromText('POINT(116.4074 39.9042)', 4326)), ('Location B', ST_GeomFromText('POINT(121.4737 31.2304)', 4326));
1
2
3
Création d'un index géospatial
Pour améliorer les performances des requêtes, il est conseillé de créer un index sur les colonnes géospatiales.
- Créez un index GIST :sql
CREATE INDEX idx_geom ON locations USING GIST (geom);
1
Utilisation de postgis pour les requêtes géospatiales
Voici quelques exemples de requêtes géospatiales courantes.
Requête de distance
- Requêter la distance entre deux points :sql
SELECT ST_Distance( ST_GeomFromText('POINT(116.4074 39.9042)', 4326), ST_GeomFromText('POINT(121.4737 31.2304)', 4326) );
1
2
3
4
Requête de relation de contenance
- Requêter si un point se trouve dans une zone spécifique :sql
SELECT name FROM locations WHERE ST_Contains( ST_GeomFromText('POLYGON((116.0 39.0, 117.0 39.0, 117.0 40.0, 116.0 40.0, 116.0 39.0))', 4326), geom );
1
2
3
4
5
Requête des voisins les plus proches
- Requêter les lieux à proximité d'un point :sql
SELECT name FROM locations ORDER BY geom <-> ST_GeomFromText('POINT(116.4074 39.9042)', 4326) LIMIT 5;
1
2
3
Utilisation de postgis pour l'analyse géospatiale
postgis
offre une riche gamme de fonctions d'analyse géospatiale. Voici quelques fonctionnalités d'analyse couramment utilisées.
Analyse de la zone tampon
- Créer une zone tampon :sql
SELECT ST_Buffer(geom, 0.01) FROM locations WHERE name = 'Location A';
1
Analyse d'intersection
- Requêter l'intersection de deux objets géométriques :sql
SELECT ST_Intersection( ST_GeomFromText('POLYGON((116.0 39.0, 117.0 39.0, 117.0 40.0, 116.0 40.0, 116.0 39.0))', 4326), geom ) FROM locations WHERE name = 'Location A';
1
2
3
4
Analyse de l'union
- Unionner plusieurs objets géométriques :sql
SELECT ST_Union(geom) FROM locations;
1
Visualisation des données géospatiales
Vous pouvez utiliser divers outils SIG (comme QGIS) ou des services de cartographie Web (comme Leaflet, OpenLayers) pour visualiser les données géospatiales dans postgis
.
Utilisation de QGIS
Connectez-vous à la base de données PostgreSQL :
- Ouvrez QGIS
- Sélectionnez "Gestionnaire de sources de données" -> "PostGIS"
- Entrez les informations de connexion à la base de données et connectez-vous
Chargez les données géospatiales :
- Sélectionnez les tables ou vues à charger
- Cliquez sur le bouton "Ajouter"
Utilisation de Leaflet
- Créer une carte Web :html
<!DOCTYPE html> <html> <head> <title>Exemple PostGIS Leaflet</title> <link rel="stylesheet" href="https://unpkg.com/leaflet/dist/leaflet.css" /> <script src="https://unpkg.com/leaflet/dist/leaflet.js"></script> </head> <body> <div id="map" style="width: 600px; height: 400px;"></div> <script> var map = L.map('map').setView([39.9042, 116.4074], 10); L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { attribution: '© les contributeurs d'OpenStreetMap' }).addTo(map); // Ajouter un marqueur à partir des données PostGIS var marker = L.marker([39.9042, 116.4074]).addTo(map) .bindPopup('Location A') .openPopup(); </script> </body> </html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Conclusion
postgis
est un module d'extension géospatiale puissant. Avec une configuration et une utilisation simples, vous pouvez implémenter un stockage et des requêtes de données géospatiales efficaces dans PostgreSQL. ServBay inclut déjà le module d'extension postgis
, suivez simplement les étapes de cet article pour l'installer et le configurer. Grâce aux diverses fonctions de requêtes et d'analyses géospatiales, vous pouvez tirer le meilleur parti des données géospatiales et offrir un support fiable à votre application à l'aide de la base de données.