Abfrage von Gebäuden innerhalb BoundingBOX

Hallo,

ich habe eine Frage bezüglich der räumlichen Abfrage von Gebäuden.
Vielleicht hatte jemand schon so ein Problem?

Ich habe in meiner Datenbank Gebäudegeommetrien.
Von dem GroundPolygon bilde ich den Centroid. Jetzt mache ich Abfragen an die Datenbank um Gebäude innerhalb einer BoundingBox auszulesen.
Dies erfolgt durch den Befehlt ST_Contains().

--> verwendete Attribute
SELECT a.ID, b.ID, ST_AsGeoJSON(c.Geometry), d.Classname -- ST_AsGeoJSON() -> Konvertierung von Postgis intern in GeoJSON

--> Dateninput (verwendete Tabellen)
FROM  Building a, Thematic_Surface b, Surface_Geometry c, Objectclass d 

WHERE ST_Contains( ST_MakeEnvelope(3500060.29, 5392691.47, 3500277.065, 5393413.511, 31467), a.centroid_geom)-- 500m BBox

Er liest mir die Centroide raus die innerhalb liegen.
Ich habe mal ein Centroid genau auf die BBox-Grenze gelegt, dann liest er es nicht mehr aus.

Wenn ich also ST_Contains() nehme ist die Gefahr dar, dass ein Gebäude nicht ausgelesen wird, wenn es direkt auf der Linie liegt.
Wenn ich ST_Intersect() nehme ist die Gefahr dar, dass ein Gebäude somit in mehreren Kacheln vorkommen kann.

Hatte jemand schon so ein Problem und wenn ja, gibt es da einen Ansatz damit immer ein Gebäude in nur einer Kachel vorkommt.

schau Dir mal ST_Contains und ST_Within an, ich denke, damit solltest Du weiterkommen.

ST_Intersects wäre auch noch eine Möglichkeit, die auch Ergebnisse auf dem Rand erfasst WIMRE.

Guten Morgen!

Uwe