mirror of
https://github.com/qgis/QGIS.git
synced 2025-04-15 00:04:00 -04:00
fixes for gdaltools info and clipper - raster file dialog filters needs fixing
This commit is contained in:
parent
52b773fb14
commit
edfa0fc09c
@ -42,6 +42,8 @@ import os
|
||||
# to know the os
|
||||
import platform
|
||||
import sys
|
||||
import string
|
||||
import re
|
||||
|
||||
# Escapes arguments and return them joined in a string
|
||||
def escapeAndJoin(strList):
|
||||
@ -57,8 +59,8 @@ def escapeAndJoin(strList):
|
||||
# Retrieves last used dir from persistent settings
|
||||
def getLastUsedDir():
|
||||
settings = QSettings()
|
||||
lastProjectDir = settings.value( "/UI/lastProjectDir", u"." )
|
||||
return settings.value( "/GdalTools/lastUsedDir", QVariant(lastProjectDir) )
|
||||
lastProjectDir = settings.value( "/UI/lastProjectDir", ".", type=str )
|
||||
return settings.value( "/GdalTools/lastUsedDir", lastProjectDir, type=str )
|
||||
|
||||
# Stores last used dir in persistent settings
|
||||
def setLastUsedDir(filePath):
|
||||
@ -68,7 +70,7 @@ def setLastUsedDir(filePath):
|
||||
dirPath = fileInfo.filePath()
|
||||
else:
|
||||
dirPath = fileInfo.path()
|
||||
settings.setValue( "/GdalTools/lastUsedDir", QVariant(dirPath) )
|
||||
settings.setValue( "/GdalTools/lastUsedDir", dirPath )
|
||||
|
||||
# Retrieves GDAL binaries location
|
||||
def getGdalBinPath():
|
||||
@ -78,7 +80,7 @@ def getGdalBinPath():
|
||||
# Stores GDAL binaries location
|
||||
def setGdalBinPath( path ):
|
||||
settings = QSettings()
|
||||
settings.setValue( "/GdalTools/gdalPath", QVariant( path ) )
|
||||
settings.setValue( "/GdalTools/gdalPath", path )
|
||||
|
||||
# Retrieves GDAL python modules location
|
||||
def getGdalPymodPath():
|
||||
@ -88,7 +90,7 @@ def getGdalPymodPath():
|
||||
# Stores GDAL python modules location
|
||||
def setGdalPymodPath( path ):
|
||||
settings = QSettings()
|
||||
settings.setValue( "/GdalTools/gdalPymodPath", QVariant( path ) )
|
||||
settings.setValue( "/GdalTools/gdalPymodPath", path )
|
||||
|
||||
# Retrieves GDAL help files location
|
||||
def getHelpPath():
|
||||
@ -98,7 +100,7 @@ def getHelpPath():
|
||||
# Stores GDAL help files location
|
||||
def setHelpPath( path ):
|
||||
settings = QSettings()
|
||||
settings.setValue( "/GdalTools/helpPath", QVariant( path ) )
|
||||
settings.setValue( "/GdalTools/helpPath", path )
|
||||
|
||||
# Retrieves last used encoding from persistent settings
|
||||
def getLastUsedEncoding():
|
||||
@ -108,11 +110,11 @@ def getLastUsedEncoding():
|
||||
# Stores last used encoding in persistent settings
|
||||
def setLastUsedEncoding(encoding):
|
||||
settings = QSettings()
|
||||
settings.setValue( "/UI/encoding", QVariant(encoding) )
|
||||
settings.setValue( "/UI/encoding", encoding)
|
||||
|
||||
def getRasterExtensions():
|
||||
formats = FileFilter.allRastersFilter().split( ";;" )
|
||||
extensions = QStringList()
|
||||
extensions = []
|
||||
for f in formats:
|
||||
if f.contains( "*.bt" ) or f.contains( "*.mpr" ): # Binary Terrain or ILWIS
|
||||
continue
|
||||
@ -121,9 +123,9 @@ def getRasterExtensions():
|
||||
|
||||
def getVectorExtensions():
|
||||
formats = FileFilter.allVectorsFilter().split( ";;" )
|
||||
extensions = QStringList()
|
||||
extensions = []
|
||||
for f in formats:
|
||||
extensions << FileFilter.getFilterExtensions( f )
|
||||
extensions.append(FileFilter.getFilterExtensions( f ))
|
||||
return extensions
|
||||
|
||||
class LayerRegistry(QObject):
|
||||
@ -195,7 +197,7 @@ class LayerRegistry(QObject):
|
||||
return filter( self.isVector, LayerRegistry.layers )
|
||||
|
||||
def getRasterFiles(path, recursive=False):
|
||||
rasters = QStringList()
|
||||
rasters = []
|
||||
if not QFileInfo(path).exists():
|
||||
return rasters
|
||||
|
||||
@ -224,16 +226,16 @@ def fillRasterOutputFormat(aFilter = None, filename = None):
|
||||
|
||||
if aFilter != None:
|
||||
supportedRasters = GdalConfig.getSupportedRasters()
|
||||
filterName = FileFilter.getFilterName( aFilter ).remove( QRegExp('^.*\] ') )
|
||||
filterName = re.sub('^.*\] ', '', FileFilter.getFilterName( aFilter ))
|
||||
if supportedRasters.has_key( filterName ):
|
||||
return supportedRasters[ filterName ][ "SHORTNAME" ]
|
||||
|
||||
shortName = GdalConfig.SupportedRasters.long2ShortName(filterName)
|
||||
|
||||
if shortName.isEmpty() and filename != None:
|
||||
if shortName == '' and filename != None:
|
||||
shortName = GdalConfig.SupportedRasters.filename2ShortName(filename)
|
||||
|
||||
if shortName.isEmpty():
|
||||
if shortName == '':
|
||||
shortName = "GTiff"
|
||||
|
||||
return shortName
|
||||
@ -243,16 +245,16 @@ def fillVectorOutputFormat(aFilter = None, filename = None):
|
||||
|
||||
if aFilter != None:
|
||||
supportedVectors = GdalConfig.getSupportedVectors()
|
||||
filterName = FileFilter.getFilterName( aFilter ).remove( QRegExp('^.*\] ') )
|
||||
filterName = re.sub('^.*\] ', '', FileFilter.getFilterName( aFilter ))
|
||||
if supportedVectors.has_key( filterName ):
|
||||
return supportedVectors[ filterName ][ "SHORTNAME" ]
|
||||
|
||||
pass #shortName = GdalConfig.SupportedVectors.long2ShortName(filterName)
|
||||
|
||||
if shortName.isEmpty() and filename != None:
|
||||
if shortName == '' and filename != None:
|
||||
pass #shortName = GdalConfig.SupportedVectors.filename2ShortName(filename)
|
||||
|
||||
if shortName.isEmpty():
|
||||
if shortName == '':
|
||||
shortName = "ESRI Shapefile"
|
||||
|
||||
return shortName
|
||||
@ -285,38 +287,41 @@ def getVectorFields(vectorFile):
|
||||
# get raster SRS if possible
|
||||
def getRasterSRS( parent, fileName ):
|
||||
processSRS = QProcess( parent )
|
||||
processSRS.start( "gdalinfo", QStringList() << fileName, QIODevice.ReadOnly )
|
||||
processSRS.start( "gdalinfo", [fileName], QIODevice.ReadOnly )
|
||||
arr = QByteArray()
|
||||
if processSRS.waitForFinished():
|
||||
arr = processSRS.readAllStandardOutput()
|
||||
processSRS.close()
|
||||
|
||||
if arr.isEmpty():
|
||||
|
||||
arr = str(arr)
|
||||
if arr == '':
|
||||
return ''
|
||||
|
||||
info = QString( arr ).split( "\n" ).filter( "AUTHORITY" )
|
||||
info = string.split( arr, sep="\n" )
|
||||
# TODO .filter( "AUTHORITY" )
|
||||
if info.count() == 0:
|
||||
return ''
|
||||
|
||||
srs = info[ info.count() - 1 ]
|
||||
srs = srs.simplified().remove( "AUTHORITY[" )
|
||||
srs = srs.remove( QRegExp( "\]{2,4},?" ) ).remove( "\"" )
|
||||
srs = re.sub("\"", '', re.sub("\]{2,4},?", '', srs) )
|
||||
info = srs.split( "," )
|
||||
srs = info[ 0 ] + ":" + info[ 1 ]
|
||||
return srs
|
||||
|
||||
def getRasterExtent(parent, fileName):
|
||||
processSRS = QProcess( parent )
|
||||
processSRS.start( "gdalinfo", QStringList() << fileName, QIODevice.ReadOnly )
|
||||
processSRS.start( "gdalinfo", [fileName], QIODevice.ReadOnly )
|
||||
arr = QByteArray()
|
||||
if processSRS.waitForFinished():
|
||||
arr = processSRS.readAllStandardOutput()
|
||||
processSRS.close()
|
||||
arr = str(arr)
|
||||
|
||||
if arr.isEmpty():
|
||||
if arr == '':
|
||||
return
|
||||
|
||||
info = QString( arr ).split( "\n" )
|
||||
info = string.split( arr, sep="\n" )
|
||||
ulCoord = info[ info.indexOf( QRegExp( "^Upper\sLeft.*" ) ) ].simplified()
|
||||
lrCoord = info[ info.indexOf( QRegExp( "^Lower\sRight.*" ) ) ].simplified()
|
||||
ulCoord = ulCoord[ulCoord.indexOf( "(" ) + 1 : ulCoord.indexOf( ")" ) - 1].split( "," )
|
||||
@ -356,12 +361,11 @@ class FileDialog:
|
||||
|
||||
# change the selected filter value
|
||||
if selectedFilter != None:
|
||||
selectedFilter.clear()
|
||||
selectedFilter += dialog.selectedNameFilter()
|
||||
selectedFilter = dialog.selectedNameFilter()
|
||||
|
||||
# save the last used dir and return the selected files
|
||||
files = dialog.selectedFiles()
|
||||
if not files.isEmpty():
|
||||
if files != '':
|
||||
setLastUsedDir(files[0])
|
||||
|
||||
if fileMode != QFileDialog.ExistingFiles:
|
||||
@ -399,6 +403,8 @@ class FileDialog:
|
||||
|
||||
@classmethod
|
||||
def getSaveFileName(self, parent = None, caption = '', filter = '', selectedFilter = None, useEncoding = False):
|
||||
print("filter:")
|
||||
print(str(filter))
|
||||
return self.getDialog(parent, caption, QFileDialog.AcceptSave, QFileDialog.AnyFile, filter, selectedFilter, useEncoding)
|
||||
|
||||
@classmethod
|
||||
@ -414,7 +420,7 @@ class FileFilter:
|
||||
@classmethod
|
||||
def setFilter(self, typeName, aFilter):
|
||||
settings = QSettings()
|
||||
settings.setValue( "/GdalTools/" + typeName + "FileFilter", QVariant( aFilter ) )
|
||||
settings.setValue( "/GdalTools/" + typeName + "FileFilter", aFilter )
|
||||
|
||||
# stores the supported raster file filter
|
||||
rastersFilter = ''
|
||||
@ -422,20 +428,12 @@ class FileFilter:
|
||||
# Retrieves the filter for supported raster files
|
||||
@classmethod
|
||||
def allRastersFilter(self):
|
||||
if self.rastersFilter.isEmpty():
|
||||
if self.rastersFilter == '':
|
||||
# TODO fix this, does not work
|
||||
QgsRasterLayer.buildSupportedRasterFileFilter(self.rastersFilter)
|
||||
|
||||
# workaround for QGis < 1.5 (see #2376)
|
||||
# separates multiple extensions that joined by a slash
|
||||
if QGis.QGIS_VERSION[0:3] < "1.5":
|
||||
formats = self.rastersFilter.split( ";;" )
|
||||
self.rastersFilter = ''
|
||||
for f in formats:
|
||||
oldExts = QString(f).remove( QRegExp('^.*\(') ).remove( QRegExp('\).*$') )
|
||||
newExts = QString(oldExts).replace( '/', ' *.' )
|
||||
if not self.rastersFilter.isEmpty():
|
||||
self.rastersFilter += ';;'
|
||||
self.rastersFilter += f.replace( oldExts, newExts )
|
||||
# removed as this is a core plugin QGis >= 1.9
|
||||
|
||||
return self.rastersFilter
|
||||
|
||||
@ -453,7 +451,7 @@ class FileFilter:
|
||||
# Retrieves the filter for supported vector files
|
||||
@classmethod
|
||||
def allVectorsFilter(self):
|
||||
if self.vectorsFilter.isEmpty():
|
||||
if self.vectorsFilter == '':
|
||||
self.vectorsFilter = QgsProviderRegistry.instance().fileVectorFilters()
|
||||
return self.vectorsFilter
|
||||
|
||||
@ -468,20 +466,20 @@ class FileFilter:
|
||||
# Retrieves the extensions list from a filter string
|
||||
@classmethod
|
||||
def getFilterExtensions(self, aFilter):
|
||||
extList = QStringList()
|
||||
extList = []
|
||||
# foreach format in filter string
|
||||
for f in aFilter.split( ";;" ):
|
||||
# gets the list of extensions from the filter
|
||||
exts = f.remove( QRegExp('^.*\(') ).remove( QRegExp('\).*$') )
|
||||
exts = re.sub('\).*$', '', re.sub('^.*\(', '', f))
|
||||
# if there is no extensions or the filter matches all, then return an empty list
|
||||
# otherwise return the list of estensions
|
||||
if not exts.isEmpty() and exts != "*" and exts != "*.*":
|
||||
extList << exts.split(" ")
|
||||
if exts != '' and exts != "*" and exts != "*.*":
|
||||
extList.append(exts.split(" "))
|
||||
return extList
|
||||
|
||||
@classmethod
|
||||
def getFilterName(self, aFilter):
|
||||
return QString(aFilter).remove( QRegExp('\ \(.*$') ).trimmed()
|
||||
return string.strip(re.sub('\ \(.*$', '', aFilter))
|
||||
|
||||
@classmethod
|
||||
def filenameMatchesFilterExt(self, fileName, ext):
|
||||
@ -525,48 +523,51 @@ class GdalConfig:
|
||||
driver = gdal.GetDriver(i)
|
||||
|
||||
if driver == None:
|
||||
QgsLogger.warning("unable to get driver " + QString.number(i))
|
||||
QgsLogger.warning("unable to get driver " + str(i))
|
||||
continue
|
||||
|
||||
# now we need to see if the driver is for something currently
|
||||
# supported; if not, we give it a miss for the next driver
|
||||
|
||||
longName = QString(driver.LongName).remove( QRegExp( '\(.*$' ) ).trimmed()
|
||||
shortName = QString(driver.ShortName).remove( QRegExp( '\(.*$' ) ).trimmed()
|
||||
longName = string.strip(re.sub('\(.*$', '', driver.LongName))
|
||||
shortName = string.strip(re.sub('\(.*$', '', driver.ShortName))
|
||||
extensions = ''
|
||||
|
||||
description = QString(driver.GetDescription())
|
||||
glob = QStringList()
|
||||
description = driver.GetDescription()
|
||||
glob = []
|
||||
|
||||
metadata = driver.GetMetadata()
|
||||
if metadata.has_key(gdal.DMD_EXTENSION):
|
||||
extensions = QString(metadata[gdal.DMD_EXTENSION])
|
||||
extensions = str(metadata[gdal.DMD_EXTENSION])
|
||||
|
||||
if not longName.isEmpty():
|
||||
if not extensions.isEmpty():
|
||||
if longName != '':
|
||||
if extensions != '':
|
||||
# XXX add check for SDTS; in that case we want (*CATD.DDF)
|
||||
glob << QString("*." + extensions.replace("/", " *.")).split(" ")
|
||||
|
||||
#TODO fix and test
|
||||
#glob << QString("*." + extensions.replace("/", " *.")).split(" ")
|
||||
glob.append(string.split("*." + string.replace(extensions,"/", " *."), sep=(" ")))
|
||||
|
||||
# Add only the first JP2 driver found to the filter list (it's the one GDAL uses)
|
||||
if description == "JPEG2000" or description.startsWith("JP2"): # JP2ECW, JP2KAK, JP2MrSID
|
||||
if description == "JPEG2000" or description.startswith("JP2"): # JP2ECW, JP2KAK, JP2MrSID
|
||||
if jp2Driver != None:
|
||||
continue # skip if already found a JP2 driver
|
||||
jp2Driver = driver # first JP2 driver found
|
||||
glob << "*.j2k" # add alternate extension
|
||||
glob.append("*.j2k") # add alternate extension
|
||||
elif description == "GTiff":
|
||||
glob << "*.tiff"
|
||||
glob.append("*.tiff")
|
||||
elif description == "JPEG":
|
||||
glob << "*.jpeg"
|
||||
glob.append("*.jpeg")
|
||||
else:
|
||||
# USGS DEMs use "*.dem"
|
||||
if description.startsWith( "USGSDEM" ):
|
||||
glob << "*.dem"
|
||||
elif description.startsWith( "DTED" ):
|
||||
if description.startswith( "USGSDEM" ):
|
||||
glob.append("*.dem")
|
||||
elif description.startswith( "DTED" ):
|
||||
# DTED use "*.dt0"
|
||||
glob << "*.dt0"
|
||||
elif description.startsWith( "MrSID" ):
|
||||
glob.append("*.dt0")
|
||||
elif description.startswith( "MrSID" ):
|
||||
# MrSID use "*.sid"
|
||||
glob << "*.sid"
|
||||
glob.append("*.sid")
|
||||
else:
|
||||
continue
|
||||
|
||||
@ -593,111 +594,119 @@ class GdalConfig:
|
||||
driver = ogr.GetDriver(i)
|
||||
|
||||
if driver == None:
|
||||
QgsLogger.warning("unable to get driver " + QString.number(i))
|
||||
QgsLogger.warning("unable to get driver " + str(i))
|
||||
continue
|
||||
|
||||
driverName = QString(driver.GetName())
|
||||
driverName = driver.GetName()
|
||||
longName = ''
|
||||
glob = QStringList()
|
||||
glob = []
|
||||
|
||||
if driverName.startsWith( "AVCBin" ):
|
||||
if driverName.startswith( "AVCBin" ):
|
||||
pass #myDirectoryDrivers += "Arc/Info Binary Coverage,AVCBin"
|
||||
elif driverName.startsWith( "AVCE00" ):
|
||||
elif driverName.startswith( "AVCE00" ):
|
||||
longName = "Arc/Info ASCII Coverage"
|
||||
glob << "*.e00"
|
||||
elif driverName.startsWith( "BNA" ):
|
||||
glob.append("*.e00")
|
||||
elif driverName.startswith( "BNA" ):
|
||||
longName = "Atlas BNA"
|
||||
glob << "*.bna"
|
||||
elif driverName.startsWith( "CSV" ):
|
||||
glob.append("*.bna")
|
||||
elif driverName.startswith( "CSV" ):
|
||||
longName = "Comma Separated Value"
|
||||
glob << "*.csv"
|
||||
elif driverName.startsWith( "DODS" ):
|
||||
glob.append("*.csv")
|
||||
elif driverName.startswith( "DODS" ):
|
||||
pass #myProtocolDrivers += "DODS/OPeNDAP,DODS"
|
||||
elif driverName.startsWith( "PGeo" ):
|
||||
elif driverName.startswith( "PGeo" ):
|
||||
pass #myDatabaseDrivers += "ESRI Personal GeoDatabase,PGeo"
|
||||
|
||||
# on Windows add a pair to the dict for this driver
|
||||
if platform.system() == "Windows":
|
||||
longName = "ESRI Personal GeoDatabase"
|
||||
glob << "*.mdb"
|
||||
elif driverName.startsWith( "SDE" ):
|
||||
glob.append("*.mdb")
|
||||
elif driverName.startswith( "SDE" ):
|
||||
pass #myDatabaseDrivers += "ESRI ArcSDE,SDE"
|
||||
elif driverName.startsWith( "ESRI" ):
|
||||
elif driverName.startswith( "ESRI" ):
|
||||
longName = "ESRI Shapefiles"
|
||||
glob << "*.shp"
|
||||
elif driverName.startsWith( "FMEObjects Gateway" ):
|
||||
glob.append("*.shp")
|
||||
elif driverName.startswith( "FMEObjects Gateway" ):
|
||||
longName = "FMEObjects Gateway"
|
||||
glob << "*.fdd"
|
||||
elif driverName.startsWith( "GeoJSON" ):
|
||||
glob.append("*.fdd")
|
||||
elif driverName.startswith( "GeoJSON" ):
|
||||
pass #myProtocolDrivers += "GeoJSON,GeoJSON"
|
||||
longName = "GeoJSON"
|
||||
glob << "*.geojson"
|
||||
elif driverName.startsWith( "GeoRSS" ):
|
||||
glob.append("*.geojson")
|
||||
elif driverName.startswith( "GeoRSS" ):
|
||||
longName = "GeoRSS"
|
||||
glob << "*.xml"
|
||||
elif driverName.startsWith( "GML" ):
|
||||
glob.append("*.xml")
|
||||
elif driverName.startswith( "GML" ):
|
||||
longName = "Geography Markup Language"
|
||||
glob << "*.gml"
|
||||
elif driverName.startsWith( "GMT" ):
|
||||
glob.append("*.gml")
|
||||
elif driverName.startswith( "GMT" ):
|
||||
longName = "GMT"
|
||||
glob << "*.gmt"
|
||||
elif driverName.startsWith( "GPX" ):
|
||||
glob.append("*.gmt")
|
||||
elif driverName.startswith( "GPX" ):
|
||||
longName = "GPX"
|
||||
glob << "*.gpx"
|
||||
elif driverName.startsWith( "GRASS" ):
|
||||
glob.append("*.gpx")
|
||||
elif driverName.startswith( "GRASS" ):
|
||||
pass #myDirectoryDrivers += "Grass Vector,GRASS"
|
||||
elif driverName.startsWith( "IDB" ):
|
||||
elif driverName.startswith( "IDB" ):
|
||||
pass #myDatabaseDrivers += "Informix DataBlade,IDB"
|
||||
elif driverName.startsWith( "Interlis 1" ):
|
||||
elif driverName.startswith( "Interlis 1" ):
|
||||
longName = "INTERLIS 1"
|
||||
glob << "*.itf" << "*.xml" << "*.ili"
|
||||
elif driverName.startsWith( "Interlis 2" ):
|
||||
glob.append("*.itf")
|
||||
glob.append("*.xml")
|
||||
glob.append("*.ili")
|
||||
elif driverName.startswith( "Interlis 2" ):
|
||||
longName = "INTERLIS 2"
|
||||
glob << "*.itf" << "*.xml" << "*.ili"
|
||||
elif driverName.startsWith( "INGRES" ):
|
||||
glob.append("*.itf")
|
||||
glob.append("*.xml")
|
||||
glob.append("*.ili")
|
||||
elif driverName.startswith( "INGRES" ):
|
||||
pass #myDatabaseDrivers += "INGRES,INGRES"
|
||||
elif driverName.startsWith( "KML" ):
|
||||
elif driverName.startswith( "KML" ):
|
||||
longName = "KML"
|
||||
glob << "*.kml"
|
||||
elif driverName.startsWith( "MapInfo File" ):
|
||||
glob.append("*.kml")
|
||||
elif driverName.startswith( "MapInfo File" ):
|
||||
longName = "Mapinfo File"
|
||||
glob << "*.mif" << "*.tab"
|
||||
elif driverName.startsWith( "DGN" ):
|
||||
glob.append("*.mif")
|
||||
glob.append("*.tab")
|
||||
elif driverName.startswith( "DGN" ):
|
||||
longName = "Microstation DGN"
|
||||
glob << "*.dgn"
|
||||
elif driverName.startsWith( "MySQL" ):
|
||||
glob.append("*.dgn")
|
||||
elif driverName.startswith( "MySQL" ):
|
||||
pass #myDatabaseDrivers += "MySQL,MySQL"
|
||||
elif driverName.startsWith( "OCI" ):
|
||||
elif driverName.startswith( "OCI" ):
|
||||
pass #myDatabaseDrivers += "Oracle Spatial,OCI"
|
||||
elif driverName.startsWith( "ODBC" ):
|
||||
elif driverName.startswith( "ODBC" ):
|
||||
pass #myDatabaseDrivers += "ODBC,ODBC"
|
||||
elif driverName.startsWith( "OGDI" ):
|
||||
elif driverName.startswith( "OGDI" ):
|
||||
pass #myDatabaseDrivers += "OGDI Vectors,OGDI"
|
||||
elif driverName.startsWith( "PostgreSQL" ):
|
||||
elif driverName.startswith( "PostgreSQL" ):
|
||||
pass #myDatabaseDrivers += "PostgreSQL,PostgreSQL"
|
||||
elif driverName.startsWith( "S57" ):
|
||||
elif driverName.startswith( "S57" ):
|
||||
longName = "S-57 Base file"
|
||||
glob << "*.000"
|
||||
elif driverName.startsWith( "SDTS" ):
|
||||
glob.append("*.000")
|
||||
elif driverName.startswith( "SDTS" ):
|
||||
longName = "Spatial Data Transfer Standard"
|
||||
glob << "*catd.ddf"
|
||||
elif driverName.startsWith( "SQLite" ):
|
||||
glob.append("*catd.ddf")
|
||||
elif driverName.startswith( "SQLite" ):
|
||||
longName = "SQLite"
|
||||
glob << "*.sqlite"
|
||||
elif driverName.startsWith( "UK .NTF" ):
|
||||
glob.append("*.sqlite")
|
||||
elif driverName.startswith( "UK .NTF" ):
|
||||
pass #myDirectoryDrivers += "UK. NTF,UK. NTF"
|
||||
elif driverName.startsWith( "TIGER" ):
|
||||
elif driverName.startswith( "TIGER" ):
|
||||
pass #myDirectoryDrivers += "U.S. Census TIGER/Line,TIGER"
|
||||
elif driverName.startsWith( "VRT" ):
|
||||
elif driverName.startswith( "VRT" ):
|
||||
longName = "VRT - Virtual Datasource "
|
||||
glob << "*.vrt"
|
||||
elif driverName.startsWith( "XPlane" ):
|
||||
glob.append("*.vrt")
|
||||
elif driverName.startswith( "XPlane" ):
|
||||
longName = "X-Plane/Flighgear"
|
||||
glob << "apt.dat" << "nav.dat" << "fix.dat" << "awy.dat"
|
||||
glob.append("apt.dat")
|
||||
glob.append("nav.dat")
|
||||
glob.append("fix.dat")
|
||||
glob.append("awy.dat")
|
||||
|
||||
longName = QString(longName).trimmed()
|
||||
longName = string.strip(longName)
|
||||
|
||||
if longName.isEmpty():
|
||||
if longName =='':
|
||||
continue
|
||||
|
||||
self.supportedVectors[longName] = {'EXTENSIONS': glob, 'LONGNAME': longName, 'SHORTNAME': driverName}
|
||||
@ -710,7 +719,7 @@ class GdalConfig:
|
||||
# retrieve the raster format short name by long format name
|
||||
@classmethod
|
||||
def long2ShortName(self, longName):
|
||||
if longName.isEmpty():
|
||||
if longName == '':
|
||||
return ''
|
||||
|
||||
if self.dict_long2shortName.has_key(longName):
|
||||
@ -739,7 +748,7 @@ class GdalConfig:
|
||||
# retrieve the raster format short name by using the file name extension
|
||||
@classmethod
|
||||
def filename2ShortName(self, fileName):
|
||||
if fileName.isEmpty():
|
||||
if fileName == '':
|
||||
return ''
|
||||
|
||||
shortName = ''
|
||||
@ -753,7 +762,7 @@ class GdalConfig:
|
||||
shortName = self.long2ShortName(longName)
|
||||
break
|
||||
|
||||
if not shortName.isEmpty():
|
||||
if not shortName == '':
|
||||
break
|
||||
|
||||
return shortName
|
||||
@ -767,7 +776,7 @@ class Version:
|
||||
self.vers = ver.vers
|
||||
elif isinstance(ver, tuple) or isinstance(ver, list):
|
||||
self.vers = map(str, ver)
|
||||
elif isinstance(ver, str) or isinstance(ver, QString):
|
||||
elif isinstance(ver, str):
|
||||
self.vers = self.string2vers(ver)
|
||||
|
||||
@staticmethod
|
||||
@ -855,22 +864,22 @@ def setMacOSXDefaultEnvironment():
|
||||
|
||||
if os.path.exists( qgis_standalone_gdal_path ): # qgis standalone
|
||||
# GDAL executables are in the QGis bin folder
|
||||
if getGdalBinPath().isEmpty():
|
||||
if getGdalBinPath() == '':
|
||||
setGdalBinPath( qgis_bin )
|
||||
# GDAL pymods are in the QGis python folder
|
||||
if getGdalPymodPath().isEmpty():
|
||||
if getGdalPymodPath() == '':
|
||||
setGdalPymodPath( qgis_python )
|
||||
# GDAL help is in the framework folder
|
||||
if getHelpPath().isEmpty():
|
||||
if getHelpPath() == '':
|
||||
setHelpPath( u"%s/Resources/doc" % qgis_standalone_gdal_path )
|
||||
|
||||
elif os.path.exists( gdal_base_path ):
|
||||
# all GDAL parts are in the GDAL framework folder
|
||||
if getGdalBinPath().isEmpty():
|
||||
if getGdalBinPath() == '':
|
||||
setGdalBinPath( u"%s/Programs" % gdal_base_path )
|
||||
if getGdalPymodPath().isEmpty():
|
||||
if getGdalPymodPath() == '':
|
||||
setGdalPymodPath( u"%s/Python/%s.%s/site-packages" % (gdal_base_path, sys.version_info[0], sys.version_info[1]) )
|
||||
if getHelpPath().isEmpty():
|
||||
if getHelpPath() == '':
|
||||
setHelpPath( u"%s/Resources/doc" % gdal_base_path )
|
||||
|
||||
|
||||
|
@ -36,7 +36,7 @@ from ui_dialogBase import Ui_GdalToolsDialog as Ui_Dialog
|
||||
import GdalTools_utils as Utils
|
||||
from .. import resources_rc
|
||||
|
||||
import os, platform
|
||||
import os, platform, string
|
||||
|
||||
class GdalToolsBaseDialog(QDialog, Ui_Dialog):
|
||||
|
||||
@ -51,7 +51,7 @@ class GdalToolsBaseDialog(QDialog, Ui_Dialog):
|
||||
self.connect(self.process, SIGNAL("finished(int, QProcess::ExitStatus)"), self.processFinished)
|
||||
|
||||
self.setupUi(self)
|
||||
self.arguments = QStringList()
|
||||
self.arguments = []
|
||||
|
||||
self.editCmdBtn.setIcon( QIcon(":/icons/edit.png") )
|
||||
self.connect(self.editCmdBtn, SIGNAL("toggled(bool)"), self.editCommand)
|
||||
@ -138,7 +138,7 @@ class GdalToolsBaseDialog(QDialog, Ui_Dialog):
|
||||
# show the online tool documentation in the default browser
|
||||
def onHelp(self):
|
||||
helpPath = Utils.getHelpPath()
|
||||
if helpPath.isEmpty():
|
||||
if helpPath == '':
|
||||
url = QUrl("http://www.gdal.org/" + self.helpFileName)
|
||||
else:
|
||||
url = QUrl.fromLocalFile(helpPath + '/' + self.helpFileName)
|
||||
@ -204,23 +204,24 @@ class GdalToolsBaseDialog(QDialog, Ui_Dialog):
|
||||
return
|
||||
|
||||
# show the error message if there's one, otherwise show the process output message
|
||||
msg = QString.fromLocal8Bit(self.process.readAllStandardError())
|
||||
if msg.isEmpty():
|
||||
outMessages = QString.fromLocal8Bit(self.process.readAllStandardOutput()).split( "\n" )
|
||||
msg = str(self.process.readAllStandardError())
|
||||
if msg == '':
|
||||
outMessages = string.split( str(self.process.readAllStandardOutput()), sep="\n" )
|
||||
|
||||
# make sure to not show the help
|
||||
for m in outMessages:
|
||||
m = m.trimmed()
|
||||
if m.isEmpty():
|
||||
continue
|
||||
if m.contains( QRegExp( "^(?:[Uu]sage:\\s)?" + QRegExp.escape(self.command) + "\\s" ) ):
|
||||
if msg.isEmpty():
|
||||
msg = self.tr ( "Invalid parameters." )
|
||||
break
|
||||
if m.contains( QRegExp( "0(?:\\.+[1-9]0{1,2})+" ) ):
|
||||
m = string.strip(m)
|
||||
if m == '':
|
||||
continue
|
||||
# TODO fix this
|
||||
#if m.contains( QRegExp( "^(?:[Uu]sage:\\s)?" + QRegExp.escape(self.command) + "\\s" ) ):
|
||||
# if msg.isEmpty():
|
||||
# msg = self.tr ( "Invalid parameters." )
|
||||
# break
|
||||
#if m.contains( QRegExp( "0(?:\\.+[1-9]0{1,2})+" ) ):
|
||||
# continue
|
||||
|
||||
if not msg.isEmpty():
|
||||
if not msg == '':
|
||||
msg += "\n"
|
||||
msg += m
|
||||
|
||||
|
@ -88,7 +88,7 @@ class GdalToolsDialog(QWidget, Ui_Widget, BasePluginWidget):
|
||||
if self.extentModeRadio.isChecked():
|
||||
enabler = self.extentSelector.isCoordsValid()
|
||||
else:
|
||||
enabler = not self.maskSelector.filename().isEmpty()
|
||||
enabler = not self.maskSelector.filename() == ''
|
||||
self.base.enableRun( enabler )
|
||||
|
||||
def extentChanged(self):
|
||||
@ -104,7 +104,7 @@ class GdalToolsDialog(QWidget, Ui_Widget, BasePluginWidget):
|
||||
def fillInputFileEdit(self):
|
||||
lastUsedFilter = Utils.FileFilter.lastUsedRasterFilter()
|
||||
inputFile = Utils.FileDialog.getOpenFileName(self, self.tr( "Select the input file for Polygonize" ), Utils.FileFilter.allRastersFilter(), lastUsedFilter )
|
||||
if inputFile.isEmpty():
|
||||
if inputFile == '':
|
||||
return
|
||||
Utils.FileFilter.setLastUsedRasterFilter(lastUsedFilter)
|
||||
|
||||
@ -113,7 +113,7 @@ class GdalToolsDialog(QWidget, Ui_Widget, BasePluginWidget):
|
||||
def fillOutputFileEdit(self):
|
||||
lastUsedFilter = Utils.FileFilter.lastUsedRasterFilter()
|
||||
outputFile = Utils.FileDialog.getSaveFileName(self, self.tr( "Select the raster file to save the results to" ), Utils.FileFilter.allRastersFilter(), lastUsedFilter)
|
||||
if outputFile.isEmpty():
|
||||
if outputFile == '':
|
||||
return
|
||||
Utils.FileFilter.setLastUsedRasterFilter(lastUsedFilter)
|
||||
|
||||
@ -123,7 +123,7 @@ class GdalToolsDialog(QWidget, Ui_Widget, BasePluginWidget):
|
||||
def fillMaskFileEdit(self):
|
||||
lastUsedFilter = Utils.FileFilter.lastUsedVectorFilter()
|
||||
maskFile = Utils.FileDialog.getOpenFileName(self, self.tr( "Select the mask file" ), Utils.FileFilter.allVectorsFilter(), lastUsedFilter )
|
||||
if maskFile.isEmpty():
|
||||
if maskFile == '':
|
||||
return
|
||||
Utils.FileFilter.setLastUsedVectorFilter(lastUsedFilter)
|
||||
|
||||
@ -137,48 +137,48 @@ class GdalToolsDialog(QWidget, Ui_Widget, BasePluginWidget):
|
||||
|
||||
def getArgsModeExtent(self):
|
||||
self.base.setPluginCommand( "gdal_translate" )
|
||||
arguments = QStringList()
|
||||
arguments = []
|
||||
if self.noDataCheck.isChecked():
|
||||
arguments << "-a_nodata"
|
||||
arguments.append("-a_nodata")
|
||||
arguments << str(self.noDataSpin.value())
|
||||
if self.extentModeRadio.isChecked() and self.extentSelector.isCoordsValid():
|
||||
rect = self.extentSelector.getExtent()
|
||||
if rect != None:
|
||||
arguments << "-projwin"
|
||||
arguments << str(rect.xMinimum())
|
||||
arguments << str(rect.yMaximum())
|
||||
arguments << str(rect.xMaximum())
|
||||
arguments << str(rect.yMinimum())
|
||||
if not self.getOutputFileName().isEmpty():
|
||||
arguments << "-of"
|
||||
arguments << self.outputFormat
|
||||
arguments << self.getInputFileName()
|
||||
arguments << self.getOutputFileName()
|
||||
arguments.append("-projwin")
|
||||
arguments.append(str(rect.xMinimum()))
|
||||
arguments.append(str(rect.yMaximum()))
|
||||
arguments.append(str(rect.xMaximum()))
|
||||
arguments.append(str(rect.yMinimum()))
|
||||
if not self.getOutputFileName() == '':
|
||||
arguments.append("-of")
|
||||
arguments.append(self.outputFormat)
|
||||
arguments.append(self.getInputFileName())
|
||||
arguments.append(self.getOutputFileName())
|
||||
return arguments
|
||||
|
||||
def getArgsModeMask(self):
|
||||
self.base.setPluginCommand( "gdalwarp" )
|
||||
arguments = QStringList()
|
||||
arguments = []
|
||||
if self.noDataCheck.isChecked():
|
||||
arguments << "-dstnodata"
|
||||
arguments << str(self.noDataSpin.value())
|
||||
arguments.append("-dstnodata")
|
||||
arguments.append(str(self.noDataSpin.value()))
|
||||
if self.maskModeRadio.isChecked():
|
||||
mask = self.maskSelector.filename()
|
||||
if not mask.isEmpty():
|
||||
arguments << "-q"
|
||||
arguments << "-cutline"
|
||||
arguments << mask
|
||||
if not mask == '':
|
||||
arguments.append("-q")
|
||||
arguments.append("-cutline")
|
||||
arguments.append(mask)
|
||||
if Utils.GdalConfig.version() >= "1.8.0":
|
||||
arguments << "-crop_to_cutline"
|
||||
arguments.append("-crop_to_cutline")
|
||||
if self.alphaBandCheck.isChecked():
|
||||
arguments << "-dstalpha"
|
||||
arguments.append("-dstalpha")
|
||||
|
||||
outputFn = self.getOutputFileName()
|
||||
if not outputFn.isEmpty():
|
||||
arguments << "-of"
|
||||
arguments << self.outputFormat
|
||||
arguments << self.getInputFileName()
|
||||
arguments << outputFn
|
||||
if not outputFn == '':
|
||||
arguments.append("-of")
|
||||
arguments.append(self.outputFormat)
|
||||
arguments.append(self.getInputFileName())
|
||||
arguments.append(outputFn)
|
||||
return arguments
|
||||
|
||||
def getOutputFileName(self):
|
||||
|
@ -33,6 +33,7 @@ from widgetPluginBase import GdalToolsBasePluginWidget as BasePluginWidget
|
||||
import GdalTools_utils as Utils
|
||||
|
||||
import platform
|
||||
import string
|
||||
|
||||
class GdalToolsDialog( QWidget, Ui_Widget, BasePluginWidget ):
|
||||
|
||||
@ -98,12 +99,13 @@ class GdalToolsDialog( QWidget, Ui_Widget, BasePluginWidget ):
|
||||
|
||||
def finished( self ):
|
||||
self.rasterInfoList.clear()
|
||||
arr = QByteArray()
|
||||
arr = self.base.process.readAllStandardOutput()
|
||||
arr = str(self.base.process.readAllStandardOutput()).strip()
|
||||
if platform.system() == "Windows":
|
||||
info = QString.fromLocal8Bit( arr ).trimmed().split( "\r\n" )
|
||||
#info = QString.fromLocal8Bit( arr ).trimmed().split( "\r\n" )
|
||||
# TODO test
|
||||
info = string.split(arr, sep="\r\n" )
|
||||
else:
|
||||
info = QString( arr ).trimmed().split( "\n" )
|
||||
info = string.split(arr, sep="\n" )
|
||||
self.rasterInfoList.addItems( info )
|
||||
|
||||
def fillInputFileEdit( self ):
|
||||
@ -116,12 +118,12 @@ class GdalToolsDialog( QWidget, Ui_Widget, BasePluginWidget ):
|
||||
self.inSelector.setFilename( inputFile )
|
||||
|
||||
def getArguments( self ):
|
||||
arguments = QStringList()
|
||||
arguments = []
|
||||
if self.suppressGCPCheck.isChecked():
|
||||
arguments << "-nogcp"
|
||||
arguments.append("-nogcp")
|
||||
if self.suppressMDCheck.isChecked():
|
||||
arguments << "-nomd"
|
||||
arguments << self.getInputFileName()
|
||||
arguments.append("-nomd")
|
||||
arguments.append(self.getInputFileName())
|
||||
return arguments
|
||||
|
||||
# def getOutputFileName( self ):
|
||||
|
@ -64,14 +64,14 @@ class GdalToolsInOutSelector(QWidget, Ui_GdalToolsInOutSelector):
|
||||
self.connect(self.combo, SIGNAL("currentIndexChanged(int)"), self.indexChanged)
|
||||
|
||||
def clear(self):
|
||||
self.filenames = QStringList()
|
||||
self.filenames = []
|
||||
self.fileEdit.clear()
|
||||
self.clearComboState()
|
||||
self.combo.clear()
|
||||
|
||||
def textChanged(self):
|
||||
if self.getType() & self.MULTIFILE:
|
||||
self.filenames = QStringList() << self.fileEdit.text().split(",")
|
||||
self.filenames = self.fileEdit.text().split(",")
|
||||
if self.getType() & self.LAYER:
|
||||
index = self.combo.currentIndex()
|
||||
if index >= 0:
|
||||
@ -135,14 +135,15 @@ class GdalToolsInOutSelector(QWidget, Ui_GdalToolsInOutSelector):
|
||||
elif isinstance(fn, str) or isinstance(fn, unicode):
|
||||
fn = unicode( fn )
|
||||
|
||||
elif hasattr(fn, '__iter__') or isinstance(fn, QStringList):
|
||||
if len( fn ) > 0:
|
||||
fn = QStringList() << fn
|
||||
if self.getType() & self.MULTIFILE:
|
||||
self.filenames = fn
|
||||
fn = fn.join( "," )
|
||||
else:
|
||||
fn = ''
|
||||
#TODO fix and test
|
||||
#elif hasattr(fn, '__iter__') or isinstance(fn, QStringList):
|
||||
# if len( fn ) > 0:
|
||||
# fn = QStringList() << fn
|
||||
# if self.getType() & self.MULTIFILE:
|
||||
# self.filenames = fn
|
||||
# fn = fn.join( "," )
|
||||
# else:
|
||||
# fn = ''
|
||||
|
||||
else:
|
||||
fn = ''
|
||||
@ -224,7 +225,7 @@ class GdalToolsInOutSelector(QWidget, Ui_GdalToolsInOutSelector):
|
||||
index, text, layerID = self.prevState
|
||||
|
||||
if index < 0:
|
||||
if text.isEmpty() and self.combo.count() > 0:
|
||||
if text == '' and self.combo.count() > 0:
|
||||
index = 0
|
||||
|
||||
elif self.combo.findData( layerID ) < 0:
|
||||
|
Loading…
x
Reference in New Issue
Block a user