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


Python QgsGeometry.fromMultiPolygonXY方法代码示例

本文整理汇总了Python中qgis.core.QgsGeometry.fromMultiPolygonXY方法的典型用法代码示例。如果您正苦于以下问题:Python QgsGeometry.fromMultiPolygonXY方法的具体用法?Python QgsGeometry.fromMultiPolygonXY怎么用?Python QgsGeometry.fromMultiPolygonXY使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在qgis.core.QgsGeometry的用法示例。


在下文中一共展示了QgsGeometry.fromMultiPolygonXY方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: processAlgorithm

# 需要导入模块: from qgis.core import QgsGeometry [as 别名]
# 或者: from qgis.core.QgsGeometry import fromMultiPolygonXY [as 别名]
    def processAlgorithm(self, parameters, context, feedback):
        source = self.parameterAsSource(parameters, self.POLYGONS, context)
        parts = self.parameterAsInt(parameters, self.PARTS, context)

        fields = source.fields()
        (sink, dest_id) = self.parameterAsSink(parameters, self.OUTPUT, context,
                                               source.fields(), source.wkbType(), source.sourceCrs())

        features = source.getFeatures()
        total = 100.0 / source.featureCount() if source.featureCount() else 0
        for current, feat in enumerate(features):
            if feedback.isCanceled():
                break

            geom = feat.geometry()
            if geom.isMultipart():
                out_feature = feat
                geoms = geom.asGeometryCollection()
                geom_area = [(i, geoms[i].area()) for i in range(len(geoms))]
                geom_area.sort(key=itemgetter(1))
                if parts == 1:
                    out_feature.setGeometry(geoms[geom_area[-1][0]])
                elif parts > len(geoms):
                    out_feature.setGeometry(geom)
                else:
                    out_feature.setGeometry(geom)
                    geomres = [geoms[i].asPolygon() for i, a in geom_area[-1 * parts:]]
                    out_feature.setGeometry(QgsGeometry.fromMultiPolygonXY(geomres))
                sink.addFeature(out_feature, QgsFeatureSink.FastInsert)
            else:
                sink.addFeature(feat, QgsFeatureSink.FastInsert)

            feedback.setProgress(int(current * total))

        return {self.OUTPUT: dest_id}
开发者ID:ccrook,项目名称:Quantum-GIS,代码行数:37,代码来源:KeepNBiggestParts.py

示例2: testQgsMultipolygonRepr

# 需要导入模块: from qgis.core import QgsGeometry [as 别名]
# 或者: from qgis.core.QgsGeometry import fromMultiPolygonXY [as 别名]
 def testQgsMultipolygonRepr(self):
     mp = QgsGeometry.fromMultiPolygonXY([
         [[QgsPointXY(1, 1),
           QgsPointXY(2, 2),
           QgsPointXY(1, 2),
           QgsPointXY(1, 1)]],
         [[QgsPointXY(2, 2),
           QgsPointXY(3, 3),
           QgsPointXY(3, 1),
           QgsPointXY(2, 2)]]
     ])
     self.assertEqual(mp.constGet().__repr__(), '<QgsMultiPolygon: MultiPolygon (((1 1, 2 2, 1 2, 1 1)),((2 2, 3 3, 3 1, 2 2)))>')
开发者ID:anitagraser,项目名称:QGIS,代码行数:14,代码来源:test_python_repr.py

示例3: testMeasureMultiPolygon

# 需要导入模块: from qgis.core import QgsGeometry [as 别名]
# 或者: from qgis.core.QgsGeometry import fromMultiPolygonXY [as 别名]
    def testMeasureMultiPolygon(self):
        # +-+-+ +-+-+
        # |   | |   |
        # + +-+ +-+ +
        # | |     | |
        # +-+     +-+
        polygon = QgsGeometry.fromMultiPolygonXY(
            [
                [[QgsPointXY(0, 0), QgsPointXY(1, 0), QgsPointXY(1, 1), QgsPointXY(2, 1), QgsPointXY(2, 2), QgsPointXY(0, 2), QgsPointXY(0, 0), ]],
                [[QgsPointXY(4, 0), QgsPointXY(5, 0), QgsPointXY(5, 2), QgsPointXY(3, 2), QgsPointXY(3, 1), QgsPointXY(4, 1), QgsPointXY(4, 0), ]]
            ]
        )

        da = QgsDistanceArea()
        area = da.measureArea(polygon)
        assert area == 6, 'Expected:\n%f\nGot:\n%f\n' % (6, area)

        perimeter = da.measurePerimeter(polygon)
        assert perimeter == 16, "Expected:\n%f\nGot:\n%f\n" % (16, perimeter)
开发者ID:anitagraser,项目名称:QGIS,代码行数:21,代码来源:test_qgsdistancearea.py

示例4: _swap_qgs_geometry

# 需要导入模块: from qgis.core import QgsGeometry [as 别名]
# 或者: from qgis.core.QgsGeometry import fromMultiPolygonXY [as 别名]
def _swap_qgs_geometry(qgsgeom):
    if qgsgeom.wkbType() == QgsWkbTypes.Point:
        p = qgsgeom.asPoint()
        qgsgeom = QgsGeometry.fromPointXY(QgsPointXY(p[1], p[0]))
    elif qgsgeom.wkbType() == QgsWkbTypes.MultiPoint:
        mp = qgsgeom.asMultiPoint()
        qgsgeom = QgsGeometry.fromMultiPointXY([QgsPointXY(p[1], p[0]) for p in mp])
    elif qgsgeom.wkbType() == QgsWkbTypes.LineString:
        pl = qgsgeom.asPolyline()
        qgsgeom = QgsGeometry.fromPolylineXY([QgsPointXY(p[1],p[0]) for p in pl])
    elif qgsgeom.wkbType() == QgsWkbTypes.MultiLineString:
        mls = qgsgeom.asMultiPolyline()
        qgsgeom = QgsGeometry.fromMultiPolylineXY([[QgsPointXY(p[1],p[0]) for p in pl] for pl in mls])
    elif qgsgeom.wkbType() == QgsWkbTypes.Polygon:
        pl = qgsgeom.asPolygon()
        qgsgeom = QgsGeometry.fromPolygonXY([[QgsPointXY(p[1],p[0]) for p in r] for r in pl])
    elif qgsgeom.wkbType() == QgsWkbTypes.MultiPolygon:
        mp = qgsgeom.asMultiPolygon()
        qgsgeom = QgsGeometry.fromMultiPolygonXY([[[QgsPointXY(p[1],p[0]) for p in r] for r in pl] for pl in mp])
    return qgsgeom
开发者ID:Oslandia,项目名称:gml_application_schema_toolbox,代码行数:22,代码来源:load_gml_as_xml.py

示例5: buildQgsMultipolygon

# 需要导入模块: from qgis.core import QgsGeometry [as 别名]
# 或者: from qgis.core.QgsGeometry import fromMultiPolygonXY [as 别名]
 def buildQgsMultipolygon(self,polygon):
     '''
     Construct QgsMultiPolygon from matplotlib version
     '''
     mpoly=[]
     invalid=0
     for path in polygon.get_paths():
         path.should_simplify = False
         poly = path.to_polygons()
         if len(poly) < 1:
             continue
         if len(poly[0]) < 3:
             # Have had one vertix polygon from matplotlib!
             continue
         polypts=[[QgsPointXY(x,y) for x,y in p]
              for p in poly if len(p) > 3 ]
         mpoly.append(polypts)
     geom = None
     if len(mpoly) > 0:
         geom=QgsGeometry.fromMultiPolygonXY(mpoly)
         geom=geom.makeValid()
     return geom
开发者ID:ccrook,项目名称:QGIS-Contour-Plugin,代码行数:24,代码来源:ContourGenerator.py

示例6: enumerate

# 需要导入模块: from qgis.core import QgsGeometry [as 别名]
# 或者: from qgis.core.QgsGeometry import fromMultiPolygonXY [as 别名]
    feedback.pushInfo("'To keep' value has been modified to be at least 1.")
    To_keep = 1

count = Polygons.featureCount()
(sink, Biggest_parts) = self.parameterAsSink(parameters, 'Biggest parts', context,
                                             Polygons.fields(), QgsWkbTypes.MultiPolygon, Polygons.sourceCrs())


for n, feat in enumerate(Polygons.getFeatures()):
    if feedback.isCanceled():
        break
    feedback.setProgress(int(100 * n / count))

    geom = feat.geometry()
    if geom.isMultipart():
        features = feat
        geoms = geom.asGeometryCollection()
        geomarea = [(i, geoms[i].area()) for i in range(len(geoms))]
        geomarea.sort(key=itemgetter(1))
        if To_keep == 1:
            features.setGeometry(geoms[geomarea[-1][0]])
        elif To_keep > len(geoms):
            features.setGeometry(geom)
        else:
            features.setGeometry(geom)
            geomres = [geoms[i].asPolygon() for i, a in geomarea[-1 * To_keep:]]
            features.setGeometry(QgsGeometry.fromMultiPolygonXY(geomres))
        sink.addFeature(features)
    else:
        sink.addFeature(feat)
开发者ID:enzogis,项目名称:QGIS,代码行数:32,代码来源:Keep_n_biggest_parts.py


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