Geodatenindizierung mit PostGIS
Fügen Sie die PostGIS-Erweiterung hinzu, speichern Sie geometry/geography und fragen Sie räumliche Beziehungen mit GiST-Indizes ab.
Geodatenindizierung mit PostGIS ist eine kostenlose SQL Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des SQL Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der SQL Academy-Kurs umfasst insgesamt 4 Lektionen.
Was ist PostGIS?
Die leistungsfähigste Geodaten-Erweiterung in einer beliebigen Open-Source-Datenbank. Sie fügt Geometrie-/Geografie-Typen, Hunderte räumliche Funktionen sowie GiST-/SP-GiST-Indizes für schnelle räumliche Abfragen hinzu.
PostGIS aktivieren
Es handelt sich um eine Contrib-Erweiterung:
CREATE EXTENSION postgis;
SELECT PostGIS_Version();GEOMETRY vs. GEOGRAPHY
- GEOMETRY — planar, schnell, Einheiten des Koordinatensystems (oft Meter/Grad)
- GEOGRAPHY — kugelförmige Erde, langsamer, Einheiten immer in Metern
Wählen Sie GEOGRAPHY für „Entfernungen auf der Erde“ bei Daten aus verschiedenen Regionen; verwenden Sie GEOMETRY für projizierte Koordinatensysteme (regionales GIS, schnelle Operationen).
Punkte speichern
Ein gängiges Muster: Breiten- und Längengrad als GEOGRAPHY-Punkt speichern:
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
Die „Spatial Reference ID“ definiert das Koordinatensystem. WGS84 (ID 4326) ist der Standard für GPS-Breiten- und Längengrade.
Räumlicher GiST-Index
Ihre Geometriespalte mit GiST indizieren:
CREATE INDEX places_location_idx ON places USING GIST (location);
-- Now spatial filters are fast.Nächste Nachbarn: <->
Der <->-KNN-Operator liefert mit einem Index innerhalb von Millisekunden die nächsten Ergebnisse:
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;Innerhalb einer Entfernung
Orte innerhalb von 2 km um einen Punkt finden:
SELECT name FROM places
WHERE ST_DWithin(
location,
ST_GeogFromText('SRID=4326;POINT(13.4 52.5)'),
2000 -- meters
);Polygone und Flächen
Polygone speichern und abfragen (Stadtgrenzen, Lieferzonen):
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';Überschneiden, Enthalten, Innerhalb
Umfangreiche Auswahl räumlicher Prädikate: ST_Intersects, ST_Contains, ST_Within, ST_Touches, ST_Disjoint, ST_Equals.
GeoJSON laden
GeoJSON direkt in PostGIS importieren:
INSERT INTO zones (name, area)
SELECT 'Mitte', ST_GeogFromGeoJSON('{"type":"Polygon","coordinates":[...]}');Erzeugung von Vector Tiles
PostGIS 3.0+ kann mit ST_AsMVT direkt Mapbox-Vector-Tiles erzeugen — damit lassen sich Kartenoberflächen direkt aus der Datenbank versorgen.
Zusammenfassung
PostGIS macht aus Postgres eine leistungsfähige GIS-Engine.
- GEOMETRY für projizierte Koordinaten, GEOGRAPHY für Entfernungen auf der Erde
- GiST-Index für räumliche Filter und KNN
- ST_DWithin, ST_Distance, ST_Within
- SRID 4326 = WGS84-Breiten-/Längengrade
Schnelltest
Sie speichern Benutzerstandorte als GEOGRAPHY(POINT). Welcher Indextyp beschleunigt Abfragen nach dem Muster „innerhalb von 5 km finden“?
Häufig gestellte Fragen
Ist die Lektion „Geodatenindizierung mit PostGIS“ kostenlos?
Ja — der vollständige Text von „Geodatenindizierung mit PostGIS“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des SQL Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der SQL Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Geodatenindizierung mit PostGIS“?
Fügen Sie die PostGIS-Erweiterung hinzu, speichern Sie geometry/geography und fragen Sie räumliche Beziehungen mit GiST-Indizes ab. Du übst SQL Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um SQL Academy zu starten?
Keine Vorkenntnisse erforderlich. SQL Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.
Wie lange dauert die Lektion „Geodatenindizierung mit PostGIS“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser SQL Academy-Lektion Code schreiben und ausführen?
Ja. Jede SQL Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Trigramm-Suche (pg_trgm) für unscharfe Übereinstimmungen
- Volltextsuche mit tsvector und GIN
- Geodatenindizierung mit PostGIS
- Vektorsuche mit pgvector