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":[10,1],"origin":[1500,-2250],"land":[[[236.5,206.0],[229.5,195.0],[227.5,189.0],[224.5,186.0],[203.5,144.0],[199.5,140.0],[191.5,124.0],[186.5,118.0],[183.5,110.0],[170.5,92.0],[168.5,87.0],[152.5,67.0],[103.5,17.0],[99.5,10.0],[91.0,0.5],[87.5,0.0],[250.0,0.0],[250.0,233.9],[236.5,206.0]],[[78.5,5.0],[77.5,11.0],[93.5,32.0],[98.0,36.5],[103.0,37.5],[105.5,40.0],[125.5,66.0],[140.5,88.0],[140.5,90.0],[150.5,103.0],[179.5,155.0],[209.5,217.0],[215.5,237.0],[220.5,246.0],[220.77,250.0],[0.0,250.0],[0.0,0.0],[83.5,0.0],[78.5,5.0]]],"surfaces":[{"poly":[[222.5,111.0],[189.5,27.0],[174.5,2.0],[172.98,0.0],[218.25,0.0],[222.0,1.5],[233.5,1.0],[235.17,0.0],[250.0,0.0],[250.0,68.23],[222.5,83.0],[238.5,113.0],[241.5,114.0],[250.0,109.31],[250.0,126.61],[247.5,128.0],[246.5,133.0],[250.0,139.2],[250.0,160.95],[222.5,111.0]],"kind":"urban"},{"poly":[[23.24,0.0],[57.08,0.0],[32.0,18.5],[23.24,0.0]],"kind":"urban"},{"poly":[[208.0,144.5],[203.5,144.0],[205.5,140.0],[196.5,124.0],[192.5,123.0],[194.5,120.0],[191.5,115.0],[186.5,113.0],[188.5,110.0],[182.5,109.0],[184.5,104.0],[178.5,103.0],[181.5,99.0],[176.5,95.0],[176.5,91.0],[168.5,88.0],[171.5,84.0],[164.0,74.5],[158.5,75.0],[161.5,72.0],[158.5,67.0],[153.0,67.5],[153.5,62.0],[148.5,59.0],[149.5,57.0],[146.0,54.5],[143.0,57.5],[141.5,56.0],[144.5,52.0],[140.0,54.5],[142.5,50.0],[138.0,50.5],[138.5,46.0],[129.0,36.5],[122.5,36.0],[125.0,31.5],[122.0,34.5],[119.5,33.0],[122.0,28.5],[114.0,23.5],[113.0,20.5],[106.5,20.0],[109.5,16.0],[98.5,5.0],[99.5,3.0],[94.5,0.0],[102.5,0.0],[118.0,17.5],[131.5,20.0],[137.0,18.5],[140.5,14.0],[130.39,0.0],[134.75,0.0],[157.5,26.0],[168.5,46.0],[184.5,91.0],[212.0,151.5],[208.0,144.5]],"kind":"urban"},{"poly":[[1.5,52.0],[2.0,5.5],[19.5,45.0],[18.0,48.5],[5.0,50.5],[1.5,52.0]],"kind":"urban"},{"poly":[[172.5,247.0],[165.5,221.0],[134.5,142.0],[128.5,132.0],[111.5,115.0],[117.5,109.0],[120.5,101.0],[120.5,91.0],[116.5,82.0],[111.0,77.5],[106.0,82.5],[103.0,80.5],[89.0,80.5],[88.0,86.5],[82.0,80.5],[72.0,81.5],[42.5,56.0],[39.5,40.0],[36.5,36.0],[37.5,32.0],[63.0,11.5],[71.0,7.5],[76.0,16.5],[80.5,16.0],[77.5,19.0],[86.0,29.5],[90.5,29.0],[87.5,32.0],[90.0,35.5],[94.0,32.5],[96.5,35.0],[95.5,42.0],[122.5,75.0],[133.5,94.0],[137.5,94.0],[139.5,103.0],[152.5,122.0],[173.5,161.0],[180.5,179.0],[196.5,205.0],[204.5,232.0],[207.5,233.0],[210.0,247.5],[172.5,247.0]],"kind":"urban"},{"poly":[[5.5,81.0],[1.5,80.0],[1.5,66.0],[21.0,61.5],[24.5,69.0],[26.5,98.0],[19.5,81.0],[12.0,80.5],[5.0,100.5],[5.5,81.0]],"kind":"urban"},{"poly":[[109.5,111.0],[114.5,103.0],[114.5,90.0],[109.5,82.0],[111.0,80.5],[117.5,90.0],[117.5,103.0],[111.0,112.5],[109.5,111.0]],"kind":"urban"},{"poly":[[0.0,105.21],[0.0,83.62],[2.5,83.0],[2.0,105.5],[0.0,105.21]],"kind":"urban"},{"poly":[[22.0,105.5],[19.0,99.5],[11.0,100.5],[9.0,105.5],[5.5,105.0],[15.0,82.5],[18.5,85.0],[25.0,105.5],[22.0,105.5]],"kind":"urban"},{"poly":[[41.5,105.0],[37.0,96.5],[33.0,96.5],[32.5,105.0],[28.5,105.0],[30.0,82.5],[43.5,85.0],[44.5,92.0],[40.5,96.0],[45.0,105.5],[41.5,105.0]],"kind":"urban"},{"poly":[[49.5,105.0],[50.0,82.5],[61.0,83.5],[64.5,87.0],[62.5,93.0],[64.5,102.0],[60.0,105.5],[49.5,105.0]],"kind":"urban"},{"poly":[[73.0,104.5],[68.5,98.0],[69.5,87.0],[75.0,82.5],[80.0,82.5],[86.5,88.0],[86.5,100.0],[81.0,105.5],[73.0,104.5]],"kind":"urban"},{"poly":[[103.5,105.0],[99.0,96.5],[94.5,98.0],[94.5,105.0],[91.5,105.0],[92.0,82.5],[100.0,82.5],[106.5,86.0],[107.5,91.0],[103.5,97.0],[107.0,105.5],[103.5,105.0]],"kind":"urban"},{"poly":[[51.5,108.0],[62.0,107.5],[67.0,101.5],[71.0,106.5],[81.0,107.5],[87.0,111.5],[112.5,134.0],[103.0,135.5],[102.0,137.5],[98.0,136.5],[97.0,138.5],[88.0,138.5],[87.0,140.5],[82.0,139.5],[76.0,142.5],[61.0,143.5],[60.0,145.5],[51.5,108.0]],"kind":"urban"},{"poly":[[2.0,155.5],[1.5,153.0],[31.5,147.0],[28.0,129.5],[1.5,134.0],[1.5,108.0],[11.0,107.5],[13.0,102.5],[18.0,102.5],[20.0,107.5],[29.0,107.5],[31.5,110.0],[30.5,113.0],[32.5,114.0],[31.5,118.0],[33.5,119.0],[32.5,124.0],[37.5,144.0],[34.0,150.5],[20.0,151.5],[10.0,153.5],[9.0,155.5],[2.0,155.5]],"kind":"urban"},{"poly":[[155.0,243.5],[136.0,247.5],[77.0,247.5],[61.5,158.0],[107.0,149.5],[108.0,147.5],[122.0,146.5],[124.5,157.0],[136.5,182.0],[137.5,190.0],[141.5,195.0],[140.5,197.0],[153.5,225.0],[153.5,231.0],[159.5,246.0],[158.0,247.5],[155.0,243.5]],"kind":"urban"},{"poly":[[1.5,247.0],[1.5,197.0],[42.5,188.0],[38.0,165.5],[20.0,168.5],[19.0,170.5],[9.0,170.5],[3.0,173.5],[2.0,169.5],[36.0,162.5],[41.5,165.0],[41.5,177.0],[43.5,188.0],[45.5,189.0],[45.5,201.0],[48.5,206.0],[47.5,212.0],[49.5,213.0],[48.5,217.0],[50.5,218.0],[49.5,223.0],[51.5,224.0],[50.5,229.0],[55.0,247.5],[1.5,247.0]],"kind":"urban"}],"roads":[{"poly":[[27.5,9.0],[29.5,16.0],[33.0,18.5],[45.0,9.5],[50.0,7.5],[53.0,3.5],[58.0,1.5],[60.06,0.0],[80.22,0.0],[73.0,5.5],[53.0,18.5],[51.0,21.5],[48.0,22.5],[39.0,29.5],[36.5,33.0],[36.5,35.0],[38.5,38.0],[42.5,56.0],[49.0,63.5],[70.0,80.5],[72.0,81.5],[80.0,80.5],[87.0,84.5Line truncated
|
||||
Reference in new issue
Block a user