首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用PyQGIS加载光栅层?

如何使用PyQGIS加载光栅层?
EN

Stack Overflow用户
提问于 2014-11-05 00:56:30
回答 2查看 3.2K关注 0票数 1

虽然有一些关于这个问题的帖子,但没有人回答。这就是为什么我要再问一遍。

我发现的一个帖子是https://gis.stackexchange.com/questions/68032/raster-layer-invalid

我从以下链接读取信息:rest

我使用了命令: gdal_translate "Imagery/MapServer?f=json&pretty=true“s.xml -of WMS。它成功地生成了文件。但是,当我试图打开文件并假设提供程序是wms时,代码报告层无效。

我使用的代码是:

代码语言:javascript
复制
    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"):

代码语言:javascript
复制
    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。它只是没有在独立的脚本中工作。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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

如果它仍然不适用于您,您很可能会遇到环境变量设置的问题。

票数 0
EN

Stack Overflow用户

发布于 2015-09-05 13:37:57

我使用python2.7和QGIS2.0.1 .You可以加载任何光栅层,如wms、tiff (单波段或多波段)等。

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26747972

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档