Scaffold Vite + TypeScript + Three.js (scène vide : sol + boîte, marqueur de build), store et encodage de l'état dans l'URL (5 tests), lint de frontières entre modules, pipeline d'extraction Rhino (graine du 26/09) et première géométrie v0, deploy.sh statique (releases + lien symbolique + smoke), AGENTS.md, RUNBOOK, licences MIT + CC BY-SA 4.0. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
12 lines
996 B
Python
12 lines
996 B
Python
import json, matplotlib; matplotlib.use("Agg"); import matplotlib.pyplot as plt
|
|
d=json.load(open("quartier.json"))
|
|
fig,ax=plt.subplots(figsize=(14,12)); ax.set_aspect('equal'); ax.set_facecolor("#fbfaf5")
|
|
for P in d["topo"]: xs,ys=zip(*P); ax.plot(xs,ys,color="#d8d2c0",lw=0.5)
|
|
for P in d["parcelles"]: xs,ys=zip(*P); ax.plot(xs,ys,color="#8fbf6a",lw=0.8)
|
|
for P in d["sentiers"]: xs,ys=zip(*P); ax.fill(xs,ys,color="#e6c77a",alpha=0.6)
|
|
for P in d["noues"]: xs,ys=zip(*P); ax.fill(xs,ys,color="#6fb3d9",alpha=0.7)
|
|
for P in d["plante"]: xs,ys=zip(*P); ax.fill(xs,ys,color="#b7d9a0",alpha=0.5)
|
|
for c in d["maisons_candidates"]: xs,ys=zip(*c["pts"]); ax.fill(xs,ys,color="#444",alpha=0.85)
|
|
ax.set_title("Extraction rhino3dm — plan quartier TRANSFO 2020 (m) : %d parcelles, %d noues, %d sentiers, %d maisons candidates"%(len(d["parcelles"]),len(d["noues"]),len(d["sentiers"]),len(d["maisons_candidates"])),fontsize=10)
|
|
plt.savefig("extraction-quartier.png",dpi=110,bbox_inches="tight"); print("ok")
|