虽然在这个问题上有一些帖子,但其中任何一个都没有答案。这就是为什么我再问它。
我发现的一个帖子是https://gis.stackexchange.com/questions/68032/raster-layer-invalid
我从以下链接阅读信息:https://hub.qgis.org/wiki/17/Arcgis_rest。
我使用了命令:gdal_translate" http://server.arcgisonline.com/ArcGIS/rest/services/World_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(" http://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer?f = json& pretty = true&# 34;," 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。它只是在独立脚本中工作。
答案 0 :(得分:0)
答案可以在这里找到:https://gis.stackexchange.com/questions/120823/how-to-load-a-wms-layer-using-pyqgis。
基本上,它只是一个版本问题。如果你有比v2.6更早的qgis,它将无法正常工作。但它固定为2.6
如果它仍然不适合你,你很可能对环境变量设置有问题。
答案 1 :(得分:0)
这对我的单波段图像很有用。我使用的是python 2.7和QGIS 2.0.1。你可以使用它加载任何像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)
pass