cd tools/extract && PYTHONUTF8=1 uv run python run.py, nur wegen der
geaenderten Namensnennung im Manifest (Bordstein statt Bordstein und
Gehweg). Wie erwartet aendern sich nur manifest.json (die Attribution-
Zeile) und map.json (ihr abhaengiger manifest_sha256) - alle 144
Chunk-Dateien und die beiden Bilder bleiben byte-gleich, das Straßennetz
unveraendert (1.537 Knoten, 1.790 Kanten; 830 Bordsteinstuecke, 169
Restflaechen, 22.393 Markierungen, 56 Palmen entfernt - identisch zum
Fixwelle-Stand).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Die Pipeline erzeugt auf diesem Rechner nicht dieselben Daten wie auf dem Mac,
auf dem der bisherige Stand entstand: Pillow dekodiert die JPEG-Kacheln
minimal anders, bei unveränderten Paketversionen aus uv.lock. Betroffen sind
22 von 144 Chunks und die drei Kartendateien.
In neun Chunks ändert sich dabei auch die Zahl der Objekte je Ebene, weil
Flächen an Berührungspunkten anders verschmelzen oder sich teilen. Der
relative Flächenanteil je Ebene ist dabei kein verlässliches Maß und läuft bis
31.69 % hoch, weil einzelne Ebenen je Chunk nur wenige hundert m² groß sind.
Absolut liegt der größte Einzelverlust bei 1651 m² (chunk_1_3, Straße), davon
1541 m² räumlich deckungsgleich als Stadtfläche wiedergefunden; ähnlich
sauber chunk_3_0 mit 1286 m² verlorenem Gebäude gegen 1266 m² neue
Stadtfläche am selben Ort. Ausnahme: in chunk_1_1 verschwinden 66 m²
Gebäudefläche ersatzlos, ohne Entsprechung in Straße oder Stadtfläche
desselben Chunks.
Die Landplatte (`land`) bleibt in 20 von 22 Chunks unverändert. In chunk_4_11
Randrauschen (±11 m²), in chunk_3_11 schließt sich eine rund 150 m² kleine
Aussparung (netto +140 m² Land) – in keinem Chunk verliert die Landplatte per
Saldo Fläche.
Die Parkchunks (J6 bis K9) sind bis auf chunk_10_6 nicht betroffen; dort
ändern sich nur Koordinaten, weder Objektzahl je Ebene noch die Landplatte.
Ab hier ist Windows der Referenzrechner, damit spätere Läufe nur noch die
gewollten Änderungen zeigen.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Task 6: leonida/emit.py (chunk_box, split_by_chunk, chunk_payload und die
Chunk-lokalen three.js-Koordinaten, write_chunks, write_debug_png) sowie
run.py als Ablaufsteuerung, die alles aus den Tasks 3-5 zu 144 Chunk-Dateien
und einem Manifest unter public/data/vice-a/ zusammenfuehrt.
Zwei Abweichungen vom Referenzcode der Aufgabe, beide durch Gegenrechnen
gegen die dort genannten Realwerte gefunden:
- test_emit.py::test_coordinates_are_chunk_local_three_js gab im Original
das ungeschnittene BIG (spannt vier Chunks) direkt an chunk_payload();
chunk_payload() clippt selbst nicht (das tut in run.py split_by_chunk_all
vorher), darum lag der Rand bei x=300 statt <=250 und der Test schlug mit
dem gegebenen Code fehl. Fix: BIG vor dem Aufruf mit split_by_chunk auf
Chunk (0,0) zuschneiden, wie es run.py fuer "land" ohnehin tut.
- run.pys Filter "Gebaeude, die zu >50% in einem Strassenpolygon liegen,
gelten als Strasse" pruefte im Original ALLE rohen Gebaeude gegen
road_polygons(labels) direkt. road_polygons() zaehlt "spekulativ" selbst
zu den Strassenklassen (ROAD_CLASSES) und schliesst zusaetzlich mit
disk(3) gegen Strassennamen; ein isoliertes "spekulativ"-Gebaeude
ueberlappt sich darueber praktisch mit sich selbst. Ergebnis am realen
Mosaik: von 267 rohen spekulativen Gebaeuden ueberlebten nur 3 (statt der
in der Aufgabe genannten Groessenordnung von 258), und die Schliessung
riss zusaetzlich 211 gewoehnliche graue Gebaeude mit heraus, die die
Notiz aus Task 5 ausdruecklich nicht meinte ("die ROTEN Flaechen ...
werden abgezogen"). Fix: eigenes, unzweideutiges Strassenmass nur aus
"strasse"/"weg" (ohne "spekulativ", ohne Namens-Schliessung), Pruefung
nur auf spekulative Kandidaten begrenzt. Ergebnis: 2.348 Gebaeude, davon
263 spekulativ (Aufgabe: 2.352 bzw. 258) - Wahrzeichenhoehen (68 Stueck,
31-248 m) und Palmenzahl (2.133) treffen die genannten Referenzwerte exakt.
Pipeline-Lauf am gecachten Mosaik: 144 Chunk-Dateien + Manifest, 2,5 MB
gesamt (Budget 10 MB), groesste Datei chunk_9_1.json/chunk_10_1.json mit
je 40 KB. Alle drei Toleranzgrenzen (wasser/strasse/gebaeude) eingehalten.
Debug-PNGs stichprobenartig gesichtet: Kuestenlinie, Strassennetz
(inklusive Kreuzungen und einer Auffahrt-Rampe) und ein Strand mit
Palmenreihe liegen deckungsgleich auf dem Mosaik; der wasserreine Chunk
(4,10) zeigt korrekt keine Vektoren.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>