SQL Academy · Lektion

Geospatial indeksering med PostGIS

Tilføj PostGIS-udvidelsen, gem geometry/geography, og forespørg på rumlige relationer med GiST-indekser.

Lektion 3 af 414 trin

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?

Gratis at komme i gang

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

  1. Trigram-søgning (pg_trgm) til fuzzy matching
  2. Fuldtekstsøgning med tsvector og GIN
  3. Geospatial indeksering med PostGIS
  4. Vektorsøgning med pgvector
← Tilbage til SQL Academy