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
11 KiB
JSON
1 line
11 KiB
JSON
{"chunk":[2,0],"origin":[-500,-2500],"land":[[[250.0,1.5],[250.0,250.0],[0.0,250.0],[0.0,1.5],[250.0,1.5]]],"surfaces":[{"poly":[[3.5,178.0],[3.5,134.0],[25.0,1.5],[250.0,1.74],[250.0,133.5],[249.5,172.0],[250.0,172.0],[250.0,182.17],[246.0,177.5],[236.0,177.5],[230.0,183.5],[229.0,177.5],[221.0,177.5],[220.0,181.5],[216.0,177.5],[206.0,177.5],[204.0,179.5],[202.0,177.5],[183.0,177.5],[182.0,183.5],[175.0,177.5],[164.0,177.5],[160.0,174.5],[152.5,182.0],[149.0,189.5],[114.5,188.0],[115.0,219.5],[154.5,220.0],[155.0,207.5],[162.0,212.5],[163.0,204.5],[175.0,204.5],[182.0,198.5],[183.0,204.5],[202.0,204.5],[203.0,202.5],[213.0,205.5],[220.0,201.5],[221.0,204.5],[229.0,204.5],[230.0,198.5],[238.0,205.5],[247.0,204.5],[250.0,202.25],[250.0,221.47],[233.5,222.0],[233.96,250.0],[9.54,250.0],[3.5,178.0]],"kind":"urban"},{"poly":[[229.0,163.5],[225.5,158.0],[225.5,150.0],[229.0,143.5],[234.0,143.5],[237.5,148.0],[237.5,159.0],[234.0,163.5],[229.0,163.5]],"kind":"urban"}],"roads":[{"poly":[[0.5,85.0],[2.5,80.0],[7.5,40.0],[9.5,35.0],[13.5,2.0],[14.7,0.0],[23.94,0.0],[21.5,21.0],[19.5,28.0],[19.5,35.0],[17.5,40.0],[17.5,46.0],[16.5,47.0],[15.5,59.0],[12.5,73.0],[12.5,80.0],[10.5,85.0],[9.5,98.0],[8.5,99.0],[5.5,124.0],[3.5,131.0],[3.5,138.0],[2.5,139.0],[2.5,163.0],[3.5,164.0],[2.5,165.0],[2.5,174.0],[3.5,175.0],[4.5,197.0],[5.5,198.0],[8.5,243.0],[9.5,244.0],[9.5,250.0],[0.0,250.0],[0.0,88.38],[0.5,85.0]],"bridge":false},{"poly":[[9.5,35.0],[7.5,40.0],[2.5,80.0],[0.5,85.0],[0.0,88.38],[0.0,0.0],[14.7,0.0],[13.5,2.0],[9.5,35.0]],"bridge":false},{"poly":[[249.0,202.5],[245.0,204.5],[238.0,204.5],[232.0,201.5],[229.0,202.5],[228.0,204.5],[222.0,204.5],[219.0,202.5],[215.0,204.5],[207.0,204.5],[204.0,202.5],[201.0,204.5],[184.0,204.5],[183.0,202.5],[179.0,201.5],[174.0,204.5],[165.0,205.5],[162.0,211.5],[158.0,210.5],[156.0,211.5],[154.5,214.0],[154.0,219.5],[147.5,219.0],[152.5,217.0],[154.5,207.0],[151.5,201.0],[150.5,190.0],[149.5,189.0],[151.5,188.0],[154.5,180.0],[161.0,174.5],[165.0,177.5],[172.0,177.5],[181.0,181.5],[186.5,177.0],[187.5,175.0],[186.5,172.0],[187.5,169.0],[186.5,165.0],[187.0,134.5],[191.0,135.5],[204.0,134.5],[209.0,136.5],[215.0,142.5],[218.0,141.5],[224.0,135.5],[227.0,134.5],[229.0,135.5],[237.0,134.5],[246.0,141.5],[248.5,140.0],[250.0,134.5],[250.0,172.5],[249.5,172.0],[248.5,167.0],[246.0,165.5],[239.0,171.5],[231.0,172.5],[227.5,176.0],[228.5,179.0],[231.0,180.5],[238.0,177.5],[244.0,177.5],[249.5,180.0],[250.0,179.75],[250.0,190.17],[249.0,190.5],[242.0,187.5],[232.0,190.5],[226.0,188.5],[219.0,190.5],[212.0,187.5],[204.0,189.5],[194.0,184.5],[189.0,188.5],[181.5,191.0],[182.0,192.5],[188.0,194.5],[199.0,194.5],[204.0,192.5],[209.0,194.5],[218.0,192.5],[224.0,194.5],[231.0,191.5],[239.0,194.5],[248.0,192.5],[250.0,192.96],[250.0,203.17],[249.0,202.5]],"bridge":false},{"poly":[[250.0,190.17],[250.0,192.96],[248.0,192.5],[239.0,194.5],[231.0,191.5],[224.0,194.5],[218.0,192.5],[209.0,194.5],[204.0,192.5],[199.0,194.5],[188.0,194.5],[182.0,192.5],[181.5,191.0],[189.0,188.5],[194.0,184.5],[204.0,189.5],[212.0,187.5],[219.0,190.5],[226.0,188.5],[232.0,190.5],[242.0,187.5],[249.0,190.5],[250.0,190.17]],"bridge":false},{"poly":[[180.5,191.0],[172.0,194.5],[160.5,196.0],[160.5,191.0],[163.0,186.5],[172.0,187.5],[180.5,191.0]],"bridge":false},{"poly":[[68.0,167.5],[68.0,168.5],[64.0,169.5],[62.5,172.0],[62.0,193.5],[61.5,168.0],[68.0,167.5]],"bridge":false},{"poly":[[114.5,217.0],[115.5,215.0],[114.5,213.0],[115.5,211.0],[115.5,193.0],[114.5,191.0],[117.0,187.5],[121.5,189.0],[118.0,190.5],[116.5,193.0],[116.5,214.0],[118.0,216.5],[122.0,217.5],[122.0,219.5],[117.0,219.5],[114.5,217.0]],"bridge":false},{"poly":[[234.5,244.0],[235.5,244.0],[237.0,249.5],[240.5,250.0],[234.85,250.0],[234.5,244.0]],"bridge":false}],"centerlines":[[[-22.0,242.0],[-19.0,126.0],[-8.0,53.0],[-5.0,45.0],[-3.0,20.0],[23.0,0.0]],[[197.0,147.0],[191.0,153.0],[191.0,165.0],[194.0,171.0]],[[194.0,191.0],[224.0,191.0]],[[213.0,154.0],[204.0,168.0],[195.0,171.0]],[[193.0,190.0],[194.0,172.0]],[[198.0,147.0],[214.0,153.0]],[[248.0,157.0],[236.0,168.0],[230.0,168.0]],[[250.0,153.0],[282.0,153.0]],[[215.0,154.0],[228.0,168.0]],[[254.0,191.0],[226.0,191.0]],[[163.0,193.0],[166.0,191.0],[192.0,191.0]],[[249.0,151.0],[238.0,140.0],[227.0,139.0],[215.0,152.0]],[[148.0,219.0],[154.0,216.0],[154.0,211.0],[158.0,207.0],[162.0,194.0]],[[229.0,169.0],[225.0,181.0],[225.0,190.0]],[[117.0,190.0],[116.0,216.0],[122.0,218.0]],[[255.0,222.0],[236.0,222.0],[235.0,227.0]],[[247.0,252.0],[236.0,251.0],[235.0,244.0]],[[68.0,168.0],[62.0,169.0],[62.0,193.0]]],"buildings":[{"poly":[[498.0,124.5],[497.0,1.5],[25.0,1.5],[24.5,0.0],[610.0,-0.5],[610.5,0.0],[608.5,2.0],[608.5,3.0],[602.0,9.5],[600.5,9.0],[606.5,3.0],[606.0,1.5],[501.5,2.0],[501.5,119.0],[502.0,119.5],[502.5,118.0],[511.0,109.5],[511.5,111.0],[504.5,118.0],[504.5,119.0],[502.0,121.5],[501.0,121.5],[500.0,123.5],[498.0,124.5]],"height":12.0,"source":"district","speculative":false},{"poly":[[9.0,26.5],[7.5,25.0],[7.5,17.0],[3.5,14.0],[2.5,9.0],[1.0,7.5],[-5.0,7.5],[-7.5,6.0],[-7.0,4.5],[-5.0,3.5],[0.0,3.5],[1.0,4.5],[3.0,4.5],[3.5,7.0],[5.0,7.5],[7.5,11.0],[7.5,14.0],[11.5,15.0],[11.5,23.0],[9.0,26.5]],"height":6.1,"source":"district","speculative":false},{"poly":[[13.0,14.5],[12.0,14.5],[10.5,13.0],[10.5,12.0],[12.5,10.0],[12.5,9.0],[15.0,6.5],[16.0,6.5],[16.5,10.0],[13.0,14.5]],"height":8.1,"source":"district","speculative":false},{"poly":[[186.0,172.5],[185.5,172.0],[186.0,134.5],[186.5,138.0],[187.5,139.0],[187.5,143.0],[186.5,144.0],[186.5,165.0],[187.5,166.0],[187.5,169.0],[186.5,170.0],[186.0,172.5]],"height":8.1,"source":"district","speculative":false},{"poly":[[2.49,163.49],[3.0,138.5],[3.51,138.51],[3.0,163.5],[2.49,163.49]],"height":9.6,"source":"district","speculative":false},{"poly":[[61.5,168.5],[98.5,168.5],[98.5,198.5],[61.5,198.5],[61.5,168.5]],"height":14.2,"source":"district","speculative":false},{"poly":[[162.0,206.5],[160.5,204.0],[161.5,203.0],[162.0,181.5],[163.5,184.0],[163.5,186.0],[162.5,187.0],[162.5,195.0],[163.5,196.0],[163.5,199.0],[162.5,200.0],[162.0,206.5]],"height":8.1,"source":"district","speculative":false},{"poly":[[116.5,188.5],[154.5,188.5],[154.5,220.5],[116.5,220.5],[116.5,188.5]],"height":9.6,"source":"district","speculative":false},{"poly":[[281.76,250.38],[233.92,252.5],[232.59,222.54],[280.43,220.41],[281.76,250.38]],"height":13.3,"source":"district","speculative":false},{"poly":[[-3.0,167.5],[-16.0,167.5],[-17.0,166.5],[-19.0,166.5],[-20.5,164.0],[-19.5,163.0],[-19.5,147.0],[-18.5,146.0],[-19.0,126.5],[-21.5,132.0],[-21.5,139.0],[-22.5,140.0],[-22.5,165.0],[-26.0,167.5],[-43.0,167.5],[-44.5,166.0],[-44.5,163.0],[-45.5,162.0],[-44.5,161.0],[-44.5,138.0],[-43.5,137.0],[-43.5,131.0],[-42.5,130.0],[-42.5,124.0],[-41.5,123.0],[-40.5,110.0],[-39.5,109.0],[-39.5,105.0],[-38.5,104.0],[-38.5,100.0],[-37.5,99.0],[-37.5,93.0],[-36.5,92.0],[-36.5,86.0],[-35.5,85.0],[-34.5,73.0],[-33.5,72.0],[-33.5,68.0],[-32.5,67.0],[-31.5,53.0],[-30.5,52.0],[-30.5,47.0],[-29.5,46.0],[-29.5,43.0],[-28.5,42.0],[-28.5,35.0],[-27.5,34.0],[-27.5,31.0],[-24.5,27.0],[-24.5,10.0],[-23.5,9.0],[-23.5,7.0],[-22.0,5.5],[-19.0,7.5],[-15.0,6.5],[-13.5,8.0],[-13.5,25.0],[-12.0,26.5],[-9.5,23.0],[-9.5,7.0],[-8.5,5.0],[-11.0,4.5],[-12.0,3.5],[-20.0,3.5],[-22.0,4.5],[-22.0,-0.5],[24.0,-0.5],[24.5,1.0],[23.5,2.0],[23.5,8.0],[22.5,9.0],[22.5,14.0],[21.5,15.0],[21.5,21.0],[20.5,22.0],[20.5,27.0],[19.5,28.0],[19.5,35.0],[18.5,36.0],[18.5,39.0],[17.5,40.0],[17.5,46.0],[16.5,47.0],[15.5,59.0],[14.5,60.0],[13.5,72.0],[12.5,73.0],[12.5,80.0],[11.5,81.0],[11.5,84.0],[10.5,85.0],[9.5,98.0],[8.5,99.0],[7.5,111.0],[6.5,112.0],[6.5,117.0],[5.5,118.0],[5.5,124.0],[4.5,125.0],[4.5,130.0],[3.5,131.0],[3.5,138.0],[2.5,139.0],[2.5,163.0],[3.5,164.0],[2.0,166.5],[-2.0,166.5],[-3.0,167.5]],"height":9.0,"source":"district","speculative":true},{"poly":[[206.0,171.5],[190.0,171.5],[187.5,170.0],[187.5,137.0],[189.0,135.5],[204.0,135.5],[211.5,139.0],[212.5,147.0],[209.5,153.0],[212.5,156.0],[212.5,158.0],[213.5,159.0],[213.5,164.0],[212.5,165.0],[212.5,167.0],[210.0,169.5],[206.0,171.5]],"height":7.2,"source":"district","speculative":true},{"poly":[[238.0,171.5],[227.0,171.5],[222.0,167.5],[221.0,167.5],[217.5,162.0],[217.5,146.0],[220.5,140.0],[228.0,135.5],[236.0,135.5],[237.0,136.5],[239.0,136.5],[243.5,140.0],[243.5,142.0],[245.5,144.0],[245.5,146.0],[246.5,147.0],[246.5,159.0],[245.5,160.0],[245.5,163.0],[243.5,164.0],[243.5,167.0],[242.0,167.5],[238.0,171.5]],"height":6.3,"source":"district","speculative":true},{"poly":[[160.0,208.5],[157.0,208.5],[154.5,207.0],[154.5,202.0],[153.5,201.0],[153.5,199.0],[151.5,195.0],[152.5,193.0],[153.5,185.0],[155.5,182.0],[155.5,180.0],[158.0,178.5],[159.0,178.5],[160.5,180.0],[160.5,182.0],[157.5,188.0],[157.5,192.0],[156.5,193.0],[156.5,195.0],[157.5,196.0],[157.5,200.0],[161.5,207.0],[160.0,208.5]],"height":10.8,"source":"district","speculative":true},{"poly":[[174.0,203.5],[168.0,203.5],[167.0,202.5],[165.0,202.5],[163.5,201.0],[163.5,181.0],[165.0,179.5],[176.0,179.5],[179.5,182.0],[182.5,188.0],[182.5,195.0],[180.5,199.0],[178.0,201.5],[174.0,203.5]],"height":7.8,"source":"district","speculative":true},{"poly":[[213.0,204.5],[211.0,203.5],[208.0,203.5],[203.0,200.5],[195.0,204.5],[194.0,203.5],[187.0,204.5],[184.5,200.0],[184.5,181.0],[186.0,179.5],[200.5,180.0],[200.5,182.0],[199.0,183.5],[194.0,183.5],[193.0,184.5],[191.0,184.5],[189.5,186.0],[189.5,187.0],[191.0,188.5],[199.5,189.0],[199.0,192.5],[190.5,194.0],[189.5,196.0],[190.5,198.0],[193.0,199.5],[194.0,198.5],[201.0,198.5],[203.0,195.5],[207.0,195.5],[210.0,198.5],[214.0,198.5],[214.0,195.5],[212.0,195.5],[211.0,193.5],[206.0,191.5],[202.5,188.0],[202.5,184.0],[203.5,183.0],[203.5,181.0],[206.0,179.5],[215.0,179.5],[219.0,181.5],[220.5,183.0],[220.5,185.0],[218.0,187.5],[217.0,187.5],[212.0,183.5],[210.0,183.5],[208.5,185.0],[209.0,187.5],[213.0,189.5],[218.0,190.5],[219.5,193.0],[219.5,200.0],[216.0,203.5],[214.0,203.5],[213.0,204.5]],"height":13.0,"source":"district","speculative":true},{"poly":[[224.0,204.5],[221.5,200.0],[222.5,199.0],[222.5,185.0],[221.5,184.0],[222.5,183.0],[223.0,179.5],[227.0,179.5],[227.5,202.0],[224.0,204.5]],"height":6.5,"source":"district","speculative":true},{"poly":[[241.0,204.5],[238.0,204.5],[233.0,199.5],[232.0,199.5],[230.5,197.0],[230.5,188.0],[231.5,187.0],[231.5,184.0],[236.0,179.5],[245.0,179.5],[249.5,183.0],[249.5,186.0],[247.0,187.5],[245.0,186.5],[243.0,183.5],[238.0,184.5],[236.5,186.0],[235.5,191.0],[236.5,192.0],[236.5,196.0],[239.0,198.5],[242.0,198.5],[243.0,199.5],[244.5,198.0],[244.5,196.0],[242.0,195.5],[240.5,194.0],[241.5,192.0],[240.5,191.0],[242.0,189.5],[245.0,188.5],[249.5,191.0],[249.5,201.0],[246.0,203.5],[242.0,203.5],[241.0,204.5]],"height":6.2,"source":"district","speculative":true},{"poly":[[97.5,195.5],[97.5,186.5],[99.0,186.5],[99.0,195.5],[97.5,195.5]],"height":7.1,"source":"district","speculative":true}],"palms":[]} |