Разработка отдельных приложений на PyQGIS

Не знаете, где задать вопрос? Задавайте здесь.
Ответить
Brykov
Новоприбывший
Сообщения: 6
Зарегистрирован: 17 май 2015, 16:30
Репутация: 0

Разработка отдельных приложений на PyQGIS

Сообщение Brykov » 08 июн 2017, 15:28

Всем добрый день. Веду разработку небольшого приложения в рамках дипломной работы. Приложение работает отдельно от QGIS. В программу загружается слой субъектов РФ и их нужно подписывать. В QGIS все работает идеально. Но в программе с подписью происходит странное. https://gyazo.com/37974b1aeef4dc0025048b1f0a80dbd3
Могу предположить что подписывется каждый "кусочек" слоя. А в QGIS подпись строится под центроидом.
http://gyazo.com/b034e2f4b2437b79f2e3fb9a99827e88
Открываю слой функцией:

Код: Выделить всё

    def addLayer( self ):
        self.canvas.clear()
        QgsMapLayerRegistry.instance().removeAllMapLayers ()
        layerPath = app_dir + r"\geo\boundary.shp"
        layerName = "boundary-polygon"
        layerProvider = "ogr"
        self.layer = QgsVectorLayer( layerPath, layerName, layerProvider )
        if not self.layer.isValid():
            print "Layer is not valid"  
            return
        QgsMapLayerRegistry.instance().addMapLayer( self.layer )
        self.canvas.setExtent( self.layer.extent() )
        cl = QgsMapCanvasLayer( self.layer )
        layers = [ cl ]
        self.canvas.setLayerSet(layers)
Затем идет отображение подписи по выбранному объекту:

Код: Выделить всё

def showLabel(self):
        layer= QgsMapLayerRegistry.instance().mapLayersByName("boundary-polygon")[0]
        label = layer.label()
        label.setLabelField(QgsLabel.Text,  2)
        label.addDirectionSymbol=False
        label.angleOffset=-1
        label.setBlendMode=0
        label.bufferDraw=False
        label.bufferJoinStyle=128
        label.bufferNoFill=False
        label.bufferSize=1
        label.bufferSizeInMapUnits=False
        label.centroidInside=True
        label.centroidWhole=True
        label.decimals=3
        label.displayAll=False
        label.dist=0
        label.distInMapUnits=False
        label.drawLabels=True
        label.scaleMax=10000000
        label.scaleMin=1
        label.fieldName='NAME'
        label.fitInPolygonOnly=false
        label.formatNumbers=False
        label.isExpression=False
        label.labelOffsetInMapUnits=False
        label.labelPerPart=False
        label.limitNumLabels=False
        label.mergeLines=False
        label.obstacle=True
        label.obstacleFactor=1
        label.placement=QgsPalLayerSettings.AroundPoint 
        label.placementFlags=10
        label.plusSign=False
        label.preserveRotation=True
        label.quadOffset=QgsPalLayerSettings.QuadrantOver
        label.scaleVisibility=True
        layer.enableLabels(True)
        self.canvas.refresh()
В чем может быть проблема? Использую версию QGIS 2.18.1.

Ответить

Вернуться в «Я новичок!»

Кто сейчас на конференции

Сейчас этот форум просматривают: Baidu [Spider] и 37 гостей