Ich habe eine Reihe von Polygonen, die große Gebiete darstellen, beispielsweise Stadtviertel. Ich möchte die großen überlappenden Bereiche zwischen ihnen identifizieren.
Aber es gibt ein Problem: Manchmal überlappen sich diese Polygone entlang ihres Umfangs (weil sie mit geringer Genauigkeit gezeichnet wurden). Dies erzeugt lange und enge Überlappungen, die mir egal sind.
In anderen Fällen kommt es jedoch zu großen Überlappungen robuster Polygone, dh zu großen Bereichen, in denen das Polygon eines Stadtviertels ein anderes überlappt. Ich möchte nur diese auswählen.
Siehe das Bild unten nur der Überlappungen. Stellen Sie sich vor, ich wollte nur das blaue Polygon in der unteren linken Ecke auswählen.
Ich könnte mir Bereiche ansehen, aber manchmal sind die schmalen so lang, dass sie Bereiche haben, die so groß sind wie das blaue Polygon. Ich habe versucht, ein Verhältnis von Fläche / Umfang zu erreichen, aber das hat auch zu gemischten Ergebnissen geführt.
Ich habe es sogar versucht ST_MinimumClearance
, aber manchmal ist an den großen Flächen ein schmaler Teil oder zwei sehr enge Eckpunkte angebracht.
Irgendwelche Ideen für andere Ansätze?
Am Ende funktionierte für mich am besten ein negativer Puffer, wie von @Cyril und @FGreg unten vorgeschlagen.
Ich habe so etwas benutzt wie:
ST_Area(ST_Buffer(geom, -10)) as neg_buffer_area
In meinem Fall waren Einheiten Meter, also 10 m negativer Puffer.
Bei schmalen Polygonen gab dieser Bereich Null zurück (außerdem wäre die Geometrie leer). Dann habe ich diese Spalte verwendet, um die schmalen Polygone herauszufiltern.