fix(extract): Hüllrechteck ohne Zusatzpunkte auf den Kanten

_sides() und _place_rows() nehmen die ersten vier Ringpunkte eines Rechtecks
als seine Ecken. GEOS setzt nach dem Puffern je nach Plattform zusätzliche
Punkte mitten auf die Kanten (macOS 0, Windows 2), und dann messen beide die
falschen Kanten: ergänzte Gebäude bekamen unter entfernten Beschriftungen eine
falsche Größe und eine falsche Richtung. simplify(0) entfernt genau diese
Punkte und lässt die Form unverändert.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
knsoandClaude Sonnet 5 committed 2026-09-16 05:54:22 +02:00
1 parent aa699b1585
commit 73a6df7f08
2 files changed
+8 -4

No files matched your search

+5 -1
View File
@@ -555,7 +555,11 @@ def _rectangle(rows, cols) -> Polygon:
# Siehe buildings.regularize(): harmlose GEOS-Warnung bei achsenparallelen Formen.
warnings.filterwarnings("ignore", message=r".*oriented_envelope.*", category=RuntimeWarning)
envelope = points.minimum_rotated_rectangle
return envelope.buffer(0.5, cap_style="square", join_style="mitre")
# simplify(0) wirft nur Punkte weg, die genau auf einer Kante liegen, und lässt die Form
# unverändert. Nötig, weil GEOS je nach Plattform solche Punkte setzt (macOS 0, Windows 2) und
# _sides() wie _place_rows() die ersten vier Ringpunkte als Ecken nehmen: mit Zusatzpunkten
# messen sie die falschen Kanten und setzen ergänzte Gebäude in falscher Größe und Richtung.
return envelope.buffer(0.5, cap_style="square", join_style="mitre").simplify(0)
def _sides(rect: Polygon) -> tuple[float, float]: