import gzip
import os
import sys
import urllib.request
BASE = "https://s3.amazonaws.com/elevation-tiles-prod/skadi"
OUT_DIR = "tools/srtm"
def main() -> int:
if len(sys.argv) != 3:
print("usage: fetch_srtm_tile.py <Nxx|Sxx> <Wyyy|Eyyy>", file=sys.stderr)
return 2
lat_band = sys.argv[1].upper() lon_band = sys.argv[2].upper() name = f"{lat_band}{lon_band}" url = f"{BASE}/{lat_band}/{name}.hgt.gz"
os.makedirs(OUT_DIR, exist_ok=True)
out = os.path.join(OUT_DIR, f"{name}.hgt")
print(f"fetching {url}")
with urllib.request.urlopen(url) as resp: gz = resp.read()
raw = gzip.decompress(gz)
expected = 2 * 3601 * 3601
if len(raw) != expected:
print(
f"warning: {name} is {len(raw)} bytes, expected {expected} (3601x3601 i16); "
"it may be a 3-arc-second (1201x1201) tile — pass samples_per_side=1201 in the test",
file=sys.stderr,
)
with open(out, "wb") as f:
f.write(raw)
print(f"wrote {out}: {len(raw)} bytes")
return 0
if __name__ == "__main__":
raise SystemExit(main())