<div dir="ltr">For a python test script I would like to loop through a MultiPolygon,<div>calculation the areas of the single Polygons, exteriorRing and where they exist the interiorRing and compare the results from another source (spatialite).</div><div><br></div><div>Sample code:</div><div>  test_polygon = test_geom.geometryN(index)</div><div>  self.assertEqual(test_polygon.wkbType(), QgsWKBTypes.Polygon)</div><div>  count_rings=test_polygon.numInteriorRings() </div><div><div>  if (count_rings > 0):</div><div>   polygon_ring_area_sum+=polygon_area</div><div>   exterior_ring = test_polygon.exteriorRing()</div><div>   print('-I-> Polygon[%d] : exteriorRing[%s] isClosed[%d] isRing[%d] '% (index, exterior_ring.geometryType(),exterior_ring.isClosed(),exterior_ring.isRing()))</div><div>   i_rc=exterior_ring.convertTo(QgsWKBTypes.Polygon)</div><div>   exterior_ring_area=round(exterior_ring.area(),6)</div></div><div><br></div><div><div>-I-> Polygon[11] : exteriorRing[LineString] isClosed[1] isRing[1] </div><div>-I-> Polygon[11] : exteriorRing[LineString] exterior_ring_area[0.000000] rc=0</div></div><div><br></div><div>To calculate the area, the geometry must be a Polygon but I have not found a way to do this properly.</div><div><br></div><div>The convertTo() method seems to only change to a Z or M type<br></div><div>- the documentation is a bit vague 'Converts the geometry to a specified type.'</div><div><br></div><div>the next attempt:</div><div>line = QgsGeometry.fromWkt(exterior_ring.asWkt())<br></div><div>exterior_ring_polygon = line.convertToType(QGis.Polygon, False)<br></div><div><br></div><div>also did not bring the desired result (fails when creating 'line').</div><div><br></div><div>Since the returned LineString is closed and a ring, there should be no problem.</div><div><br></div><div>--</div><div>A second question:</div><div><br></div><div>How can the srid of a geometry retrieved from a QgsVectorLayer be determined?</div><div><br></div><div>Mark Johnson</div><div><br></div></div>