Fragen zu PostGIS

Guten Tag zusammen,

zu PostGIS habe ich ein paar Fragen.

  • Wie sieht es mit der Performance aus? Ich habe “nur” einen AMD G-T40N Processor (997.90-MHz K8-class CPU) und 2GB Arbeitsspeicher als Webserver mit PostgreSQL-Backend.
  • Wie performant ist es, festzustellen, ob ein Punkt innerhalb eines Multipolygons liegt? Jetzt habe ich es in PHP ausgelagert, soll dann aber von der Datenbank übernommen werden.
  • Wie aufwändig ist die Konvertierung der Polygon-Daten? Jetzt habe ich Geodaten (Landkreisgrenzen, Gemeindegrenzen, …) als Array in Textform in einem Text-Feld gespeichert: “[[[lon,lat],[lon1, lat1],…”. Es soll eine weitere Spalte dazukommen, in der das (Multi-)Polygon im PostGIS-Format abgelegt ist.

Danke im Voraus für die Antworten.

Jürgen

Das wirst Du wohl testen müssen. Bei nur 2 GB für DB und Webserver …, nun ja, kommt drauf an, wie vielen Daten da drin sind und wie viele Requests Du hast.
Ob ein Punkt innerhalb einer Fläche liegt geht mit PostGIS mit Sicherheit aber schneller als über PHP.

Hallo!

Ich würde statt Multipolygonen einzelne nehmen. Da wird zuerst eine Boundingbox geprüft und die geht über alle Polygone im Multipolygon inclusive des leeren Raums dazwischen. Dann bringt dir auch ein räumlicher Index was. Bei deinen Randbedingungen ist natürlich die Menge der Punkte und Polygone sowie die Anzahl der gleichzeitigen Anfragen entscheidend. Bei 2GB Speicher sieht das eher mau aus. Zur Konvertierung: Ich würde mir eine Tabelle der Art id, Polygon-Ident, Punktnummer im Polygon, lat, lon erstellen und dann mit den PostGIS-Werkzeugen ST_Makeline und ST_MakePolypon das Polygon zu erstellen. Es hängt natürlich auch davon ab, wie deine Multipolygone da abgebildet sind.
Es gibt im Übrigen solche amtlichen Daten dank GDI-DE auch kostenfrei zum Download, DLM250 z.B.)

Gruß Uwe

PS: Im Zusammenhang mit Gemeindegrenzen ist ein Multipolygon schon sinnvoll, gibt ja auch Ex- und Enklaven. Es stand halt nur am Ende :wink:

Guten Abend Uwe,

heute habe ich be einer einsamen Bergtour etwas nachgedacht. Ich werde es anders machen:
Ich werde in der Tabelle “Wetterstationen”, “Radarstationen” und “Webcam-Standorte” eine weitere Spalte hinzufügen. Dann per Skript abprüfen, ob die Station im gespeicherten Array liegt.
Dies muss nur einmal durchgeführt werden und im Ergebnis hält es die Last niedrig.

Wenn sich an den Gemeinde oder Landkreisen etwas ändert, müssen nur die geänderten Daten abgeprüft werden.

Danke für den Tipp. Die Gemeinde, Landkreis und Bundeslandgrenzen habe ich als GeoJSON vorliegen und sind auch schon in den Tabellen

Schönen Abend noch

Grüßle Jürgen

Das ist ein Guter Ansatz, Da sich die Stationen ja auch vermutlich nicht bewegen.
Du kannst auch aus GeoJSON PostGIS-Geometrien erzeugen:
https://postgis.net/docs/manual-3.0/ST_GeomFromGeoJSON.html

Grüße Uwe

Hallo Uwe,
die Sache habe ich jetzt mit einem PHP-Skript erledigt. Die Laufzeit war überraschend kurz: 3 Minuten.
Datenumfang: 2100 Stationen wurden gegen 11036 Gemeinden und 490 Regionen geprüft.

Ich habe mir PostGIS mal etwas näher angesehen. Ich glaube, ich muss mir das mal installieren und für meine Homepage einsetzen :smiley:

Beste Grüße und “g’sund bleibn”

Sehr schön :wink:
Die Geschwindigkeit des Servers hängt stark von den Resourcen ab, vor allem der Speichermenge die eine Transaktion haben kann. Auch die Indizierung ist extrem wichtig bei Geodaten, deshalb am Anfang auch der Hinweis wegen der Multipolygone.
Grüße aus dem Homeoffice
Uwe