PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

So verwenden Sie ST_Intersects in der WHERE-Klausel

Wahrscheinlich versuchen Sie, ST_Intersects zu verwenden mit einem Alias ​​eines Ausdrucks, nicht einer Spalte oder einer Geometrie. Und Ihre Logik ist umgekehrt:Sie müssen zuerst die Geometrien aus Ihrer Feature-Sammlung analysieren und ausgeben und dann den Filter anwenden, nicht umgekehrt:

WITH datasource (feature) AS (
 SELECT json_array_elements('{json_string}'::json->'features')  
)
SELECT 
  ST_AsGeoJSON(ST_Union(ST_GeomFromGeoJSON(feature->>'geometry'))),
  ST_AsText(ST_Union(ST_GeomFromGeoJSON(feature->>'geometry')))
FROM datasource
WHERE NOT ST_Intersects(ST_GeomFromGeoJSON(feature->>'geometry'),'{a geometry}');