feat(extract): Chunk-Ausgabe, Manifest und Ablaufsteuerung
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>
This commit is contained in:
1 parent
2c355aa3d8
commit
ce90ea1d5f
292 files changed
+953
No files matched your search
@@ -0,0 +1 @@
|
||||
{"chunk":[3,10],"origin":[-250,0],"land":[[[111.5,16.0],[111.5,19.0],[105.5,30.0],[105.5,33.0],[99.5,44.0],[93.5,61.0],[69.5,105.0],[69.5,111.0],[62.5,121.0],[54.5,147.0],[41.5,176.0],[27.5,232.0],[25.79,250.0],[0.0,250.0],[0.0,-0.0],[119.5,-0.0],[111.5,16.0]]],"surfaces":[{"poly":[[79.0,62.5],[72.0,56.5],[58.0,50.5],[56.0,47.5],[52.0,47.5],[0.0,17.74],[0.0,7.13],[8.0,10.5],[10.0,7.5],[14.0,9.5],[19.0,1.5],[116.0,1.5],[112.5,3.0],[114.5,5.0],[109.5,10.0],[113.5,13.0],[107.5,15.0],[110.5,20.0],[104.5,21.0],[107.5,28.0],[100.5,30.0],[99.5,37.0],[95.5,42.0],[97.5,44.0],[93.5,47.0],[96.5,51.0],[91.5,52.0],[93.5,58.0],[89.0,58.5],[87.5,61.0],[90.0,65.5],[79.0,62.5]],"kind":"urban"}],"roads":[{"poly":[[3.0,47.5],[15.0,52.5],[26.0,59.5],[40.5,76.0],[42.0,79.5],[57.0,81.5],[61.5,86.0],[62.5,91.0],[61.5,98.0],[48.5,127.0],[0.0,202.69],[0.0,182.23],[36.5,126.0],[44.5,109.0],[44.5,106.0],[37.5,98.0],[36.5,94.0],[37.5,89.0],[35.5,85.0],[24.0,70.5],[17.0,64.5],[6.0,58.5],[0.0,56.5],[0.0,47.2],[3.0,47.5]],"bridge":false},{"poly":[[5.5,248.0],[6.61,250.0],[0.0,250.0],[0.0,242.94],[5.5,248.0]],"bridge":false},{"poly":[[0.5,84.0],[0.5,87.0],[0.0,87.88],[0.0,83.73],[0.5,84.0]],"bridge":false},{"poly":[[1.5,130.0],[8.5,137.0],[10.5,140.0],[10.5,143.0],[8.0,144.5],[0.0,135.74],[0.0,125.0],[1.5,130.0]],"bridge":false},{"poly":[[0.5,153.0],[0.5,158.0],[0.0,158.57],[0.0,152.36],[0.5,153.0]],"bridge":false},{"poly":[[18.0,1.5],[16.23,-0.0],[18.3,-0.0],[18.0,1.5]],"bridge":false}],"centerlines":[[[50.0,93.0],[50.0,107.0],[44.0,123.0],[1.0,189.0]],[[49.0,92.0],[20.0,61.0],[12.0,56.0],[-1.0,51.0],[-15.0,54.0]],[[-25.0,237.0],[-19.0,221.0],[-3.0,198.0],[0.0,190.0]],[[9.0,142.0],[-1.0,131.0],[-4.0,120.0],[-11.0,109.0]]],"buildings":[{"poly":[[8.0,10.5],[7.0,9.5],[6.0,10.5],[5.0,9.5],[3.0,9.5],[1.0,6.5],[0.0,7.5],[-4.0,6.5],[-6.0,3.5],[-8.0,4.5],[-9.0,2.5],[-10.0,3.5],[-12.0,1.5],[-12.5,2.0],[-11.5,3.0],[-12.5,5.0],[-13.0,5.5],[-14.0,4.5],[-15.0,5.5],[-19.0,3.5],[-19.0,1.5],[-21.0,2.5],[-21.5,2.0],[-20.5,1.0],[-22.5,-0.0],[-23.0,-2.5],[-26.5,-2.0],[-22.5,1.0],[-23.0,1.5],[-29.0,1.5],[-31.0,-0.5],[-36.0,-0.5],[-37.5,-2.0],[-37.0,-3.5],[-36.0,-2.5],[-30.0,-2.5],[-29.5,-4.0],[-30.0,-4.5],[-31.0,-3.5],[-32.0,-4.5],[-34.0,-4.5],[-38.0,-7.5],[-40.0,-7.5],[-40.0,-9.5],[-41.0,-8.5],[-44.0,-9.5],[-44.5,-11.0],[-43.5,-12.0],[-43.5,-14.0],[-48.0,-16.5],[-50.0,-16.5],[-52.0,-19.5],[-53.0,-18.5],[-61.0,-22.5],[-62.0,-24.5],[-63.0,-23.5],[-79.0,-31.5],[-79.0,-33.5],[-81.0,-32.5],[-81.0,-34.5],[-82.0,-33.5],[-85.0,-34.5],[-86.5,-36.0],[-86.5,-38.0],[-92.0,-40.5],[-93.5,-42.0],[-92.5,-43.0],[-95.0,-45.5],[-100.0,-47.5],[-100.0,-48.5],[-98.0,-48.5],[-96.5,-50.0],[-96.5,-56.0],[-96.0,-56.5],[-93.5,-54.0],[-91.0,-48.5],[-85.0,-48.5],[-84.0,-47.5],[-83.0,-52.5],[-78.0,-48.5],[-70.0,-48.5],[-69.0,-49.5],[-67.0,-48.5],[-66.5,-49.0],[-67.5,-50.0],[-64.5,-53.0],[-63.0,-56.5],[-62.5,-49.0],[-60.0,-48.5],[-59.0,-47.5],[-58.0,-48.5],[-54.5,-49.0],[-54.0,-58.5],[-52.5,-57.0],[-50.5,-52.0],[-47.0,-48.5],[-40.0,-48.5],[-39.5,-49.0],[-40.5,-50.0],[-40.5,-67.0],[-37.0,-67.5],[-36.0,-68.5],[-35.5,-66.0],[-34.5,-65.0],[-35.5,-64.0],[-34.5,-62.0],[-34.5,-57.0],[-35.5,-56.0],[-34.5,-54.0],[-35.5,-52.0],[-34.5,-51.0],[-34.5,-49.0],[-28.0,-48.5],[-27.5,-50.0],[-25.5,-51.0],[-27.5,-54.0],[-26.5,-55.0],[-27.5,-56.0],[-26.5,-58.0],[-27.5,-60.0],[-26.5,-61.0],[-27.5,-67.0],[-26.0,-68.5],[-23.0,-67.5],[-22.5,-67.0],[-23.5,-66.0],[-23.5,-64.0],[-25.5,-61.0],[-25.0,-60.5],[-23.0,-61.5],[-21.0,-59.5],[-19.0,-59.5],[-17.5,-58.0],[-17.5,-56.0],[-18.5,-55.0],[-17.5,-54.0],[-18.5,-53.0],[-18.5,-51.0],[-22.5,-46.0],[-22.5,-43.0],[-21.0,-40.5],[-20.0,-41.5],[-18.0,-41.5],[-13.5,-46.0],[-11.5,-50.0],[-11.0,-53.5],[-9.0,-50.5],[-5.5,-49.0],[-6.5,-48.0],[-6.0,-47.5],[-4.0,-48.5],[2.0,-45.5],[2.0,-43.5],[3.0,-44.5],[4.5,-44.0],[3.5,-43.0],[4.0,-42.5],[6.0,-43.5],[6.0,-41.5],[8.0,-42.5],[9.0,-40.5],[10.0,-41.5],[16.0,-38.5],[17.0,-36.5],[19.0,-37.5],[20.5,-36.0],[20.5,-33.0],[19.5,-32.0],[20.0,-31.5],[22.0,-32.5],[24.0,-31.5],[25.5,-30.0],[24.5,-29.0],[25.0,-28.5],[26.5,-30.0],[25.5,-31.0],[28.0,-31.5],[34.5,-28.0],[34.5,-24.0],[33.0,-21.5],[32.0,-22.5],[31.5,-22.0],[32.5,-20.0],[30.5,-16.0],[28.5,-16.0],[29.5,-14.0],[27.5,-14.0],[28.5,-12.0],[27.0,-9.5],[25.0,-9.5],[21.0,-11.5],[21.0,-13.5],[20.0,-12.5],[16.0,-11.5],[16.0,-13.5],[14.0,-12.5],[11.0,-14.5],[8.0,-13.5],[5.0,-15.5],[3.5,-15.0],[7.0,-13.5],[7.0,-11.5],[8.0,-12.5],[9.0,-10.5],[11.0,-11.5],[11.0,-9.5],[13.0,-10.5],[13.0,-8.5],[14.0,-9.5],[15.5,-9.0],[16.5,-7.0],[16.5,-4.0],[13.5,-2.0],[17.0,-0.5],[17.5,-0.0],[16.5,1.0],[18.5,2.0],[15.5,8.0],[14.0,9.5],[12.0,9.5],[10.0,7.5],[8.0,10.5]],"height":53.5,"source":"district","speculative":false},{"poly":[[115.0,1.5],[19.0,1.5],[18.5,-1.0],[16.5,-2.0],[115.0,-2.5],[117.5,-4.0],[116.5,-5.0],[117.0,-5.5],[121.0,-5.5],[121.5,-4.0],[120.5,-2.0],[116.0,-1.5],[115.0,1.5]],"height":33.6,"source":"district","speculative":false},{"poly":[[113.0,12.5],[112.0,12.5],[109.5,10.0],[111.5,9.0],[110.5,8.Line truncated
|
||||
Reference in new issue
Block a user