polycenter documentation

The polycenter function finds coordinates at the center of the largest section of a polygon. This is similar to the centroid, but ensures the coordinates are in the interior of the polygon (centroids may be outside of a cresecent shape, for example).

Back to Climate Data Tools Contents.



[xc,yc] = polycenter(P)
[xc,yc] = polycenter(S)
[lonc,latc] = polycenter(S)
[xc,yc] = polycenter(x,y)


[xc,yc] = polycenter(P) returns the "center" coordinate(s) xc,yc of any polyshape(s) P.

[xc,yc] = polycenter(S) returns the "center" coordinate(s) xc,yc of each row in the shapefile structure S. This syntax assumes the shapefile structure S contains the fields S.X and S.Y.

[lonc,latc] = polycenter(S) returns the "center" longitude and latitude if the shapefile structure S does not contain S.X or S.Y, but does contain S.Lat and S.Lon.

[xc,yc] = polycenter(x,y) returns the "center" coordinate(s) xc,yc for the inputs coordinates x,y. If x,y are 1d arrays, the outputs xc,yc are scalars. If input x,y are cell arrays, outputs xc,yc will contain a center coordinate for the polygons bound by the arrays in each cell.

Example 1

Start by loading the state outlines (requires Matab's Mapping Toolbox):

S = shaperead('usastatehi','UseGeoCoords',true);

What's wrong with labelling centroids of weird-shaped polygons? Well, the centroid isn't always inside the polygon it describes. Consider the case of Hawaii:

% Convert the outline of Hawaii to a polyshape object:
P = polyshape(S(11).Lon,S(11).Lat);

% Find the centroid:
[xcent,ycent] = centroid(P);

hold on
axis([-160 -154   18.5   22.5])

The polycenter function finds a better center coordinate than the centroid:

[xc,yc] = polycenter(P);


Example 2

Now find the "center" coordinates of all the states, directly from the shapefile structure S:

[lonc,latc] = polycenter(S);

hold on

Author Info

This function is part of the Climate Data Toolbox for Matlab. The function and supporting documentation were written by Kelly Kearney and Chad Greene.