1 | '''
|
---|
2 | Fill in the terrain tile set with dummy files.
|
---|
3 | Each file will have 3601x3601 16-bit signed integers
|
---|
4 | '''
|
---|
5 |
|
---|
6 | import os
|
---|
7 | import struct
|
---|
8 | import argparse
|
---|
9 |
|
---|
10 | #Folder to read SRTM data in from, and output new SRTM files to
|
---|
11 | #They can be the same folder
|
---|
12 | in_folder = r"G:\SRTMGL1"
|
---|
13 | out_folder = r"G:\SRTMGL1_full"
|
---|
14 |
|
---|
15 | def gen_raster(fillvalue=0, X=3601, Y=3601):
|
---|
16 | #Create a blank hgt dataset, which is filled with 16-it zero values
|
---|
17 | val = struct.pack(">h", fillvalue)
|
---|
18 | raster = val*X*Y
|
---|
19 | return raster
|
---|
20 |
|
---|
21 | def gen_filename(NS, EW):
|
---|
22 | #Create a standard SRTM filename based on an input lat/long
|
---|
23 | fname = ""
|
---|
24 | if NS < 0:
|
---|
25 | fname += "S%02d"%(-NS)
|
---|
26 | else:
|
---|
27 | fname += "N%02d"%(NS)
|
---|
28 |
|
---|
29 | if EW < 0:
|
---|
30 | fname += "W%03d"%(-EW)
|
---|
31 | else:
|
---|
32 | fname += "E%03d"%(EW)
|
---|
33 |
|
---|
34 | fname += ".hgt"
|
---|
35 | return fname
|
---|
36 |
|
---|
37 | def run(args):
|
---|
38 | #This is the range of NASA's SRTM dataset
|
---|
39 | NSrange = range(-56,60)
|
---|
40 | EWrange = range(-180,181)
|
---|
41 |
|
---|
42 | files = os.listdir(args.in_folder)
|
---|
43 | files = [f for f in files if f.endswith(".hgt")]
|
---|
44 | print "In Folder (%s): %d files"%(args.in_folder, len(files))
|
---|
45 |
|
---|
46 | outfiles = os.listdir(args.out_folder)
|
---|
47 | outfiles = [f for f in outfiles if f.endswith(".hgt")]
|
---|
48 | print "Out Folder (%s): %d files"%(args.out_folder, len(outfiles))
|
---|
49 |
|
---|
50 | if args.SRTMGL3:
|
---|
51 | raster = gen_raster(X=1201, Y=1201)
|
---|
52 | else:
|
---|
53 | raster = gen_raster()
|
---|
54 |
|
---|
55 | for NS in NSrange:
|
---|
56 | for EW in EWrange:
|
---|
57 | fname = gen_filename(NS,EW)
|
---|
58 | if fname not in files and fname not in outfiles:
|
---|
59 | print fname
|
---|
60 | with open(os.path.join(args.out_folder, fname), 'w') as F:
|
---|
61 | F.write(raster)
|
---|
62 |
|
---|
63 | P = argparse.ArgumentParser(description="Fills in a set of SRTM hgt file data with missing tiles to create a complete set of world data")
|
---|
64 | P.add_argument("-s","--SRTMGL3", help="Use SRTMGL3 data (instead of SRTMGL1)", action='store_true')
|
---|
65 | P.add_argument("-i","--in_folder", default=in_folder,
|
---|
66 | help="Folder to read SRTM data from. Default %s"%in_folder)
|
---|
67 | P.add_argument("-o","--out_folder", default=out_folder,
|
---|
68 | help="Folder to write new SRTM data to. Default %s"%out_folder)
|
---|
69 |
|
---|
70 | args = P.parse_args()
|
---|
71 | run(args)
|
---|