PostGIS SQL: Transform & Buffer

Servus!

Ich habe eine Shapefile mit Polygonen zur Hand und will diese in ein anderes Koordinatensystem transformieren. Dazu hab ich inzwischen gefühlte hunderte Ansätze und Abfragen gesehen, von denen aber irgendwie keine funktioniert. Teilweise werden mir da Fehler angezeigt wie “Funktion existiert nicht”, “Syntaxfehler” oder ähnliches. Dazu muss man noch sagen, ich bin recht neu im Umgang mit PostGIS.

Meine letzte Abfrage sah jetzt so aus:

*SELECT ST_Transform(srid (‘id’, 25832), 4326) FROM “xyz”;

Dazu kommt dieses Mal folgender Fehler:

SQL-Fehler: SELECT ST_Transform(srid (‘id’, 25832), 4326) FROM “xyz” ergab 0 [FEHLER: Funktion srid(unknown, integer) existiert nicht
LINE 1: SELECT ST_Transform(srid (‘fid’, 25832), 4326) FROM “xyz” ^
HINT: Keine Funktion stimmt mit dem angegebenen Namen und den Argumenttypen überein. Sie müssen möglicherweise ausdrückliche Typumwandlungen hinzufügen.
]

So langsam geht mir der Rat aus. Ich weiß da einfach nicht mehr weiter. So ziemlich jede Abfrage, die ich hier im Forum bisher gelesen habe dazu, hat bei mir nicht funktioniert. :zipper_mouth_face:


Und hinzu soll um die Polygone ein Buffer von 20 Kilometern geschaffen werden. Dies habe ich folgendermaßen geskriptet:

SELECT*FROM “xyz” st_buffer (“id”) with 20000,00;

Da kommt dann folgender Fehler:

SQL-Fehler: SELECTFROM “xyz” st_buffer (“id”) with 20000,00 ergab 0 [FEHLER: Syntaxfehler bei »with«
LINE 1: SELECT
FROM “xyz” st_buffer (“id”) with 20000,00

Vielleicht sinds ja nur recht einfache Fehler, die ich hier nicht bemerke, aber mich macht das schon wahnsinnig, ich sitze da seit Tagen dran. :smile:
Vielleicht hat ja jemand Tipps für mich.

vorweg: von PostGIS hab ich nur bedingt Ahnung.

Es gibt eine Funktion st_srid(), die eine Geometrie erwartet. Du rufst eine Funktion srid() mit einem String und einem Integer auf, die nicht definiert ist.

https://postgis.net/docs/ST_SRID.html
https://postgis.net/docs/ST_Transform.html
https://postgis.net/docs/ST_Buffer.html

Da findest Du die Aufrufsysntax für die 3 von Dir genannten Funktionen.

Hallo!

  1. Umtransformieren
    Select st_transform(geom, 4316) from (oder geometry)
    So könntest du das entsprechend um weitere Daten ergäzt als View realisieren, wenn die DAten persistent sein sollen machst ein Update draus.
  2. Butter
    Select st_buffer(geom, 20000) from
    Auch hier kannst du das als View realisieren, mit einem Update wird es eher schwierig.

Insgesamt liefert dir die überaus hervorragende PostGIS-Doku alle Antworten, wie akretschmer bereits verlinkt hat.

Viele Grüße
Uwe

Danke übrigens!
Die Kombination der SQL-Terme von @Gisman und die Links von @akretschmer haben bei mir die Lösung gebracht!

1 Like