SQL Academy · leksjon

Geospatial indeksering med PostGIS

Legg til PostGIS-utvidelsen, lagre geometri/geografi, og spør etter romlige relasjoner med GiST-indekser.

Leksjon 3 av 414 trinn

Geospatial indeksering med PostGIS er en gratis leksjon i SQL Academy på CoddyKit. Dette er leksjon 3 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i SQL Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i SQL Academy inneholder totalt 4 leksjoner.

Hva er PostGIS?

Den kraftigste geospatiale utvidelsen som finnes i en åpen kildekode-DB. Den legger til geometry-/geography-typer, hundrevis av romlige funksjoner og GiST-/SP-GiST-indekser for raske romlige spørringer.

Aktiver PostGIS

Det er en contrib-utvidelse:

CREATE EXTENSION postgis;

SELECT PostGIS_Version();

GEOMETRY kontra GEOGRAPHY

  • GEOMETRY — plan, rask, enheter fra koordinatsystemet (ofte meter / grader)
  • GEOGRAPHY — sfærisk jord, tregere, enheten er alltid meter

Velg GEOGRAPHY for «avstander på jorden» med data fra blandede regioner, og GEOMETRY for projiserte koordinatsystemer (regional GIS og raske operasjoner).

Lagring av punkter

Et vanlig mønster er å lagre 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 for GPS-lat/lon.

Romlig GiST-indeks

Indekser geometry-kolonnen med GiST:

CREATE INDEX places_location_idx ON places USING GIST (location);
-- Now spatial filters are fast.

Nærmeste nabo: <->

KNN-operatoren <-> returnerer de nærmeste resultatene på millisekunder når en indeks brukes:

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;

Innenfor en avstand

Finn steder innenfor 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 arealer

Lagre og spør på polygoner (bygrenser og leveringssoner):

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';

Skjærer, inneholder, ligger innenfor

Et rikt utvalg av romlige predikater: ST_Intersects, ST_Contains, ST_Within, ST_Touches, ST_Disjoint, ST_Equals.

Last inn GeoJSON

Importer GeoJSON direkte til PostGIS:

INSERT INTO zones (name, area)
SELECT 'Mitte', ST_GeogFromGeoJSON('{"type":"Polygon","coordinates":[...]}');

Generering av vektorfliser

PostGIS 3.0+ kan generere Mapbox-vektorfliser direkte med ST_AsMVT — gi kartgrensesnittet full kraft direkte fra DB-en.

Oppsummering

PostGIS gjør Postgres til en seriøs GIS-motor.

  • GEOMETRY for projiserte koordinater, GEOGRAPHY for avstander på jorden
  • GiST-indeks for romlige filtre og KNN
  • ST_DWithin, ST_Distance, ST_Within
  • SRID 4326 = WGS84 lat/lon

Hurtigsjekk

Du lagrer brukerposisjoner som GEOGRAPHY(POINT). Hvilken indekstype gjør spørringer av typen «finn innenfor 5 km» raskere?

Gratis å komme i gang

Lær deg SQL med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
46
Leksjoner
183

Ofte stilte spørsmål

Er leksjonen «Geospatial indeksering med PostGIS» gratis?

Ja – hele teksten i «Geospatial indeksering med PostGIS» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av SQL Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i SQL Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «Geospatial indeksering med PostGIS»?

Legg til PostGIS-utvidelsen, lagre geometri/geografi, og spør etter romlige relasjoner med GiST-indekser. Du øver på SQL Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med SQL Academy?

Ingen tidligere erfaring er nødvendig. SQL Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.

Hvor lang tid tar leksjonen «Geospatial indeksering med PostGIS»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne SQL Academy-leksjonen?

Ja. Alle SQL Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Trigram-søk (pg_trgm) for omtrentlig treff
  2. Fulltekstsøk med tsvector og GIN
  3. Geospatial indeksering med PostGIS
  4. Vektorsøk med pgvector
← Tilbake til SQL Academy