Indicizzazione geospaziale con PostGIS
Aggiunga l’estensione PostGIS, memorizzi geometry/geography e interroghi le relazioni spaziali con indici GiST.
Indicizzazione geospaziale con PostGIS è una lezione SQL Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento SQL Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso SQL Academy include 4 lezioni in totale.
Che cos'è PostGIS?
È l'estensione geospaziale più potente disponibile in un DB open source. Aggiunge i tipi geometry/geography, centinaia di funzioni spaziali e indici GiST/SP-GiST per query spaziali veloci.
Abilitare PostGIS
È un'estensione contrib:
CREATE EXTENSION postgis;
SELECT PostGIS_Version();GEOMETRY vs GEOGRAPHY
- GEOMETRY — planare, veloce, con unità del sistema di coordinate (spesso metri/gradi)
- GEOGRAPHY — basata sulla superficie terrestre, più lenta, con unità sempre in metri
Scelga GEOGRAPHY per le "distanze sulla Terra" con dati di regioni diverse; scelga GEOMETRY per i sistemi di coordinate proiettati (GIS regionale e operazioni veloci).
Memorizzazione dei punti
Un approccio comune consiste nel memorizzare latitudine/longitudine come punto 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
Lo "Spatial Reference ID" definisce il sistema di coordinate. WGS84 (id 4326) è lo standard per latitudine/longitudine GPS.
Indice spaziale GiST
Indicizzi la colonna geometry usando GiST:
CREATE INDEX places_location_idx ON places USING GIST (location);
-- Now spatial filters are fast.Vicino più prossimo: <->
L'operatore KNN <->, usato con un indice, restituisce i risultati più vicini in pochi millisecondi:
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;Entro una distanza
Trovi i luoghi entro 2 km da un punto:
SELECT name FROM places
WHERE ST_DWithin(
location,
ST_GeogFromText('SRID=4326;POINT(13.4 52.5)'),
2000 -- meters
);Poligoni e aree
Memorizzi e interroghi i poligoni (confini delle città, zone di consegna):
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';Interseca, contiene, è contenuto
Un ricco insieme di predicati spaziali: ST_Intersects, ST_Contains, ST_Within, ST_Touches, ST_Disjoint, ST_Equals.
Caricamento di GeoJSON
Importi GeoJSON direttamente in PostGIS:
INSERT INTO zones (name, area)
SELECT 'Mitte', ST_GeogFromGeoJSON('{"type":"Polygon","coordinates":[...]}');Generazione di tile vettoriali
PostGIS 3.0+ può generare direttamente tile vettoriali Mapbox con ST_AsMVT — per alimentare le interfacce delle mappe direttamente dal DB.
Riepilogo
PostGIS trasforma Postgres in un vero motore GIS.
- GEOMETRY per sistemi proiettati, GEOGRAPHY per le distanze sulla Terra
- Indice GiST per filtri spaziali e KNN
- ST_DWithin, ST_Distance, ST_Within
- SRID 4326 = WGS84 latitudine/longitudine
Verifica rapida
Memorizza le posizioni degli utenti come GEOGRAPHY(POINT). Quale tipo di indice accelera le query "trova entro 5 km"?
Impara SQL con un tutor IA — gratis
Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.
- Corsi
- 46
- Lezioni
- 183
Domande Frequenti
La lezione «Indicizzazione geospaziale con PostGIS» è gratuita?
Sì — il testo completo di «Indicizzazione geospaziale con PostGIS» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso SQL Academy, passa a CoddyKit PRO. Il corso SQL Academy include 4 lezioni in totale.
Cosa imparerò in «Indicizzazione geospaziale con PostGIS»?
Aggiunga l’estensione PostGIS, memorizzi geometry/geography e interroghi le relazioni spaziali con indici GiST. Eserciti SQL Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare SQL Academy?
Non è richiesta alcuna esperienza precedente. SQL Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «Indicizzazione geospaziale con PostGIS»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione SQL Academy?
Sì. Ogni lezione SQL Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Ricerca per trigrammi (pg_trgm) per il fuzzy matching
- Ricerca full-text con tsvector e GIN
- Indicizzazione geospaziale con PostGIS
- Ricerca vettoriale con pgvector