passerelle-geo-components 0.2.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +77 -0
- package/examples/README.md +175 -0
- package/examples/choropleth-demographique.json +90 -0
- package/examples/corpus-documentaire.json +170 -0
- package/examples/diagnostic-temporel.json +160 -0
- package/examples/heatmap-rag.json +84 -0
- package/examples/maquette-3d.json +153 -0
- package/examples/minimal.json +19 -0
- package/examples/multi-layers-narrative.json +119 -0
- package/examples/timeline-overlay-simple.json +90 -0
- package/examples/validation-terrain-zebra.json +98 -0
- package/geo-components.js +1719 -0
- package/package.json +77 -0
- package/schemas/README.md +125 -0
- package/schemas/scene_manifest.pydantic.py +1000 -0
- package/schemas/scene_manifest.schema.json +905 -0
- package/schemas/scene_manifest.zod.ts +66 -0
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://cerema.github.io/geo-components/schemas/scene_manifest/0.3.1.json",
|
|
3
|
+
"manifest_version": "0.3.1",
|
|
4
|
+
"produced_at": "2026-07-10T12:00:00+02:00",
|
|
5
|
+
"provenance": {
|
|
6
|
+
"producer": "x_mobscidat",
|
|
7
|
+
"producer_version": "v0.3.2"
|
|
8
|
+
},
|
|
9
|
+
"title": "Résultats RAG géo-sémantiques MobSciDat",
|
|
10
|
+
"source_text": "Corpus MobSciDat PEPR MOBIDEC — recherche géo-sémantique",
|
|
11
|
+
"basemap": {
|
|
12
|
+
"id": "cartodb-positron-nolabels"
|
|
13
|
+
},
|
|
14
|
+
"zone": {
|
|
15
|
+
"kind": "auto_bounds"
|
|
16
|
+
},
|
|
17
|
+
"layers": [
|
|
18
|
+
{
|
|
19
|
+
"id": "facts_heatmap",
|
|
20
|
+
"name": "Densité géo-sémantique (pondérée par score)",
|
|
21
|
+
"role": "primary",
|
|
22
|
+
"geometry_type": "point",
|
|
23
|
+
"source": {
|
|
24
|
+
"type": "geojson_path",
|
|
25
|
+
"path": "/api/mobscidat/facts/search-results.geojson"
|
|
26
|
+
},
|
|
27
|
+
"n_features": 3247,
|
|
28
|
+
"bbox": [-5.0, 42.0, 9.0, 51.0],
|
|
29
|
+
"attribute_stats": {
|
|
30
|
+
"score": { "min": 0.1, "max": 1.0, "distinct_count": 250 },
|
|
31
|
+
"confidence": { "min": 0.3, "max": 0.98, "distinct_count": 180 }
|
|
32
|
+
},
|
|
33
|
+
"style": {
|
|
34
|
+
"z_index": 10,
|
|
35
|
+
"opacity": { "kind": "static", "value": 0.75 },
|
|
36
|
+
"classification": {
|
|
37
|
+
"color": {
|
|
38
|
+
"mode": "expression",
|
|
39
|
+
"expr": [
|
|
40
|
+
"interpolate",
|
|
41
|
+
["linear"],
|
|
42
|
+
["heatmap-density"],
|
|
43
|
+
0, "rgba(33, 102, 172, 0)",
|
|
44
|
+
0.2, "#6baed6",
|
|
45
|
+
0.4, "#4292c6",
|
|
46
|
+
0.6, "#2171b5",
|
|
47
|
+
0.8, "#f7b924",
|
|
48
|
+
1.0, "#d64d00"
|
|
49
|
+
]
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
"maplibre_paint_override": {
|
|
53
|
+
"heatmap-weight": ["interpolate", ["linear"], ["get", "score"], 0, 0, 1, 1],
|
|
54
|
+
"heatmap-intensity": ["interpolate", ["linear"], ["zoom"], 5, 1, 15, 3],
|
|
55
|
+
"heatmap-radius": ["interpolate", ["linear"], ["zoom"], 5, 20, 15, 40]
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
"interactions": {
|
|
59
|
+
"popup_template": {
|
|
60
|
+
"kind": "handlebars",
|
|
61
|
+
"body": "<h4>{{predicate}}</h4><p>Score : {{score}} — Confiance : {{confidence}}</p><p>{{source_type}}</p>"
|
|
62
|
+
},
|
|
63
|
+
"tooltip_field": "predicate",
|
|
64
|
+
"hover_attributes": ["predicate", "score", "confidence", "source_type"],
|
|
65
|
+
"emits_events": true
|
|
66
|
+
},
|
|
67
|
+
"extensions": {
|
|
68
|
+
"x_mobscidat": {
|
|
69
|
+
"layer_type": "heatmap",
|
|
70
|
+
"weight_field": "score"
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
],
|
|
75
|
+
"extensions": {
|
|
76
|
+
"x_mobscidat": {
|
|
77
|
+
"modes": {
|
|
78
|
+
"search": ["facts_heatmap"],
|
|
79
|
+
"portrait": []
|
|
80
|
+
},
|
|
81
|
+
"default_mode": "search"
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://cerema.github.io/geo-components/schemas/scene_manifest/0.3.1.json",
|
|
3
|
+
"manifest_version": "0.3.1",
|
|
4
|
+
"produced_at": "2026-07-10T15:00:00+02:00",
|
|
5
|
+
"provenance": {
|
|
6
|
+
"producer": "atlas",
|
|
7
|
+
"producer_version": "2.0-atlas",
|
|
8
|
+
"extensions": {
|
|
9
|
+
"atlas": {
|
|
10
|
+
"native_payload_hash": "sha256:d3f7a9b2e4c8d1f6a8b3e5c9f2d4a7b6e1c3f5a9b8d2e4c7f3a6b8d1e5c9f2a4"
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"title": "Maquette 3D territoriale — Toulouse Capitole",
|
|
15
|
+
"subtitle": "Bâti + mobilier urbain + terrain LIDAR",
|
|
16
|
+
"projection": "mercator",
|
|
17
|
+
"basemap": {
|
|
18
|
+
"id": "openfreemap-liberty",
|
|
19
|
+
"toggles": {
|
|
20
|
+
"labels": true,
|
|
21
|
+
"buildings_3d": true
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"zone": {
|
|
25
|
+
"kind": "manual",
|
|
26
|
+
"center": [1.4437, 43.6043],
|
|
27
|
+
"zoom": 16,
|
|
28
|
+
"pitch": 55,
|
|
29
|
+
"bearing": -18,
|
|
30
|
+
"max_pitch": 80
|
|
31
|
+
},
|
|
32
|
+
"camera_presets": [
|
|
33
|
+
{ "id": "top", "pitch": 0, "bearing": 0, "zoom": 17 },
|
|
34
|
+
{ "id": "3d", "pitch": 55, "bearing": -18, "zoom": 16 },
|
|
35
|
+
{ "id": "street", "pitch": 78, "bearing": 0, "zoom": 18 }
|
|
36
|
+
],
|
|
37
|
+
"terrain": {
|
|
38
|
+
"source_id": "ign-lidar",
|
|
39
|
+
"encoding": "mapbox",
|
|
40
|
+
"exaggeration": 1.2,
|
|
41
|
+
"adapter": "ignmnt"
|
|
42
|
+
},
|
|
43
|
+
"sky": {
|
|
44
|
+
"enabled": true,
|
|
45
|
+
"dynamic_sun": true,
|
|
46
|
+
"sun_datetime": "2026-06-15T14:30:00+02:00",
|
|
47
|
+
"location_for_suncalc": { "lat": 43.6043, "lng": 1.4437 }
|
|
48
|
+
},
|
|
49
|
+
"layers": [
|
|
50
|
+
{
|
|
51
|
+
"id": "batiments_capitole",
|
|
52
|
+
"name": "Bâti extrudé",
|
|
53
|
+
"role": "primary",
|
|
54
|
+
"geometry_type": "polygon",
|
|
55
|
+
"source": {
|
|
56
|
+
"type": "geojson_path",
|
|
57
|
+
"path": "/data/atlas/scenes/toulouse-capitole/batiments.geojson"
|
|
58
|
+
},
|
|
59
|
+
"n_features": 340,
|
|
60
|
+
"bbox": [1.435, 43.596, 1.452, 43.612],
|
|
61
|
+
"attribute_stats": {
|
|
62
|
+
"hauteur": { "min": 3.5, "max": 42.0, "distinct_count": 156 }
|
|
63
|
+
},
|
|
64
|
+
"style": {
|
|
65
|
+
"z_index": 10,
|
|
66
|
+
"opacity": { "kind": "static", "value": 0.95 },
|
|
67
|
+
"classification": {
|
|
68
|
+
"color": {
|
|
69
|
+
"mode": "graduated",
|
|
70
|
+
"field": "hauteur",
|
|
71
|
+
"method": "linear",
|
|
72
|
+
"breaks": [10, 20, 30],
|
|
73
|
+
"palette": "YlOrRd",
|
|
74
|
+
"default": "#f7b924"
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
"extrusion": {
|
|
78
|
+
"enabled": true,
|
|
79
|
+
"height_field": "hauteur",
|
|
80
|
+
"vertical_gradient": true
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
"interactions": {
|
|
84
|
+
"popup_template": {
|
|
85
|
+
"kind": "handlebars",
|
|
86
|
+
"body": "<h4>{{nature}}</h4><p>Hauteur : {{hauteur}} m</p>"
|
|
87
|
+
},
|
|
88
|
+
"tooltip_field": "hauteur",
|
|
89
|
+
"emits_events": true
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"id": "mobilier_points",
|
|
94
|
+
"name": "Mobilier urbain (points)",
|
|
95
|
+
"role": "primary",
|
|
96
|
+
"geometry_type": "point",
|
|
97
|
+
"source": {
|
|
98
|
+
"type": "geojson_path",
|
|
99
|
+
"path": "/data/atlas/scenes/toulouse-capitole/mobilier.geojson"
|
|
100
|
+
},
|
|
101
|
+
"n_features": 68,
|
|
102
|
+
"bbox": [1.435, 43.596, 1.452, 43.612],
|
|
103
|
+
"attribute_stats": {
|
|
104
|
+
"category": { "distinct_values": ["lighting", "furniture", "vegetation"] }
|
|
105
|
+
},
|
|
106
|
+
"style": {
|
|
107
|
+
"visible": false,
|
|
108
|
+
"z_index": 15,
|
|
109
|
+
"opacity": { "kind": "static", "value": 0.0 },
|
|
110
|
+
"classification": {
|
|
111
|
+
"color": { "mode": "single", "value": "#000091" }
|
|
112
|
+
}
|
|
113
|
+
},
|
|
114
|
+
"interactions": { "emits_events": false }
|
|
115
|
+
}
|
|
116
|
+
],
|
|
117
|
+
"custom_layers": [
|
|
118
|
+
{
|
|
119
|
+
"id": "mobilier_urbain_3d",
|
|
120
|
+
"kind": "gltf_instances",
|
|
121
|
+
"adapter": "geo-3d-scene",
|
|
122
|
+
"source_layer_id": "mobilier_points",
|
|
123
|
+
"params": {
|
|
124
|
+
"gltf_base_url": "https://nic01asfr.github.io/Widgets-Grist/models/colored/",
|
|
125
|
+
"gltf_field": "_gltf_url",
|
|
126
|
+
"rotation_fields": {
|
|
127
|
+
"x": "_rotationX",
|
|
128
|
+
"y": "_rotationY",
|
|
129
|
+
"z": "_rotationZ"
|
|
130
|
+
},
|
|
131
|
+
"scale_field": "_scale",
|
|
132
|
+
"shadow_map": true,
|
|
133
|
+
"shadow_map_size": 2048,
|
|
134
|
+
"zoom_gate": 11
|
|
135
|
+
},
|
|
136
|
+
"extensions": {
|
|
137
|
+
"atlas": {
|
|
138
|
+
"model_set": "colored",
|
|
139
|
+
"max_instances": 20000
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
],
|
|
144
|
+
"legend": {
|
|
145
|
+
"mode": "auto",
|
|
146
|
+
"from_layer": "batiments_capitole",
|
|
147
|
+
"position": "bottom-left",
|
|
148
|
+
"format": "gradient_bar",
|
|
149
|
+
"title": "Hauteur bâti (m)"
|
|
150
|
+
},
|
|
151
|
+
"scalebar": { "position": "bottom-right", "unit": "metric" },
|
|
152
|
+
"north_arrow": { "position": "top-right" }
|
|
153
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://cerema.github.io/geo-components/schemas/scene_manifest/0.3.1.json",
|
|
3
|
+
"manifest_version": "0.3.1",
|
|
4
|
+
"produced_at": "2026-07-10T09:00:00+02:00",
|
|
5
|
+
"provenance": {
|
|
6
|
+
"producer": "manual",
|
|
7
|
+
"producer_version": "-"
|
|
8
|
+
},
|
|
9
|
+
"title": "Carte minimale",
|
|
10
|
+
"basemap": {
|
|
11
|
+
"id": "osm"
|
|
12
|
+
},
|
|
13
|
+
"zone": {
|
|
14
|
+
"kind": "manual",
|
|
15
|
+
"center": [2.35, 48.86],
|
|
16
|
+
"zoom": 12
|
|
17
|
+
},
|
|
18
|
+
"layers": []
|
|
19
|
+
}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://cerema.github.io/geo-components/schemas/scene_manifest/0.3.1.json",
|
|
3
|
+
"manifest_version": "0.3.1",
|
|
4
|
+
"produced_at": "2026-07-10T14:00:00+02:00",
|
|
5
|
+
"provenance": {
|
|
6
|
+
"producer": "qgis-sspcloud",
|
|
7
|
+
"producer_version": "v1.20.6"
|
|
8
|
+
},
|
|
9
|
+
"title": "Analyse territoriale multi-couches",
|
|
10
|
+
"subtitle": "Contexte + Primary + Emprise",
|
|
11
|
+
"basemap": {
|
|
12
|
+
"id": "plan-ign-v2-gris"
|
|
13
|
+
},
|
|
14
|
+
"zone": {
|
|
15
|
+
"kind": "insee_arm",
|
|
16
|
+
"insee": "13204"
|
|
17
|
+
},
|
|
18
|
+
"layers": [
|
|
19
|
+
{
|
|
20
|
+
"id": "commune_context",
|
|
21
|
+
"name": "Marseille (contexte)",
|
|
22
|
+
"role": "context",
|
|
23
|
+
"geometry_type": "polygon",
|
|
24
|
+
"source": {
|
|
25
|
+
"type": "boundary_admin",
|
|
26
|
+
"catalog_id": "communes",
|
|
27
|
+
"filter": { "insee": "13055" }
|
|
28
|
+
},
|
|
29
|
+
"style": {
|
|
30
|
+
"z_index": 1,
|
|
31
|
+
"opacity": { "kind": "static", "value": 0.2 },
|
|
32
|
+
"classification": {
|
|
33
|
+
"color": { "mode": "single", "value": "#e0e0e0" }
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
"interactions": { "emits_events": false }
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"id": "batiments_thematique",
|
|
40
|
+
"name": "Bâti par nature",
|
|
41
|
+
"role": "primary",
|
|
42
|
+
"geometry_type": "polygon",
|
|
43
|
+
"source": {
|
|
44
|
+
"type": "geojson_path",
|
|
45
|
+
"path": "/data/studies/xyz/scene_store/abc/layers/batiments.geojson"
|
|
46
|
+
},
|
|
47
|
+
"n_features": 14270,
|
|
48
|
+
"bbox": [5.379, 43.289, 5.427, 43.334],
|
|
49
|
+
"attribute_stats": {
|
|
50
|
+
"nature": {
|
|
51
|
+
"distinct_values": ["Résidentiel", "Industriel", "Commercial", "Agricole", "Autre"]
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
"style": {
|
|
55
|
+
"z_index": 10,
|
|
56
|
+
"opacity": { "kind": "static", "value": 0.85 },
|
|
57
|
+
"classification": {
|
|
58
|
+
"color": {
|
|
59
|
+
"mode": "categorized",
|
|
60
|
+
"field": "nature",
|
|
61
|
+
"categories": [
|
|
62
|
+
{ "value": "Résidentiel", "color": "#1d70b8" },
|
|
63
|
+
{ "value": "Industriel", "color": "#d64d00" },
|
|
64
|
+
{ "value": "Commercial", "color": "#f7b924" },
|
|
65
|
+
{ "value": "Agricole", "color": "#5a9f39" },
|
|
66
|
+
{ "value": "Autre", "color": "#9e9e9e" }
|
|
67
|
+
],
|
|
68
|
+
"default": "#9e9e9e"
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
"outline": {
|
|
72
|
+
"enabled": true,
|
|
73
|
+
"color": "#333333",
|
|
74
|
+
"width": 0.3
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
"interactions": {
|
|
78
|
+
"popup_template": {
|
|
79
|
+
"kind": "handlebars",
|
|
80
|
+
"body": "<h4>{{nature}}</h4><p>{{nombre_de_logements}} logement(s)</p>"
|
|
81
|
+
},
|
|
82
|
+
"tooltip_field": "nature",
|
|
83
|
+
"emits_events": true
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"id": "arrondissement_emprise",
|
|
88
|
+
"name": "4e arrondissement — emprise",
|
|
89
|
+
"role": "emprise",
|
|
90
|
+
"geometry_type": "polygon",
|
|
91
|
+
"source": {
|
|
92
|
+
"type": "boundary_admin",
|
|
93
|
+
"catalog_id": "arrondissements_marseille",
|
|
94
|
+
"filter": { "insee_arm": "13204" }
|
|
95
|
+
},
|
|
96
|
+
"style": {
|
|
97
|
+
"z_index": 5,
|
|
98
|
+
"opacity": { "kind": "static", "value": 0.0 },
|
|
99
|
+
"classification": {
|
|
100
|
+
"color": { "mode": "single", "value": "#ffffff" }
|
|
101
|
+
},
|
|
102
|
+
"outline": {
|
|
103
|
+
"enabled": true,
|
|
104
|
+
"color": "#000091",
|
|
105
|
+
"width": 3
|
|
106
|
+
}
|
|
107
|
+
},
|
|
108
|
+
"interactions": { "emits_events": false }
|
|
109
|
+
}
|
|
110
|
+
],
|
|
111
|
+
"legend": {
|
|
112
|
+
"mode": "auto",
|
|
113
|
+
"from_layer": "batiments_thematique",
|
|
114
|
+
"position": "bottom-left",
|
|
115
|
+
"format": "chips",
|
|
116
|
+
"title": "Nature du bâti"
|
|
117
|
+
},
|
|
118
|
+
"scalebar": { "position": "bottom-right", "unit": "metric" }
|
|
119
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://cerema.github.io/geo-components/schemas/scene_manifest/0.3.1.json",
|
|
3
|
+
"manifest_version": "0.3.1",
|
|
4
|
+
"produced_at": "2026-07-10T13:00:00+02:00",
|
|
5
|
+
"provenance": {
|
|
6
|
+
"producer": "qgis-sspcloud",
|
|
7
|
+
"producer_version": "v1.20.6"
|
|
8
|
+
},
|
|
9
|
+
"title": "Événements historiques territoriaux — animation temporelle",
|
|
10
|
+
"subtitle": "Timeline overlay sans classification par période",
|
|
11
|
+
"basemap": {
|
|
12
|
+
"id": "plan-ign-v2"
|
|
13
|
+
},
|
|
14
|
+
"zone": {
|
|
15
|
+
"kind": "manual",
|
|
16
|
+
"bbox": [5.2, 43.2, 5.6, 43.4],
|
|
17
|
+
"center": [5.4, 43.3],
|
|
18
|
+
"zoom": 10
|
|
19
|
+
},
|
|
20
|
+
"layers": [
|
|
21
|
+
{
|
|
22
|
+
"id": "evenements_historiques",
|
|
23
|
+
"name": "Événements datés",
|
|
24
|
+
"role": "primary",
|
|
25
|
+
"geometry_type": "point",
|
|
26
|
+
"source": {
|
|
27
|
+
"type": "geojson_path",
|
|
28
|
+
"path": "/data/studies/xyz/scene_store/abc/layers/evenements_historiques.geojson"
|
|
29
|
+
},
|
|
30
|
+
"n_features": 145,
|
|
31
|
+
"bbox": [5.2, 43.2, 5.6, 43.4],
|
|
32
|
+
"attribute_stats": {
|
|
33
|
+
"annee": { "min": 1800, "max": 2020, "distinct_count": 89 }
|
|
34
|
+
},
|
|
35
|
+
"style": {
|
|
36
|
+
"z_index": 10,
|
|
37
|
+
"opacity": {
|
|
38
|
+
"kind": "reactive",
|
|
39
|
+
"prop": "time",
|
|
40
|
+
"matched": 0.9,
|
|
41
|
+
"before": 0.9,
|
|
42
|
+
"after": 0.15,
|
|
43
|
+
"null_value": 0.3
|
|
44
|
+
},
|
|
45
|
+
"classification": {
|
|
46
|
+
"color": {
|
|
47
|
+
"mode": "single",
|
|
48
|
+
"value": "#000091"
|
|
49
|
+
},
|
|
50
|
+
"size": {
|
|
51
|
+
"mode": "single",
|
|
52
|
+
"value": 10
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
"hollow_point": {
|
|
56
|
+
"enabled": true,
|
|
57
|
+
"radius": 10
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
"interactions": {
|
|
61
|
+
"popup_template": {
|
|
62
|
+
"kind": "handlebars",
|
|
63
|
+
"body": "<h4>{{titre}}</h4><p>{{annee}} — {{lieu}}</p><p>{{description}}</p>"
|
|
64
|
+
},
|
|
65
|
+
"tooltip_field": "titre",
|
|
66
|
+
"hover_attributes": ["annee", "lieu"],
|
|
67
|
+
"emits_events": true
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
],
|
|
71
|
+
"legend": {
|
|
72
|
+
"mode": "manual",
|
|
73
|
+
"items": [
|
|
74
|
+
{ "label": "Événement", "color": "#000091" },
|
|
75
|
+
{ "label": "Hors période slider", "color": "#cccccc" }
|
|
76
|
+
],
|
|
77
|
+
"position": "bottom-left",
|
|
78
|
+
"format": "chips",
|
|
79
|
+
"title": "Chronologie"
|
|
80
|
+
},
|
|
81
|
+
"counters": [
|
|
82
|
+
{
|
|
83
|
+
"id": "cnt_events",
|
|
84
|
+
"bind": "time",
|
|
85
|
+
"expr": "filtered_count",
|
|
86
|
+
"template": "{{count}} événement(s) affiché(s)",
|
|
87
|
+
"position": "top-left"
|
|
88
|
+
}
|
|
89
|
+
]
|
|
90
|
+
}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://cerema.github.io/geo-components/schemas/scene_manifest/0.3.1.json",
|
|
3
|
+
"manifest_version": "0.3.1",
|
|
4
|
+
"produced_at": "2026-07-10T16:00:00+02:00",
|
|
5
|
+
"provenance": {
|
|
6
|
+
"producer": "x_zebra",
|
|
7
|
+
"producer_version": "v0.4.0"
|
|
8
|
+
},
|
|
9
|
+
"title": "ZEBRA — validation terrain passages piétons",
|
|
10
|
+
"subtitle": "Sélection bidirectionnelle Grist ↔ carte",
|
|
11
|
+
"basemap": {
|
|
12
|
+
"id": "ortho-ign"
|
|
13
|
+
},
|
|
14
|
+
"zone": {
|
|
15
|
+
"kind": "manual",
|
|
16
|
+
"bbox": [5.379, 43.289, 5.427, 43.334],
|
|
17
|
+
"center": [5.40, 43.31],
|
|
18
|
+
"zoom": 17,
|
|
19
|
+
"pitch": 0
|
|
20
|
+
},
|
|
21
|
+
"layers": [
|
|
22
|
+
{
|
|
23
|
+
"id": "passages_pietons_detectes",
|
|
24
|
+
"name": "Passages piétons détectés (IA)",
|
|
25
|
+
"role": "primary",
|
|
26
|
+
"geometry_type": "polygon",
|
|
27
|
+
"source": {
|
|
28
|
+
"type": "grist_table",
|
|
29
|
+
"table": "Pp",
|
|
30
|
+
"id_field": "id",
|
|
31
|
+
"sync": "reactive"
|
|
32
|
+
},
|
|
33
|
+
"n_features": 267,
|
|
34
|
+
"bbox": [5.379, 43.289, 5.427, 43.334],
|
|
35
|
+
"attribute_stats": {
|
|
36
|
+
"categorie_danger": {
|
|
37
|
+
"distinct_values": ["conforme", "vigilance", "danger_moyen", "danger_fort", "critique"]
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
"style": {
|
|
41
|
+
"z_index": 10,
|
|
42
|
+
"opacity": { "kind": "static", "value": 0.85 },
|
|
43
|
+
"classification": {
|
|
44
|
+
"color": {
|
|
45
|
+
"mode": "categorized",
|
|
46
|
+
"field": "categorie_danger",
|
|
47
|
+
"categories": [
|
|
48
|
+
{ "value": "conforme", "color": "#5a9f39" },
|
|
49
|
+
{ "value": "vigilance", "color": "#f7b924" },
|
|
50
|
+
{ "value": "danger_moyen", "color": "#e4794a" },
|
|
51
|
+
{ "value": "danger_fort", "color": "#d64d00" },
|
|
52
|
+
{ "value": "critique", "color": "#8b0000" }
|
|
53
|
+
],
|
|
54
|
+
"default": "#9e9e9e"
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
"outline": {
|
|
58
|
+
"enabled": true,
|
|
59
|
+
"color": "#000000",
|
|
60
|
+
"width": 0.5
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
"interactions": {
|
|
64
|
+
"popup_template": {
|
|
65
|
+
"kind": "handlebars",
|
|
66
|
+
"body": "<h4>PP #{{id}}</h4><p><strong>{{categorie_danger}}</strong></p><p>Rue : {{nom_rue}}</p><p><a href=\"#/pp/{{id}}\">Fiche complète</a></p>"
|
|
67
|
+
},
|
|
68
|
+
"tooltip_field": "categorie_danger",
|
|
69
|
+
"hover_attributes": ["id", "categorie_danger", "nom_rue"],
|
|
70
|
+
"emits_events": true,
|
|
71
|
+
"feature_state_selected_field": "id"
|
|
72
|
+
},
|
|
73
|
+
"extensions": {
|
|
74
|
+
"x_zebra": {
|
|
75
|
+
"grist_bridge_role": "primary_selection",
|
|
76
|
+
"grist_view_id": "V1"
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
],
|
|
81
|
+
"legend": {
|
|
82
|
+
"mode": "auto",
|
|
83
|
+
"from_layer": "passages_pietons_detectes",
|
|
84
|
+
"position": "bottom-left",
|
|
85
|
+
"format": "chips",
|
|
86
|
+
"title": "Niveau de danger"
|
|
87
|
+
},
|
|
88
|
+
"scalebar": { "position": "bottom-right", "unit": "metric" },
|
|
89
|
+
"counters": [
|
|
90
|
+
{
|
|
91
|
+
"id": "cnt_pp_selected",
|
|
92
|
+
"bind": "selection",
|
|
93
|
+
"expr": "filtered_count",
|
|
94
|
+
"template": "{{count}} sélectionné(s) / 267 total",
|
|
95
|
+
"position": "top-left"
|
|
96
|
+
}
|
|
97
|
+
]
|
|
98
|
+
}
|