eine PostgreSQL 9.4 jsonb Spalte 'Standort' Gegeben mit Inhalt wie folgt aus:Postgis Abfrage ST_Intersects mit GeoJSON (jsonb)
{"type": "FeatureCollection","features": [
{
"properties": {},
"geom": "01030000000100000004000000000000000000244000000000000049400000000000002840000000000000494000000000000026400000000000004A4000000000000024400000000000004940",
"type": "Feature",
"geometry": {"type": "Polygon", "coordinates": [[[10,50],[12,50],[11,52],[10,50]]]}
},
{..},
{..}
]}
die Funktionstaste 'geom' abzurufen verwende ich diese Abfrage:
SELECT geom
FROM (
SELECT jsonb_array_elements(t.location -> 'features') -> 'geom' AS geom
FROM my_object t) AS g
WHERE geom IS NOT NULL;
Funktioniert. Aber jetzt würde Ich mag eine Postgis ST_Intersects
Abfrage wie dies zu tun:
SELECT ST_Intersects(g.geom, ST_GeomFromText('POINT(11 51)'))
FROM (
SELECT t.iid, (jsonb_array_elements(t.location -> 'features') -> 'geom') AS geom
FROM my_object t) AS g;
funktioniert nicht, da g.geom als jsonb
geliefert: function st_intersects(jsonb, geometry) does not exist
. Ich habe versucht, text
zu werfen, der Fehler ist dann function st_intersects(text, geometry) is not unique
. Wie muss ich mit jsonb
Ergebnissen als Eingabe für Postgis-Funktionen umgehen?
Perfekt, danke! Eine kleine Frage: es scheint, es funktioniert ohne LATERAL Schlüsselwort auf die gleiche Weise ..? – Rainer
Mit einer Tabellenfunktion ist das Schlüsselwort 'LATERAL' in der Tat optional, wie auch in der Dokumentation, auf die ich mich beziehe, beschrieben ist. Ich habe es hier für "Bildungszwecke" aufgenommen. – Patrick
Hab es, danke nochmal Patrick! – Rainer