Introducció a PostGIS

PostGIS és una extensió de PostgreSQL que afegeix suport per a objectes geogràfics, permetent que la base de dades sigui utilitzada per a aplicacions GIS (Sistemes d'Informació Geogràfica). Amb PostGIS, pots emmagatzemar, consultar i manipular dades espacials de manera eficient.

Conceptes clau

  • Geometria: Representació matemàtica d'objectes espacials (punts, línies, polígons).
  • SRID (Spatial Reference System Identifier): Identificador que defineix el sistema de coordenades utilitzat per les dades espacials.
  • Funcions espacials: Funcions que permeten realitzar operacions sobre dades espacials, com ara calcular distàncies, interseccions, etc.

Instal·lació de PostGIS

Pas 1: Instal·lar l'extensió PostGIS

CREATE EXTENSION postgis;

Pas 2: Verificar la instal·lació

SELECT PostGIS_Version();

Aquestes comandes haurien de retornar la versió de PostGIS instal·lada.

Creació de taules amb dades geoespacials

Exemple de creació d'una taula amb una columna geomètrica

CREATE TABLE llocs (
    id SERIAL PRIMARY KEY,
    nom VARCHAR(100),
    ubicacio GEOMETRY(Point, 4326)
);

En aquest exemple, la columna ubicacio emmagatzema punts amb el sistema de coordenades WGS 84 (SRID 4326).

Inserció de dades geoespacials

Exemple d'inserció d'un punt

INSERT INTO llocs (nom, ubicacio)
VALUES ('Torre Eiffel', ST_SetSRID(ST_MakePoint(2.2945, 48.8584), 4326));

Consultes espacials bàsiques

Seleccionar totes les ubicacions

SELECT nom, ST_AsText(ubicacio) AS ubicacio_text
FROM llocs;

Filtrar per proximitat

Trobar llocs dins d'un radi de 10 km d'un punt donat:

SELECT nom
FROM llocs
WHERE ST_DWithin(
    ubicacio::geography,
    ST_SetSRID(ST_MakePoint(2.2945, 48.8584)::geography, 4326),
    10000
);

Funcions espacials comunes

Calcular la distància entre dos punts

SELECT ST_Distance(
    ST_SetSRID(ST_MakePoint(2.2945, 48.8584)::geography, 4326),
    ST_SetSRID(ST_MakePoint(2.3522, 48.8566)::geography, 4326)
) AS distancia;

Trobar interseccions

SELECT nom
FROM llocs
WHERE ST_Intersects(
    ubicacio,
    ST_SetSRID(ST_MakePoint(2.2945, 48.8584), 4326)
);

Exercicis pràctics

Exercici 1: Crear una taula de polígons

Crea una taula per emmagatzemar polígons que representin àrees geogràfiques.

CREATE TABLE arees (
    id SERIAL PRIMARY KEY,
    nom VARCHAR(100),
    area GEOMETRY(Polygon, 4326)
);

Exercici 2: Inserir un polígon

Inserir un polígon que representi una àrea específica.

INSERT INTO arees (nom, area)
VALUES ('Parc Central', ST_SetSRID(ST_GeomFromText('POLYGON((2.2945 48.8584, 2.2955 48.8584, 2.2955 48.8594, 2.2945 48.8594, 2.2945 48.8584))'), 4326));

Exercici 3: Consultar punts dins d'un polígon

Trobar tots els llocs dins d'un polígon específic.

SELECT nom
FROM llocs
WHERE ST_Within(
    ubicacio,
    (SELECT area FROM arees WHERE nom = 'Parc Central')
);

Resum

En aquesta secció, hem après a:

  • Instal·lar i verificar PostGIS.
  • Crear taules amb columnes geomètriques.
  • Inserir i consultar dades geoespacials.
  • Utilitzar funcions espacials per a operacions comunes.

Aquestes habilitats són fonamentals per treballar amb dades geoespacials en PostgreSQL, permetent-te desenvolupar aplicacions GIS robustes i eficients.

Curs de PostgreSQL

Mòdul 1: Introducció a PostgreSQL

Mòdul 2: Operacions bàsiques de SQL

Mòdul 3: Consultes SQL avançades

Mòdul 4: Disseny de bases de dades i normalització

Mòdul 5: Funcionalitats avançades de PostgreSQL

Mòdul 6: Optimització i millora del rendiment

Mòdul 7: Seguretat i gestió d'usuaris

Mòdul 8: Treballant amb JSON i funcionalitats NoSQL

Mòdul 9: Extensions i eines avançades

Mòdul 10: Estudis de cas i aplicacions del món real

© Copyright 2024. Tots els drets reservats