主要内容

本页采用了机器翻译。点击此处可查看英文原文。

geopolyshape

多边形在地理坐标系中

自 R2021b 起

说明

geopolyshape 对象表示地理坐标系中的多边形或多重边形。多边形是由闭合曲线围成的区域,可包含内部孔洞。多边形是指包含多个不相交区域的单个多边形形状。

多边形和多边形集合可用于定义兴趣面 (AOI)。有关 AOI 的更多信息,请参阅Define Areas of Interest

要在平面坐标系中表示多边形或多重边形,请改用 mappolyshape 对象。

创建对象

要创建 geopolyshape 对象,请执行以下任一操作:

  • 使用 readgeotable 函数将地理坐标系的多边形数据导入为地理空间表,然后查询该表的 Shape 变量。

  • 使用 aoiquad 函数创建一个四边形 AOI。

  • 使用 aoicircle 函数创建圆形 AOI。

  • 使用 geopolyshape 函数(详见此处说明)。

描述

shape = geopolyshape(lat,lon) 创建一个 geopolyshape 对象或由 geopolyshape 对象组成的数组,其顶点位于指定的纬度和经度坐标处。latlon 的大小与 geopolyshape 对象数组 shape 的大小相匹配。

geopolyshape 函数假定 latlon 定义的多边形具有有效的拓扑结构。当满足以下条件时,多边形具有有效的拓扑结构:

  • 区域内部区域位于右侧,当您从顶点到顶点追踪边界时。

  • 边界不存在自相交的情况。

通常,具有有效拓扑结构的多边形的外边界顶点按顺时针顺序排列,而内部孔洞的顶点则按逆时针顺序排列。

示例

输入参量

全部展开

纬度坐标,指定为数值向量或数值向量的元胞数组。

  • 通过指定向量(例如 [39 45 19 39])创建多边形。

  • 通过指定矢量并包含孔洞与区域边界之间的间断点作为 NaN 值(例如 [37 46 31 20 37 NaN 45 49 35 32 45 NaN 35 40 42 35]),创建带孔的多边形或多边形集合。

  • 通过指定一个向量元胞数组(例如 {[37 46 31 20 37],[45 49 35 32 45 NaN 35 40 42 35]})来创建多边形和多边形数组。

lat 中的 NaN 值必须与lon 中的 NaN 值对应。

lat 的大小必须与 lon 的大小相匹配。对于元胞数组,lat 中每个元胞的向量大小必须与 lon 中对应元胞的向量大小相匹配。

数据类型: double | cell

经度坐标,指定为数值向量或数值向量的元胞数组。

  • 通过指定向量(例如 [-113 -49 -100 -113])创建多边形。

  • 通过指定矢量并包含孔洞与区域边界之间的间断点作为 NaN 值(例如 [69 90 105 79 69 NaN 6 52 43 14 6 NaN 18 32 22 18]),创建带孔的多边形或多边形集合。

  • 通过指定一个向量元胞数组(例如 {[69 90 105 79 69],[6 52 43 14 6 NaN 18 32 22 18]})来创建多边形和多边形数组。

lat 中的 NaN 值必须与 lon 中的 NaN 值对应。

lat 的大小必须与 lon 的大小相匹配。对于元胞数组,lat 中每个元胞的向量大小必须与 lon 中对应元胞的向量大小相匹配。

数据类型: double | cell

属性

全部展开

此 属性 为只读。

多边形区域的数量,以非负整数的数组形式返回。区域是指一个连通的区域,使得该区域内的任意两点均可通过完全位于该区域内的路径相连。区域可能包含孔洞。

对于一个 geopolyshape 标量,当 geopolyshape 对象表示单个多边形时,NumRegions 的值为 1;当该对象表示多边形集合时,其值大于 1

对于一个 geopolyshape 数组,NumRegions 的大小与该数组的大小相匹配。

数据类型: double

此 属性 为只读。

多边形或多边形集合的孔洞数量,以非负整数数组形式返回。

对于一个 geopolyshape 数组,NumHoles 的大小与该数组的大小相匹配。

数据类型: double

此 属性 为只读。

几何类型,返回值为 "polygon"

数据类型: string

此 属性 为只读。

坐标系类型,返回值为 "geographic"

数据类型: string

地理坐标参考系 (CRS),指定为 geocrs 对象。地理坐标参考系由基准面(包括其椭球体)、本初子午线和角度测量单位构成。

对象函数

全部展开

geoplotPlot points, lines, and polygons on map
boundsBounds of shape in geographic or planar coordinates
isinteriorQuery geographic or planar points in polygon
ismultipointDetermine which array elements are multipoint shapes
geoclipClip geographic shape to latitude-longitude limits or polygon
bufferBuffer shape in geographic or planar coordinates
areaArea of polygon shape in geographic or planar coordinates
perimeterPerimeter of polygon shape in geographic or planar coordinates
intersectIntersection of shapes in geographic or planar coordinates
unionUnion of shapes in geographic or planar coordinates
subtractDifference of shapes in geographic or planar coordinates
xorExclusive OR of shapes in geographic or planar coordinates

示例

全部折叠

导入包含全球陆地区域的 shapefile 作为地理空间表。shapefile 文件使用多边形表示陆地区域。

GT = readgeotable("landareas.shp");

创建一个子表,其中包含代表非洲、欧洲和亚洲的多边形。通过查询表的 Shape 变量获取多边形信息。

row = GT.Name == "Africa and Eurasia";
rowGT = GT(row,:);
rowGT.Shape
ans = 
  geopolyshape with properties:

              NumRegions: 2
                NumHoles: 22
                Geometry: "polygon"
    CoordinateSystemType: "geographic"
           GeographicCRS: [1×1 geocrs]

在世界地图上显示多边形。

worldmap([-45 80],[-25 195])
geoshow(rowGT)

Figure contains an axes object. The hidden axes object contains 12 objects of type patch, line, text.

创建一个无孔洞的独立多边形作为 geopolyshape 标量。指定地理坐标参考系为 1984 年世界大地测量系统,其 EPSG 代码为 4326

lat = [39 45 19 39];
lon = [-113 -49 -100 -113];
polyshp = geopolyshape(lat,lon);

g = geocrs(4326);
polyshp.GeographicCRS = g
polyshp = 
  geopolyshape with properties:

              NumRegions: 1
                NumHoles: 0
                Geometry: "polygon"
    CoordinateSystemType: "geographic"
           GeographicCRS: [1×1 geocrs]

创建一个包含两个区域和一个孔洞的多边形,作为 geopolyshape 标量。

lat = [37 46 31 20 37 NaN 45 49 35 32 45 NaN 35 40 42 35];
lon = [69 90 105 79 69 NaN 6 52 43 14 6 NaN 18 32 22 18];
multipolygon = geopolyshape(lat,lon);
multipolygon.GeographicCRS = g
multipolygon = 
  geopolyshape with properties:

              NumRegions: 2
                NumHoles: 1
                Geometry: "polygon"
    CoordinateSystemType: "geographic"
           GeographicCRS: [1×1 geocrs]

创建两个独立的多边形,构成一个 1×2 的 geopolyshape 数组。第二个多边形包含一个孔洞。

lat = {[37 46 31 20 37],[45 49 35 32 45 NaN 35 40 42 35]};
lon = {[69 90 105 79 69],[6 52 43 14 6 NaN 18 32 22 18]};
polyArray = geopolyshape(lat,lon);
polyArray.GeographicCRS = g
polyArray=1×2 geopolyshape array with properties:
              NumRegions: [1 1]
                NumHoles: [0 1]
                Geometry: "polygon"
    CoordinateSystemType: "geographic"
           GeographicCRS: [1×1 geocrs]

版本历史记录

在 R2021b 中推出