本文整理汇总了Python中qgis.core.QgsFields.extend方法的典型用法代码示例。如果您正苦于以下问题:Python QgsFields.extend方法的具体用法?Python QgsFields.extend怎么用?Python QgsFields.extend使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类qgis.core.QgsFields
的用法示例。
在下文中一共展示了QgsFields.extend方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: _loadLogLayer
# 需要导入模块: from qgis.core import QgsFields [as 别名]
# 或者: from qgis.core.QgsFields import extend [as 别名]
def _loadLogLayer(self):
fullLayerPath = os.path.join(self._projectPath, self._settings.logPath)
filePath = QFileInfo(fullLayerPath)
layer = None
if filePath.exists():
layer = layers.loadShapefileLayer(fullLayerPath, self._settings.logName)
else:
if not filePath.dir().exists():
os.makedirs(filePath.dir().absolutePath())
fields = QgsFields()
fields.append(QgsField('timestamp', QVariant.String, '', 10, 0, 'timestamp'))
fields.append(QgsField('event', QVariant.String, '', 6, 0, 'event'))
fields.extend(self.fields)
layer = layers.createShapefile(fullLayerPath,
self._settings.logName,
self.layer.wkbType(),
self._settings.crs,
fields)
if layer and layer.isValid():
layer.editFormConfig().setSuppress(QgsEditFormConfig.SuppressOn)
self.logLayer = layer
self.logLayerId = layer.id()
else:
self.logLayer = None
self.logLayerId = ''
示例2: processAlgorithm
# 需要导入模块: from qgis.core import QgsFields [as 别名]
# 或者: from qgis.core.QgsFields import extend [as 别名]
def processAlgorithm(self, feedback):
layerA = dataobjects.getLayerFromString(self.getParameterValue(self.INPUT_A))
layerB = dataobjects.getLayerFromString(self.getParameterValue(self.INPUT_B))
fieldA = self.getParameterValue(self.FIELD_A)
fieldB = self.getParameterValue(self.FIELD_B)
idxA = layerA.fields().lookupField(fieldA)
idxB = layerB.fields().lookupField(fieldB)
if idxA != -1:
fieldListA = QgsFields()
fieldListA.append(layerA.fields()[idxA])
else:
fieldListA = layerA.fields()
if idxB != -1:
fieldListB = QgsFields()
fieldListB.append(layerB.fields()[idxB])
else:
fieldListB = layerB.fields()
fieldListB = vector.testForUniqueness(fieldListA, fieldListB)
fieldListA.extend(fieldListB)
writer = self.getOutputFromName(self.OUTPUT).getVectorWriter(fieldListA,
QgsWkbTypes.Point, layerA.crs())
spatialIndex = vector.spatialindex(layerB)
outFeat = QgsFeature()
features = vector.features(layerA)
total = 100.0 / len(features)
hasIntersections = False
for current, inFeatA in enumerate(features):
inGeom = inFeatA.geometry()
hasIntersections = False
lines = spatialIndex.intersects(inGeom.boundingBox())
engine = None
if len(lines) > 0:
hasIntersections = True
# use prepared geometries for faster intersection tests
engine = QgsGeometry.createGeometryEngine(inGeom.geometry())
engine.prepareGeometry()
if hasIntersections:
request = QgsFeatureRequest().setFilterFids(lines)
for inFeatB in layerB.getFeatures(request):
tmpGeom = inFeatB.geometry()
points = []
attrsA = inFeatA.attributes()
if idxA != -1:
attrsA = [attrsA[idxA]]
attrsB = inFeatB.attributes()
if idxB != -1:
attrsB = [attrsB[idxB]]
if engine.intersects(tmpGeom.geometry()):
tempGeom = inGeom.intersection(tmpGeom)
if tempGeom.type() == QgsWkbTypes.PointGeometry:
if tempGeom.isMultipart():
points = tempGeom.asMultiPoint()
else:
points.append(tempGeom.asPoint())
for j in points:
outFeat.setGeometry(tempGeom.fromPoint(j))
attrsA.extend(attrsB)
outFeat.setAttributes(attrsA)
writer.addFeature(outFeat)
feedback.setProgress(int(current * total))
del writer