Add ESRI Imagery in Comparison Maps
Browse files
app.py
CHANGED
|
@@ -174,28 +174,32 @@ def get_wayback_data():
|
|
| 174 |
url = "https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/MapServer/WMTS/1.0.0/WMTSCapabilities.xml"
|
| 175 |
response = requests.get(url)
|
| 176 |
response.raise_for_status() # Ensure request was successful
|
| 177 |
-
|
| 178 |
# Parse XML
|
| 179 |
root = ET.fromstring(response.content)
|
| 180 |
-
|
| 181 |
ns = {
|
| 182 |
-
"wmts": "
|
| 183 |
-
"ows": "
|
| 184 |
-
"xlink": "
|
| 185 |
}
|
| 186 |
-
|
|
|
|
|
|
|
| 187 |
layers = root.findall(".//wmts:Contents/wmts:Layer", ns)
|
| 188 |
-
|
| 189 |
layer_data = []
|
| 190 |
for layer in layers:
|
| 191 |
title = layer.find("ows:Title", ns)
|
| 192 |
-
|
| 193 |
-
|
|
|
|
| 194 |
title_text = title.text if title is not None else "N/A"
|
|
|
|
| 195 |
url_template = resource.get("template") if resource is not None else "N/A"
|
| 196 |
-
|
| 197 |
layer_data.append({"Title": title_text, "ResourceURL_Template": url_template})
|
| 198 |
-
|
| 199 |
wayback_df = pd.DataFrame(layer_data)
|
| 200 |
wayback_df["date"] = pd.to_datetime(wayback_df["Title"].str.extract(r"(\d{4}-\d{2}-\d{2})").squeeze(), errors="coerce")
|
| 201 |
wayback_df.set_index("date", inplace=True)
|
|
|
|
| 174 |
url = "https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/MapServer/WMTS/1.0.0/WMTSCapabilities.xml"
|
| 175 |
response = requests.get(url)
|
| 176 |
response.raise_for_status() # Ensure request was successful
|
| 177 |
+
|
| 178 |
# Parse XML
|
| 179 |
root = ET.fromstring(response.content)
|
| 180 |
+
|
| 181 |
ns = {
|
| 182 |
+
"wmts": "https://www.opengis.net/wmts/1.0",
|
| 183 |
+
"ows": "https://www.opengis.net/ows/1.1",
|
| 184 |
+
"xlink": "https://www.w3.org/1999/xlink",
|
| 185 |
}
|
| 186 |
+
|
| 187 |
+
# Use a robust XPath to find all 'Layer' elements anywhere in the document.
|
| 188 |
+
# This is less brittle than specifying the full path.
|
| 189 |
layers = root.findall(".//wmts:Contents/wmts:Layer", ns)
|
| 190 |
+
|
| 191 |
layer_data = []
|
| 192 |
for layer in layers:
|
| 193 |
title = layer.find("ows:Title", ns)
|
| 194 |
+
identifier = layer.find("ows:Identifier", ns)
|
| 195 |
+
resource = layer.find("wmts:ResourceURL", ns) # Tile URL template
|
| 196 |
+
|
| 197 |
title_text = title.text if title is not None else "N/A"
|
| 198 |
+
identifier_text = identifier.text if identifier is not None else "N/A"
|
| 199 |
url_template = resource.get("template") if resource is not None else "N/A"
|
| 200 |
+
|
| 201 |
layer_data.append({"Title": title_text, "ResourceURL_Template": url_template})
|
| 202 |
+
|
| 203 |
wayback_df = pd.DataFrame(layer_data)
|
| 204 |
wayback_df["date"] = pd.to_datetime(wayback_df["Title"].str.extract(r"(\d{4}-\d{2}-\d{2})").squeeze(), errors="coerce")
|
| 205 |
wayback_df.set_index("date", inplace=True)
|