def makesTiles(fn, folder): fn = fn.replace('\\', '/') folder = folder.replace('\\', '/') cmd = 'gdal2tiles.py -q -z 5-13 "'+fn+'" "'+folder+'"' args = [i.replace('"','') for i in cmd.split(' ')] gdalArgs = gdal.GeneralCmdLineProcessor( args ) gdal2tiles.runit(gdalArgs)
def create_tiles(image_filepath, tiles_output_dir, proj): local_argv = [ '/usr/bin/gdal2tiles.py', '-p', 'raster', '-r', 'cubic', '-s', proj, image_filepath, tiles_output_dir ] argv = gdal.GeneralCmdLineProcessor(local_argv) if argv: gdal2tiles = GDAL2Tiles(argv[1:]) gdal2tiles.process()
return dsArray, gt, ndata if __name__ == "__main__": inmask = None ingrd = None outgrd = None overwrite = True verbose = False out_nodata = None outdriver = "GTiff" gdal.AllRegister() argv = gdal.GeneralCmdLineProcessor(sys.argv) if argv is None: sys.exit(0) # Parse command line arguments. i = 1 while i < len(argv): arg = argv[i] if arg == '-mask': inmsk = argv[i + 1] i = i + 1 elif arg == '-d_nodata': out_nodata = float(argv[i + 1]) i = i + 1
def main(argv=None): inputlbl = None outputConfig = None run = None template = None if argv is None: argv = sys.argv argv = gdal.GeneralCmdLineProcessor(argv) if argv is None: return 1 nArgc = len(argv) #/* -------------------------------------------------------------------- */ #/* Parse arguments. */ #/* -------------------------------------------------------------------- */ i = 1 while i < nArgc: if EQUAL(argv[i], '-run'): run = True elif EQUAL(argv[i], '-template'): i = i + 1 template = argv[i] elif inputlbl is None: inputlbl = argv[i] elif outputConfig is None: outputConfig = argv[i] else: return Usage(argv[0]) i = i + 1 if inputlbl is None: return Usage(argv[0]) if outputConfig is None: return Usage(argv[0]) if template is None: template = 'pds4_template.xml' #load ISIS3 label using PVL library isis3lbl = pvl.load(inputlbl) #open output config file fileConfig = open(outputConfig, 'w') print('writing {}'.format(outputConfig)) #Write first comment line theLine = '#{0} {1} {2}\n'.format(sys.argv[0], sys.argv[1], sys.argv[2]) fileConfig.write(theLine) #Next lines are not available in ISIS3 label theLine = '-co VAR_TARGET_TYPE=Satellite\n' fileConfig.write(theLine) theLine = '-co VAR_INVESTIGATION_AREA_LID_REFERENCE="urn:nasa:pds:context:instrument_host:spacecraft.lro"\n' fileConfig.write(theLine) try: target = (isis3lbl['IsisCube']['Mapping']['TargetName']).upper() theLine = '-co VAR_TARGET={}\n'.format(target) fileConfig.write(theLine) except KeyError: print('No Target in ISIS3 Label') try: mission = ( isis3lbl['IsisCube']['Archive']['InstrumentHostName']).upper() theLine = '-co VAR_INVESTIGATION_AREA_NAME="{}"\n'.format(mission) fileConfig.write(theLine) except KeyError: print('No InstrumentHostName in ISIS3 Label') try: dataSetID = isis3lbl['IsisCube']['Archive']['DataSetId'] theLine = '-co VAR_LOGICAL_IDENTIFIER={}\n'.format(dataSetID) fileConfig.write(theLine) except KeyError: print('No DataSetId in ISIS3 Label') try: observeID = isis3lbl['IsisCube']['Archive']['InstrumentId'] theLine = '-co VAR_OBSERVING_SYSTEM_NAME={}\n'.format(observeID) fileConfig.write(theLine) except KeyError: print('No InstrumentId in ISIS3 Label') try: fileName = isis3lbl['IsisCube']['Archive']['ProductId'] theLine = '-co VAR_TITLE={}\n'.format(fileName) fileConfig.write(theLine) except KeyError: print('No ProductId in ISIS3 Label') #try: #producerName = isis3lbl['IsisCube']['Archive']['ProducerFullName'] #except KeyError: #print('No ProducerFullName in ISIS3 Label') #try: #proInstName = isis3lbl['IsisCube']['Archive']['ProducerInstitutionName'] #except KeyError: #print('No ProducerInstitutionName in ISIS3 Label') fileConfig.close() #write out helper line for gdal - can run from here too outPDS4 = inputlbl.replace('.cub', '_pds4.xml') theCmd = 'gdal_translate -of PDS4 -co IMAGE_FORMAT=GEOTIFF -co TEMPLATE={0} --optfile {1} {2} {3}'.format( template, outputConfig, inputlbl, outPDS4) if run is None: print('\nRecommended gdal run:') print('{}\n'.format(theCmd)) else: #run gdal os.system(theCmd)
def gdal_edit(argv): argv = gdal.GeneralCmdLineProcessor(argv) if argv is None: return -1 datasetname = None srs = None ulx = None uly = None lrx = None lry = None nodata = None unsetnodata = False xres = None yres = None unsetgt = False unsetstats = False stats = False approx_stats = False unsetmd = False ro = False molist = [] gcp_list = [] open_options = [] offset = None scale = None i = 1 argc = len(argv) while i < argc: if argv[i] == '-ro': ro = True elif argv[i] == '-a_srs' and i < len(argv) - 1: srs = argv[i + 1] i = i + 1 elif argv[i] == '-a_ullr' and i < len(argv) - 4: ulx = float(argv[i + 1]) i = i + 1 uly = float(argv[i + 1]) i = i + 1 lrx = float(argv[i + 1]) i = i + 1 lry = float(argv[i + 1]) i = i + 1 elif argv[i] == '-tr' and i < len(argv) - 2: xres = float(argv[i + 1]) i = i + 1 yres = float(argv[i + 1]) i = i + 1 elif argv[i] == '-a_nodata' and i < len(argv) - 1: nodata = float(argv[i + 1]) i = i + 1 elif argv[i] == '-scale' and i < len(argv) - 1: scale = float(argv[i + 1]) i = i + 1 elif argv[i] == '-offset' and i < len(argv) - 1: offset = float(argv[i + 1]) i = i + 1 elif argv[i] == '-mo' and i < len(argv) - 1: molist.append(argv[i + 1]) i = i + 1 elif argv[i] == '-gcp' and i + 4 < len(argv): pixel = float(argv[i + 1]) i = i + 1 line = float(argv[i + 1]) i = i + 1 x = float(argv[i + 1]) i = i + 1 y = float(argv[i + 1]) i = i + 1 if i + 1 < len(argv) and ArgIsNumeric(argv[i + 1]): z = float(argv[i + 1]) i = i + 1 else: z = 0 gcp = gdal.GCP(x, y, z, pixel, line) gcp_list.append(gcp) elif argv[i] == '-unsetgt': unsetgt = True elif argv[i] == '-unsetstats': unsetstats = True elif argv[i] == '-approx_stats': stats = True approx_stats = True elif argv[i] == '-stats': stats = True elif argv[i] == '-unsetmd': unsetmd = True elif argv[i] == '-unsetnodata': unsetnodata = True elif argv[i] == '-oo' and i < len(argv) - 1: open_options.append(argv[i + 1]) i = i + 1 elif argv[i][0] == '-': sys.stderr.write('Unrecognized option : %s\n' % argv[i]) return Usage() elif datasetname is None: datasetname = argv[i] else: sys.stderr.write('Unexpected option : %s\n' % argv[i]) return Usage() i = i + 1 if datasetname is None: return Usage() if (srs is None and lry is None and yres is None and not unsetgt and not unsetstats and not stats and nodata is None and len(molist) == 0 and not unsetmd and len(gcp_list) == 0 and not unsetnodata and scale is None and offset is None): print('No option specified') print('') return Usage() exclusive_option = 0 if lry is not None: exclusive_option = exclusive_option + 1 if yres is not None: exclusive_option = exclusive_option + 1 if unsetgt: exclusive_option = exclusive_option + 1 if exclusive_option > 1: print('-a_ullr, -tr and -unsetgt options are exclusive.') print('') return Usage() if unsetstats and stats: print( '-unsetstats and either -stats or -approx_stats options are exclusive.' ) print('') return Usage() if unsetnodata and nodata: print('-unsetnodata and -nodata options are exclusive.') print('') return Usage() if open_options is not None: if ro: ds = gdal.OpenEx(datasetname, gdal.OF_RASTER, open_options=open_options) else: ds = gdal.OpenEx(datasetname, gdal.OF_RASTER | gdal.OF_UPDATE, open_options=open_options) # GDAL 1.X compat elif ro: ds = gdal.Open(datasetname) else: ds = gdal.Open(datasetname, gdal.GA_Update) if ds is None: return -1 wkt = None if srs == '' or srs == 'None': ds.SetProjection('') elif srs is not None: sr = osr.SpatialReference() if sr.SetFromUserInput(srs) != 0: print('Failed to process SRS definition: %s' % srs) return -1 wkt = sr.ExportToWkt() if len(gcp_list) == 0: ds.SetProjection(wkt) if lry is not None: gt = [ ulx, (lrx - ulx) / ds.RasterXSize, 0, uly, 0, (lry - uly) / ds.RasterYSize ] ds.SetGeoTransform(gt) if yres is not None: gt = ds.GetGeoTransform() # Doh ! why is gt a tuple and not an array... gt = [gt[j] for j in range(6)] gt[1] = xres gt[5] = yres ds.SetGeoTransform(gt) if unsetgt: ds.SetGeoTransform([0, 1, 0, 0, 0, 1]) if len(gcp_list) > 0: if wkt is None: wkt = ds.GetGCPProjection() if wkt is None: wkt = '' ds.SetGCPs(gcp_list, wkt) if nodata is not None: for i in range(ds.RasterCount): ds.GetRasterBand(i + 1).SetNoDataValue(nodata) elif unsetnodata: for i in range(ds.RasterCount): ds.GetRasterBand(i + 1).DeleteNoDataValue() if scale is not None: for i in range(ds.RasterCount): ds.GetRasterBand(i + 1).SetScale(scale) if offset is not None: for i in range(ds.RasterCount): ds.GetRasterBand(i + 1).SetOffset(offset) if unsetstats: for i in range(ds.RasterCount): band = ds.GetRasterBand(i + 1) for key in band.GetMetadata().keys(): if key.startswith('STATISTICS_'): band.SetMetadataItem(key, None) if stats: for i in range(ds.RasterCount): ds.GetRasterBand(i + 1).ComputeStatistics(approx_stats) if len(molist) != 0: if unsetmd: md = {} else: md = ds.GetMetadata() for moitem in molist: equal_pos = moitem.find('=') if equal_pos > 0: md[moitem[0:equal_pos]] = moitem[equal_pos + 1:] ds.SetMetadata(md) elif unsetmd: ds.SetMetadata({}) ds = band = None return 0