Ich versuche gerade eine Aufgabenstellung zu lösen.
Ich habe 4 große Gebiete die durch Polygons dargestellt werden. Ich habe ganz viele kleine Polygons welche ich erst prüfe ob sie innerhalb eines der großen Gebiete liegen.
IF st_contains(geom_gebiet, geom_polygon) = TRUE THEN
Wenn nicht prüfe ich ob sie teilweise in einem Gebiet liegen.
IF st_intersects(geom_gebiet, geom_polygon) = TRUE THEN
Wenn Sie teilweise in einem Gebiet liegen dann splitte ich die Polygons.
Jetzt gehe ich die erzeugten Teilstücke in einer Schleife durch um zu prüfen welches erzeugte Teilstück sich jetzt innerhalb des Gebiets befindet. Hier kommt mein Problem “st_contains” liefert immer “False” weil sich eine Grenze des Polygons auf der Linie des Gebiets befindet. Wie könnte man jetzt das Polygon des Gebiets um 1-2 Punkte temporär vergrößern so das “st_contains” wieder “True” ergibt?
Hm. Leider Sind die kleinen Polygone einzelnen Geometrien oder Multipolygone? hast du die Schnittpunkte in das große Polygon eingefügt? Welches Ergebnis liefern die Funktionen dann? Diese könntest du dann ggf. verschieben, um das kleine Polygon wieder im Inneren zu haben. Oder zu machst einen Buffer um das kleine Polygon, vereinigst diesen mit dem großen und hast wieder die kleine Geometrie im Innern. Oder du probierst st_dwithin() und probierst eine Abstand aus.
Das PostGIS Handbuch hat im übrigen wie ich im Moment sehe ein ganzes Kapitel zu dem Thema (4.3.6). Anscheinend funktionieren die ganzen Funktionen nur, wenn sich die Geometrien in einem Punkt schneiden. Die Funktion ST_Relate() scheint das zu umgehen. Vielleicht hilft dir das weiter.
Gruß Uwe
Edit: Natürlich kannst du auch einfach einen Buffer um das große Polygon legen… Note to myself: Keine Posts mehr ohne Kaffee
Die geschnittenen kleinen Polygone sind alles einzelne Flächen die auch in eine neue Tabelle eingefügt werden und keine Multipolygons. Ja ich belese mich gerade auch noch und bin auch schon auf st_relate gestoßen so richtig weiß ich noch nichts damit anzufangen. Ich glaube eine temporäre Flächenvergrößerung des Gebiets um 0,5m müsste ausreichen. Wie macht man einen Buffer um ein Polygon? Mit Punkten und Linien habe ich es schon gemacht?