当前位置: 首页>>代码示例>>Python>>正文


Python QgsFields.extend方法代码示例

本文整理汇总了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 = ''
开发者ID:lparchaeology,项目名称:ArkPlan,代码行数:27,代码来源:collection_layer.py

示例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
开发者ID:cayetanobv,项目名称:QGIS,代码行数:78,代码来源:LinesIntersection.py


注:本文中的qgis.core.QgsFields.extend方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。