2017-02-18 55 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内部运行脚本。 –

相关问题