[FOSSGIS-Talk] Hilfe gesucht bei Postgis spatial join
Sven Geggus
lists at fuchsschwanzdomain.de
Do Sep 27 11:05:20 CEST 2018
Felix Kunde <felix-kunde at gmx.de> wrote:
> ich hoffe, ich habs richtig verstanden: Also sobald auch nur ein
> Punktfeature mit einer bestimmten Eigenschaft innerhalb des Polygons
> liegt, soll der Wert true sein?
Genau.
> Dann hätte ich folgende Abfrage mit Dummylisten zum schnellen ausprobieren:
>
> SELECT
> poly.id AS pid,
> bool_or(COALESCE(_ST_Intersects(poly.geom, pt.geom) AND pt.feat = 'foo', FALSE)) AS f1_test,
> bool_or(COALESCE(_ST_Intersects(poly.geom, pt.geom) AND pt.feat = 'bar', FALSE)) AS f2_test
> FROM
> (VALUES (1, 'POLYGON((0 0,2 0,2 2,0 2,0 0))'::geometry), (2, 'POLYGON((2 2,4 2,4 4,2 4,2 2))'::geometry)) AS poly(id, geom)
> LEFT JOIN
> (VALUES (1, 'foo', 'POINT(1 1)'::geometry), (2, 'bar', 'POINT(2 2)'::geometry)) AS pt(id, feat, geom)
> ON poly.geom && pt.geom
> GROUP BY
> poly.id;
Danke. Das sieht doch schon mal super aus.
Um das mit realen Daten auszuprobieren muss ich die Query auf eine BBox
begrenzen.
Normalerweise habe ich da sowas im query:
SELECT ... WHERE ... and geom && SetSRID('BOX3D(x1 y1, x2 y2)'::box3d,4326)
Wo müsste das hin? Hinter "&& pt.geom"?
Und eine zweite Frage noch, was bedeutet der Unterstrich vor ST_Intersects?
Sven
--
"If you don't make lower-resolution mapping data publicly
available, there will be people with their cars and GPS
devices, driving around with their laptops" (Tim Berners-Lee)
/me is giggls at ircnet, http://sven.gegg.us/ on the Web
Mehr Informationen über die Mailingliste FOSSGIS-Talk-Liste