Skip to content

Instantly share code, notes, and snippets.

@KMarkert
Last active October 6, 2023 06:07
Show Gist options
  • Save KMarkert/68dc5917bfcd3178f5eddd0d3151a306 to your computer and use it in GitHub Desktop.
Save KMarkert/68dc5917bfcd3178f5eddd0d3151a306 to your computer and use it in GitHub Desktop.
This script is used to bulk download SRTM Water Body Data from the USGS over a defined AOI
import os
import glob
import urllib2
import numpy as np
outFolder = "J:/africa_srtm/org_zip/" #change output path
lats = np.arange(-35,33)#change lat bounds
lons = np.arange(-18,52)#change lon bounds
fList = glob.glob(r'D:\africa_srtm\SWBD_data\org_zip\*.zip')
fArr = np.chararray(len(fList),itemsize=8)
for f in range(len(fList)):
fArr[f] = fList[f].split('\\')[-1][:-4]
eastUrl = 'https://dds.cr.usgs.gov/srtm/version2_1/SWBD/SWBDeast/'
westUrl = 'https://dds.cr.usgs.gov/srtm/version2_1/SWBD/SWBDwest/'
availTiles = []
for i in range(2):
if i == 0:
baseUrl = eastUrl
else:
baseUrl = westUrl
baseRep = urllib2.urlopen(baseUrl)
baseRead = baseRep.read()
baseSplit = baseRead.split('href=')
baseRep.close()
for i in range(len(baseSplit)):
if (baseSplit[i][1]=='e') | (baseSplit[i][1]=='w'):
availTiles.append(baseSplit[i][1:9])
availTiles = np.array(availTiles)
for i in availTiles:
x = int(i[1:4])
y = int(i[5:7])
if i[0] == 'e':
baseUrl = eastUrl
else:
baseUrl = westUrl
x = x * -1
if i[4] == 's':
y = y * -1
if (np.any(lats==y)==True)&(np.any(lons==x)==True):
outFile = outFolder + i + '.zip'
if os.path.exists(outFile) == False:
print 'Downloading tile: {0}'.format(i)
fileUrl = baseUrl + i + '.zip'
response = urllib2.urlopen(fileurl)
output = open(outFile, 'wb')
output.write(response.read())
output.close()
response.close()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment