Ruling 34 (Important, Fix-Runde 1 zu Aufgabe 6): _ring() verwarf jedes Loch eines Polygons (nur poly.exterior wurde in Weltkoordinaten -> three.js uebertragen). Vor dem Chunk-Zuschnitt war das meist harmlos, weil das groesste Loch die Bucht selbst ist und beim Zuschneiden ohnehin herausfaellt - danach blieb es aber ein echter Datenverlust: ein von Strassen umschlossener Block wurde zu Asphalt, ein Innenhof zu Gebaeudemasse, ein Teich im Park zu Wiese. Gemessen an echten Daten: 120 Strassen-Chunk-Stuecke (449.876 m2), 127 Stadtflaechen-Stuecke (208.657 m2 wobei 1 weiteres Park-Stueck), 30 Land-Stuecke (11.402 m2) und mindestens 75 Gebaeude-Stuecke trugen ein verworfenes Loch. _ring() wird _rings(): liefert [poly.exterior, *poly.interiors] in derselben Transformation, Aussenring zuerst. Payload-Schema aendert sich entsprechend fuer land/surfaces/roads/buildings von einem flachen Ring zu einer Liste von Ringen; centerlines und palms sind unveraendert (keine Polygone). Task 7s extrudePolygons() ruft ShapeUtils.triangulateShape(ring, []) bereits mit einem (bisher leeren) Loecher-Array - die Aenderung passt jetzt durchgehend, bevor Aufgabe 7 gebaut wird. write_debug_png() zeichnet weiterhin nur den Aussenring (poly[0]), Loecher werden im Debug-Bild nicht dargestellt. Neuer Test test_polygon_holes_survive_into_the_payload prueft das direkt an einem Block mit Loch; die Koordinaten wurden vor dem Festschreiben gegen die tatsaechliche chunk_payload()-Transformation nachgerechnet (uv run python, nicht nur von Hand). test_coordinates_are_chunk_local_three_js musste auf das neue [0]-Aussenring-Indexing angepasst werden. Ruling 35 (Important): split_by_chunk_all() - die Variante, die run.py tatsaechlich benutzt, nicht das getestete split_by_chunk() - hatte einen MultiPolygon-Zweig ohne jede Testabdeckung. Neuer Test mit einer Klammerform (Steg ausserhalb der Chunk-Zelle, zwei Zinken je einmal hineinreichend) trifft genau diesen Zweig gezielt; er war schon vor der Aenderung gruen - bestaetigt als Abdeckungsluecke, nicht als Bug. uv run pytest -v: 36 passed (34 zuvor + 2 neu). Pipeline (run.py) am gecachten Mosaik neu durchlaufen: weiterhin 144 Chunk-Dateien, public/data/vice-a/ jetzt 2,7 MB (zuvor 2,5 MB; +0,2 MB fuer die erhaltenen Loecher). Insgesamt tragen jetzt 415 Chunk-Stuecke mindestens ein Loch: Land 30/213, Stadtflaechen 127/1145 (+1 Park-Flaeche), Strassen 120/953, Gebaeude 137/2859 (80 global-eindeutige Gebaeude vor Chunk-Duplizierung). Land/Strassen/Stadtflaechen treffen die oben genannten Referenzwerte exakt; bei Gebaeuden weicht die Stueckzahl vom Review-Befund (75) ab. Stichprobe der vier flaechenmaessig groessten Gebaeude-Loecher (Debug-PNGs chunk_8_0, chunk_2_10, chunk_5_11 sowie ein viertes) zeigt plausible echte Ring-Bauwerke (ein stadionartiger Rundbau, eine Wendel-Parkrampe) statt offensichtlicher Fehlklassifikation - die verbleibende Abweichung duerfte an der bereits im Task-6-Bericht offengelegten Restunsicherheit der Gebaeude-Ueberlappungsrekonstruktion liegen (263 vs. 258 spekulative Gebaeude), nicht an dieser Aenderung; im Fix-Bericht dokumentiert. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
1 line
13 KiB
JSON
1 line
13 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]],[[245.5,166.0],[248.5,150.0],[245.5,141.0],[240.0,135.5],[228.0,133.5],[223.0,135.5],[216.5,143.0],[215.5,161.0],[218.5,167.0],[225.0,172.5],[235.5,173.0],[245.5,166.0]],[[214.5,165.0],[214.5,157.0],[211.5,152.0],[214.5,146.0],[212.5,139.0],[206.0,134.5],[195.0,133.5],[191.0,135.5],[187.0,133.5],[185.5,172.0],[206.5,172.0],[214.5,165.0]],[[99.0,168.5],[60.5,168.0],[61.0,198.5],[99.5,198.0],[99.0,168.5]]],"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]],[[237.5,157.0],[239.5,154.0],[237.5,151.0],[236.5,145.0],[233.0,142.5],[230.0,142.5],[227.5,144.0],[225.5,148.0],[225.5,159.0],[228.0,163.5],[230.0,164.5],[236.5,162.0],[237.5,157.0]],[[226.0,176.5],[227.5,174.0],[226.0,171.5],[223.0,170.5],[216.0,163.5],[213.5,165.0],[211.0,169.5],[202.0,173.5],[200.5,176.0],[204.0,179.5],[208.0,177.5],[213.0,177.5],[219.5,180.0],[222.0,177.5],[226.0,176.5]],[[199.0,156.5],[196.5,158.0],[195.5,161.0],[197.0,163.5],[200.5,164.0],[203.5,161.0],[199.0,156.5]],[[172.0,194.5],[180.5,191.0],[172.0,187.5],[163.0,186.5],[160.5,191.0],[160.5,196.0],[172.0,194.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]],[[9.0,26.5],[11.5,23.0],[11.5,15.0],[15.5,12.0],[16.5,10.0],[16.5,7.0],[18.0,6.5],[18.5,5.0],[17.0,4.5],[16.5,6.0],[12.5,9.0],[12.5,10.0],[10.5,12.0],[11.5,14.0],[11.0,14.5],[8.0,14.5],[7.5,11.0],[5.5,9.0],[5.5,8.0],[3.5,7.0],[3.0,4.5],[1.0,4.5],[0.0,3.5],[-5.0,3.5],[-7.0,4.5],[-7.5,6.0],[-5.0,7.5],[1.0,7.5],[2.5,9.0],[3.5,14.0],[7.5,17.0],[7.5,25.0],[9.0,26.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]],[[202.5,165.0],[205.5,163.0],[206.5,159.0],[204.0,156.5],[199.0,156.5],[197.0,155.5],[195.5,157.0],[195.5,161.0],[194.5,162.0],[195.5,164.0],[197.0,165.5],[202.5,165.0]],[[201.0,150.5],[204.0,149.5],[205.5,147.0],[204.5,146.0],[204.5,144.0],[203.0,142.5],[196.0,142.5],[195.5,149.0],[198.0,150.5],[199.0,149.5],[201.0,150.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]],[[235.5,165.0],[238.5,162.0],[238.5,159.0],[239.5,158.0],[239.5,150.0],[238.5,149.0],[238.5,145.0],[234.0,141.5],[229.0,141.5],[224.5,147.0],[224.5,159.0],[225.5,160.0],[225.5,162.0],[228.0,164.5],[230.0,165.5],[235.5,165.0]]],"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]],[[173.0,198.5],[175.0,197.5],[176.5,195.0],[176.5,188.0],[173.0,183.5],[170.0,183.5],[169.5,195.0],[168.5,197.0],[172.0,197.5],[173.0,198.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":[]} |