DCSOlympus/scripts/python/downloadSRTM.py

86 lines
2.0 KiB
Python

import math
import urllib.request
import os
import multiprocessing
try:
os.mkdir("hgt")
except Exception as e:
print(e)
def download_file(latlng):
lat = latlng[0]
lng = latlng[1]
if lat < 0:
lat = f"S{abs(lat):02}"
else:
lat = f"N{lat:02}"
if lng < 0:
lng = f"W{abs(lng):03}"
else:
lng = f"E{lng:03}"
url = f"https://srtm.fasma.org/{lat}{lng}.SRTMGL3S.hgt.zip"
urllib.request.urlretrieve(url, f"hgt/{lat}{lng}.SRTMGL3S.hgt.zip")
print(f"{url} downloaded")
boundaries = [
[ # NTTR
39.7982463, -119.985425,
34.4037128, -119.7806729,
34.3483316, -112.4529351,
39.7372411, -112.1130805,
39.7982463, -119.985425
],
[ # Syria
37.3630556, 29.2686111,
31.8472222, 29.8975,
32.1358333, 42.1502778,
37.7177778, 42.3716667,
37.3630556, 29.2686111
],
[ # Caucasus
39.6170191, 27.634935,
38.8735863, 47.1423108,
47.3907982, 49.3101946,
48.3955879, 26.7753625,
39.6170191, 27.634935
],
[ # Persian Gulf
32.9355285, 46.5623682,
21.729393, 47.572675,
21.8501348, 63.9734737,
33.131584, 64.7313594,
32.9355285, 46.5623682
],
[ # Marianas
22.09, 135.0572222,
10.5777778, 135.7477778,
10.7725, 149.3918333,
22.5127778, 149.5427778,
22.09, 135.0572222
]
]
latlngs = []
if __name__ == '__main__':
pool = multiprocessing.Pool(32)
for boundary_set in boundaries:
lats = [boundary_set[i] for i in range(0, len(boundary_set), 2)]
lngs = [boundary_set[i] for i in range(1, len(boundary_set), 2)]
minLat = math.floor(min(lats))
minLng = math.floor(min(lngs))
maxLat = math.ceil(max(lats))
maxLng = math.ceil(max(lngs))
index = 1
for lat in range(minLat, maxLat + 1):
for lng in range(minLng, maxLng + 1):
latlngs.append((lat, lng))
print(len(latlngs))
#pool.map(download_file, latlngs)