2025-01-02 22:07:10 -06:00
#!/usr/bin/env nix-shell
2025-01-02 22:34:29 -06:00
#!nix-shell --quiet -p python312 -p python312Packages.pillow -i python
2025-01-02 22:07:10 -06:00
# https://svc.pictometry.com/Image/D2B06344-7A2D-5BD0-FC89-DFDDC9888C41/wmts?SERVICE=WMTS&REQUEST=GetCapabilities
import os
import urllib . request
2025-01-02 22:34:29 -06:00
from PIL import Image
2025-01-02 22:07:10 -06:00
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 ) :
2025-01-02 22:34:29 -06:00
try : # does it already exist and look good?
Image . open ( file ) . verify ( ) # CRC check on PNGs; nothing on other file types? https://pillow.readthedocs.io/en/latest/_modules/PIL/PngImagePlugin.html#ChunkStream.verify
print ( f " { progress } { file } already exists; skipping " )
continue
except OSError as e :
print ( f " { progress } replacing corrupt { file } " )
else :
print ( f " { progress } downloading { file } " )
2025-01-02 22:07:10 -06:00
urllib . request . urlretrieve ( url , file )