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":[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.Line truncated
|
||||
{"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]],[[141.5,218.0],[142.5,206.0],[134.0,191.5],[83.0,184.5],[70.5,196.0],[68.5,209.0],[78.0,222.5],[129.5,230.0],[141.5,218.0]],[[127.5,38.0],[91.0,32.5],[82.5,85.0],[119.5,90.0],[127.5,38.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]],[[170.5,178.0],[163.5,230.0],[167.0,231.5],[176.0,231.5],[182.5,235.0],[186.5,205.0],[191.5,190.0],[185.0,189.5],[177.0,186.5],[174.5,184.0],[172.0,176.5],[170.5,178.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]Line truncated
|
||||
Reference in new issue
Block a user