Update pages/12_🌲_VertXtractor.py
Browse files
pages/12_🌲_VertXtractor.py
CHANGED
@@ -9,7 +9,6 @@ import json
|
|
9 |
|
10 |
st.set_page_config(layout="wide", page_title="Extracteur de données géospatiales")
|
11 |
|
12 |
-
# Liste étendue des couches disponibles
|
13 |
LAYERS = {
|
14 |
# Swisstopo
|
15 |
"SWISSIMAGE 10 cm": {"id": "ch.swisstopo.swissimage-dop10", "source": "swisstopo", "type": "image"},
|
@@ -19,8 +18,8 @@ LAYERS = {
|
|
19 |
"Limites administratives": {"id": "ch.swisstopo.swissboundaries3d-gemeinde-flaeche.fill", "source": "swisstopo", "type": "vector"},
|
20 |
"Réseau hydrographique": {"id": "ch.bafu.vec25-gewaessernetz", "source": "swisstopo", "type": "vector"},
|
21 |
# ESRI
|
22 |
-
"World Imagery": {"id": "
|
23 |
-
"World Elevation": {"id": "WorldElevation", "source": "esri", "type": "raster"},
|
24 |
"World Topographic": {"id": "World_Topo_Map", "source": "esri", "type": "image"},
|
25 |
"World Street Map": {"id": "World_Street_Map", "source": "esri", "type": "image"},
|
26 |
"World Terrain": {"id": "World_Terrain_Base", "source": "esri", "type": "image"},
|
@@ -49,7 +48,7 @@ def get_download_url(bbox, layer_info):
|
|
49 |
data_key = 'rgb' if 'rgb' in asset_keys else 'data' if 'data' in asset_keys else next(iter(asset_keys))
|
50 |
return feature['assets'][data_key]['href']
|
51 |
else: # ESRI
|
52 |
-
service_url = f"https://server.arcgisonline.com/arcgis/rest/services/{layer_info['id']}/
|
53 |
params = {
|
54 |
"bbox": f"{bbox[0]},{bbox[1]},{bbox[2]},{bbox[3]}",
|
55 |
"bboxSR": 4326,
|
@@ -62,7 +61,10 @@ def get_download_url(bbox, layer_info):
|
|
62 |
response = requests.get(service_url, params=params)
|
63 |
response.raise_for_status()
|
64 |
json_response = response.json()
|
65 |
-
if '
|
|
|
|
|
|
|
66 |
return json_response['href']
|
67 |
elif 'url' in json_response:
|
68 |
return json_response['url']
|
|
|
9 |
|
10 |
st.set_page_config(layout="wide", page_title="Extracteur de données géospatiales")
|
11 |
|
|
|
12 |
LAYERS = {
|
13 |
# Swisstopo
|
14 |
"SWISSIMAGE 10 cm": {"id": "ch.swisstopo.swissimage-dop10", "source": "swisstopo", "type": "image"},
|
|
|
18 |
"Limites administratives": {"id": "ch.swisstopo.swissboundaries3d-gemeinde-flaeche.fill", "source": "swisstopo", "type": "vector"},
|
19 |
"Réseau hydrographique": {"id": "ch.bafu.vec25-gewaessernetz", "source": "swisstopo", "type": "vector"},
|
20 |
# ESRI
|
21 |
+
"World Imagery": {"id": "World_Imagery", "source": "esri", "type": "image"},
|
22 |
+
"World Elevation": {"id": "WorldElevation/Terrain", "source": "esri", "type": "raster"},
|
23 |
"World Topographic": {"id": "World_Topo_Map", "source": "esri", "type": "image"},
|
24 |
"World Street Map": {"id": "World_Street_Map", "source": "esri", "type": "image"},
|
25 |
"World Terrain": {"id": "World_Terrain_Base", "source": "esri", "type": "image"},
|
|
|
48 |
data_key = 'rgb' if 'rgb' in asset_keys else 'data' if 'data' in asset_keys else next(iter(asset_keys))
|
49 |
return feature['assets'][data_key]['href']
|
50 |
else: # ESRI
|
51 |
+
service_url = f"https://server.arcgisonline.com/arcgis/rest/services/{layer_info['id']}/ImageServer/exportImage"
|
52 |
params = {
|
53 |
"bbox": f"{bbox[0]},{bbox[1]},{bbox[2]},{bbox[3]}",
|
54 |
"bboxSR": 4326,
|
|
|
61 |
response = requests.get(service_url, params=params)
|
62 |
response.raise_for_status()
|
63 |
json_response = response.json()
|
64 |
+
if 'error' in json_response:
|
65 |
+
st.error(f"Erreur ESRI: {json_response['error']['message']}")
|
66 |
+
return None
|
67 |
+
elif 'href' in json_response:
|
68 |
return json_response['href']
|
69 |
elif 'url' in json_response:
|
70 |
return json_response['url']
|