Créer une table spatiale et insérer des données
Maintenant que vous avez une base de données spatiale, vous pouvez créer des tables pour stocker des données géographiques. Dans cette étape, vous allez créer une table cities et insérer les coordonnées de quelques grandes villes.
Vous devriez toujours être dans le shell psql, connecté à la base de données spatial_db.
Tout d'abord, créez une table nommée cities. Cette table aura des colonnes standard id et name, ainsi qu'une colonne location de type GEOMETRY.
Comprendre GEOMETRY(Point, 4326)
GEOMETRY : C'est le type de données fondamental de PostGIS pour stocker des entités spatiales.
Point : Ceci spécifie que la colonne de géométrie ne stockera que des points. D'autres types incluent LINESTRING et POLYGON.
4326 : C'est l'identifiant du système de référence spatiale (SRID). Le SRID 4326 correspond au WGS 84, le système de coordonnées standard utilisé par le GPS et Google Maps.
Exécutez la commande suivante pour créer la table :
CREATE TABLE cities (
id SERIAL PRIMARY KEY,
name VARCHAR(50),
location GEOMETRY(Point, 4326)
);
Vous verrez la confirmation :
CREATE TABLE
Ensuite, insérez des données dans la table cities. Vous utiliserez la fonction ST_GeomFromText pour convertir des représentations en texte bien connu (Well-Known Text - WKT) de points en objets géométriques. Le format est POINT(longitude latitude).
INSERT INTO cities (name, location) VALUES
('New York', ST_GeomFromText('POINT(-74.0060 40.7128)', 4326)),
('London', ST_GeomFromText('POINT(-0.1278 51.5074)', 4326)),
('Tokyo', ST_GeomFromText('POINT(139.6917 35.6895)', 4326));
La sortie indique que trois lignes ont été insérées :
INSERT 0 3
Pour vérifier que les données ont été correctement insérées, vous pouvez interroger la table. Utilisez la fonction ST_AsText pour convertir l'objet géométrique en un format texte lisible par l'homme.
SELECT id, name, ST_AsText(location) FROM cities;
La sortie devrait afficher les données que vous venez d'insérer :
id | name | st_astext
----+----------+-----------------------------
1 | New York | POINT(-74.006 40.7128)
2 | London | POINT(-0.1278 51.5074)
3 | Tokyo | POINT(139.6917 35.6895)
(3 rows)
Vous avez créé avec succès une table spatiale et l'avez remplie de données.