Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python
- import os
- import re
- import sys
- import getopt
- from shutil import copyfile
- def main(argv):
- inputFile = ''
- inputRes = ''
- inputEPSG = ''
- try:
- opts, args = getopt.getopt(argv,"h:i:r:s",["help","infile=","res=","srs="])
- except getopt.GetoptError:
- print('xyz2tif.py -i <input.xyz> -r <resulution> -s <EPSG:xxxx>')
- sys.exit(2)
- for opt, arg in opts:
- if opt in ("-h", "--help"):
- print("xyz2tif converts a text file with values for x y z in a regular gird to a TIF-file")
- print('xyz2tif.py -i <input.xyz> -r <resulution> -s <EPSG:xxxx>')
- print("xyz2tif.py --infile <input.xyz> --res <resulution> -srs <EPSG:xxxx>")
- sys.exit()
- elif opt in ("-i", "--infile"):
- inputFile = arg #filename.xyz
- if inputFile == "":
- print("Missing input.xyz!")
- sys.exit()
- elif opt in ("-r", "--res"):
- inputRes = arg # 1
- if inputRes == '':
- print("Missing information about spatial resulution!")
- sys.exit()
- elif opt in ("-s", "--srs"):
- inputEPSG = arg # EPSG:25833
- if inputEPSG == '':
- print("Missing information about the SRS!")
- sys.exit()
- if (inputFile != '') & (inputRes != '') & (inputEPSG != ''):
- fileName = re.findall('(.+?)\.[^\.]+$', inputFile)[0]
- # Create VRT-file for reading the xyz-format
- f = open('xyz_dgm_reader.vrt', 'a')
- f.write('<OGRVRTDataSource><OGRVRTLayer name="dgm"><SrcDataSource>dgm.csv</SrcDataSource><GeometryType>wkbPoint</GeometryType><LayerSRS>' + inputEPSG + '</LayerSRS><GeometryField encoding="PointFromColumns" x="field_1" y="field_2" z="field_3"/></OGRVRTLayer></OGRVRTDataSource>')
- f.close()
- print('Converting ' + inputFile + ' into TIF-file...')
- copyfile(inputFile, 'dgm.csv') # Make copy of file and rename for reading in
- os.system('gdal_rasterize -a field_3 -tr ' + inputRes + ' ' + inputRes + ' xyz_dgm_reader.vrt ' + fileName + '.tif') # Convert with help of VRT to raster
- os.remove('xyz_dgm_reader.vrt') # Remove VRT
- os.remove('dgm.csv') # Remove copy
- else:
- print("")
- print("Sorry, missing some information!")
- sys.exit()
- if __name__ == "__main__":
- main(sys.argv[1:])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement