#!/usr/bin/python3 import sys def loadSRTM(lat, lon): # Budeme pro jednoduchost předpokládat, že jsme v N/E kvadrantu filename = f"N{lat:02d}E{lon:03d}.hgt" data = [[]] * 3601 with open(filename, mode="rb") as f: # Data ze souboru čteme od severu k jihu, ale nám se více hodí, aby # y=0 odpovídalo spodku čtverce, y tedy jedeme odzadu for y in range(3600, -1, -1): line = [0] * 3601 for x in range(3601): bytes = f.read(2) line[x] = int.from_bytes(bytes, byteorder='big') data[y] = line return data def die(exit_code, message): print(message, file=sys.stderr) sys.exit(exit_code) if len(sys.argv) != 3: die(1, f"Usage: {sys.argv[0]} \n") lat = int(sys.argv[1]) lon = int(sys.argv[2]) # 1. Načteme data srtm = loadSRTM(lat, lon) # 2. Najdeme bod s největší výškou maxHeight = 0 maxX, maxY = (0, 0) for y in range(3601): for x in range(3601): if srtm[y][x] > maxHeight: maxHeight = srtm[y][x] maxX, maxY = x, y # 3. Přepočteme bod na souřadnice a vypíšeme ho step = 1.0 / 3600 maxLat = step*maxY + lat maxLon = step*maxX + lon print(f"Maximal height {maxHeight}m at N{maxLat} E{maxLon}: https://mapy.cz/turisticka?x={maxLon}&y={maxLat}&z=15")