2017-02-18 8 views
0

У меня есть автономное приложение, которое импортирует библиотеки qgis.core, чтобы сделать материал для составления ГИС. У меня есть QgsMapCanvas для отображения карты. Теперь я могу вернуть mapUnits() отображения карты, но он возвращается как число, например {UnitType 2}, я знаю, что это число в типе перечисления QGis :: UnitType, поэтому вопрос заключается в том, как получить имя UnitType в QGis из этого номера типа единицы, который я получил из холста карты?Как получить доступ к QGis :: перечисление UnitType из автономного приложения python

Я знаю, что могу их жестко закодировать, но было бы лучше пойти туда, где это определено. ниже приведен фрагмент кода. вызов '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)) 

быть только известно, что единицы перечисления были переименованы и перемещены из QGis в QgsunitTypes класса в версии 3.х:

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

, проблема в том, что я не могу получить доступ к пространству имен QGis. Это корень проблемы. –

+0

Какую версию qgis вы используете? –

+0

Я забыл упомянуть, что это автономное приложение PyQGis, поэтому я не запускаю скрипт из встроенного QGis. –