buildings.py regularisiert Gebäude-Maskenpolygone (gebaeude/spekulativ) zu Rechtecken, wenn sie ihr gedrehtes Hüllrechteck zu mindestens 85 % ausfüllen, sonst zu vereinfachten Grundrissen; zu kleine oder entartete Polygone liefern None. heights.py weist Gebäuden eine Höhe zu (Wahrzeichen-Treffer schlägt Viertel-Bereich, deterministisch geseedet) und platziert Palmenpunkte entlang strandnaher Mittellinien: der Versatz vom Fahrbahnrand wird von innen nach außen gesucht (PALM_VERGE), bis eine Position sowohl PALM_KERB von der Fahrbahn als auch PALM_CLEARANCE von Gebäuden einhält; findet sich keine, entfällt die Palme. Start bei halber PALM_SPACING verhindert doppelte Palmen an Kreuzungen, wo Task 4 Mittellinien pro Ast trennt. pyproject.toml ergänzt einen gezielten filterwarnings-Eintrag: Shapelys oriented_envelope (minimum_rotated_rectangle) meldet für bereits achsen- parallele/rechtwinklige Polygone eine RuntimeWarning aus GEOS (Winkelterm wird 0/0), obwohl das Ergebnis nachweislich korrekt bleibt – u.a. löst der Briefs eigener L-Shape-Test das aus. Nur dieser eine Text+Kategorie- kombinierte Fall wird gefiltert, jede andere Warnung bleibt sichtbar. Auf dem echten Mosaik: 2141 Gebäudepolygone (258 spekulativ, 211 von regularize verworfen), Höhen 6.0-15.0 m (nur "district", da data/skyline.json und data/districts.json erst in Task 6 kommen), 2433 Palmenpunkte. Straßen- und Mittellinienzahlen (475 Stücke/40 Brücken, 2323 Linien/Median 27 m) decken sich exakt mit den in Task 4 unabhängig ermittelten Referenzwerten. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
24 lines
800 B
TOML
24 lines
800 B
TOML
[project]
|
|
name = "leonida-extract"
|
|
version = "0.1.0"
|
|
requires-python = ">=3.12"
|
|
dependencies = [
|
|
"numpy>=2.1", "scipy>=1.14", "scikit-image>=0.24",
|
|
"shapely>=2.0", "networkx>=3.3", "pillow>=10.4",
|
|
]
|
|
|
|
[dependency-groups]
|
|
dev = ["pytest>=8.3"]
|
|
|
|
[tool.pytest.ini_options]
|
|
testpaths = ["tests"]
|
|
pythonpath = ["."]
|
|
filterwarnings = [
|
|
# Shapelys oriented_envelope (minimum_rotated_rectangle) meldet fuer bereits
|
|
# achsenparallele/rechtwinklige Polygone eine RuntimeWarning aus GEOS (Winkelterm
|
|
# wird 0/0), obwohl das zurueckgegebene Rechteck nachweislich korrekt bleibt. Nur
|
|
# diese eine, an Text und Kategorie festgemachte Warnung wird gefiltert; jede andere
|
|
# Warnung (auch jede echte DeprecationWarning) bleibt sichtbar.
|
|
"ignore:.*oriented_envelope.*:RuntimeWarning",
|
|
]
|