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.
@@ -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
+ }