主要内容

创建和显示多边形

多边形表示覆盖区域的地理对象,如大陆、岛屿和湖泊。它们可能包含孔洞或多个区域。创建一个多边形,列出定义边界而不相交的顶点。顶点的顺序决定了填充多边形的哪些部分。顺时针和逆时针列出外部边界和内部边界,这样多边形的内部总是在边界的右边。

有孔的多边形。箭头表示顶点的顺序。

简单多边形

显示一个简单的多边形,一个区域,没有洞。首先,按顺时针顺序列出它的顶点。通过重复列表末尾的第一个顶点来关闭多边形。

X1 = [0 3 4 1 0];Y1 = [0 1 3 2 0];

控件将顶点显示为一个多边形mapshow通过指定函数“DisplayType”作为“多边形”

mapshow (x1, y1,“DisplayType”“多边形”

图中包含一个坐标轴。坐标轴包含一个patch类型的对象。

有洞或多个区域的多边形

用分隔边界来定义具有多个区域或孔的多边形值。顺时针顺序列出外部边界的顶点,逆时针顺序列出内部边界的顶点。

x2 = [0 1 8 6 0 NaN 1 4 2 1 NaN 5 6 7 3 5];y2 = [0 6 8 2 0 NaN 1 3 5 1 NaN 3 5 7 6 3];

这些向量定义了一个具有一个外部边界和两个内部边界的多边形。边界使用分隔值。方法验证边界的顶点顺序ispolycw函数。的ispolycw当顶点按顺时针顺序排列时,函数返回1。

ispolycw (x2, y2)
ans =1 x3逻辑阵列1 0 0

显示多边形。内部边界在多边形内创建洞。

图mapshow (x2, y2),“DisplayType”“多边形”

图中包含一个坐标轴。坐标轴包含一个patch类型的对象。

现在,列出具有两个非相交区域的多边形的顶点。其中一个区域有个洞。使用验证边界的顶点顺序ispolycw

x3 = [0 1 5 6 0 NaN 1 5 4 2 1 NaN 7 6 8 8 7];y3 = [0 6 7 2 0 NaN 1 3 6 5 1 NaN 4 7 8 7 4];ispolycw (x3, y3)
ans =1 x3逻辑阵列1 0 1

显示多边形。外部边界创造了两个不相交的区域,内部边界创造了一个洞。

图mapshow (x3, y3,“DisplayType”“多边形”

图中包含一个坐标轴。坐标轴包含一个patch类型的对象。

使用地理坐标的多边形

通常,在小区域上定义多边形并调用函数时,可以使用地理坐标ispolycw.这是正确的,除了在多边形包裹一个极点或跨越反子午线的情况下。

例如,使用带有地理坐标的多边形在地图上显示密歇根州。首先,读取状态边界的顶点。

州= shaperead (“usastatehi”“UseGeoCoords”,真正的);密歇根=州(22);lat = michigan.Lat;朗= michigan.Lon;

计算边界并验证它们的顶点顺序。使用ispolycw对于地理坐标,将经度向量列为第一个参数,纬度向量列为第二个参数。1乘6的输出数组意味着有6个边界。数组的每个元素都是1,这意味着每个边界都是它自己区域的外部边界。

ispolycw(经度、纬度)
ans =1 x6逻辑阵列1 1 1 1 1

在地图上显示多边形geoshow函数,指定“DisplayType”作为“多边形”

usamap“密歇根”geoshow(纬度,经度,“DisplayType”“多边形”

将多边形裁剪到皇家岛国家公园的纬度和经度限制maptrimp函数。在新地图上显示裁剪的多边形。

Latlim = [47.8 48.2];Lonlim = [-89.3 -88.4];[奈,lonT] = maptrimp(纬度、经度、latlim lonlim);图usamap (latlim lonlim) geoshow (lonT奈,“DisplayType”“多边形”

使用地理坐标填充多边形区域

当你在地球上显示一个多边形时,边界将地球分成两个区域。这两个区域的面积都是有限的,所以都可以是多边形的内部区域。

因此,当您使用geoshow函数时,填充区域可能与您预期的不同。通过颠倒顶点的顺序来改变填充的区域。

例如,在世界地图上显示一个小多边形。

Lat2 = [0 10 40 30 0];Lon2 = [0 20 30 10 0];图worldmap (“世界”) geoshow (lat2 lon2,“DisplayType”“多边形”

多边形的外部区域被填充。通过应用翻转函数的坐标向量。然后,再次显示多边形。

lat2f =翻转(lat2);lon2f =翻转(lon2);图worldmap (“世界”) geoshow (lat2f lon2f,“DisplayType”“多边形”

多边形的内部区域被填充。

另请参阅

||||