fix(extract): Polygonlöcher im Chunk-Payload erhalten, split_by_chunk_all abdecken
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>
This commit is contained in:
1 parent
062a9af2fd
commit
22ac8f530c
289 files changed
+194
-156
No files matched your search
@@ -1 +1 @@
|
||||
{"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":[Line truncated
|
||||
{"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]],[[2Line truncated
|
||||
Reference in new issue
Block a user