PythonScripts: fill_terrain_tiles.py

File fill_terrain_tiles.py, 2.0 KB (added by Uriel, 7 years ago)

Script to complete an SRTM dataset by filling in blank data

Line 
1'''
2Fill in the terrain tile set with dummy files.
3Each file will have 3601x3601 16-bit signed integers
4'''
5
6import os
7import struct
8import argparse
9
10#Folder to read SRTM data in from, and output new SRTM files to
11#They can be the same folder
12in_folder = r"G:\SRTMGL1"
13out_folder = r"G:\SRTMGL1_full"
14
15def 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
21def 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
37def 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
63P = argparse.ArgumentParser(description="Fills in a set of SRTM hgt file data with missing tiles to create a complete set of world data")
64P.add_argument("-s","--SRTMGL3", help="Use SRTMGL3 data (instead of SRTMGL1)", action='store_true')
65P.add_argument("-i","--in_folder", default=in_folder,
66        help="Folder to read SRTM data from. Default %s"%in_folder)
67P.add_argument("-o","--out_folder", default=out_folder,
68        help="Folder to write new SRTM data to. Default %s"%out_folder)
69
70args = P.parse_args()
71run(args)