Geospatial indeksering med PostGIS
Tilføj PostGIS-udvidelsen, gem geometry/geography, og forespørg på rumlige relationer med GiST-indekser.
Geospatial indeksering med PostGIS er en gratis SQL Academy-lektion på CoddyKit. Dette er lektion 3 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i SQL Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. SQL Academy-kurset indeholder 4 lektioner i alt.
Hvad er PostGIS?
Den mest kraftfulde geospatiale udvidelse i en database med åben kildekode. Den tilføjer geometry- og geography-typer, hundredvis af rumlige funktioner samt GiST- og SP-GiST-indekser til hurtige rumlige forespørgsler.
Aktivér PostGIS
Det er en contrib-udvidelse:
CREATE EXTENSION postgis;
SELECT PostGIS_Version();GEOMETRY over for GEOGRAPHY
- GEOMETRY — plan, hurtigt, enheder fra koordinatsystemet, ofte meter eller grader
- GEOGRAPHY — sfærisk jord, langsommere, enheder altid i meter
Vælg GEOGRAPHY til "afstande på jorden" med data fra blandede regioner, og GEOMETRY til projicerede koordinatsystemer som regionale GIS-data og hurtige operationer.
Lagring af punkter
Et almindeligt mønster er at gemme en lat/lon som et GEOGRAPHY-punkt:
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
"Spatial Reference ID" definerer koordinatsystemet. WGS84 (id 4326) er standarden til GPS-lat/lon.
GiST-rumligt indeks
Indeksér din geometry-kolonne med GiST:
CREATE INDEX places_location_idx ON places USING GIST (location);
-- Now spatial filters are fast.Nærmeste nabo: <->
KNN-operatoren <-> med et indeks returnerer de nærmeste resultater på millisekunder:
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;Inden for en afstand
Find steder inden for 2 km fra et punkt:
SELECT name FROM places
WHERE ST_DWithin(
location,
ST_GeogFromText('SRID=4326;POINT(13.4 52.5)'),
2000 -- meters
);Polygoner og områder
Gem og forespørg på polygoner som bygrænser og leveringszoner:
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';Skærer, indeholder, ligger inden for
Et omfattende sæt rumlige prædikater: ST_Intersects, ST_Contains, ST_Within, ST_Touches, ST_Disjoint, ST_Equals.
Indlæsning af GeoJSON
Importér GeoJSON direkte til PostGIS:
INSERT INTO zones (name, area)
SELECT 'Mitte', ST_GeogFromGeoJSON('{"type":"Polygon","coordinates":[...]}');Generering af vektorfliser
PostGIS 3.0+ kan generere Mapbox-vektorfliser direkte med ST_AsMVT — giv kortbrugerflader strøm direkte fra databasen.
Opsummering
PostGIS gør Postgres til en seriøs GIS-motor.
- GEOMETRY til projicerede koordinater og GEOGRAPHY til afstande på jorden
- GiST-indeks til rumlige filtre og KNN
- ST_DWithin, ST_Distance, ST_Within
- SRID 4326 = WGS84-lat/lon
Hurtigt tjek
Du gemmer brugerplaceringer som GEOGRAPHY(POINT). Hvilken indekstype gør forespørgsler som "find inden for 5 km" hurtigere?
Lær SQL med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 46
- Lektioner
- 183
Ofte stillede spørgsmål
Er lektionen “Geospatial indeksering med PostGIS” gratis?
Ja — hele teksten til “Geospatial indeksering med PostGIS” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af SQL Academy-kurset, skal du opgradere til CoddyKit PRO. SQL Academy-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Geospatial indeksering med PostGIS”?
Tilføj PostGIS-udvidelsen, gem geometry/geography, og forespørg på rumlige relationer med GiST-indekser. Du øver dig i SQL Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på SQL Academy?
Der kræves ingen tidligere erfaring. SQL Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 4.
Hvor lang tid tager lektionen “Geospatial indeksering med PostGIS”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne SQL Academy-lektion?
Ja. Alle SQL Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Trigram-søgning (pg_trgm) til fuzzy matching
- Fuldtekstsøgning med tsvector og GIN
- Geospatial indeksering med PostGIS
- Vektorsøgning med pgvector