概念
Polygon
多边形是由1个外部边界和0个或多个内部边界定义的平面曲面。每个内部边界在多边形中定义一个孔。外部边界LinearRing定义曲面的“顶部”,即外部边界看起来沿逆时针方向穿过边界的曲面一侧。内部LinearRings将具有相反的方向,从“顶部”观察时显示为顺时针方向。多边形(定义有效多边形的规则)的定义如下:多边形在拓扑上是闭合的;
- 多边形的边界由一组LinearRings组成,这些LinearRing构成了多边形的外部和内部边界;
- 边界中没有两个环相交,多边形边界中的环可以在一点相交,但只能作为切线相交;
- 多边形可能没有剪切线、尖峰或穿孔;
- 每个多边形的内部都是一个连接的点集;
- 具有1个或多个孔的多边形的外部未连接。每个孔都定义了外部的连接构件。
以下是多边形的一些示例:
MultiPolygon
“多重多边形”是一种元素为“多边形”的“多重曲面”。MultiPolygons的定义如下:
- 作为MultiPolygon元素的2个多边形的内部可能不会相交;
- 作为MultiPolygon元素的任何2个多边形的边界可能不会“交叉”,并且可能只在有限数量的点处接触;
- 多多边形被定义为拓扑上闭合的;
- MultiPolygon可能没有剪切线、尖峰或穿孔,MultiPolygon是一个规则的闭合点集;
- 具有多个多边形的“多重多边形”的内部未连接;多多边形内部连接组件的数量等于多多边形中多边形的数量
- 多多边形的边界是一组闭合曲线(LineStrings),对应于其元素多边形的边界。MultiPolygon边界中的每条曲线正好位于1个元素Polygon的边界中,而元素Polygon边界上的每条曲线都位于MultiPolygon的边缘中。
以下是“多重多边形”的一些示例:
载体
shapefile
Esri的Shapefile中并没有区分Polygon与MultiPolygon,统一称之为Polygon(MultiPolygon)在ArcMap实际操作过程中,多边形以顺时针顺序创建,多边形内部的洞以逆时针创建,洞内部的岛以顺时针顺序创建。
WKT与GeoJson
Type | GeoJson | WKT | 效果(geojson.io) |
---|---|---|---|
Polygon | { “type”: “Polygon”, “coordinates”: [ [[30, 10], [40, 40], [20, 40], [10, 20], [30, 10]] ] } | POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10)) | |
{ “type”: “Polygon”, “coordinates”: [ [[35, 10], [45, 45], [15, 40], [10, 20], [35, 10]], [[20, 30], [35, 35], [30, 20], [20, 30]] ] } | POLYGON ((35 10, 45 45, 15 40, 10 20, 35 10),(20 30, 35 35, 30 20, 20 30)) | ||
MultiPolygon | { “type”: “MultiPolygon”, “coordinates”: [ [ [[30, 20], [45, 40], [10, 40], [30, 20]] ], [ [[15, 5], [40, 10], [10, 20], [5, 10], [15, 5]] ] ] } | MULTIPOLYGON (((30 20, 45 40, 10 40, 30 20)),((15 5, 40 10, 10 20, 5 10, 15 5))) | |
{ “type”: “MultiPolygon”, “coordinates”: [ [ [[40, 40], [20, 45], [45, 30], [40, 40]] ], [ [[20, 35], [10, 30], [10, 10], [30, 5], [45, 20], [20, 35]], [[30, 20], [20, 15], [20, 25], [30, 20]] ] ] } | MULTIPOLYGON (((40 40, 20 45, 45 30, 40 40)),((20 35, 10 30, 10 10, 30 5, 45 20, 20 35),(30 20, 20 15, 20 25, 30 20))) |
此部分示例参考 开源GIS(十九)——WKT、WKB与GeoJSON
转换
操作:ArcMap将shp文件中的MultiPolygon转为Polygon
大概执行过程如下:
- 工具箱-Data Management Tools-要素-多部件至单部件
- 选择要转换的图层,执行工具,输出到新的Shp文件中
**转换后值得注意的几个点:
**(1)原本的单个要素仍为单个要素;
(2)多个Polygon组成的MultiPolygon要素会被拆分成为两个要素;
(3)一个不带洞和一个带洞组成的MultiPolygon要素会被拆分为两个要素;
(4)原本仅有一个洞组成的要素依然保持不变;
(5)一个带洞且洞中含有岛的MultiPolygon,会以带洞本身要素执行拆分。
操作:GeoJson-MultiPolygon转为Polygon
- **情况1:**每个几何类型为MultiPolygon的Feature并不存在多个Polygon的时候
这种情况下只需要修改geometry.type从“MultiPolygon”到“Polygon”,然后将geometry.coordinate对应的第一级[]标签删除即可。
- **情况2:**几何类型为MultiPolygon的Feature存在多个Polygon的时候
这种情况举一个例子,比如我们具有一份区域建筑的GeoJson数据,其中包含有多个要素,每个要素代表一项建筑物平面分布,其中每个要素都具有“建筑名称”的属性;其中有一个要素,代表停车场,其几何类型为MultiPolygon,这个MultiPolygon中具有多个Polygon,代表一个个的停车位。假设我们的需求是根据这份GeoJson文件提取出区域停车场车位分布数据,每一个车位独立成为要素。大概操作流程如下:
**通过ArcMap
**(1)处理原始GeoJson文件,仅保留要素集合中的“停车场”要素;
(2)ArcMap,工具箱 - Convention Tools - Json - Json转要素,转换成shp文件(停车场.shp)
(3)ArcMap,工具箱 - Data Management Tools - 要素 - 多部件至单部件,选择停车场.shp,输出为停车场_single.shp
(4)ArcMap,工具箱 - Convention Tools - Json - 要素转Json,转成GeoJson文件,此时查看其几何类型已变成Polygon文章来源:https://www.toymoban.com/news/detail-473749.html
通过QGIS(便捷,推荐)
(1)Browser中找到目标geojson文件加载到地图中;
(2)Layers - 右键 - Open Attribute Table - 双击记录选中要素
(3)工具箱 - Vector geometry - Multipart to singleparts - 填入参数 - 执行
(4)执行结果
文章来源地址https://www.toymoban.com/news/detail-473749.html
到了这里,关于GIS操作:Mutipolygon与Polygon的转换的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!