本文整理汇总了Python中qgis.core.QgsFeature.constGeometry方法的典型用法代码示例。如果您正苦于以下问题:Python QgsFeature.constGeometry方法的具体用法?Python QgsFeature.constGeometry怎么用?Python QgsFeature.constGeometry使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类qgis.core.QgsFeature
的用法示例。
在下文中一共展示了QgsFeature.constGeometry方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: poly2nb
# 需要导入模块: from qgis.core import QgsFeature [as 别名]
# 或者: from qgis.core.QgsFeature import constGeometry [as 别名]
def poly2nb(self):
lst = []
index = QgsSpatialIndex()
featsA = self.lyr.getFeatures()
featsB = self.lyr.getFeatures()
for ft in featsA:
index.insertFeature(ft)
featB = QgsFeature()
prv = self.lyr.dataProvider()
while featsB.nextFeature(featB):
geomB = featB.constGeometry()
idb = featB.id()
idxs = index.intersects(geomB.boundingBox())
sor = []
for idx in idxs:
rqst = QgsFeatureRequest().setFilterFid(idx)
featA = prv.getFeatures(rqst).next()
ida = featA.id()
geomA = QgsGeometry(featA.geometry())
if idb!=ida:
if geomB.touches(geomA)==True:
sor.append(ida)
lst.append(sor)
return lst
示例2: FeatureHighlight
# 需要导入模块: from qgis.core import QgsFeature [as 别名]
# 或者: from qgis.core.QgsFeature import constGeometry [as 别名]
class FeatureHighlight(QgsMapCanvasItem):
_mapCanvas = None # QgsMapCanvas
_brush = QBrush()
_pen = QPen()
_feature = None # QgsFeature()
_layer = None # QgsMapLayer()
_buffer = 0.0
_minWidth = 0.0
def __init__(self, mapCanvas, feature, layer):
super(FeatureHighlight, self).__init__(mapCanvas)
self._mapCanvas = mapCanvas
if not layer or not feature or not isinstance(feature, QgsFeature) or not feature.geometry() or feature.geometry().isEmpty() or not feature.geometry().isGeosValid():
return
self._feature = QgsFeature(feature) # Force deep copy
self._layer = layer
self.setLineColor(Project.highlightLineColor())
self.setFillColor(Project.highlightFillColor())
self._minWidth = Project.highlightMinimumWidth()
self._buffer = Project.highlightBuffer()
if self._mapCanvas.mapSettings().hasCrsTransformEnabled():
ct = self._mapCanvas.mapSettings().layerTransform(self._layer)
if ct:
self._feature.geometry().transform(ct)
self.updateRect()
self.update()
def remove(self):
self._mapCanvas.scene().removeItem(self)
def setLineWidth(self, width):
self._pen.setWidth(width)
def setLineColor(self, color):
self._pen.setColor(color)
def setFillColor(self, fillColor):
self._brush.setColor(fillColor)
self._brush.setStyle(Qt.SolidPattern)
def setBuffer(self, buff):
self._buffer = buff
def setMinWidth(self, width):
self._minWidth = width
def layer(self):
return self._layer
def updatePosition(self):
pass
# protected:
def paint(self, painter, option=None, widget=None): # Override
if not self._feature:
return
mapSettings = self._mapCanvas.mapSettings()
context = QgsRenderContext.fromMapSettings(mapSettings)
renderer = self._getRenderer(context, self._pen.color(), self._brush.color())
if renderer:
context.setPainter(painter)
renderer.startRender(context, self._layer.fields())
renderer.renderFeature(self._feature, context)
renderer.stopRender(context)
def updateRect(self):
if self._feature and self._feature.constGeometry():
m2p = self._mapCanvas.mapSettings().mapToPixel()
topLeft = m2p.toMapPoint(0, 0)
res = m2p.mapUnitsPerPixel()
imageSize = self._mapCanvas.mapSettings().outputSize()
rect = QgsRectangle(topLeft.x(), topLeft.y(),topLeft.x() + imageSize.width()*res, topLeft.y() - imageSize.height()*res)
self.setRect(rect)
self.setVisible(True)
else:
self.setRect(QgsRectangle())
# private:
def _setSymbol(self, symbol, context, color, fillColor):
if not symbol:
return
for symbolLayer in reversed(symbol.symbolLayers()):
if symbolLayer:
if symbolLayer.subSymbol():
self._setSymbol(symbolLayer.subSymbol(), context, color, fillColor)
else:
symbolLayer.setColor(color)
symbolLayer.setOutlineColor(color)
symbolLayer.setFillColor(fillColor)
if isinstance(symbolLayer, QgsSimpleMarkerSymbolLayerV2):
symbolLayer.setOutlineWidth(self._getSymbolWidth(context, symbolLayer.outlineWidth(), symbolLayer.outlineWidthUnit()))
if symbolLayer.type() == QgsSymbolV2.Line:
symbolLayer.setWidth(self._getSymbolWidth(context, symbolLayer.width(), symbolLayer.widthUnit()))
if symbolLayer.type() == QgsSymbolV2.Fill:
symbolLayer.setBorderWidth(self._getSymbolWidth(context, symbolLayer.borderWidth(), symbolLayer.outputUnit()))
symbolLayer.removeDataDefinedProperty('color')
#.........这里部分代码省略.........