def processAlgorithm(self, progress): inLayer = self.getParameterValue(self.INPUT) conn = self.ogrConnectionString(inLayer)[1:-1] output = self.getOutputFromName(self.OUTPUT) outFile = output.value if self.getParameterValue(self.TRANSF) == 0: # Direct transformation arguments = ['-s_srs'] if self.getParameterValue(self.CRS) == 0: # GOSGB 1936/British National Grid if self.getParameterValue(self.GRID) == 0: # OSTN02_NTv2 arguments.append('+proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=400000 +y_0=-100000 +ellps=airy +nadgrids=' + os.path.dirname(__file__) + '/grids/OSTN02_NTv2.gsb +wktext +units=m +no_defs') arguments.append('-t_srs') arguments.append('EPSG:4258') arguments.append('-f') arguments.append('ESRI Shapefile') arguments.append(outFile) arguments.append(conn) arguments.append(self.ogrLayerName(inLayer)) else: # Inverse transformation arguments = ['-s_srs'] arguments.append('EPSG:4258') arguments.append('-t_srs') if self.getParameterValue(self.CRS) == 0: # OSGB 1936/British National Grid if self.getParameterValue(self.GRID) == 0: # OSTN02_NTv2 arguments.append('+proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=400000 +y_0=-100000 +ellps=airy +nadgrids=' + os.path.dirname(__file__) + '/grids/OSTN02_NTv2.gsb +wktext +units=m +no_defs') arguments.append('-f') arguments.append('\"Geojson\"') arguments.append('/vsistdout/') arguments.append(conn) arguments.append(self.ogrLayerName(inLayer)) arguments.append('-lco') arguments.append('ENCODING=UTF-8') arguments.append('|') arguments.append('ogr2ogr') arguments.append('-f') arguments.append('ESRI Shapefile') arguments.append('-a_srs') arguments.append('EPSG:27700') arguments.append(outFile) arguments.append('/vsistdin/') arguments.append('-lco') arguments.append('ENCODING=UTF-8') if os.path.isfile(os.path.dirname(__file__) + '/grids/OSTN02_NTv2.gsb') is False: import urllib urllib.urlretrieve ("https://github.com/NaturalGIS/ntv2_transformations_grids_and_sample_data/raw/master/uk/OSTN02_NTv2.gsb", os.path.dirname(__file__) + "/grids/OSTN02_NTv2.gsb") commands = ['ogr2ogr', GdalUtils.escapeAndJoin(arguments)] GdalUtils.runGdal(commands, progress)
def processAlgorithm(self, progress): inLayer = self.getParameterValue(self.INPUT) conn = self.ogrConnectionString(inLayer) output = self.getOutputFromName(self.OUTPUT) outFile = output.value arguments = ['-s_srs'] if self.getParameterValue(self.GRID) == 0: # Jose Alberto Goncalves arguments.append('+proj=tmerc +lat_0=39.66666666666666 ' '+lon_0=-8.131906111111112 +k=1 +x_0=200180.598 +y_0=299913.01 +ellps=intl +nadgrids=' + os.path.dirname(__file__) + '/grids/pt73_e89.gsb +wktext +units=m +no_defs') else: # Direccao Geral do Territorio arguments.append('+proj=tmerc +lat_0=39.66666666666666 +lon_0=-8.131906111111112 +k=1 +x_0=200180.598 +y_0=299913.01 +ellps=intl +nadgrids=' + os.path.dirname(__file__) + '/grids/D73_ETRS89_geo.gsb +wktext +units=m +no_defs') arguments.append('-t_srs') arguments.append('EPSG:3763') arguments.append('-f') arguments.append('ESRI Shapefile') arguments.append(outFile) arguments.append(conn) commands = ['ogr2ogr', GdalUtils.escapeAndJoin(arguments)] GdalUtils.runGdal(commands, progress)
def processAlgorithm(self, progress): doTransf = self.transfList() if self.getParameterValue(self.TRANSF) == 0: # Direct transformation arguments = ['-s_srs'] arguments.append(str(doTransf[self.getParameterValue(self.CRS)][self.getParameterValue(self.GRID)])[2:-2]) arguments.append('-t_srs') arguments.append('EPSG:4258') else: # Inverse transformation arguments = ['-s_srs'] arguments.append('EPSG:4258') arguments.append('-t_srs') arguments.append(str(doTransf[self.getParameterValue(self.CRS)][self.getParameterValue(self.GRID)])[2:-2]) arguments.append('-multi') arguments.append('-of') out = self.getOutputValue(self.OUTPUT) arguments.append(GdalUtils.getFormatShortNameFromFilename(out)) arguments.append(self.getParameterValue(self.INPUT)) arguments.append(out) if os.path.isfile(os.path.dirname(__file__) + '/grids/AT_GIS_GRID.gsb') is False: import urllib urllib.urlretrieve ("https://github.com/NaturalGIS/ntv2_transformations_grids_and_sample_data/raw/master/at/AT_GIS_GRID.gsb", os.path.dirname(__file__) + "/grids/AT_GIS_GRID.gsb") GdalUtils.runGdal(['gdalwarp', GdalUtils.escapeAndJoin(arguments)], progress)
def processAlgorithm(self, progress): arguments = [] arguments.append('-resolution') arguments.append(self.RESOLUTION_OPTIONS[self.getParameterValue(self.RESOLUTION)]) if self.getParameterValue(buildvrt.SEPARATE): arguments.append('-separate') if self.getParameterValue(buildvrt.PROJ_DIFFERENCE): arguments.append('-allow_projection_difference') # Always write input files to a text file in case there are many of them and the # length of the command will be longer then allowed in command prompt listFile = os.path.join(tempFolder(), 'buildvrtInputFiles.txt') with open(listFile, 'w') as f: f.write(self.getParameterValue(buildvrt.INPUT).replace(';', '\n')) arguments.append('-input_file_list') arguments.append(listFile) out = self.getOutputValue(buildvrt.OUTPUT) # Ideally the file extensions should be limited to just .vrt but I'm not sure how # to do it simply so instead a check is performed. _, ext = os.path.splitext(out) if not ext.lower() == '.vrt': out = out.replace(ext, '.vrt') self.setOutputValue(self.OUTPUT, out) arguments.append(out) GdalUtils.runGdal(['gdalbuildvrt', GdalUtils.escapeAndJoin(arguments)], progress)
def processAlgorithm(self, progress): writeOver = self.getParameterValue(self.WRITEOVER) arguments = [] arguments.append('-a') arguments.append(str(self.getParameterValue(self.FIELD))) if not writeOver: arguments.append('-ot') arguments.append(self.TYPE[self.getParameterValue(self.RTYPE)]) dimType = self.getParameterValue(self.DIMENSIONS) if dimType == 0: # size in pixels arguments.append('-ts') else: # resolution in map units per pixel arguments.append('-tr') arguments.append(str(self.getParameterValue(self.WIDTH))) arguments.append(str(self.getParameterValue(self.HEIGHT))) arguments.append('-l') arguments.append( os.path.basename(os.path.splitext( unicode(self.getParameterValue(self.INPUT)))[0])) arguments.append(unicode(self.getParameterValue(self.INPUT))) arguments.append(unicode(self.getOutputValue(self.OUTPUT))) GdalUtils.runGdal(['gdal_rasterize', GdalUtils.escapeAndJoin(arguments)], progress)
def processAlgorithm(self, progress): arguments = ['slope'] arguments.append(unicode(self.getParameterValue(self.INPUT))) output = unicode(self.getOutputValue(self.OUTPUT)) arguments.append(output) arguments.append('-of') arguments.append(GdalUtils.getFormatShortNameFromFilename(output)) arguments.append('-b') arguments.append(str(self.getParameterValue(self.BAND))) arguments.append('-s') arguments.append(str(self.getParameterValue(self.SCALE))) if self.getParameterValue(self.COMPUTE_EDGES): arguments.append('-compute_edges') if self.getParameterValue(self.ZEVENBERGEN): arguments.append('-alg') arguments.append('ZevenbergenThorne') if self.getParameterValue(self.AS_PERCENT): arguments.append('-p') GdalUtils.runGdal(['gdaldem', GdalUtils.escapeAndJoin(arguments)], progress)
def processAlgorithm(self, progress): output = self.getOutputValue(self.OUTPUT) arguments = [] arguments.append('-st') arguments.append(str(self.getParameterValue(self.THRESHOLD))) arguments.append('-' + self.PIXEL_CONNECTIONS[self.getParameterValue( self.CONNECTIONS)]) arguments.append('-of') arguments.append(GdalUtils.getFormatShortNameFromFilename(output)) arguments.append(self.getParameterValue(self.INPUT)) arguments.append(output) commands = [] if isWindows(): commands = ['cmd.exe', '/C ', 'gdal_sieve.bat', GdalUtils.escapeAndJoin(arguments)] else: commands = ['gdal_sieve.py', GdalUtils.escapeAndJoin(arguments)] GdalUtils.runGdal(commands, progress)
def processAlgorithm(self, progress): inLayer = self.getParameterValue(self.INPUT_LAYER) ogrLayer = self.ogrConnectionString(inLayer) clipExtent = self.getParameterValue(self.CLIP_EXTENT) ogrclipExtent = self.ogrConnectionString(clipExtent) output = self.getOutputFromName(self.OUTPUT_LAYER) outFile = output.value output = self.ogrConnectionString(outFile) options = unicode(self.getParameterValue(self.OPTIONS)) arguments = [] regionCoords = ogrclipExtent.split(',') arguments.append('-spat') arguments.append(regionCoords[0]) arguments.append(regionCoords[2]) arguments.append(regionCoords[1]) arguments.append(regionCoords[3]) arguments.append('-clipsrc spat_extent') if len(options) > 0: arguments.append(options) arguments.append(output) arguments.append(ogrLayer) commands = [] if isWindows(): commands = ['cmd.exe', '/C ', 'ogr2ogr.exe', GdalUtils.escapeAndJoin(arguments)] else: commands = ['ogr2ogr', GdalUtils.escapeAndJoin(arguments)] GdalUtils.runGdal(commands, progress)
def processAlgorithm(self, progress): arguments = ["-s_srs"] if self.getParameterValue(self.GRID) == 0: # Jose Alberto Goncalves arguments.append( "+proj=tmerc +lat_0=39.66666666666666 +lon_0=-8.131906111111112 +k=1 +x_0=180.598 +y_0=-86.99 +ellps=intl +nadgrids=" + os.path.dirname(__file__) + "/grids/pt73_e89.gsb +wktext +units=m +no_defs" ) else: # Direccao Geral do Territorio arguments.append( "+proj=tmerc +lat_0=39.66666666666666 +lon_0=-8.131906111111112 +k=1 +x_0=180.598 +y_0=-86.99 +ellps=intl +nadgrids=" + os.path.dirname(__file__) + "/grids/D73_ETRS89_geo.gsb +wktext +units=m +no_defs" ) arguments.append("-t_srs") arguments.append("EPSG:3763") arguments.append("-r") arguments.append("bilinear") arguments.append("-dstnodata") arguments.append("nan") arguments.append("-of") out = self.getOutputValue(self.OUTPUT) arguments.append(GdalUtils.getFormatShortNameFromFilename(out)) arguments.append(self.getParameterValue(self.INPUT)) arguments.append(out) GdalUtils.runGdal(["gdalwarp", GdalUtils.escapeAndJoin(arguments)], progress)
def processAlgorithm(self, progress): arguments = ['hillshade'] arguments.append(unicode(self.getParameterValue(self.INPUT))) arguments.append(unicode(self.getOutputValue(self.OUTPUT))) arguments.append('-b') arguments.append(str(self.getParameterValue(self.BAND))) arguments.append('-z') arguments.append(str(self.getParameterValue(self.Z_FACTOR))) arguments.append('-s') arguments.append(str(self.getParameterValue(self.SCALE))) arguments.append('-az') arguments.append(str(self.getParameterValue(self.AZIMUTH))) arguments.append('-alt') arguments.append(str(self.getParameterValue(self.ALTITUDE))) if self.getParameterValue(self.COMPUTE_EDGES): arguments.append('-compute_edges') if self.getParameterValue(self.ZEVENBERGEN): arguments.append('-alg') arguments.append('ZevenbergenThorne') GdalUtils.runGdal(['gdaldem', GdalUtils.escapeAndJoin(arguments)], progress)
def processAlgorithm(self, progress): out = self.getOutputValue(self.OUTPUT) noData = str(self.getParameterValue(self.NO_DATA)) projwin = str(self.getParameterValue(self.PROJWIN)) extra = str(self.getParameterValue(self.EXTRA)) arguments = [] arguments.append('-of') arguments.append(GdalUtils.getFormatShortNameFromFilename(out)) if len(noData) > 0: arguments.append('-a_nodata') arguments.append(noData) regionCoords = projwin.split(',') arguments.append('-projwin') arguments.append(regionCoords[0]) arguments.append(regionCoords[3]) arguments.append(regionCoords[1]) arguments.append(regionCoords[2]) if len(extra) > 0: arguments.append(extra) arguments.append(self.getParameterValue(self.INPUT)) arguments.append(out) GdalUtils.runGdal(['gdal_translate', GdalUtils.escapeAndJoin(arguments)], progress)
def processAlgorithm(self, progress): arguments = ['-l'] arguments.append( os.path.basename(os.path.splitext( unicode(self.getParameterValue(self.INPUT)))[0])) fieldName = self.getParameterValue(self.Z_FIELD) if fieldName is not None and fieldName != '': arguments.append('-zfield') arguments.append(fieldName) params = 'invdist' params += ':power=%s' % self.getParameterValue(self.POWER) params += ':smothing=%s' % self.getParameterValue(self.SMOTHING) params += ':radius1=%s' % self.getParameterValue(self.RADIUS_1) params += ':radius2=%s' % self.getParameterValue(self.RADIUS_2) params += ':angle=%s' % self.getParameterValue(self.ANGLE) params += ':max_points=%s' % self.getParameterValue(self.MAX_POINTS) params += ':min_points=%s' % self.getParameterValue(self.MIN_POINTS) params += ':nodata=%s' % self.getParameterValue(self.NODATA) arguments.append('-a') arguments.append(params) arguments.append(unicode(self.getParameterValue(self.INPUT))) arguments.append(unicode(self.getOutputValue(self.OUTPUT))) GdalUtils.runGdal(['gdal_grid', GdalUtils.escapeAndJoin(arguments)], progress)
def processAlgorithm(self, progress): inFile = self.getParameterValue(self.INPUT) clearOverviews = self.getParameterValue(self.CLEAN) ovrFormat = self.getParameterValue(self.FORMAT) arguments = [] arguments.append(inFile) if clearOverviews: arguments.append('-clean') arguments.append('-r') arguments.append( self.METHODS[self.getParameterValue(self.RESAMPLING_METHOD)]) if ovrFormat == 1: # external .ovr arguments.append('-ro') elif ovrFormat == 2: # external .aux arguments.extend('--config USE_RRD YES'.split(' ')) arguments.extend(self.getParameterValue(self.LEVELS).split(' ')) self.setOutputValue(self.OUTPUT, inFile) GdalUtils.runGdal(['gdaladdo', GdalUtils.escapeAndJoin(arguments)], progress)
def processAlgorithm(self, progress): inLayer = self.getParameterValue(self.INPUT_LAYER) ogrLayer = self.ogrConnectionString(inLayer)[1:-1] clipLayer = self.getParameterValue(self.CLIP_LAYER) ogrClipLayer = self.ogrConnectionString(clipLayer)[1:-1] output = self.getOutputFromName(self.OUTPUT_LAYER) outFile = output.value output = self.ogrConnectionString(outFile) options = unicode(self.getParameterValue(self.OPTIONS)) arguments = [] arguments.append('-clipsrc') arguments.append(ogrClipLayer) arguments.append("-clipsrclayer") arguments.append(self.ogrLayerName(clipLayer)) if len(options) > 0: arguments.append(options) arguments.append(output) arguments.append(ogrLayer) arguments.append(self.ogrLayerName(inLayer)) commands = [] if isWindows(): commands = ['cmd.exe', '/C ', 'ogr2ogr.exe', GdalUtils.escapeAndJoin(arguments)] else: commands = ['ogr2ogr', GdalUtils.escapeAndJoin(arguments)] GdalUtils.runGdal(commands, progress)
def processAlgorithm(self, progress): arguments = ['aspect'] arguments.append(unicode(self.getParameterValue(self.INPUT))) output = unicode(self.getOutputValue(self.OUTPUT)) arguments.append(output) arguments.append('-of') arguments.append(GdalUtils.getFormatShortNameFromFilename(output)) arguments.append('-b') arguments.append(str(self.getParameterValue(self.BAND))) if self.getParameterValue(self.COMPUTE_EDGES): arguments.append('-compute_edges') if self.getParameterValue(self.ZEVENBERGEN): arguments.append('-alg') arguments.append('ZevenbergenThorne') if self.getParameterValue(self.TRIG_ANGLE): arguments.append('-trigonometric') if self.getParameterValue(self.ZERO_FLAT): arguments.append('-zero_for_flat') GdalUtils.runGdal(['gdaldem', GdalUtils.escapeAndJoin(arguments)], progress)
def processAlgorithm(self, progress): arguments = ['-l'] arguments.append( os.path.basename(os.path.splitext( unicode(self.getParameterValue(self.INPUT)))[0])) fieldName = self.getParameterValue(self.Z_FIELD) if fieldName is not None and fieldName != '': arguments.append('-zfield') arguments.append(fieldName) params = 'nearest' params += ':radius1=%s' % self.getParameterValue(self.RADIUS_1) params += ':radius2=%s' % self.getParameterValue(self.RADIUS_2) params += ':angle=%s' % self.getParameterValue(self.ANGLE) params += ':nodata=%s' % self.getParameterValue(self.NODATA) arguments.append('-a') arguments.append(params) arguments.append('-ot') arguments.append(self.TYPE[self.getParameterValue(self.RTYPE)]) arguments.append(unicode(self.getParameterValue(self.INPUT))) arguments.append(unicode(self.getOutputValue(self.OUTPUT))) GdalUtils.runGdal(['gdal_grid', GdalUtils.escapeAndJoin(arguments)], progress)
def processAlgorithm(self, progress): arguments = [] arguments.append('-ot') arguments.append(self.TYPE[self.getParameterValue(self.RTYPE)]) arguments.append('-s_srs') arguments.append(str(self.getParameterValue(self.SOURCE_SRS))) arguments.append('-t_srs') crsId = self.getParameterValue(self.DEST_SRS) self.crs = QgsCoordinateReferenceSystem(crsId) arguments.append(str(crsId)) arguments.append('-r') arguments.append( self.METHOD_OPTIONS[self.getParameterValue(self.METHOD)]) arguments.append('-of') out = self.getOutputValue(self.OUTPUT) arguments.append(GdalUtils.getFormatShortNameFromFilename(out)) if self.getParameterValue(self.TR) != 0: arguments.append('-tr') arguments.append(str(self.getParameterValue(self.TR))) arguments.append(str(self.getParameterValue(self.TR))) extra = str(self.getParameterValue(self.EXTRA)) if len(extra) > 0: arguments.append(extra) arguments.append(self.getParameterValue(self.INPUT)) arguments.append(out) GdalUtils.runGdal(['gdalwarp', GdalUtils.escapeAndJoin(arguments)], progress)
def processAlgorithm(self, progress): inLayer = self.getParameterValue(self.INPUT) conn = self.ogrConnectionString(inLayer)[1:-1] output = self.getOutputFromName(self.OUTPUT) outFile = output.value if self.getParameterValue(self.TRANSF) == 0: # Direct transformation arguments = ['-s_srs'] if self.getParameterValue(self.CRS) == 0: # ED50/UTM 31N [EPSG:23031] if self.getParameterValue(self.GRID) == 0: # 100800401 arguments.append('+proj=utm +zone=31 +ellps=intl +nadgrids=' + os.path.dirname(__file__) + '/grids/100800401.gsb +wktext +units=m +no_defs') arguments.append('-t_srs') arguments.append('EPSG:25831') arguments.append('-f') arguments.append('ESRI Shapefile') arguments.append(outFile) arguments.append(conn) arguments.append(self.ogrLayerName(inLayer)) else: # Inverse transformation arguments = ['-s_srs'] arguments.append('EPSG:25831') arguments.append('-t_srs') if self.getParameterValue(self.CRS) == 0: # ED50/UTM 31N [EPSG:23031] if self.getParameterValue(self.GRID) == 0: # 100800401 arguments.append('+proj=utm +zone=31 +ellps=intl +nadgrids=' + os.path.dirname(__file__) + '/grids/100800401.gsb +wktext +units=m +no_defs') arguments.append('-f') arguments.append('\"Geojson\"') arguments.append('/vsistdout/') arguments.append(conn) arguments.append(self.ogrLayerName(inLayer)) arguments.append('-lco') arguments.append('ENCODING=UTF-8') arguments.append('|') arguments.append('ogr2ogr') arguments.append('-f') arguments.append('ESRI Shapefile') arguments.append('-a_srs') arguments.append('EPSG:23031') arguments.append(outFile) arguments.append('/vsistdin/') arguments.append('-lco') arguments.append('ENCODING=UTF-8') if os.path.isfile(os.path.dirname(__file__) + '/grids/100800401.gsb') is False: import urllib urllib.urlretrieve ("https://github.com/NaturalGIS/ntv2_transformations_grids_and_sample_data/raw/master/cat/100800401.gsb", os.path.dirname(__file__) + "/grids/100800401.gsb") commands = ['ogr2ogr', GdalUtils.escapeAndJoin(arguments)] GdalUtils.runGdal(commands, progress)
def processAlgorithm(self, progress): doTransf = self.transfList() inLayer = self.getParameterValue(self.INPUT) conn = self.ogrConnectionString(inLayer)[1:-1] output = self.getOutputFromName(self.OUTPUT) outFile = output.value if self.getParameterValue(self.TRANSF) == 0: # Direct transformation arguments = ['-s_srs'] arguments.append(str(doTransf[self.getParameterValue(self.CRS)][self.getParameterValue(self.GRID)])[2:-2]) arguments.append('-t_srs') arguments.append('EPSG:3763') arguments.append('-f') arguments.append('ESRI Shapefile') arguments.append('-lco') arguments.append('ENCODING=UTF-8') arguments.append(outFile) arguments.append(conn) arguments.append(self.ogrLayerName(inLayer)) else: # Inverse transformation arguments = ['-s_srs'] arguments.append('EPSG:3763') arguments.append('-t_srs') arguments.append(str(doTransf[self.getParameterValue(self.CRS)][self.getParameterValue(self.GRID)])[2:-2]) arguments.append('-f') arguments.append('\"Geojson\"') arguments.append('/vsistdout/') arguments.append(conn) arguments.append(self.ogrLayerName(inLayer)) arguments.append('-lco') arguments.append('ENCODING=UTF-8') arguments.append('|') arguments.append('ogr2ogr') arguments.append('-f') arguments.append('ESRI Shapefile') arguments.append('-a_srs') arguments.append('EPSG:23029') arguments.append(outFile) arguments.append('/vsistdin/') arguments.append('-lco') arguments.append('ENCODING=UTF-8') if os.path.isfile(os.path.dirname(__file__) + '/grids/pt73_e89.gsb') is False: import urllib urllib.urlretrieve ("https://github.com/NaturalGIS/ntv2_transformations_grids_and_sample_data/raw/master/pt/pt73_e89.gsb", os.path.dirname(__file__) + "/grids/pt73_e89.gsb") urllib.urlretrieve ("https://github.com/NaturalGIS/ntv2_transformations_grids_and_sample_data/raw/master/pt/ptED_e89.gsb", os.path.dirname(__file__) + "/grids/ptED_e89.gsb") urllib.urlretrieve ("https://github.com/NaturalGIS/ntv2_transformations_grids_and_sample_data/raw/master/pt/ptLB_e89.gsb", os.path.dirname(__file__) + "/grids/ptLB_e89.gsb") urllib.urlretrieve ("https://github.com/NaturalGIS/ntv2_transformations_grids_and_sample_data/raw/master/pt/ptLX_e89.gsb", os.path.dirname(__file__) + "/grids/ptLX_e89.gsb") urllib.urlretrieve ("https://github.com/NaturalGIS/ntv2_transformations_grids_and_sample_data/raw/master/pt/D73_ETRS89_geo.gsb", os.path.dirname(__file__) + "/grids/D73_ETRS89_geo.gsb") urllib.urlretrieve ("https://github.com/NaturalGIS/ntv2_transformations_grids_and_sample_data/raw/master/pt/DLX_ETRS89_geo.gsb", os.path.dirname(__file__) + "/grids/DLX_ETRS89_geo.gsb") commands = ['ogr2ogr', GdalUtils.escapeAndJoin(arguments)] GdalUtils.runGdal(commands, progress)
def processAlgorithm(self, progress): writeOver = self.getParameterValue(self.WRITEOVER) inLayer = self.getParameterValue(self.INPUT) ogrLayer = self.ogrConnectionString(inLayer)[1:-1] noData = str(self.getParameterValue(self.NO_DATA)) jpegcompression = str(self.getParameterValue(self.JPEGCOMPRESSION)) predictor = str(self.getParameterValue(self.PREDICTOR)) zlevel = str(self.getParameterValue(self.ZLEVEL)) tiled = str(self.getParameterValue(self.TILED)) compress = self.COMPRESSTYPE[self.getParameterValue(self.COMPRESS)] bigtiff = self.BIGTIFFTYPE[self.getParameterValue(self.BIGTIFF)] tfw = str(self.getParameterValue(self.TFW)) out = self.getOutputValue(self.OUTPUT) arguments = [] arguments.append('-a') arguments.append(str(self.getParameterValue(self.FIELD))) if not writeOver: arguments.append('-ot') arguments.append(self.TYPE[self.getParameterValue(self.RTYPE)]) dimType = self.getParameterValue(self.DIMENSIONS) if not writeOver: if dimType == 0: # size in pixels arguments.append('-ts') arguments.append(str(self.getParameterValue(self.WIDTH))) arguments.append(str(self.getParameterValue(self.HEIGHT))) else: # resolution in map units per pixel arguments.append('-tr') arguments.append(str(self.getParameterValue(self.WIDTH))) arguments.append(str(self.getParameterValue(self.HEIGHT))) if len(noData) > 0: arguments.append('-a_nodata') arguments.append(noData) if (GdalUtils.getFormatShortNameFromFilename(out) == "GTiff") and (writeOver is False): arguments.append("-co COMPRESS="+compress) if compress == 'JPEG': arguments.append("-co JPEG_QUALITY="+jpegcompression) elif (compress == 'LZW') or (compress == 'DEFLATE'): arguments.append("-co PREDICTOR="+predictor) if compress == 'DEFLATE': arguments.append("-co ZLEVEL="+zlevel) if tiled == "True": arguments.append("-co TILED=YES") if tfw == "True": arguments.append("-co TFW=YES") if len(bigtiff) > 0: arguments.append("-co BIGTIFF="+bigtiff) arguments.append('-l') arguments.append(self.ogrLayerName(inLayer)) arguments.append(ogrLayer) arguments.append(unicode(self.getOutputValue(self.OUTPUT))) GdalUtils.runGdal(['gdal_rasterize', GdalUtils.escapeAndJoin(arguments)], progress)
def processAlgorithm(self, progress): inLayer = self.getParameterValue(self.INPUT) conn = ogrConnectionString(inLayer)[1:-1] output = self.getOutputFromName(self.OUTPUT) outFile = output.value if self.getParameterValue(self.TRANSF) == 0: # Direct transformation arguments = ['-s_srs'] if self.getParameterValue(self.CRS) == 0: # Gauss-Krüger zone 3 if self.getParameterValue(self.GRID) == 0: # BETA2007 arguments.append('+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=bessel +nadgrids=' + os.path.dirname(__file__) + '/grids/BETA2007.gsb +wktext +units=m +no_defs') arguments.append('-t_srs') arguments.append('EPSG:4258') arguments.append('-f') arguments.append('ESRI Shapefile') arguments.append(outFile) arguments.append(conn) arguments.append(ogrLayerName(inLayer)) else: # Inverse transformation arguments = ['-s_srs'] arguments.append('EPSG:4258') arguments.append('-t_srs') if self.getParameterValue(self.CRS) == 0: # Gauss-Krüger zone 3 if self.getParameterValue(self.GRID) == 0: # BETA2007 arguments.append('+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=bessel +nadgrids=' + os.path.dirname(__file__) + '/grids/BETA2007.gsb +wktext +units=m +no_defs') arguments.append('-f') arguments.append('\"Geojson\"') arguments.append('/vsistdout/') arguments.append(conn) arguments.append(ogrLayerName(inLayer)) arguments.append('-lco') arguments.append('ENCODING=UTF-8') arguments.append('|') arguments.append('ogr2ogr') arguments.append('-f') arguments.append('ESRI Shapefile') arguments.append('-a_srs') arguments.append('EPSG:31467') arguments.append(outFile) arguments.append('/vsistdin/') arguments.append('-lco') arguments.append('ENCODING=UTF-8') if os.path.isfile(os.path.dirname(__file__) + '/grids/BETA2007.gsb') is False: import urllib urllib.urlretrieve ("https://github.com/NaturalGIS/ntv2_transformations_grids_and_sample_data/raw/master/de/BETA2007.gsb", os.path.dirname(__file__) + "/grids/BETA2007.gsb") commands = ['ogr2ogr', GdalUtils.escapeAndJoin(arguments)] GdalUtils.runGdal(commands, progress)
def processAlgorithm(self, parameters, context, feedback): GdalUtils.runGdal(self.getConsoleCommands(parameters), feedback) output = self.getOutputValue(self.OUTPUT) with open(output, 'w') as f: f.write('<pre>') for s in GdalUtils.getConsoleOutput()[1:]: f.write(s) f.write('</pre>')
def processAlgorithm(self, progress): GdalUtils.runGdal(self.getConsoleCommands(), progress) output = self.getOutputValue(self.OUTPUT) with open(output, 'w') as f: f.write('<pre>') for s in GdalUtils.getConsoleOutput()[1:]: f.write(s) f.write('</pre>')
def processAlgorithm(self, feedback): GdalUtils.runGdal(self.getConsoleCommands(), feedback) output = self.getOutputValue(information.OUTPUT) with open(output, 'w') as f: f.write('<pre>') for s in GdalUtils.getConsoleOutput()[1:]: f.write(str(s)) f.write('</pre>')
def processAlgorithm(self, progress): inLayerA = self.getParameterValue(self.INPUT_LAYER_A) ogrLayerA = ogrConnectionString(inLayerA)[1:-1] layernameA = ogrLayerName(inLayerA) inLayerB = self.getParameterValue(self.INPUT_LAYER_B) ogrLayerB = ogrConnectionString(inLayerB)[1:-1] layernameB = ogrLayerName(inLayerB) fieldA = unicode(self.getParameterValue(self.FIELD_A)) fieldB = unicode(self.getParameterValue(self.FIELD_B)) dsUriA = QgsDataSourceURI(self.getParameterValue(self.INPUT_LAYER_A)) geomColumnA = dsUriA.geometryColumn() dsUriB = QgsDataSourceURI(self.getParameterValue(self.INPUT_LAYER_B)) geomColumnB = dsUriB.geometryColumn() layerA = dataobjects.getObjectFromUri(self.getParameterValue(self.INPUT_LAYER_A)) geomTypeA = layerA.geometryType() wkbTypeA = layerA.wkbType() sridA = layerA.crs().postgisSrid() layerB = dataobjects.getObjectFromUri(self.getParameterValue(self.INPUT_LAYER_B)) geomTypeB = layerB.geometryType() wkbTypeB = layerB.wkbType() sridB = layerB.crs().postgisSrid() multi = self.getParameterValue(self.MULTI) schema = unicode(self.getParameterValue(self.SCHEMA)) table = unicode(self.getParameterValue(self.TABLE)) if multi: sqlstring = "-sql \"WITH temp_table AS (SELECT ST_Union(" + geomColumnB + ") AS geom FROM " + layernameB + ") SELECT ST_ShortestLine(g1." + geomColumnA + ",g2.geom) AS geom, ST_Distance(g1." + geomColumnA + ",g2.geom) AS distance, g1." + fieldA + " AS id_from FROM " + layernameA + " AS g1, temp_table AS g2\" -nln " + schema + "." + table + " -lco FID=gid -lco GEOMETRY_NAME=geom -nlt LINESTRING --config PG_USE_COPY YES -a_srs EPSG:" + str(sridA) + "" else: sqlstring = "-sql \"SELECT ST_ShortestLine(g1." + geomColumnA + ",g2." + geomColumnB + ") AS geom, ST_Distance(g1." + geomColumnA + ",g2." + geomColumnB + ") AS distance, g1." + fieldA + " AS id_from, g2." + fieldB + " AS id_to FROM " + layernameA + " AS g1, " + layernameB + " AS g2\" -nln " + schema + "." + table + " -lco FID=gid -lco GEOMETRY_NAME=geom -nlt LINESTRING --config PG_USE_COPY YES" options = unicode(self.getParameterValue(self.OPTIONS)) arguments = [] arguments.append('-f') arguments.append('PostgreSQL') arguments.append(ogrLayerA) arguments.append(ogrLayerA) arguments.append(sqlstring) arguments.append('-overwrite') if len(options) > 0: arguments.append(options) #print table commands = [] if isWindows(): commands = ['cmd.exe', '/C ', 'ogr2ogr.exe', GdalUtils.escapeAndJoin(arguments)] else: commands = ['ogr2ogr', GdalUtils.escapeAndJoin(arguments)] GdalUtils.runGdal(commands, progress) output = self.getOutputValue(self.OUTPUT) f = open(output, 'w') f.write('<pre>') for s in GdalUtils.getConsoleOutput()[1:]: f.write(unicode(s)) f.write('</pre>') f.close()
def processAlgorithm(self, progress): inLayer = self.getParameterValue(self.INPUT_LAYER) ogrLayer = self.ogrConnectionString(inLayer)[1:-1] layername = "'" + self.ogrLayerName(inLayer) + "'" geometry = unicode(self.getParameterValue(self.GEOMETRY)) field = unicode(self.getParameterValue(self.FIELD)) statsatt = unicode(self.getParameterValue(self.STATSATT)) stats = self.getParameterValue(self.STATS) area = self.getParameterValue(self.AREA) multi = self.getParameterValue(self.MULTI) count = self.getParameterValue(self.COUNT) fields = self.getParameterValue(self.FIELDS) querystart = '-dialect sqlite -sql "SELECT ST_Union(' + geometry + ')' queryend = ' FROM ' + layername + ' GROUP BY ' + field + '"' if fields: queryfields = ",*" else: queryfields = "," + field if count: querycount = ", COUNT(" + geometry + ") AS count" else: querycount = "" if stats: querystats = ", SUM(" + statsatt + ") AS sum_diss, MIN(" + statsatt + ") AS min_diss, MAX(" + statsatt + ") AS max_diss, AVG(" + statsatt + ") AS avg_diss" else: querystats = "" if area: queryarea = ", SUM(ST_area(" + geometry + ")) AS area_diss, ST_perimeter(ST_union(" + geometry + ")) AS peri_diss" else: queryarea = "" query = querystart + queryfields + querycount + querystats + queryarea + queryend output = self.getOutputFromName(self.OUTPUT_LAYER) outFile = output.value output = self.ogrConnectionString(outFile) options = unicode(self.getParameterValue(self.OPTIONS)) arguments = [] arguments.append(output) arguments.append(ogrLayer) arguments.append(self.ogrLayerName(inLayer)) arguments.append(query) if not multi: arguments.append('-explodecollections') if len(options) > 0: arguments.append(options) commands = [] if isWindows(): commands = ['cmd.exe', '/C ', 'ogr2ogr.exe', GdalUtils.escapeAndJoin(arguments)] else: commands = ['ogr2ogr', GdalUtils.escapeAndJoin(arguments)] GdalUtils.runGdal(commands, progress)
def processAlgorithm(self, progress): GdalUtils.runGdal(self.getConsoleCommands(), progress) output = self.getOutputValue(information.OUTPUT) f = open(output, 'w') f.write('<pre>') for s in GdalUtils.getConsoleOutput()[1:]: f.write(unicode(s)) f.write('</pre>') f.close()
def processAlgorithm(self, progress): out = self.getOutputValue(self.OUTPUT) extra = str(self.getParameterValue(self.EXTRA)) #debug = self.getParameterValue(self.DEBUG) formula = self.getParameterValue(self.FORMULA) noData = str(self.getParameterValue(self.NO_DATA)) arguments = [] arguments.append('--calc') arguments.append('"' + formula + '"') arguments.append('--format') arguments.append(GdalUtils.getFormatShortNameFromFilename(out)) arguments.append('--type') arguments.append(self.TYPE[self.getParameterValue(self.RTYPE)]) if len(noData) > 0: arguments.append('--NoDataValue') arguments.append(noData) if len(extra) > 0: arguments.append(extra) #if debug: # arguments.append('--debug') arguments.append('-A') arguments.append(self.getParameterValue(self.INPUT_A)) if self.getParameterValue(self.BAND_A): arguments.append('--A_band ' + self.getParameterValue(self.BAND_A)) if self.getParameterValue(self.INPUT_B): arguments.append('-B') arguments.append(self.getParameterValue(self.INPUT_B)) if self.getParameterValue(self.BAND_B): arguments.append('--B_band ' + self.getParameterValue(self.BAND_B)) if self.getParameterValue(self.INPUT_C): arguments.append('-C') arguments.append(self.getParameterValue(self.INPUT_C)) if self.getParameterValue(self.BAND_C): arguments.append('--C_band ' + self.getParameterValue(self.BAND_C)) if self.getParameterValue(self.INPUT_D): arguments.append('-D') arguments.append(self.getParameterValue(self.INPUT_D)) if self.getParameterValue(self.BAND_D): arguments.append('--D_band ' + self.getParameterValue(self.BAND_D)) if self.getParameterValue(self.INPUT_E): arguments.append('-E') arguments.append(self.getParameterValue(self.INPUT_E)) if self.getParameterValue(self.BAND_E): arguments.append('--E_band ' + self.getParameterValue(self.BAND_E)) if self.getParameterValue(self.INPUT_F): arguments.append('-F') arguments.append(self.getParameterValue(self.INPUT_F)) if self.getParameterValue(self.BAND_F): arguments.append('--F_band ' + self.getParameterValue(self.BAND_F)) arguments.append('--outfile') arguments.append(out) if isWindows(): GdalUtils.runGdal(['gdal_calc', GdalUtils.escapeAndJoin(arguments)], progress) else: GdalUtils.runGdal(['gdal_calc.py', GdalUtils.escapeAndJoin(arguments)], progress)
def processAlgorithm(self, progress): noData = str(self.getParameterValue(self.NO_DATA)) srccrs = self.getParameterValue(self.SOURCE_SRS) dstcrs = self.getParameterValue(self.DEST_SRS) jpegcompression = str(self.getParameterValue(self.JPEGCOMPRESSION)) predictor = str(self.getParameterValue(self.PREDICTOR)) zlevel = str(self.getParameterValue(self.ZLEVEL)) tiled = str(self.getParameterValue(self.TILED)) compress = self.COMPRESSTYPE[self.getParameterValue(self.COMPRESS)] bigtiff = self.BIGTIFFTYPE[self.getParameterValue(self.BIGTIFF)] tfw = str(self.getParameterValue(self.TFW)) arguments = [] arguments.append('-ot') arguments.append(self.TYPE[self.getParameterValue(self.RTYPE)]) if len(srccrs) > 0: arguments.append('-s_srs') arguments.append(srccrs) if len(dstcrs) > 0: arguments.append('-t_srs') arguments.append(dstcrs) if len(noData) > 0: arguments.append('-dstnodata') arguments.append(noData) arguments.append('-r') arguments.append( self.METHOD_OPTIONS[self.getParameterValue(self.METHOD)]) arguments.append('-of') out = self.getOutputValue(self.OUTPUT) arguments.append(GdalUtils.getFormatShortNameFromFilename(out)) if self.getParameterValue(self.TR) != 0: arguments.append('-tr') arguments.append(str(self.getParameterValue(self.TR))) arguments.append(str(self.getParameterValue(self.TR))) extra = str(self.getParameterValue(self.EXTRA)) if len(extra) > 0: arguments.append(extra) if GdalUtils.getFormatShortNameFromFilename(out) == "GTiff": arguments.append("-co COMPRESS="+compress) if compress == 'JPEG': arguments.append("-co JPEG_QUALITY="+jpegcompression) elif (compress == 'LZW') or (compress == 'DEFLATE'): arguments.append("-co PREDICTOR="+predictor) if compress == 'DEFLATE': arguments.append("-co ZLEVEL="+zlevel) if tiled == "True": arguments.append("-co TILED=YES") if tfw == "True": arguments.append("-co TFW=YES") if len(bigtiff) > 0: arguments.append("-co BIGTIFF="+bigtiff) arguments.append(self.getParameterValue(self.INPUT)) arguments.append(out) GdalUtils.runGdal(['gdalwarp', GdalUtils.escapeAndJoin(arguments)], progress)
def processAlgorithm(self, parameters, context, feedback): GdalUtils.runGdal(self.getConsoleCommands(parameters, context, feedback), feedback) output = self.parameterAsFileOutput(parameters, self.OUTPUT, context) with open(output, 'w') as f: f.write('<pre>') for s in GdalUtils.getConsoleOutput()[1:]: f.write(str(s)) f.write('</pre>') return {self.OUTPUT: output}
def processAlgorithm(self, progress): if self.getParameterValue(self.TRANSF) == 0: # Direct transformation arguments = ['-t_srs'] if self.getParameterValue(self.CRS) == 0: # CH1903+/LV95 if self.getParameterValue(self.GRID) == 0: # CHENyx06 arguments.append('+proj=somerc +lat_0=46.95240555555556 +lon_0=7.439583333333333 +k_0=1 +x_0=2600000 +y_0=1200000 +ellps=bessel +nadgrids=@null +wktext +units=m') gridname = 'CHENYX06a.gsb' else: # ETRS89 if self.getParameterValue(self.GRID) == 0: # CHENyx06 arguments.append('EPSG:4258') gridname = 'chenyx06etrs.gsb' arguments.append('-s_srs') arguments.append('+proj=somerc +lat_0=46.95240555555556 +lon_0=7.439583333333333 +k_0=1 +x_0=600000 +y_0=200000 +ellps=bessel +nadgrids=' + os.path.dirname(__file__) + '/grids/' + gridname + ' +wktext +units=m +no_defs') else: # Inverse transformation arguments = ['-s_srs'] if self.getParameterValue(self.CRS) == 0: # CH1903+/LV95 if self.getParameterValue(self.GRID) == 0: # CHENyx06 arguments.append('+proj=somerc +lat_0=46.95240555555556 +lon_0=7.439583333333333 +k_0=1 +x_0=2600000 +y_0=1200000 +ellps=bessel +nadgrids=@null +wktext +units=m') gridname = 'CHENYX06a.gsb' else: # ETRS89 if self.getParameterValue(self.GRID) == 0: # CHENyx06 arguments.append('EPSG:4258') gridname = 'chenyx06etrs.gsb' arguments.append('-t_srs') arguments.append('+proj=somerc +lat_0=46.95240555555556 +lon_0=7.439583333333333 +k_0=1 +x_0=600000 +y_0=200000 +ellps=bessel +nadgrids=' + os.path.dirname(__file__) + '/grids/' + gridname + ' +wktext +units=m +no_defs') arguments.append('-multi') arguments.append('-of') out = self.getOutputValue(self.OUTPUT) arguments.append(GdalUtils.getFormatShortNameFromFilename(out)) arguments.append(self.getParameterValue(self.INPUT)) arguments.append(out) if os.path.isfile(os.path.dirname(__file__) + '/grids/CHENYX06a.gsb') is False: try: from urllib import urlretrieve except ImportError: from urllib.request import urlretrieve urlretrieve ("https://github.com/NaturalGIS/ntv2_transformations_grids_and_sample_data/raw/master/ch/CHENYX06a.gsb", os.path.dirname(__file__) + "/grids/CHENYX06a.gsb") urlretrieve ("https://github.com/NaturalGIS/ntv2_transformations_grids_and_sample_data/raw/master/ch/chenyx06etrs.gsb", os.path.dirname(__file__) + "/grids/chenyx06etrs.gsb") GdalUtils.runGdal(['gdalwarp', GdalUtils.escapeAndJoin(arguments)], progress)
def processAlgorithm(self, parameters, context, feedback): GdalUtils.runGdal( self.getConsoleCommands(parameters, context, feedback), feedback) output = self.parameterAsFileOutput(parameters, self.OUTPUT, context) with open(output, 'w') as f: f.write('<pre>') for s in GdalUtils.getConsoleOutput()[1:]: f.write(str(s)) f.write('</pre>') return {self.OUTPUT: output}
def processAlgorithm(self, progress): arguments = [] arguments.append('-o') arguments.append(self.getOutputValue(nearblack.OUTPUT)) arguments.append('-near') arguments.append(str(self.getParameterValue(nearblack.NEAR))) if self.getParameterValue(nearblack.WHITE): arguments.append('-white') arguments.append(self.getParameterValue(nearblack.INPUT)) GdalUtils.runGdal( ['nearblack', GdalUtils.escapeAndJoin(arguments)], progress)
def processAlgorithm(self, progress): if self.getParameterValue(self.TRANSF) == 0: # Direct transformation arguments = ['-s_srs'] arguments.append( str(self.transfList()[self.getParameterValue( self.CRS)][self.getParameterValue(self.GRID)])[2:-2]) arguments.append('-t_srs') arguments.append('EPSG:3763') else: # Inverse transformation arguments = ['-s_srs'] arguments.append('EPSG:3763') arguments.append('-t_srs') arguments.append( str(self.transfList()[self.getParameterValue( self.CRS)][self.getParameterValue(self.GRID)])[2:-2]) arguments.append('-multi') arguments.append('-of') out = self.getOutputValue(self.OUTPUT) arguments.append(GdalUtils.getFormatShortNameFromFilename(out)) arguments.append(self.getParameterValue(self.INPUT)) arguments.append(out) if os.path.isfile(os.path.dirname(__file__) + '/grids/pt73_e89.gsb') is False: try: from urllib import urlretrieve except ImportError: from urllib.request import urlretrieve urlretrieve( "https://github.com/NaturalGIS/ntv2_transformations_grids_and_sample_data/raw/master/pt/pt73_e89.gsb", os.path.dirname(__file__) + "/grids/pt73_e89.gsb") urlretrieve( "https://github.com/NaturalGIS/ntv2_transformations_grids_and_sample_data/raw/master/pt/ptED_e89.gsb", os.path.dirname(__file__) + "/grids/ptED_e89.gsb") urlretrieve( "https://github.com/NaturalGIS/ntv2_transformations_grids_and_sample_data/raw/master/pt/ptLB_e89.gsb", os.path.dirname(__file__) + "/grids/ptLB_e89.gsb") urlretrieve( "https://github.com/NaturalGIS/ntv2_transformations_grids_and_sample_data/raw/master/pt/ptLX_e89.gsb", os.path.dirname(__file__) + "/grids/ptLX_e89.gsb") urlretrieve( "https://github.com/NaturalGIS/ntv2_transformations_grids_and_sample_data/raw/master/pt/D73_ETRS89_geo.gsb", os.path.dirname(__file__) + "/grids/D73_ETRS89_geo.gsb") urlretrieve( "https://github.com/NaturalGIS/ntv2_transformations_grids_and_sample_data/raw/master/pt/DLX_ETRS89_geo.gsb", os.path.dirname(__file__) + "/grids/DLX_ETRS89_geo.gsb") GdalUtils.runGdal( ['gdalwarp', GdalUtils.escapeAndJoin(arguments)], progress)
def processAlgorithm(self, progress): inLayer = self.getParameterValue(self.INPUT_LAYER) ogrLayer = ogrConnectionString(inLayer)[1:-1] layername = ogrLayerName(inLayer) fields = unicode(self.getParameterValue(self.FIELDS)) dsUri = QgsDataSourceURI(self.getParameterValue(self.INPUT_LAYER)) geomColumn = dsUri.geometryColumn() layer = dataobjects.getObjectFromUri(self.getParameterValue(self.INPUT_LAYER)) geomType = layer.geometryType() wkbType = layer.wkbType() srid = layer.crs().postgisSrid() schema = unicode(self.getParameterValue(self.SCHEMA)) table = unicode(self.getParameterValue(self.TABLE)) if len(fields) > 0: fieldstring = "," + fields else: fieldstring = "" if wkbType == 3: layertype = "POLYGON" sqlstring = "-sql \"SELECT (ST_Dump(g1." + geomColumn + ")).geom::geometry(" + layertype + "," + str(srid) + ") AS geom, ST_IsValidReason(" + geomColumn + ") AS invalid_reason" + fieldstring + " FROM " + layername + " AS g1 WHERE NOT ST_IsValid(" + geomColumn + ")\" -nlt " + layertype + " -nln " + schema + "." + table + " -lco FID=gid -lco GEOMETRY_NAME=geom --config PG_USE_COPY YES" else: layertype = "MULTIPOLYGON" sqlstring = "-sql \"SELECT (g1." + geomColumn + ")::geometry(" + layertype + "," + str(srid) + ") AS geom, ST_IsValidReason(" + geomColumn + ") AS invalid_reason" + fieldstring + " FROM " + layername + " AS g1 WHERE NOT ST_IsValid(" + geomColumn + ")\" -nlt " + layertype + " -nln " + schema + "." + table + " -lco FID=gid -lco GEOMETRY_NAME=geom --config PG_USE_COPY YES" options = unicode(self.getParameterValue(self.OPTIONS)) arguments = [] arguments.append('-f') arguments.append('PostgreSQL') arguments.append(ogrLayer) arguments.append(ogrLayer) arguments.append(sqlstring) arguments.append('-overwrite') if len(options) > 0: arguments.append(options) commands = [] if isWindows(): commands = ['cmd.exe', '/C ', 'ogr2ogr.exe', GdalUtils.escapeAndJoin(arguments)] else: commands = ['ogr2ogr', GdalUtils.escapeAndJoin(arguments)] GdalUtils.runGdal(commands, progress) output = self.getOutputValue(self.OUTPUT) f = open(output, 'w') f.write('<pre>') for s in GdalUtils.getConsoleOutput()[1:]: f.write(unicode(s)) f.write('</pre>') f.close()
def processAlgorithm(self, progress): inLayer = self.getParameterValue(self.INPUT_LAYER) ogrLayer = self.ogrConnectionString(inLayer)[1:-1] layername = "'" + self.ogrLayerName(inLayer) + "'" geometry = unicode(self.getParameterValue(self.GEOMETRY)) distance = unicode(self.getParameterValue(self.DISTANCE)) dissolveall = self.getParameterValue(self.DISSOLVEALL) field = unicode(self.getParameterValue(self.FIELD)) multi = self.getParameterValue(self.MULTI) output = self.getOutputFromName(self.OUTPUT_LAYER) outFile = output.value output = self.ogrConnectionString(outFile) options = unicode(self.getParameterValue(self.OPTIONS)) arguments = [] arguments.append(output) arguments.append(ogrLayer) arguments.append(self.ogrLayerName(inLayer)) if dissolveall or field != 'None': arguments.append('-dialect sqlite -sql "SELECT ST_Union(ST_Buffer(') else: arguments.append('-dialect sqlite -sql "SELECT ST_Buffer(') arguments.append(geometry) arguments.append(',') arguments.append(distance) if dissolveall or field != 'None': arguments.append(')),*') else: arguments.append('),*') arguments.append('FROM') arguments.append(layername) if field != 'None': arguments.append('GROUP') arguments.append('BY') arguments.append(field) arguments.append('"') if field != 'None' and multi: arguments.append('-explodecollections') if len(options) > 0: arguments.append(options) commands = [] if isWindows(): commands = ['cmd.exe', '/C ', 'ogr2ogr.exe', GdalUtils.escapeAndJoin(arguments)] else: commands = ['ogr2ogr', GdalUtils.escapeAndJoin(arguments)] GdalUtils.runGdal(commands, progress)
def processAlgorithm(self, parameters, context, feedback): commands = self.getConsoleCommands(parameters, context, feedback, executing=True) GdalUtils.runGdal(commands, feedback) # auto generate outputs results = {} for o in self.outputDefinitions(): if o.name() in parameters: results[o.name()] = parameters[o.name()] for k, v in self.output_values.items(): results[k] = v return results
def processAlgorithm(self, progress): arguments = ['TPI'] arguments.append(unicode(self.getParameterValue(self.INPUT))) arguments.append(unicode(self.getOutputValue(self.OUTPUT))) arguments.append('-b') arguments.append(str(self.getParameterValue(self.BAND))) if self.getParameterValue(self.COMPUTE_EDGES): arguments.append('-compute_edges') GdalUtils.runGdal(['gdaldem', GdalUtils.escapeAndJoin(arguments)], progress)
def processAlgorithm(self, progress): commands = self.getConsoleCommands() layers = dataobjects.getVectorLayers() supported = dataobjects.getSupportedOutputVectorLayerExtensions() for i, c in enumerate(commands): for layer in layers: if layer.source() in c: c = c.replace( layer.source(), dataobjects.exportVectorLayer(layer, supported)) commands[i] = c GdalUtils.runGdal(commands, progress)
def processAlgorithm(self, parameters, context, feedback): inLayerA = self.parameterAsVectorLayer(parameters, self.INPUT_LAYER_A, context) ogrLayerA = GdalUtils.ogrConnectionStringFromLayer(inLayerA) layernameA = GdalUtils.ogrLayerName( inLayerA.dataProvider().dataSourceUri()) inLayerB = self.parameterAsVectorLayer(parameters, self.INPUT_LAYER_B, context) ogrLayerB = GdalUtils.ogrConnectionStringFromLayer(inLayerB) layernameB = GdalUtils.ogrLayerName( inLayerB.dataProvider().dataSourceUri()) fieldsA = self.parameterAsFields(parameters, self.FIELDS_A, context) uri = QgsDataSourceUri(inLayerA.source()) geomColumnA = uri.geometryColumn() uri = QgsDataSourceUri(inLayerB.source()) geomColumnB = uri.geometryColumn() schema = self.parameterAsString(parameters, self.SCHEMA, context) table = self.parameterAsString(parameters, self.TABLE, context) options = self.parameterAsString(parameters, self.OPTIONS, context) single = self.parameterAsBool(parameters, self.SINGLE, context) if len(fieldsA) > 0: fieldstring = ', '.join(["g1.{}".format(f) for f in fieldsA]) fieldstring = ", " + fieldstring else: fieldstring = "" if single: sqlstring = "-sql \"SELECT (ST_Dump(ST_Difference(g1." + geomColumnA + ",ST_Union(g2." + geomColumnB + ")))).geom::geometry(Polygon) AS geom" + fieldstring + " FROM " + layernameA + " AS g1, " + layernameB + " AS g2 GROUP BY g1." + geomColumnA + fieldstring + "\"" " -nln " + schema + "." + table + " -lco FID=gid -nlt POLYGON -lco GEOMETRY_NAME=geom --config PG_USE_COPY YES" else: sqlstring = "-sql \"SELECT (ST_Multi(ST_CollectionExtract(ST_Difference(g1." + geomColumnA + ",ST_Union(g2." + geomColumnB + ")),3)))::geometry(MultiPolygon) AS geom" + fieldstring + " FROM " + layernameA + " AS g1, " + layernameB + " AS g2 GROUP BY g1." + geomColumnA + fieldstring + "\"" " -nln " + schema + "." + table + " -lco FID=gid -nlt MULTIPOLYGON -lco GEOMETRY_NAME=geom --config PG_USE_COPY YES" arguments = [] arguments.append('-f') arguments.append('PostgreSQL') arguments.append(ogrLayerA) arguments.append(ogrLayerA) arguments.append(sqlstring) arguments.append('-overwrite') if len(options) > 0: arguments.append(options) commands = ['ogr2ogr', GdalUtils.escapeAndJoin(arguments)] GdalUtils.runGdal(commands, feedback) return {}
def processAlgorithm(self, progress): out = self.getOutputValue(translate.OUTPUT) outsize = str(self.getParameterValue(self.OUTSIZE)) outsizePerc = str(self.getParameterValue(self.OUTSIZE_PERC)) noData = str(self.getParameterValue(self.NO_DATA)) expand = str( self.getParameterFromName( self.EXPAND).options[self.getParameterValue(self.EXPAND)]) projwin = str(self.getParameterValue(self.PROJWIN)) crsId = self.getParameterValue(self.SRS) sds = self.getParameterValue(self.SDS) extra = str(self.getParameterValue(self.EXTRA)) arguments = [] arguments.append('-of') arguments.append(GdalUtils.getFormatShortNameFromFilename(out)) arguments.append('-ot') arguments.append(self.TYPE[self.getParameterValue(self.RTYPE)]) if outsizePerc == 'True': arguments.append('-outsize') arguments.append(outsize + '%') arguments.append(outsize + '%') else: arguments.append('-outsize') arguments.append(outsize) arguments.append(outsize) arguments.append('-a_nodata') arguments.append(noData) if expand != 'none': arguments.append('-expand') arguments.append(expand) regionCoords = projwin.split(',') arguments.append('-projwin') arguments.append(regionCoords[0]) arguments.append(regionCoords[3]) arguments.append(regionCoords[1]) arguments.append(regionCoords[2]) if crsId: arguments.append('-a_srs') arguments.append(str(crsId)) if sds: arguments.append('-sds') if len(extra) > 0: arguments.append(extra) arguments.append(self.getParameterValue(self.INPUT)) arguments.append(out) GdalUtils.runGdal( ['gdal_translate', GdalUtils.escapeAndJoin(arguments)], progress)
def processAlgorithm(self, progress): arguments = [] if self.getParameterValue(information.NOGCP): arguments.append('-nogcp') if self.getParameterValue(information.NOMETADATA): arguments.append('-nomd') arguments.append(self.getParameterValue(information.INPUT)) GdalUtils.runGdal(['gdalinfo', GdalUtils.escapeAndJoin(arguments)], progress) output = self.getOutputValue(information.OUTPUT) f = open(output, 'w') for s in GdalUtils.getConsoleOutput()[1:]: f.write('<p>' + str(s) + '</p>') f.close()
def processAlgorithm(self, parameters, context, feedback): inLayer = self.parameterAsVectorLayer(parameters, self.INPUT_LAYER, context) ogrLayer = GdalUtils.ogrConnectionStringFromLayer(inLayer) layername = GdalUtils.ogrLayerName( inLayer.dataProvider().dataSourceUri()) fields = self.parameterAsFields(parameters, self.FIELDS, context) uri = QgsDataSourceUri(inLayer.source()) geomColumn = uri.geometryColumn() wkbType = inLayer.wkbType() srid = inLayer.crs().postgisSrid() schema = self.parameterAsString(parameters, self.SCHEMA, context) table = self.parameterAsString(parameters, self.TABLE, context) options = self.parameterAsString(parameters, self.OPTIONS, context) if len(fields) > 0: fieldstring = "," + ",".join(fields) else: fieldstring = "" if wkbType == QgsWkbTypes.Polygon: layertype = "POLYGON" sqlstring = "-sql \"SELECT (ST_Dump(ST_MakeValid(g1." + geomColumn + "))).geom::geometry(" + layertype + "," + str( srid ) + ") AS geom" + fieldstring + " FROM " + layername + " AS g1\" -nlt " + layertype + " -nln " + schema + "." + table + " -lco FID=gid -lco GEOMETRY_NAME=geom --config PG_USE_COPY YES" else: layertype = "MULTIPOLYGON" sqlstring = "-sql \"SELECT (ST_MakeValid(g1." + geomColumn + "))::geometry(" + layertype + "," + str( srid ) + ") AS geom" + fieldstring + " FROM " + layername + " AS g1\" -nlt " + layertype + " -nln " + schema + "." + table + " -lco FID=gid -lco GEOMETRY_NAME=geom --config PG_USE_COPY YES" arguments = [] arguments.append('-f') arguments.append('PostgreSQL') arguments.append(ogrLayer) arguments.append(ogrLayer) arguments.append(sqlstring) arguments.append('-overwrite') if len(options) > 0: arguments.append(options) commands = ['ogr2ogr', GdalUtils.escapeAndJoin(arguments)] GdalUtils.runGdal(commands, feedback) return {}
def processAlgorithm(self, progress): arguments = [ '-s_srs', '+proj=utm +zone=29 +ellps=intl +nadgrids=' + os.path.dirname(__file__) + '/grids/ptED_e89.gsb +wktext +units=m +no_defs', '-t_srs', 'EPSG:3763', '-r', 'bilinear', '-dstnodata', 'nan' ] arguments.append('-of') out = self.getOutputValue(self.OUTPUT) arguments.append(GdalUtils.getFormatShortNameFromFilename(out)) arguments.append(self.getParameterValue(self.INPUT)) arguments.append(out) GdalUtils.runGdal( ['gdalwarp', GdalUtils.escapeAndJoin(arguments)], progress)
def processAlgorithm(self, progress): fieldName = str(self.getParameterValue(self.FIELD_NAME)) arguments = [] if len(fieldName) > 0: arguments.append('-tileindex') arguments.append(fieldName) if self.getParameterValue(gdaltindex.PROJ_DIFFERENCE): arguments.append('-skip_different_projection') arguments.append(unicode(self.getOutputValue(gdaltindex.OUTPUT))) arguments.extend( unicode(self.getParameterValue(gdaltindex.INPUT)).split(';')) GdalUtils.runGdal( ['gdaltindex', GdalUtils.escapeAndJoin(arguments)], progress)
def processAlgorithm(self, parameters, context, feedback): inLayerA = self.parameterAsVectorLayer(parameters, self.INPUT_LAYER_A, context) ogrLayerA = GdalUtils.ogrConnectionStringFromLayer(inLayerA) layernameA = GdalUtils.ogrLayerName( inLayerA.dataProvider().dataSourceUri()) inLayerB = self.parameterAsVectorLayer(parameters, self.INPUT_LAYER_B, context) ogrLayerB = GdalUtils.ogrConnectionStringFromLayer(inLayerB) layernameB = GdalUtils.ogrLayerName( inLayerB.dataProvider().dataSourceUri()) fieldA = self.parameterAsString(parameters, self.FIELD_A, context) fieldB = self.parameterAsString(parameters, self.FIELD_B, context) uri = QgsDataSourceUri(inLayerA.source()) geomColumnA = uri.geometryColumn() uri = QgsDataSourceUri(inLayerB.source()) geomColumnB = uri.geometryColumn() multi = self.parameterAsBool(parameters, self.MULTI, context) schema = self.parameterAsString(parameters, self.SCHEMA, context) table = self.parameterAsString(parameters, self.TABLE, context) options = self.parameterAsString(parameters, self.OPTIONS, context) if multi: sqlstring = "-sql \"WITH temp_table AS (SELECT ST_Union(" + geomColumnB + ") AS geom FROM " + layernameB + ") SELECT ST_ShortestLine(g1." + geomColumnA + ",g2.geom) AS geom, ST_Distance(g1." + geomColumnA + ",g2.geom) AS distance, g1." + fieldA + " AS id_from FROM " + layernameA + " AS g1, temp_table AS g2\" -nln " + schema + "." + table + " -lco FID=gid -lco GEOMETRY_NAME=geom -nlt LINESTRING --config PG_USE_COPY YES -a_srs EPSG:" + str( sridA) + "" else: sqlstring = "-sql \"SELECT ST_ShortestLine(g1." + geomColumnA + ",g2." + geomColumnB + ") AS geom, ST_Distance(g1." + geomColumnA + ",g2." + geomColumnB + ") AS distance, g1." + fieldA + " AS id_from, g2." + fieldB + " AS id_to FROM " + layernameA + " AS g1, " + layernameB + " AS g2\" -nln " + schema + "." + table + " -lco FID=gid -lco GEOMETRY_NAME=geom -nlt LINESTRING --config PG_USE_COPY YES" arguments = [] arguments.append('-f') arguments.append('PostgreSQL') arguments.append(ogrLayerA) arguments.append(ogrLayerA) arguments.append(sqlstring) arguments.append('-overwrite') if len(options) > 0: arguments.append(options) commands = ['ogr2ogr', GdalUtils.escapeAndJoin(arguments)] GdalUtils.runGdal(commands, feedback) return {}
def processAlgorithm(self, progress): output = self.getOutputValue(self.OUTPUT) arguments = [] arguments.append('-ot') arguments.append(self.TYPE[self.getParameterValue(self.RTYPE)]) arguments.append(self.getParameterValue(self.INPUT)) arguments.append(output) arguments.append('-of') arguments.append(GdalUtils.getFormatShortNameFromFilename(output)) arguments.append('-distunits') arguments.append(self.DISTUNITS[self.getParameterValue(self.UNITS)]) values = self.getParameterValue(self.VALUES) if len(values) > 0: arguments.append('-values') arguments.append(values) values = str(self.getParameterValue(self.MAX_DIST)) if values < 0: arguments.append('-maxdist') arguments.append(values) values = str(self.getParameterValue(self.NODATA)) if values < 0: arguments.append('-nodata') arguments.append(values) values = str(self.getParameterValue(self.BUF_VAL)) if values < 0: arguments.append('-fixed-buf-val') arguments.append(values) commands = [] if isWindows(): commands = [ 'cmd.exe', '/C ', 'gdal_proximity.bat', GdalUtils.escapeAndJoin(arguments) ] else: commands = [ 'gdal_proximity.py', GdalUtils.escapeAndJoin(arguments) ] GdalUtils.runGdal(commands, progress)
def processAlgorithm(self, progress): if self.getParameterValue(self.TRANSF) == 0: # Direct transformation arguments = ['-s_srs'] if self.getParameterValue(self.CRS) == 0: # Gauss-Krüger zone 3 if self.getParameterValue(self.GRID) == 0: # BETA2007 arguments.append( '+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=bessel +nadgrids=' + os.path.dirname(__file__) + '/grids/BETA2007.gsb +wktext +units=m +no_defs') arguments.append('-t_srs') arguments.append('EPSG:4258') else: # Inverse transformation arguments = ['-s_srs'] arguments.append('EPSG:4258') arguments.append('-t_srs') if self.getParameterValue(self.CRS) == 0: # Datum Lisboa if self.getParameterValue(self.GRID) == 0: # BETA2007 arguments.append( '+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=bessel +nadgrids=' + os.path.dirname(__file__) + '/grids/BETA2007.gsb +wktext +units=m +no_defs') arguments.append('-multi') arguments.append('-of') out = self.getOutputValue(self.OUTPUT) arguments.append(GdalUtils.getFormatShortNameFromFilename(out)) arguments.append(self.getParameterValue(self.INPUT)) arguments.append(out) if os.path.isfile(os.path.dirname(__file__) + '/grids/BETA2007.gsb') is False: try: from urllib import urlretrieve except ImportError: from urllib.request import urlretrieve urlretrieve( "https://github.com/NaturalGIS/ntv2_transformations_grids_and_sample_data/raw/master/de/BETA2007.gsb", os.path.dirname(__file__) + "/grids/BETA2007.gsb") GdalUtils.runGdal( ['gdalwarp', GdalUtils.escapeAndJoin(arguments)], progress)
def processAlgorithm(self, progress): if self.getParameterValue(self.TRANSF) == 0: # Direct transformation arguments = ['-s_srs'] if self.getParameterValue(self.CRS) == 0: # ED50/UTM 31N [EPSG:23031] if self.getParameterValue(self.GRID) == 0: # 100800401 arguments.append( '+proj=utm +zone=31 +ellps=intl +nadgrids=' + os.path.dirname(__file__) + '/grids/100800401.gsb +wktext +units=m +no_defs') arguments.append('-t_srs') arguments.append('EPSG:25831') else: # Inverse transformation arguments = ['-s_srs'] arguments.append('EPSG:25831') arguments.append('-t_srs') if self.getParameterValue(self.CRS) == 0: # ED50/UTM 31N [EPSG:23031] if self.getParameterValue(self.GRID) == 0: # 100800401 arguments.append( '+proj=utm +zone=31 +ellps=intl +nadgrids=' + os.path.dirname(__file__) + '/grids/100800401.gsb +wktext +units=m +no_defs') arguments.append('-multi') arguments.append('-of') out = self.getOutputValue(self.OUTPUT) arguments.append(GdalUtils.getFormatShortNameFromFilename(out)) arguments.append(self.getParameterValue(self.INPUT)) arguments.append(out) if os.path.isfile(os.path.dirname(__file__) + '/grids/100800401.gsb') is False: try: from urllib.request import urlretrieve except ImportError: from urllib.request import urlretrieve urlretrieve( "https://github.com/NaturalGIS/ntv2_transformations_grids_and_sample_data/raw/master/cat/100800401.gsb", os.path.dirname(__file__) + "/grids/100800401.gsb") GdalUtils.runGdal( ['gdalwarp', GdalUtils.escapeAndJoin(arguments)], progress)
def processAlgorithm(self, progress): commands = self.getConsoleCommands() layers = dataobjects.getVectorLayers() supported = dataobjects.getSupportedOutputVectorLayerExtensions() for i, c in enumerate(commands): for layer in layers: if layer.source() in c: exported = dataobjects.exportVectorLayer(layer, supported) exportedFileName = os.path.splitext(os.path.split(exported)[1])[0] c = c.replace(layer.source(), exported) if os.path.isfile(layer.source()): fileName = os.path.splitext(os.path.split(layer.source())[1])[0] c = c.replace(fileName, exportedFileName) commands[i] = c GdalUtils.runGdal(commands, progress)
def processAlgorithm(self, progress): arguments = [] arguments.append('-al') arguments.append('-so') layer = self.getParameterValue(self.INPUT) conn = self.ogrConnectionString(layer) arguments.append(conn) GdalUtils.runGdal( ['ogrinfo', GdalUtils.escapeAndJoin(arguments)], progress) output = self.getOutputValue(self.OUTPUT) f = open(output, 'w') f.write('<pre>') for s in GdalUtils.getConsoleOutput()[1:]: f.write(unicode(s)) f.write('</pre>') f.close()
def processAlgorithm(self, parameters, context, feedback): """ Here is where the processing itself takes place. """ connection_name = parameters[self.CONNECTION_NAME] schemas = self.parameterAsString(parameters, self.SCHEMAS, context) schemas = ','.join([s.strip() for s in schemas.split(',')]) output_path = self.parameterAsString(parameters, self.DESTINATION, context) if not output_path.lower().endswith('.gpkg'): output_path += '.gpkg' if os.path.exists(output_path): os.remove(output_path) feedback.pushDebugInfo( self.tr('Previous Geopackage has been deleted !')) uri = self.getPostgisConnectionUriFromName(connection_name) if uri.service(): ogr_source = 'PG:service=%s schemas=%s ' % (uri.service(), schemas) else: ogr_source = 'PG:host=%s port=%s dbname=%s user=%s password=%s schemas=%s ' % ( uri.host(), uri.port(), uri.database(), uri.username(), uri.password(), schemas) ogr_arguments = [ '', '-overwrite', '-progress', '-f', 'GPKG', output_path, ogr_source, '-lco', 'GEOMETRY_NAME=geom', '-lco', 'SPATIAL_INDEX=YES', '-gt', '50000', '--config', 'PG_LIST_ALL_TABLES', 'YES', '--config', 'PG_SKIP_VIEWS', 'YES', '--config', 'OGR_SQLITE_SYNCHRONOUS', 'OFF', '--config', 'OGR_SQLITE_CACHE', '1024' ] feedback.pushInfo('OGR command = ogr2ogr {}'.format( ' '.join(ogr_arguments))) GdalUtils.runGdal( ['ogr2ogr', GdalUtils.escapeAndJoin(ogr_arguments)], feedback) if not os.path.isfile(output_path): raise QgsProcessingException( self.tr('GeoPackage has not been sucessfully created.')) feedback.pushInfo( self.tr('Geopackage sucessfull created: "{}"'.format(output_path))) return {}
def processAlgorithm(self, progress): inLayerA = self.getParameterValue(self.INPUT_LAYER_A) ogrLayerA = ogrConnectionString(inLayerA)[1:-1] layernameA = ogrLayerName(inLayerA) layerA = dataobjects.getObjectFromUri( self.getParameterValue(self.INPUT_LAYER_A)) fieldA = unicode(self.getParameterValue(self.FIELD_A)) dsUriA = QgsDataSourceURI(self.getParameterValue(self.INPUT_LAYER_A)) geomColumnA = dsUriA.geometryColumn() geomTypeA = layerA.geometryType() wkbTypeA = layerA.wkbType() sridA = layerA.crs().postgisSrid() schema = unicode(self.getParameterValue(self.SCHEMA)) table = unicode(self.getParameterValue(self.TABLE)) sqlstring = "-sql \"SELECT ST_Makeline(g1." + geomColumnA + ",g2." + geomColumnA + ") AS geom, ST_Distance(g1." + geomColumnA + ",g2." + geomColumnA + ") AS distance, g1." + fieldA + " AS id_from, g2." + fieldA + " AS id_to FROM " + layernameA + " AS g1, " + layernameA + " AS g2 WHERE g1." + fieldA + " > " + "g2." + fieldA + "\" -nln " + schema + "." + table + " -lco FID=gid -lco GEOMETRY_NAME=geom -nlt LINESTRING --config PG_USE_COPY YES" options = unicode(self.getParameterValue(self.OPTIONS)) arguments = [] arguments.append('-f') arguments.append('PostgreSQL') arguments.append(ogrLayerA) arguments.append(ogrLayerA) arguments.append(sqlstring) arguments.append('-overwrite') if len(options) > 0: arguments.append(options) #print table commands = [] if isWindows(): commands = [ 'cmd.exe', '/C ', 'ogr2ogr.exe', GdalUtils.escapeAndJoin(arguments) ] else: commands = ['ogr2ogr', GdalUtils.escapeAndJoin(arguments)] GdalUtils.runGdal(commands, progress) output = self.getOutputValue(self.OUTPUT) f = open(output, 'w') f.write('<pre>') for s in GdalUtils.getConsoleOutput()[1:]: f.write(unicode(s)) f.write('</pre>') f.close()
def processAlgorithm(self, progress): arguments = ['roughness'] arguments.append(unicode(self.getParameterValue(self.INPUT))) output = unicode(self.getOutputValue(self.OUTPUT)) arguments.append(output) arguments.append('-of') arguments.append(GdalUtils.getFormatShortNameFromFilename(output)) arguments.append('-b') arguments.append(str(self.getParameterValue(self.BAND))) if self.getParameterValue(self.COMPUTE_EDGES): arguments.append('-compute_edges') GdalUtils.runGdal( ['gdaldem', GdalUtils.escapeAndJoin(arguments)], progress)
def processAlgorithm(self, progress): inLayer = self.getParameterValue(self.INPUT) conn = self.ogrConnectionString(inLayer) output = self.getOutputFromName(self.OUTPUT) outFile = output.value arguments = [ '-f', 'ESRI Shapefile', '-s_srs', '+proj=utm +zone=29 +ellps=intl +nadgrids=' + os.path.dirname(__file__) + '/grids/ptED_e89.gsb +wktext +units=m +no_defs', '-t_srs', 'EPSG:3763', outFile, conn ] commands = ['ogr2ogr', GdalUtils.escapeAndJoin(arguments)] GdalUtils.runGdal(commands, progress)
def processAlgorithm(self, progress): arguments = [] arguments.append('-n') arguments.append(str(self.getParameterValue(rgb2pct.NCOLORS))) arguments.append('-of') out = self.getOutputValue(rgb2pct.OUTPUT) arguments.append(GdalUtils.getFormatShortNameFromFilename(out)) arguments.append(self.getParameterValue(rgb2pct.INPUT)) arguments.append(out) if isWindows(): commands = ['cmd.exe', '/C ', 'rgb2pct.bat', GdalUtils.escapeAndJoin(arguments)] else: commands = ['rgb2pct.py', GdalUtils.escapeAndJoin(arguments)] GdalUtils.runGdal(commands, progress)
def processAlgorithm(self, progress): arguments = [] arguments.append('-band') arguments.append(str(self.getParameterValue(self.BAND))) arguments.append('-csv') arguments.append(self.getParameterValue(self.INPUT)) arguments.append(self.getOutputValue(self.OUTPUT)) commands = [] if isWindows(): commands = ['cmd.exe', '/C ', 'gdal2xyz.bat', GdalUtils.escapeAndJoin(arguments)] else: commands = ['gdal2xyz.py', GdalUtils.escapeAndJoin(arguments)] GdalUtils.runGdal(commands, progress)
def processAlgorithm(self, progress): if self.getParameterValue(self.TRANSF) == 0: # Direct transformation arguments = ['-s_srs'] if self.getParameterValue(self.CRS) == 0: # GOSGB 1936/British National Grid if self.getParameterValue(self.GRID) == 0: # OSTN02_NTv2 arguments.append( '+proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=400000 +y_0=-100000 +ellps=airy +nadgrids=' + os.path.dirname(__file__) + '/grids/OSTN02_NTv2.gsb +wktext +units=m +no_defs') arguments.append('-t_srs') arguments.append('EPSG:4258') else: # Inverse transformation arguments = ['-s_srs'] arguments.append('EPSG:4258') arguments.append('-t_srs') if self.getParameterValue(self.CRS) == 0: # OSGB 1936/British National Grid if self.getParameterValue(self.GRID) == 0: # OSTN02_NTv2 arguments.append( '+proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=400000 +y_0=-100000 +ellps=airy +nadgrids=' + os.path.dirname(__file__) + '/grids/OSTN02_NTv2.gsb +wktext +units=m +no_defs') arguments.append('-multi') arguments.append('-of') out = self.getOutputValue(self.OUTPUT) arguments.append(GdalUtils.getFormatShortNameFromFilename(out)) arguments.append(self.getParameterValue(self.INPUT)) arguments.append(out) if os.path.isfile( os.path.dirname(__file__) + '/grids/OSTN02_NTv2.gsb') is False: import urllib urllib.urlretrieve( "https://github.com/NaturalGIS/ntv2_transformations_grids_and_sample_data/raw/master/uk/OSTN02_NTv2.gsb", os.path.dirname(__file__) + "/grids/OSTN02_NTv2.gsb") GdalUtils.runGdal( ['gdalwarp', GdalUtils.escapeAndJoin(arguments)], progress)
def processAlgorithm(self, parameters, context, feedback): commands = self.getConsoleCommands(parameters) layers = QgsProcessingUtils.compatibleVectorLayers(QgsProject.instance()) supported = QgsVectorFileWriter.supportedFormatExtensions() for i, c in enumerate(commands): for layer in layers: if layer.source() in c: exported = dataobjects.exportVectorLayer(layer, supported) exportedFileName = os.path.splitext(os.path.split(exported)[1])[0] c = c.replace(layer.source(), exported) if os.path.isfile(layer.source()): fileName = os.path.splitext(os.path.split(layer.source())[1])[0] c = re.sub('[\s]{}[\s]'.format(fileName), ' ' + exportedFileName + ' ', c) c = re.sub('[\s]{}'.format(fileName), ' ' + exportedFileName, c) c = re.sub('["\']{}["\']'.format(fileName), "'" + exportedFileName + "'", c) commands[i] = c GdalUtils.runGdal(commands, feedback)
def processAlgorithm(self, feedback): commands = self.getConsoleCommands() layers = dataobjects.getVectorLayers() supported = dataobjects.getSupportedOutputVectorLayerExtensions() for i, c in enumerate(commands): for layer in layers: if layer.source() in c: exported = dataobjects.exportVectorLayer(layer, supported) exportedFileName = os.path.splitext(os.path.split(exported)[1])[0] c = c.replace(layer.source(), exported) if os.path.isfile(layer.source()): fileName = os.path.splitext(os.path.split(layer.source())[1])[0] c = re.sub('[\s]{}[\s]'.format(fileName), ' ' + exportedFileName + ' ', c) c = re.sub('[\s]{}'.format(fileName), ' ' + exportedFileName, c) c = re.sub('["\']{}["\']'.format(fileName), "'" + exportedFileName + "'", c) commands[i] = c GdalUtils.runGdal(commands, feedback)