官术网_书友最值得收藏!

Calculating the area of a polygon

This recipe simply measures the area of a polygon.

Getting ready

For this recipe, we'll use a single-feature polygon shapefile, which you can download from https://geospatialpython.googlecode.com/files/Mississippi.zip

Unzip the shapefile and put it in a directory named qgis_data/ms within your root or home directory.

How to do it...

Perform the following steps to measure the area of a large polygon:

  1. First, import the QGIS constants library, as follows:
    from qgis.core import QGis
    
  2. Load the layer:
    lyr = QgsVectorLayer("/qgis_data/ms/mississippi.shp", "Mississippi", "ogr")
    
  3. Access the layer's features:
    fts = lyr.getFeatures()
    
  4. Get the boundary feature:
    boundary = fts.next()
    
  5. Create the measurement object instance:
    d = QgsDistanceArea()
    
  6. Pass the polygon list to the measureArea() method:
    m = d.measurePolygon(boundary.geometry().asPolygon()[0])
    
  7. Convert the measurement from decimal degrees to miles:
    d.convertMeasurement(m, QGis.Degrees, QGis.NauticalMiles, True) 
    
  8. Verify that your output looks similar to the following:
    (42955.47889640281, 7)
    

How it works...

PyQIS has no measureArea() method, but it has a measurePolygon() method in the QgsDistanceArea object. The method accepts a list of points. In this case, when we convert the measurement output from decimal degrees to miles, we also specify True in the convertMeasurement() method so that QGIS knows that it is an area calculation. Note that when we get the boundary geometry as a polygon, we use an index of 0, suggesting that there is more than one polygon. A polygon geometry can have inner rings, which are specified as additional polygons. The outermost ring, in this case the only ring, is the first polygon.

主站蜘蛛池模板: 西峡县| 定结县| 仪征市| 铜梁县| 常宁市| 桦甸市| 吉首市| 大丰市| 额尔古纳市| 柞水县| 金塔县| 平果县| 湾仔区| 大连市| 大悟县| 临澧县| 武宁县| 聊城市| 瑞丽市| 江油市| 道孚县| 东方市| 榆树市| 长春市| 陇西县| 惠来县| 塔河县| 武城县| 甘洛县| 宁波市| 焦作市| 黄梅县| 黎城县| 岳阳县| 进贤县| 昭觉县| 个旧市| 太仓市| 芦山县| 永德县| 寿宁县|