Main Content

perimeter

Perimeter of polygon shape in geographic or planar coordinates

Since R2024a

    Description

    P = perimeter(shape) calculates the perimeter of a polygon shape, which is the sum of the lengths of its boundaries.

    example

    Examples

    collapse all

    Read worldwide land masses into the workspace as a geospatial table. Extract the polygon shapes.

    land = readgeotable("landareas.shp");
    shape = land.Shape
    shape=537×1 geopolyshape array with properties:
                  NumRegions: [537x1 double]
                    NumHoles: [537x1 double]
                    Geometry: "polygon"
        CoordinateSystemType: "geographic"
               GeographicCRS: [1x1 geocrs]
          ⋮
    
    

    Calculate the perimeters of the polygon shapes.

    P = perimeter(shape);

    The units depend on the geographic coordinate reference system (CRS) for the shape. Find the length unit for the geographic CRS. The result indicates that the perimeters are in meters.

    shape.GeographicCRS.Spheroid.LengthUnit
    ans = 
    'meter'
    

    Include the perimeters in the geospatial table by creating a new table variable. Sort the rows of the table in descending order by Perimeter. Then, view the first eight rows of the table by using the head function.

    land.Perimeter = P;
    land = sortrows(land,"Perimeter","descend");
    head(land)
           Shape                  Name               Perimeter 
        ____________    _________________________    __________
    
        geopolyshape    "Africa and Eurasia"         1.4207e+08
        geopolyshape    "North and South America"    9.9316e+07
        geopolyshape    "Antarctica"                 3.0741e+07
        geopolyshape    "Australia"                  1.7029e+07
        geopolyshape    "Greenland"                   1.281e+07
        geopolyshape    "Baffin Island"              9.2117e+06
        geopolyshape    "New Guinea"                 7.2776e+06
        geopolyshape    "Borneo"                     4.9742e+06
    

    Read hydrographic data for Concord, MA into the workspace as a geospatial table. Extract the polygon shapes.

    hydro = readgeotable("concord_hydro_area.shp");
    shape = hydro.Shape
    shape=98×1 mappolyshape array with properties:
                  NumRegions: [98x1 double]
                    NumHoles: [98x1 double]
                    Geometry: "polygon"
        CoordinateSystemType: "planar"
                ProjectedCRS: [1x1 projcrs]
          ⋮
    
    

    Calculate the perimeters of the polygon shapes.

    P = perimeter(shape);

    The units depend on the projected coordinate reference system (CRS) for the shape. Find the length unit for the projected CRS. The result indicates that the perimeters are in meters.

    shape.ProjectedCRS.LengthUnit
    ans = 
    "meter"
    

    Create a new geospatial table from the shape objects and the perimeters. View the first eight rows of the table by using the head function.

    hydro_perimeter = table(shape,P,VariableNames=["Shape","Perimeter"]);
    head(hydro_perimeter)
           Shape        Perimeter
        ____________    _________
    
        mappolyshape     289.22  
        mappolyshape      11264  
        mappolyshape     207.37  
        mappolyshape     117.55  
        mappolyshape     633.93  
        mappolyshape     370.54  
        mappolyshape     3378.7  
        mappolyshape     1650.6  
    

    Input Arguments

    collapse all

    Polygon shape, specified as a geopolyshape object, a mappolyshape object, an array of geopolyshape objects, or an array of mappolyshape objects.

    Output Arguments

    collapse all

    Perimeter, returned as an array. The size of P matches the size of shape.

    The units of P depend on the type of polygon shape.

    • When shape contains geopolyshape objects, the length unit of the reference ellipsoid for the shape determines the units. To find the length unit, get the geocrs object for the shape by querying the GeographicCRS property of the shape object. Then, get the ellipsoid by querying the Spheroid property of the geocrs object. If the ellipsoid is a referenceEllipsoid or referenceSphere object, then query the LengthUnit property of the ellipsoid. For a shape shp, the length unit is shp.GeographicCRS.Spheroid.LengthUnit. If the GeographicCRS property of the object is empty, the function calculates the perimeter using the WGS84 reference ellipsoid and a length unit of meters.

    • When shape contains mappolyshape objects, the length unit of the projected coordinate reference system for the shape determines the units. To find the length unit, get the projcrs object for the shape by querying the ProjectedCRS property of the shape object. Then, query the LengthUnit property of the projcrs object. For a shape shp, the length unit is shp.ProjectedCRS.LengthUnit.

    When shape contains geopolyshape objects, the perimeter function calculates the perimeters using geodesics.

    Tips

    The accuracy of the perimeter function depends on the resolution of the data used to create the polygons. As a result, the function can return different results when you use polygon shapes from different data sets as inputs. This image compares the perimeters of polygon shapes for the state of Florida from two data sets.

    Comparison of polygon shapes and perimeters for the state of Florida. The perimeters of the polygon shapes are 4232 kilometers and 3725 kilometers.

    Version History

    Introduced in R2024a

    See Also

    Functions

    Objects