2014-11-05 2 views
1

이 문제에 대한 게시물이 있지만 누구에게도 답변이 없습니다. 이것이 내가 다시 묻는 이유입니다. https://hub.qgis.org/wiki/17/Arcgis_rest : 내가 찾은PyQGIS를 사용하여 래스터 레이어를로드하는 방법은 무엇입니까?

한 후이

https://gis.stackexchange.com/questions/68032/raster-layer-invalid 내가 다음 링크에서 정보를 읽을 수 있었다.

WMS의 gdal_translate "http://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer?f=json&pretty=true"명령을 사용했습니다. 그리고 파일을 성공적으로 생성했습니다. 그러나 파일을 열려고 시도하고 공급자가 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=jru&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 명령 줄에서 성공적으로 실행할 수 있습니다. 또한, 파이썬 콘솔에서 코드를 입력하려고하면 layer.isValid()가 true를 반환합니다. 독립형 스크립트에서는 작동하지 않습니다.

답변

0

이 어 이미지는 파이썬 2.7를 사용하고 단일 밴드 나를 위해 작동하고 QGIS는 우선은이 :

를 사용하여 WMS 등 TIFF (싱글 밴드 또는 멀티 밴드) 등의 모든 래스터 레이어를로드 할 수 있습니다 2.0.1
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 
관련 문제