diff --git a/.gitignore b/.gitignore index ead56f2..e39f80c 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ data/plats.geojson +satellite/ diff --git a/Makefile b/Makefile index 040dd87..b145c8d 100644 --- a/Makefile +++ b/Makefile @@ -1,2 +1,6 @@ plats.json: scripts/get_plats.py ./scripts/get_plats.py data/plats.geojson + +.PHONY: satellite +satellite: + ./scripts/download_satellite.py diff --git a/map.html b/map.html index 475b983..947b7cb 100644 --- a/map.html +++ b/map.html @@ -68,6 +68,15 @@ // maxZoom: 19, // attribution: '© OpenStreetMap' // }).addTo(map); + L.tileLayer('./satellite/{z}/{x}/{y}.png', { + minNativeZoom: 12, + maxNativeZoom: 20, + bounds: [ + [47.517085, -93.427584], + [47.457925, -93.340026], + ], + }).addTo(map); + // Make these requests in parallel const track_req_promise = fetch('data/track.geojson'); diff --git a/scripts/download_satellite.py b/scripts/download_satellite.py new file mode 100755 index 0000000..c7622f8 --- /dev/null +++ b/scripts/download_satellite.py @@ -0,0 +1,28 @@ +#!/usr/bin/env nix-shell +#!nix-shell --quiet -p python3 -i python + +# https://svc.pictometry.com/Image/D2B06344-7A2D-5BD0-FC89-DFDDC9888C41/wmts?SERVICE=WMTS&REQUEST=GetCapabilities + +import os +import urllib.request + +MAX_ZOOM=20 + +current, total = 0, (4 ** (MAX_ZOOM - 11) - 1)//3 + +for z in range(12, MAX_ZOOM+1): + scale = 2 ** (z - 12) + start_x = 985 * scale + start_y = 1432 * scale + for x in range(start_x, start_x + scale): + for y in range(start_y, start_y + scale): + current += 1 + progress = f"[{current:0{len(str(total))}d}/{total}]" + url = f"https://svc.pictometry.com/Image/D2B06344-7A2D-5BD0-FC89-DFDDC9888C41/wmts/PICT-MNITAS23-EDVs7UTOVt/default/GoogleMapsCompatible/{z}/{x}/{y}.png" + file = os.path.normpath(os.path.join(os.path.dirname(__file__), f"../satellite/{z}/{x}/{y}.png")) + os.makedirs(os.path.dirname(file), exist_ok=True) + if os.path.isfile(file): + print(f"{progress} {file} already exists; skipping") + continue + print(f"{progress} downloading {file}") + urllib.request.urlretrieve(url, file)