多边形表示覆盖区域的地理对象,如大陆、岛屿和湖泊。它们可能包含孔洞或多个区域。创建一个多边形,列出定义边界而不相交的顶点。顶点的顺序决定了填充多边形的哪些部分。顺时针和逆时针列出外部边界和内部边界,这样多边形的内部总是在边界的右边。
显示一个简单的多边形,一个区域,没有洞。首先,按顺时针顺序列出它的顶点。通过重复列表末尾的第一个顶点来关闭多边形。
X1 = [0 3 4 1 0];Y1 = [0 1 3 2 0];
控件将顶点显示为一个多边形mapshow
通过指定函数“DisplayType”
作为“多边形”
.
mapshow (x1, y1,“DisplayType”,“多边形”)
用分隔边界来定义具有多个区域或孔的多边形南
值。顺时针顺序列出外部边界的顶点,逆时针顺序列出内部边界的顶点。
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”,“多边形”)
现在,列出具有两个非相交区域的多边形的顶点。其中一个区域有个洞。使用验证边界的顶点顺序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”,“多边形”)
通常,在小区域上定义多边形并调用函数时,可以使用地理坐标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”,“多边形”)
多边形的内部区域被填充。