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":[2,7],"origin":[-500,-750],"land":[[[0.0,250.0],[0.0,0.0],[250.0,0.0],[250.0,250.0],[0.0,250.0]]],"surfaces":[{"poly":[[198.0,143.5],[155.0,130.5],[90.5,126.0],[99.5,66.0],[98.66,0.0],[113.22,0.0],[113.5,1.0],[119.5,5.0],[108.5,27.0],[109.5,32.0],[112.5,33.0],[112.5,51.0],[115.5,52.0],[121.0,63.5],[128.0,64.5],[148.0,64.5],[157.0,59.5],[162.0,61.5],[172.5,54.0],[176.29,0.0],[206.61,0.0],[199.0,40.5],[250.0,51.24],[250.0,145.86],[198.0,143.5]],"kind":"urban"},{"poly":[[1.5,61.0],[2.0,52.5],[6.0,52.5],[11.0,56.5],[55.0,59.5],[59.0,51.5],[70.0,49.5],[74.5,44.0],[73.0,34.5],[63.0,34.5],[57.5,41.0],[57.0,45.5],[44.0,43.5],[39.5,41.0],[40.5,32.0],[36.5,27.0],[36.5,22.0],[41.5,10.0],[50.63,0.0],[77.0,0.0],[77.0,67.5],[1.5,61.0]],"kind":"urban"},{"poly":[[2.0,124.5],[1.5,76.0],[75.0,80.5],[69.0,125.5],[2.0,124.5]],"kind":"urban"},{"poly":[[6.0,142.5],[2.0,141.5],[1.5,138.0],[52.0,137.5],[65.0,138.5],[65.0,142.5],[83.0,143.5],[86.0,143.5],[88.0,139.5],[115.0,139.5],[151.0,142.5],[166.0,146.5],[6.0,142.5]],"kind":"urban"},{"poly":[[167.0,162.5],[1.5,156.0],[159.0,159.5],[250.0,165.34],[250.0,169.26],[167.0,162.5]],"kind":"urban"},{"poly":[[79.0,177.5],[78.0,173.5],[58.0,173.5],[56.0,176.5],[10.0,175.5],[2.0,174.5],[1.5,171.0],[87.0,172.5],[143.5,176.0],[79.0,177.5]],"kind":"urban"},{"poly":[[60.5,247.0],[71.5,207.0],[80.0,207.5],[83.5,202.0],[82.5,198.0],[75.5,194.0],[76.0,190.5],[136.0,189.5],[167.0,185.5],[199.0,184.5],[250.0,189.31],[250.0,213.5],[230.0,213.5],[209.0,200.5],[187.0,195.5],[172.0,196.5],[154.0,201.5],[140.0,209.5],[129.5,220.0],[115.0,247.5],[60.5,247.0]],"kind":"urban"},{"poly":[[24.5,233.0],[31.5,211.0],[35.5,206.0],[39.5,189.0],[53.0,189.5],[41.0,234.5],[24.5,233.0]],"kind":"urban"},{"poly":[[37.0,244.5],[41.0,246.5],[46.0,244.5],[52.0,246.5],[55.0,244.5],[58.93,250.0],[33.07,250.0],[37.0,244.5]],"kind":"urban"}],"roads":[{"poly":[[196.0,184.5],[195.0,183.5],[169.0,184.5],[160.0,186.5],[152.0,186.5],[142.0,188.5],[127.0,188.5],[126.0,189.5],[124.0,188.5],[123.0,189.5],[78.0,189.5],[75.5,191.0],[74.5,197.0],[71.5,202.0],[74.5,205.0],[71.5,207.0],[68.5,214.0],[67.5,221.0],[59.5,246.0],[61.5,249.0],[61.17,250.0],[59.5,250.0],[57.0,246.5],[47.0,244.5],[35.0,246.5],[32.5,250.0],[0.0,250.0],[0.0,232.3],[4.0,235.5],[22.0,235.5],[25.0,232.5],[28.0,235.5],[39.0,235.5],[41.0,234.5],[53.5,195.0],[52.5,190.0],[50.0,188.5],[4.0,186.5],[1.0,189.5],[0.0,189.5],[0.0,177.11],[11.0,176.5],[54.0,179.5],[60.5,184.0],[63.5,192.0],[63.0,197.5],[67.5,185.0],[70.0,182.5],[78.0,179.5],[126.0,179.5],[169.0,174.5],[195.0,173.5],[250.0,177.79],[250.0,188.05],[196.0,184.5]],"bridge":false},{"poly":[[53.0,125.5],[54.0,126.5],[67.0,126.5],[69.5,125.0],[71.5,119.0],[72.5,105.0],[73.5,104.0],[75.5,84.0],[76.5,83.0],[73.0,79.5],[23.0,76.5],[22.0,75.5],[8.0,75.5],[7.0,74.5],[0.0,74.5],[0.0,61.74],[75.5,68.0],[78.5,65.0],[78.5,47.0],[77.0,44.5],[72.5,44.0],[72.5,40.0],[75.0,40.5],[78.5,37.0],[78.5,0.0],[98.5,0.0],[98.5,53.0],[99.5,54.0],[98.5,55.0],[98.5,61.0],[99.5,62.0],[98.5,63.0],[98.5,70.0],[97.5,71.0],[97.5,77.0],[96.5,78.0],[96.5,84.0],[95.5,85.0],[95.5,91.0],[94.5,92.0],[94.5,98.0],[93.5,99.0],[93.5,105.0],[90.5,120.0],[91.5,126.0],[94.0,127.5],[132.0,128.5],[133.0,129.5],[157.0,131.5],[179.0,137.5],[191.0,143.5],[200.0,143.5],[201.0,144.5],[250.0,146.66],[250.0,156.53],[191.0,153.5],[166.0,143.5],[142.0,139.5],[142.5,143.0],[139.5,151.0],[133.0,155.5],[89.0,155.5],[81.0,152.5],[76.5,146.0],[76.5,138.0],[78.5,134.0],[82.5,131.0],[80.0,123.5],[77.5,131.0],[73.5,134.0],[75.5,141.0],[72.5,149.0],[70.0,151.5],[62.0,154.5],[12.0,152.5],[5.5,148.0],[2.5,140.0],[3.0,135.5],[0.0,135.58],[0.0,125.5],[53.0,125.5]],"bridge":false},{"poly":[[195.0,173.5],[169.0,174.5],[126.0,179.5],[78.0,179.5],[70.0,182.5],[67.5,185.0],[63.0,197.5],[63.5,192.0],[60.5,184.0],[54.0,179.5],[11.0,176.5],[0.0,177.11],[0.0,135.58],[3.0,135.5],[2.5,140.0],[5.5,148.0],[12.0,152.5],[62.0,154.5],[70.0,151.5],[72.5,149.0],[75.5,141.0],[73.5,134.0],[77.5,131.0],[80.0,123.5],[82.5,131.0],[78.5,134.0],[76.5,138.0],[76.5,146.0],[81.0,152.5],[89.0,155.5],[133.0,155.5],[139.5,151.0],[142.5,143.0],[142.0,139.5],[166.0,143.5],[191.0,153.5],[250.0,156.53],[250.0,177.79],[195.0,173.5]],"bridge":false},{"poly":[[1.0,51.5],[0.0,51.5],[0.0,27.5],[1.5,30.0],[0.5,32.0],[1.5,36.0],[0.5,41.0],[2.0,43.5],[9.5,48.0],[8.0,52.5],[4.0,48.5],[1.0,51.5]],"bridge":false},{"poly":[[1.5,2.0],[0.0,8.0],[0.0,0.0],[2.83,0.0],[1.5,2.0]],"bridge":false},{"poly":[[161.5,5.0],[163.0,0.5],[164.0,2.5],[167.5,3.0],[168.5,6.0],[167.0,8.5],[165.0,5.5],[161.5,5.0]],"bridge":false},{"poly":[[125.5,9.0],[124.0,1.5],[128.5,5.0],[129.0,9.5],[128.0,8.5],[125.5,9.0]],"bridge":false},{"poly":[[167.5,14.0],[166.5,10.0],[170.0,12.5],[174.0,8.5],[174.5,13.0],[171.0,16.5],[170.0,15.5],[168.0,16.5],[166.0,19.5],[165.5,17.0],[167.5,14.0]],"bridge":false},{"poly":[[32.5,36.0],[31.5,35.0],[32.5,30.0],[30.5,27.0],[30.5,20.0],[28.5,15.0],[25.5,13.0],[26.0,11.5],[32.5,15.0],[31.5,19.0],[33.0,21.5],[36.5,23.0]Line truncated
|
||||
Reference in new issue
Block a user