2017-02-18 53 views
0

我有一個獨立的應用程序,它導入qgis.core庫來執行GIS映射。我有一個QgsMapCanvas用於地圖顯示。現在,我可以找回地圖顯示的mapUnits(),但它返回爲一個數字,例如{UnitType 2},我知道它是QGis :: UnitType枚舉類型中的數字,所以問題是從我從地圖畫布中獲得的單位類型號獲取QGis中UnitType的名稱?如何從獨立的python應用程序訪問QGis :: UnitType enum

我知道我可以對它們進行硬編碼,但最好到它定義的位置。下面是代碼片段。 'mapUnits'調用會給你一個數字,我想要得到那個QGis :: UnitType枚舉的名字。

<code> 
fileInfo = QFileInfo(raster) 
path = fileInfo.filePath() 
baseName = fileInfo.baseName() 
layer = QgsVectorLayer(path, baseName) 
QgsMapLayerRegistry.instance().addMapLayer(layer) 
if layer.isValid() is True: 
    layer.dataProvider().crs().mapUnits() 
</code> 
+0

請顯示您的代碼 – bc004346

+0

@ bc004346,請參閱我的編輯代碼片段 –

回答

0

你可以做

print(QgsUnitTypes.toString(myUnits)) 

要公正知道,單位枚舉已重命名和3.x版搬出QGisQgsunitTypes類:

  • 2.X: QGis :: UnitType
  • 3.x:QgsUnitType :: DistanceUnit
+0

問題是我無法訪問'QGis'命名空間。這是問題的根源。 –

+0

你使用哪個版本的qgis? –

+0

我忘了提及這是一個獨立的PyQGis應用程序,所以我沒有從安裝的QGis內部運行腳本。 –

相關問題