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>
1 line
7.8 KiB
JSON
1 line
7.8 KiB
JSON
{"chunk":[0,9],"origin":[-1000,-250],"land":[[[1.5,5.0],[6.5,0.0],[250.0,0.0],[250.0,250.0],[1.5,250.0],[1.5,5.0]]],"surfaces":[{"poly":[[193.5,65.0],[193.5,60.0],[195.5,59.0],[193.5,57.0],[193.5,50.0],[195.5,48.0],[196.5,36.0],[195.5,27.0],[193.5,25.0],[193.5,21.0],[191.0,15.5],[189.5,16.0],[189.5,25.0],[187.5,28.0],[183.0,64.5],[180.5,63.0],[179.5,58.0],[181.5,45.0],[183.5,41.0],[183.5,32.0],[185.5,29.0],[188.81,0.0],[197.5,0.0],[197.5,2.0],[195.5,6.0],[195.5,24.0],[199.5,32.0],[200.5,46.0],[197.5,51.0],[196.5,64.0],[193.5,65.0]],"kind":"sand"},{"poly":[[204.0,49.5],[201.5,47.0],[201.5,45.0],[205.0,41.5],[250.0,43.97],[250.0,51.95],[204.0,49.5]],"kind":"sand"},{"poly":[[185.5,64.0],[186.5,52.0],[192.0,42.5],[191.5,57.0],[187.5,58.0],[189.5,60.0],[189.5,63.0],[185.5,64.0]],"kind":"sand"},{"poly":[[161.5,249.0],[161.0,247.5],[159.5,248.0],[159.0,240.5],[162.5,241.0],[164.5,249.0],[162.5,250.0],[158.5,250.0],[161.5,249.0]],"kind":"sand"},{"poly":[[152.5,244.0],[155.0,242.5],[156.5,244.0],[154.5,249.0],[154.62,250.0],[152.5,250.0],[152.5,244.0]],"kind":"sand"},{"poly":[[168.0,249.5],[167.98,250.0],[165.5,250.0],[168.0,249.5]],"kind":"sand"},{"poly":[[155.5,247.0],[155.0,242.5],[152.0,247.5],[1.5,247.0],[1.5,26.0],[8.93,0.0],[14.58,0.0],[147.0,18.5],[136.5,98.0],[151.0,100.5],[165.85,0.0],[188.56,0.0],[179.5,58.0],[180.5,63.0],[176.5,64.0],[167.5,137.0],[165.5,139.0],[164.5,157.0],[155.5,208.0],[155.5,220.0],[152.5,229.0],[151.5,239.0],[158.5,241.0],[159.0,247.5],[155.5,247.0]],"kind":"urban"},{"poly":[[149.5,2.0],[135.07,0.0],[149.78,0.0],[149.5,2.0]],"kind":"urban"},{"poly":[[211.0,41.5],[205.0,41.5],[201.5,47.0],[204.0,49.5],[250.0,52.18],[250.0,187.89],[181.5,178.0],[197.5,71.0],[197.5,66.0],[195.5,65.0],[196.5,56.0],[200.5,46.0],[199.5,32.0],[195.5,24.0],[195.5,6.0],[196.7,0.0],[231.88,0.0],[227.5,14.0],[228.0,16.5],[243.0,18.5],[248.5,27.0],[250.0,25.23],[250.0,43.83],[211.0,41.5]],"kind":"urban"},{"poly":[[189.5,63.0],[192.0,42.5],[186.5,52.0],[186.5,62.0],[183.5,64.0],[190.0,15.5],[195.5,27.0],[196.5,36.0],[193.0,65.5],[189.5,63.0]],"kind":"urban"},{"poly":[[163.5,247.0],[162.5,241.0],[165.0,239.5],[168.0,246.5],[170.5,244.0],[169.5,242.0],[172.5,241.0],[178.5,197.0],[182.0,193.5],[175.5,245.0],[169.0,248.5],[163.5,247.0]],"kind":"urban"},{"poly":[[191.0,247.5],[198.5,197.0],[250.0,204.26],[250.0,247.5],[191.0,247.5]],"kind":"urban"}],"roads":[{"poly":[[139.5,81.0],[139.5,75.0],[140.5,74.0],[140.5,68.0],[141.5,67.0],[141.5,60.0],[143.5,53.0],[146.5,25.0],[147.5,24.0],[146.5,19.0],[144.0,17.5],[21.5,0.0],[126.5,0.0],[133.0,0.5],[141.0,2.5],[149.5,1.0],[149.83,0.0],[165.73,0.0],[165.5,2.0],[163.5,9.0],[162.5,23.0],[161.5,24.0],[161.5,30.0],[158.5,45.0],[158.5,52.0],[156.5,59.0],[156.5,66.0],[155.5,67.0],[155.5,73.0],[154.5,74.0],[154.5,80.0],[153.5,81.0],[153.5,87.0],[151.0,99.5],[136.5,97.0],[139.5,81.0]],"bridge":false},{"poly":[[6.5,4.0],[6.5,8.0],[4.5,11.0],[3.5,19.0],[1.5,23.0],[1.5,28.0],[0.5,31.0],[0.0,31.0],[0.0,6.68],[5.0,3.5],[6.94,0.0],[8.5,0.0],[6.5,4.0]],"bridge":false},{"poly":[[121.0,37.5],[115.0,37.5],[111.5,36.0],[115.0,35.5],[116.0,36.5],[127.0,37.5],[127.0,43.5],[125.5,40.0],[121.0,37.5]],"bridge":false},{"poly":[[174.5,248.0],[175.5,247.0],[174.0,241.5],[154.0,239.5],[152.5,238.0],[152.5,234.0],[153.5,233.0],[153.5,225.0],[155.5,220.0],[155.5,212.0],[157.5,205.0],[156.5,204.0],[158.5,198.0],[165.5,143.0],[167.5,137.0],[167.5,129.0],[169.5,122.0],[169.5,114.0],[171.5,109.0],[172.5,94.0],[174.5,88.0],[175.5,72.0],[178.0,64.5],[181.0,63.5],[188.0,65.5],[195.0,65.5],[197.5,68.0],[193.5,88.0],[194.5,89.0],[191.5,103.0],[191.5,110.0],[189.5,117.0],[185.5,152.0],[183.5,157.0],[184.5,158.0],[181.5,172.0],[182.5,178.0],[185.0,179.5],[191.0,179.5],[192.0,180.5],[198.0,180.5],[199.0,181.5],[205.0,181.5],[206.0,182.5],[250.0,188.41],[250.0,203.17],[214.0,198.5],[207.0,196.5],[199.0,197.5],[196.5,205.0],[194.5,223.0],[190.5,242.0],[190.5,250.0],[174.5,250.0],[174.5,248.0]],"bridge":false},{"poly":[[191.5,190.0],[186.5,205.0],[182.5,235.0],[176.0,231.5],[167.0,231.5],[163.5,230.0],[170.5,178.0],[172.0,176.5],[174.5,184.0],[177.0,186.5],[185.0,189.5],[191.5,190.0]],"bridge":false},{"poly":[[86.0,66.5],[86.5,71.0],[84.5,81.0],[88.0,85.5],[82.5,85.0],[86.0,66.5]],"bridge":false}],"centerlines":[[[186.0,74.0],[171.0,180.0],[172.0,191.0],[177.0,197.0]],[[159.0,233.0],[174.0,222.0]],[[282.0,200.0],[205.0,189.0],[189.0,189.0],[179.0,197.0]],[[178.0,284.0],[183.0,236.0],[174.0,222.0]],[[178.0,198.0],[174.0,222.0]],[[145.0,90.0],[154.0,30.0],[154.0,11.0]],[[0.0,31.0],[2.0,9.0],[10.0,-2.0],[19.0,-7.0]],[[172.0,-127.0],[172.0,-111.0],[165.0,-69.0],[164.0,-41.0],[158.0,1.0],[154.0,10.0]],[[21.0,-7.0],[153.0,10.0]],[[88.0,85.0],[84.0,83.0],[86.0,67.0]],[[112.0,36.0],[125.0,38.0],[127.0,43.0]]],"buildings":[{"poly":[[247.0,26.5],[246.5,24.0],[245.5,23.0],[245.5,21.0],[243.0,17.5],[242.0,18.5],[239.0,18.5],[238.0,17.5],[228.0,16.5],[227.5,14.0],[228.5,13.0],[228.5,11.0],[230.5,10.0],[229.5,9.0],[229.5,7.0],[230.5,6.0],[231.5,-1.0],[233.5,-2.0],[232.5,-3.0],[232.5,-9.0],[234.5,-10.0],[234.5,-12.0],[233.5,-13.0],[233.5,-19.0],[234.5,-20.0],[234.5,-23.0],[236.0,-23.5],[237.0,-22.5],[237.0,-25.5],[239.0,-25.5],[240.0,-23.5],[241.0,-24.5],[244.0,-24.5],[245.0,-22.5],[245.5,-23.0],[244.5,-25.0],[244.5,-28.0],[245.5,-29.0],[246.5,-37.0],[248.5,-39.0],[248.0,-39.5],[246.0,-38.5],[245.0,-40.5],[244.0,-39.5],[243.0,-40.5],[242.0,-39.5],[239.5,-40.0],[239.5,-48.0],[240.5,-49.0],[240.5,-52.0],[241.5,-53.0],[241.5,-56.0],[240.5,-57.0],[240.5,-62.0],[241.5,-63.0],[241.5,-66.0],[242.5,-67.0],[243.5,-72.0],[245.5,-73.0],[244.5,-74.0],[245.5,-76.0],[245.5,-80.0],[247.0,-81.5],[252.0,-81.5],[253.0,-80.5],[257.0,-80.5],[257.5,-79.0],[260.0,-77.5],[261.5,-79.0],[260.5,-80.0],[260.5,-82.0],[261.0,-82.5],[262.0,-81.5],[262.5,-82.0],[261.5,-83.0],[263.0,-83.5],[265.0,-81.5],[266.0,-82.5],[271.0,-81.5],[271.5,-81.0],[270.5,-80.0],[272.0,-77.5],[276.0,-77.5],[278.0,-75.5],[282.0,-76.5],[283.0,-74.5],[285.0,-75.5],[286.5,-75.0],[284.5,-71.0],[283.5,-64.0],[281.5,-63.0],[282.5,-62.0],[282.5,-60.0],[280.5,-59.0],[281.5,-57.0],[281.5,-53.0],[280.5,-52.0],[280.5,-43.0],[279.5,-42.0],[279.5,-37.0],[277.0,-34.5],[271.0,-34.5],[270.0,-32.5],[269.0,-33.5],[268.5,-33.0],[269.5,-32.0],[268.5,-31.0],[269.5,-30.0],[269.5,-24.0],[267.5,-22.0],[267.5,-21.0],[270.0,-19.5],[272.0,-19.5],[273.5,-18.0],[273.5,-16.0],[272.5,-15.0],[272.5,-12.0],[273.5,-11.0],[273.5,1.0],[271.5,2.0],[272.5,3.0],[272.5,5.0],[271.5,6.0],[270.5,12.0],[269.5,13.0],[269.5,15.0],[267.5,19.0],[267.5,22.0],[264.0,22.5],[263.0,21.5],[258.0,21.5],[257.0,20.5],[254.0,20.5],[250.5,23.0],[250.0,25.5],[249.0,24.5],[247.0,26.5]],"height":53.8,"source":"district","speculative":false},{"poly":[[1.0,377.5],[-0.5,377.0],[-0.5,32.0],[0.5,31.0],[1.0,28.5],[1.5,247.0],[152.5,248.0],[152.0,251.5],[2.0,251.5],[1.0,377.5]],"height":161.5,"source":"skyline","speculative":false},{"poly":[[83.4,86.29],[90.65,31.85],[127.86,36.81],[120.6,91.25],[83.4,86.29]],"height":48.2,"source":"district","speculative":false},{"poly":[[139.5,232.0],[66.28,221.54],[71.9,182.2],[145.12,192.66],[139.5,232.0]],"height":161.5,"source":"skyline","speculative":false},{"poly":[[168.5,251.5],[168.5,247.5],[174.0,247.5],[174.0,251.5],[168.5,251.5]],"height":22.4,"source":"district","speculative":false},{"poly":[[268.0,255.5],[267.0,251.5],[191.0,251.5],[190.0,252.5],[189.5,251.0],[190.5,250.0],[191.0,247.5],[268.0,247.5],[268.0,255.5]],"height":31.3,"source":"district","speculative":false},{"poly":[[151.48,238.99],[176.83,63.17],[198.34,66.27],[172.99,242.09],[151.48,238.99]],"height":52.1,"source":"district","speculative":true}],"palms":[[136.0,82.58],[155.78,85.55],[137.78,70.72],[157.56,73.68],[139.56,58.85],[159.34,61.82],[141.34,46.98],[161.12,49.95],[143.12,35.11],[162.9,38.08],[144.0,24.67],[164.0,24.67],[166.0,12.67],[165.32,14.08],[25.67,3.68],[37.58,5.22],[49.48,6.75],[61.38,8.28],[73.28,9.82],[85.18,11.35],[97.08,12.88],[108.99,14.41],[120.89,15.95],[132.79,17.48],[144.44,21.0]]} |