# perimeter

Perimeter of polygon shape in geographic or planar coordinates

Since R2024a

## Syntax

``P = perimeter(shape)``

## Description

example

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

## 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.

## Version History

Introduced in R2024a