虽然有一些关于这个问题的帖子,但没有人回答。这就是为什么我要再问一遍。
我发现的一个帖子是https://gis.stackexchange.com/questions/68032/raster-layer-invalid
我从以下链接读取信息:rest。
我使用了命令: gdal_translate "Imagery/MapServer?f=json&pretty=true“s.xml -of WMS。它成功地生成了文件。但是,当我试图打开文件并假设提供程序是wms时,代码报告层无效。
我使用的代码是:
file = QFileDialog.getOpenFileName(self,
"Open WMS", ".", "WMS (*.xml)")
fileInfo = QFileInfo(file)
# Add the layer
layer = QgsRasterLayer(file, fileInfo.fileName(),"wms")
if not layer.isValid():
print "Failed to load."
return我只是从对话框中选择文件。
我还使用以下代码尝试了另一个命令: qgis.utils.iface.addRasterLayer("Imagery/MapServer?f=json&pretty=true","raster"):
layer = QgsRasterLayer("http://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer?f=json&pretty=true", "layer")
if not layer.isValid():
print "Failed to load."
return它还报告说“装载失败”。原始命令可以在QGIS python命令行中成功运行。另外,如果我试图在python控制台中输入代码,layer.isValid()将返回true。它只是没有在独立的脚本中工作。
发布于 2014-12-02 20:43:10
答案可以在这里找到:https://gis.stackexchange.com/questions/120823/how-to-load-a-wms-layer-using-pyqgis。
基本上,这只是一个版本问题。如果您的qgis比v2.6更早,它将无法工作。但是它是固定的2.6
如果它仍然不适用于您,您很可能会遇到环境变量设置的问题。
发布于 2015-09-05 13:37:57
我使用python2.7和QGIS2.0.1 .You可以加载任何光栅层,如wms、tiff (单波段或多波段)等。
def ifile(self):
global fileName
fileName = str(QtGui.QFileDialog.getOpenFileName(self.iface.mainWindow(),"Open Raster File",'C:\\',"raster files(*.tif *.tiff *.TIF *.TIFF *.IMG *.img )"))
if len(fileName) is 0:
return
else:
self.inFileName = fileName;
filelayer = QgsRasterLayer(fileName,os.path.basename(fileName))
if filelayer == None or filelayer.bandCount() != 1:
self.errorMessage = "Not a DEM Image"
QMessageBox.information(self.iface.mainWindow(), "Error", self.errorMessage)
else:
#f=open(str(self.inFileName))
self.dlg.lineEdit.setText(self.inFileName)
if filelayer.isValid():
QgsMapLayerRegistry.instance().addMapLayer(filelayer)
passhttps://stackoverflow.com/questions/26747972
复制相似问题