feat(extract): Chunk-Ausgabe, Manifest und Ablaufsteuerung
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>
This commit is contained in:
1 parent
2c355aa3d8
commit
ce90ea1d5f
292 files changed
+953
No files matched your search
@@ -0,0 +1 @@
|
||||
{"chunk":[1,5],"origin":[-750,-1250],"land":[[[0.0,250.0],[0.0,0.0],[250.0,0.0],[250.0,250.0],[0.0,250.0]]],"surfaces":[{"poly":[[95.5,6.0],[100.9,0.0],[123.32,0.0],[109.0,16.5],[95.5,6.0]],"kind":"urban"},{"poly":[[172.5,81.0],[150.5,56.0],[208.92,0.0],[222.3,0.0],[217.5,6.0],[224.5,14.0],[219.5,18.0],[219.5,21.0],[221.0,24.5],[225.5,26.0],[225.5,38.0],[178.0,84.5],[172.5,81.0]],"kind":"urban"},{"poly":[[10.0,37.5],[10.0,34.5],[7.0,35.5],[1.0,31.5],[0.0,27.5],[0.0,15.75],[7.0,17.5],[8.0,14.5],[9.5,17.0],[9.5,14.0],[6.5,12.0],[6.5,9.0],[9.5,8.0],[7.5,5.0],[9.0,0.5],[1.5,8.0],[3.5,11.0],[0.0,12.17],[0.0,0.0],[14.63,0.0],[20.0,3.5],[32.5,7.0],[29.5,10.0],[33.0,9.5],[34.5,14.0],[31.5,16.0],[32.0,18.5],[29.5,17.0],[31.5,19.0],[29.5,20.0],[29.5,25.0],[24.5,29.0],[26.5,29.0],[24.5,34.0],[20.5,34.0],[22.5,38.0],[18.0,42.5],[10.0,37.5]],"kind":"urban"},{"poly":[[115.5,20.0],[134.09,0.0],[174.45,0.0],[134.0,38.5],[115.5,20.0]],"kind":"urban"},{"poly":[[85.5,0.0],[89.14,0.0],[92.0,3.5],[85.5,0.0]],"kind":"urban"},{"poly":[[34.5,8.0],[36.5,5.0],[33.5,6.0],[34.17,0.0],[40.5,0.0],[34.5,8.0]],"kind":"urban"},{"poly":[[6.0,42.5],[8.5,45.0],[7.0,45.5],[6.0,47.5],[10.0,45.5],[13.5,48.0],[13.0,50.5],[10.0,47.5],[8.5,49.0],[8.0,55.5],[4.0,47.5],[0.0,48.5],[0.0,39.17],[6.0,42.5]],"kind":"urban"},{"poly":[[79.5,56.0],[67.5,46.0],[68.5,43.0],[74.0,36.5],[88.0,45.5],[98.0,29.5],[106.5,37.0],[89.0,62.5],[75.0,66.5],[79.5,56.0]],"kind":"urban"},{"poly":[[181.5,90.0],[226.0,45.5],[242.0,45.5],[242.5,35.0],[249.0,34.5],[250.0,37.1],[250.0,39.93],[248.0,38.5],[247.5,41.0],[250.0,42.88],[250.0,45.5],[248.0,43.5],[247.0,46.5],[242.5,47.0],[247.5,53.0],[247.5,82.0],[210.0,120.5],[181.5,90.0]],"kind":"urban"},{"poly":[[97.0,80.5],[90.0,82.5],[82.0,73.5],[72.0,82.5],[68.0,82.5],[60.5,74.0],[69.0,76.5],[74.0,66.5],[79.0,70.5],[93.0,71.5],[104.0,53.5],[106.5,56.0],[105.5,68.0],[108.0,71.5],[109.5,54.0],[114.0,44.5],[125.5,58.0],[98.0,87.5],[97.0,80.5]],"kind":"urban"},{"poly":[[24.0,168.5],[41.0,168.5],[54.0,164.5],[75.5,144.0],[80.0,236.5],[0.0,237.12],[0.0,156.5],[24.0,168.5]],"kind":"urban"},{"poly":[[20.5,79.0],[23.5,78.0],[24.5,69.0],[29.0,70.5],[37.0,62.5],[39.5,68.0],[34.5,72.0],[38.5,74.0],[35.0,74.5],[34.0,77.5],[30.0,72.5],[26.5,78.0],[28.5,80.0],[25.0,83.5],[20.5,79.0]],"kind":"urban"},{"poly":[[138.5,243.0],[144.0,235.5],[153.0,231.5],[148.0,231.5],[141.0,236.5],[140.0,234.5],[139.0,236.5],[98.0,236.5],[96.5,221.0],[93.5,138.0],[96.0,156.5],[154.5,94.0],[139.0,75.5],[126.5,87.0],[139.0,72.5],[201.5,138.0],[189.5,175.0],[189.5,235.0],[164.0,235.5],[155.0,231.5],[155.0,233.5],[163.0,235.5],[166.5,239.0],[168.19,250.0],[138.5,250.0],[138.5,243.0]],"kind":"urban"},{"poly":[[23.5,101.0],[26.0,96.5],[29.5,96.0],[28.5,93.0],[40.0,82.5],[40.5,89.0],[27.5,102.0],[45.0,119.5],[49.0,121.5],[62.5,105.0],[43.5,87.0],[44.0,82.5],[54.0,94.5],[57.0,92.5],[57.5,96.0],[66.5,104.0],[48.0,125.5],[23.5,101.0]],"kind":"urban"},{"poly":[[92.5,124.0],[126.0,87.5],[124.5,92.0],[93.5,125.0],[93.0,137.5],[92.5,124.0]],"kind":"urban"},{"poly":[[62.5,119.0],[75.5,105.0],[65.5,96.0],[67.0,92.5],[70.0,95.5],[73.0,92.5],[74.0,95.5],[75.0,93.5],[84.5,103.0],[67.0,122.5],[62.5,119.0]],"kind":"urban"},{"poly":[[30.0,148.5],[29.0,146.5],[19.0,144.5],[9.5,138.0],[7.5,106.0],[13.0,93.5],[17.5,98.0],[15.5,101.0],[18.5,105.0],[47.0,133.5],[57.0,124.5],[61.5,127.0],[45.0,145.5],[38.0,148.5],[30.0,148.5]],"kind":"urban"},{"poly":[[236.5,148.0],[225.5,137.0],[240.0,122.5],[247.5,130.0],[247.0,164.5],[236.5,148.0]],"kind":"urban"},{"poly":[[206.5,235.0],[206.5,176.0],[214.0,152.5],[223.5,162.0],[237.5,186.0],[242.5,210.0],[242.0,235.5],[206.5,235.0]],"kind":"urban"}],"roads":[{"poly":[[168.5,249.0],[167.5,245.0],[168.5,243.0],[163.5,237.0],[164.0,235.5],[165.0,236.5],[187.0,236.5],[190.5,233.0],[190.5,182.0],[187.0,178.5],[179.0,178.5],[173.5,177.0],[180.0,176.5],[184.0,177.5],[190.5,174.0],[191.5,169.0],[187.5,165.0],[187.5,161.0],[184.5,158.0],[188.0,156.5],[190.0,160.5],[192.0,161.5],[194.5,160.0],[201.5,138.0],[190.5,125.0],[155.5,90.0],[154.5,87.0],[140.0,72.5],[136.5,76.0],[137.5,79.0],[135.0,81.5],[134.0,80.5],[130.0,81.5],[127.5,85.0],[128.5,87.0],[124.0,88.5],[119.5,93.0],[91.5,125.0],[92.5,136.0],[95.5,139.0],[95.5,147.0],[94.5,148.0],[95.5,151.0],[93.5,154.0],[93.5,169.0],[94.5,170.0],[95.5,211.0],[96.5,212.0],[96.5,230.0],[97.5,234.0],[101.0,237.5],[102.0,236.5],[140.0,236.5],[143.0,234.5],[144.5,235.0],[140.5,239.0],[137.5,246.0],[138.07,250.0],[0.0,250.0],[0.0,238.5],[1.0,238.5],[2.0,237.5],[71.0,237.5],[75.0,233.5],[76.0,234.5],[79.0,233.5],[80.5,231.0],[79.5,204.0],[74.5,199.0],[78.5,195.0],[77.5,194.0],[78.5,193.0],[77.5,162.0],[76.5,161.0],[76.5,149.0],[73.0,145.5],[56.0,162.5],[43.0,167.5],[30.0,167.5],[27.0,168.5],[0.0,155.28],[0.0,144.29],[1.5,145.0],[0.0,139.64],[0.0,94.5],[5.0,88.5],[12.5,86.0],[11.0,79.5],[4.0,86.5],[0.0,88.15],[0.0,74.5],[3.5,71.0],[2.5,68.0],[3.5,65.0],[0.0,61.5],[0.0,58.28],[4.0,60.5],[7.0,58.5],[10.0,61.5],[13.0,58.5],[17.0,62.Line truncated
|
||||
Reference in new issue
Block a user