GIS操作:Mutipolygon与Polygon的转换

这篇具有很好参考价值的文章主要介绍了GIS操作:Mutipolygon与Polygon的转换。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

概念

Polygon

多边形是由1个外部边界和0个或多个内部边界定义的平面曲面。每个内部边界在多边形中定义一个孔。外部边界LinearRing定义曲面的“顶部”,即外部边界看起来沿逆时针方向穿过边界的曲面一侧。内部LinearRings将具有相反的方向,从“顶部”观察时显示为顺时针方向。多边形(定义有效多边形的规则)的定义如下:多边形在拓扑上是闭合的;

  • 多边形的边界由一组LinearRings组成,这些LinearRing构成了多边形的外部和内部边界;
  • 边界中没有两个环相交,多边形边界中的环可以在一点相交,但只能作为切线相交;
  • 多边形可能没有剪切线、尖峰或穿孔;
  • 每个多边形的内部都是一个连接的点集;
  • 具有1个或多个孔的多边形的外部未连接。每个孔都定义了外部的连接构件。

以下是多边形的一些示例:
sJwMB.png

MultiPolygon

“多重多边形”是一种元素为“多边形”的“多重曲面”。MultiPolygons的定义如下:

  • 作为MultiPolygon元素的2个多边形的内部可能不会相交;
  • 作为MultiPolygon元素的任何2个多边形的边界可能不会“交叉”,并且可能只在有限数量的点处接触;
  • 多多边形被定义为拓扑上闭合的;
  • MultiPolygon可能没有剪切线、尖峰或穿孔,MultiPolygon是一个规则的闭合点集;
  • 具有多个多边形的“多重多边形”的内部未连接;多多边形内部连接组件的数量等于多多边形中多边形的数量
  • 多多边形的边界是一组闭合曲线(LineStrings),对应于其元素多边形的边界。MultiPolygon边界中的每条曲线正好位于1个元素Polygon的边界中,而元素Polygon边界上的每条曲线都位于MultiPolygon的边缘中。

以下是“多重多边形”的一些示例:
8nFVN.png

载体

shapefile

Esri的Shapefile中并没有区分Polygon与MultiPolygon,统一称之为Polygon(MultiPolygon)在ArcMap实际操作过程中,多边形以顺时针顺序创建,多边形内部的洞以逆时针创建,洞内部的岛以顺时针顺序创建。
image.png

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)) image.png
{ “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)) image.png
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))) image.png
{ “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))) image.png

此部分示例参考 开源GIS(十九)——WKT、WKB与GeoJSON

转换

操作:ArcMap将shp文件中的MultiPolygon转为Polygon

大概执行过程如下:

  • 工具箱-Data Management Tools-要素-多部件至单部件
  • 选择要转换的图层,执行工具,输出到新的Shp文件中

image.png

**转换后值得注意的几个点:
**(1)原本的单个要素仍为单个要素;
(2)多个Polygon组成的MultiPolygon要素会被拆分成为两个要素;
image.pngimage.png
(3)一个不带洞和一个带洞组成的MultiPolygon要素会被拆分为两个要素;
image.pngimage.pngimage.png
(4)原本仅有一个洞组成的要素依然保持不变;
image.pngimage.png
(5)一个带洞且洞中含有岛的MultiPolygon,会以带洞本身要素执行拆分。
image.pngimage.pngimage.png

操作: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

通过QGIS(便捷,推荐)
(1)Browser中找到目标geojson文件加载到地图中;
(2)Layers - 右键 - Open Attribute Table - 双击记录选中要素
image.png
(3)工具箱 - Vector geometry - Multipart to singleparts - 填入参数 - 执行
image.png
(4)执行结果
image.png
image.png文章来源地址https://www.toymoban.com/news/detail-473749.html

到了这里,关于GIS操作:Mutipolygon与Polygon的转换的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 3DS MAX三维建模平面基础与初级多边形(可编辑多边形的讲解)

            3DS MAX三维建模平面基础与初级多边形(可编辑多边形的讲解)         欢迎大家来学习3DS MAX教程,在这里先说一下研究好3ds Max一定要一边看教程一边要自己学的操作才能更快的进步,预祝大家学习顺利。         这篇是第四篇关于3ds Max的文章了,基于上一

    2024年04月12日
    浏览(76)
  • 基于C++ 的OpenCV绘制多边形,多边形多条边用不用的颜色绘制

    使用基于C++的OpenCV库来绘制多边形,并且为多边形的不同边使用不同的颜色,可以按照以下步骤进行操作: 首先,确保你已经安装了OpenCV库并配置好了你的开发环境。 导入必要的头文件: 创建一个空白的图像,然后绘制多边形,并为每条边选择不同的颜色: 在这个示例中,

    2024年02月13日
    浏览(60)
  • 多边形边的插值

    算法描述及提问: 给定一个最小长度,对多边形的每一条边不断的对半插值,使得插值后的每一条边都要不大于最小长度。 测试ChatGPT - 中文版 VSCode插件。 显然是错误的。 正确的结果: 使用ChatGPT-中文版 VSCode,基本可以写出一个简单的算法,但是正确与否还需要个人Debug及

    2024年02月12日
    浏览(73)
  • 计算两个多边形的交集

    已知两个多边形Polygon1和Polygon2,分别由点集C1={P1,P2,...,Pm}和C2={Q1,Q2,...,Qn}表示,求这两个多边形的交集。 两个多边形相交后,其顶点要么是两个多边形边的交点,要么是在多边形内部的点。 计算两个多边形每条边之间的交点。 计算包含在多边形内部的点。 将交点和多边形内

    2024年02月12日
    浏览(71)
  • 使用OpenCV的函数polylines()绘制多条相连的线段和多边形;使用函数fillPoly()绘制带填充效果的多边形

    函数polylines()可用来根据点集绘制多条相连的线段,也可用来绘制多边形。 函数polylines()有两种原型,这里只向大家介绍比较常用的那种原型。 函数polylines()的C++原型如下: 函数polylines()的Python原型如下: 函数polylines()的参数意义如下: img—绘制的多条相连线段或多边形所在

    2024年02月04日
    浏览(71)
  • C#凹多边形求内心

    在计算凹多边形内心时,一种常见的方法是使用三角剖分和重心法。您可以按照以下步骤进行: 将凹多边形进行三角剖分,得到一系列三角形。 对每个三角形计算其重心,重心是三个顶点的平均值。 将所有三角形的重心进行平均,得到凹多边形的内心。 以下是一个简单的示

    2024年01月25日
    浏览(67)
  • CAD泰森多边形框架3D插件

    CAD泰森多边形框架3D插件可用于在AutoCAD软件内生成三维Voronoi框架结构实体模型,适用于多孔Voronoi科研论文渲染绘图、Voronoi框架有限元建模、Voronoi空间结构优化等方面的应用。 插件可设置生成的几何尺寸、晶格尺寸及边框直径等信息。 插件可同时生成实体框架及线条框架两

    2024年02月11日
    浏览(55)
  • 利用fabric绘画矩形和多边形

    需求在一张图片上标注矩形和多边形,支持回显; fabric版本:4.6.0; Fabric.js 是一个功能强大且操作简单的 Javascript HTML5 canvas 工具库。 官方文档 参考链接 组件代码drawer.vue createUuid 是为了让每一个图形有自己的id;方便用于获取用户点击的那个图形等操作; defaultRectStyle、d

    2024年02月08日
    浏览(74)
  • opencv 判断点在多边形内外

            基于Python 和 OpenCV 画出多边形,以及判断某个点是不是在多边形内。         函数定义:cv2.pointPolygonTest(contour, pt, measureDist)         函数功能:找到图像里的点和轮廓之间的最短距离. 它返回的距离当点在轮廓外的时候是负值,当点在轮廓内是正值,如果

    2024年02月12日
    浏览(66)
  • 计算两个多边形的最近距离(MATLAB)

            本文意在介绍关于计算两组坐标点的最近距离的简单方法,可用此方法来计算两个多边形的最近距离以及距离最近的两个点。下面展示具体实例。 函数代码         该函数可以比较快速的计算两组坐标点之间的最小距离,并返回相应的坐标。缺点是只能计算整数

    2024年02月08日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包