矢量图斑局部狭长判断和定位局部狭长部分(PostGIS、Java、C#实现)

这篇具有很好参考价值的文章主要介绍了矢量图斑局部狭长判断和定位局部狭长部分(PostGIS、Java、C#实现)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

矢量数据在数据采集过程中由于数据处理导致出现局部狭窄的面状部分,如下图

矢量图斑局部狭长判断和定位局部狭长部分(PostGIS、Java、C#实现)

1. 定义和解决方法

狭长结构是指图斑几何形态上窄而长的部分,符号化后出现图形粘连压盖现象,导致难以在图面上清晰地表达出来。因此,依据地图表达比例尺因素需要对狭长结构进行融解处理。在遥感影像提取的地物图斑中,既存在单个图斑整体上呈现狭长形态,也存在图斑的局部结构呈狭长状分布。针对图斑狭长结构的探测与一致性处理问题已经引起相关学者的注意,并提出了相应的算法模型。例如,艾廷华等人利用约束德劳奈(Delaunay)三角网提取狭长图斑的骨架结构,结合 空间上的全覆盖、无重叠特点,设计了狭长图斑的无缝剖分与一致性融解方法。 相关学者对 狭长图斑提取的骨架线进行修正,优化狭长图斑区 域的剖分结构与融解结果。 江宝得等人运用Delaunay三角网对图斑局部狭长结构进行分析探测,并建立了专门的一致性剖分策略。

1. 历史判断方法

使用图斑的周长/面积<0.5便是狭长图斑

但是上述方法存在一定的问题,没有严谨的数学逻辑,所以存在非常大的漏洞

2. 图形变化消除狭长部分

设:

  • 狭长阈值:图斑中狭长部分的宽度阈值
  • S(原有):原有面状图斑

解:

  • S(内缩): 将S(原有)数据通过Buffer算法内缩狭长阈值/2
  • S(恢复):将S(内缩)外扩狭长阈值/2
  • S(结果):使用S(恢复)擦除S(原有)的面,得到的结果
  • 判断S(结果)的面积是否大于面积阈值>0

3. 解决方法的细节

  1. 不能使用ArcGIS的buffer算法,ArcGIS的buffer算法在拐点处会生成为弧线。
  2. 面积阈值需要做一些调整,由于Buffer算法的特殊性会存在小范围的丢失
  3. S(结果)就是错误结果。

3.1. PostGIS的Buffer函数参数

st_buffer(geometry,5,'endcap=square join=mitre');

具体可以参见笔者博客:PostGIS的Geometry Processing 几何处理_1 ST_Buffer&&ST_BuildArea

4. 解决方法

4.1. PostGIS

  1. 原有图斑
--原始图斑
select st_geomfromgeojson('
{"type":"MultiPolygon","crs":{"type":"name","properties":{"name":"EPSG:4526"}},"coordinates":[[[[38526197.78691587,3946082.078275221],[38526239.096389465,3946081.883067248],[38526238.06191367,3946036.096619079],[38526272.53906836,3946035.789329056],[38526273.51750401,3946081.464537357],[38526318.149973966,3946079.913959388],[38526314.70475503,3945983.071421279],[38526269.72318699,3945985.068052262],[38526271.88954763,3946029.693470535],[38526238.0934658,3946029.695052562],[38526237.20585602,3945985.275129035],[38526191.99821754,3945985.892739444],[38526191.99821754,3945985.892739444],[38526197.78691587,3946082.078275221]]]]}
');

矢量图斑局部狭长判断和定位局部狭长部分(PostGIS、Java、C#实现)

  1. 内缩图斑
--内缩图斑
select st_buffer(st_setsrid(st_geomfromtext  ('
MULTIPOLYGON (((38526197.78691587 3946082.078275221, 38526239.096389465 3946081.883067248, 38526238.06191367 3946036.096619079, 38526272.53906836 3946035.789329056, 38526273.51750401 3946081.464537357, 38526318.149973966 3946079.913959388, 38526314.70475503 3945983.071421279, 38526269.72318699 3945985.068052262, 38526271.88954763 3946029.693470535, 38526238.0934658 3946029.695052562, 38526237.20585602 3945985.275129035, 38526191.99821754 3945985.892739444, 38526191.99821754 3945985.892739444, 38526197.78691587 3946082.078275221)))

'),4526),-5,'endcap=square join=mitre')

矢量图斑局部狭长判断和定位局部狭长部分(PostGIS、Java、C#实现)

  1. 还原图斑
--外扩图斑
select st_buffer(st_setsrid(st_geomfromtext('
MULTIPOLYGON (((38526202.49370748 3946077.055977445, 38526233.9826907 3946076.9071762124, 38526232.94869538 3946031.14199388, 38526233.12135005 3946031.140455033, 38526232.306116015 3945990.34253409, 38526197.30384319 3945990.820722484, 38526202.49370748 3946077.055977445)), ((38526276.946718015 3946030.749845702, 38526277.432169005 3946030.745518946, 38526278.40783909 3946076.291625642, 38526312.97522189 3946075.090719166, 38526309.88725189 3945988.290182704, 38526274.96075535 3945989.840491601, 38526276.946718015 3946030.749845702)))
'),4526),5,'endcap=square join=mitre');

矢量图斑局部狭长判断和定位局部狭长部分(PostGIS、Java、C#实现)

  1. 结果图斑
select ST_MakeValid(ST_Difference(st_setsrid(st_geomfromtext  ('
MULTIPOLYGON (((38526197.78691587 3946082.078275221, 38526239.096389465 3946081.883067248, 38526238.06191367 3946036.096619079, 38526272.53906836 3946035.789329056, 38526273.51750401 3946081.464537357, 38526318.149973966 3946079.913959388, 38526314.70475503 3945983.071421279, 38526269.72318699 3945985.068052262, 38526271.88954763 3946029.693470535, 38526238.0934658 3946029.695052562, 38526237.20585602 3945985.275129035, 38526191.99821754 3945985.892739444, 38526191.99821754 3945985.892739444, 38526197.78691587 3946082.078275221)))
'),4526),st_setsrid(st_geomfromtext  ('
MULTIPOLYGON (((38526272.18562671 3946035.79247923, 38526272.53906836 3946035.7893290548, 38526273.51750401 3946081.464537357, 38526318.149973966 3946079.913959388, 38526314.70475503 3945983.071421279, 38526269.72318699 3945985.068052262, 38526272.18562671 3946035.79247923)), ((38526197.78691587 3946082.078275221, 38526239.096389465 3946081.883067248, 38526238.06191367 3946036.096619083, 38526238.221355066 3946036.0951980045, 38526237.20585602 3945985.2751290346, 38526191.99821754 3945985.892739444, 38526197.78691587 3946082.078275221)))
'),4526)))

矢量图斑局部狭长判断和定位局部狭长部分(PostGIS、Java、C#实现)

4.2. Java解决方案

  1. Buffer算法

使用Java中JTS的算法,其中有部分可以实现上述Buffer效果

            bufferDistance=-5
            BufferParameters bufferParameters = new BufferParameters();  
            bufferParameters.setEndCapStyle(BufferParameters.CAP_SQUARE);  
            bufferParameters.setJoinStyle(BufferParameters.JOIN_MITRE);  
            bufferParameters.setMitreLimit(8.0);  
            bufferParameters.setQuadrantSegments(8);  
            BufferOp bufferOp = new BufferOp(geometry, bufferParameters);  
            Geometry resultGeometry = bufferOp.getResultGeometry(bufferDistance);    

  1. 图形计算使用JTS算法即可
序号 关系名称 关系说明 JTS接口
1 相等(Equals): 几何形状拓扑上相等。 equals(geometry)
2 脱节(Disjoint): 几何形状没有共有的点。 disjoint(geometry)
3 相交(Intersects): 几何形状至少有一个共有点(区别于脱节) intersects(geometry)
4 接触(Touches): 几何形状有至少一个公共的边界点,但是没有内部点。 disjoint(geometry)
5 交叉(Crosses): 几何形状共享一些但不是所有的内部点。 crosses(geometry)
6 内含(Within): 几何形状A的线都在几何形状B内部。 within(geometry)
7 包含(Contains): 几何形状B的线都在几何形状A内部(区别于内含) contains(geometry)
8 重叠(Overlaps): 几何形状共享一部分但不是所有的公共点,而且相交处有他们自己相同的区域。 overlaps(geometry)

4.3. C#中的解决方法

使用JTS的C#版本的NTS就可以。文章来源地址https://www.toymoban.com/news/detail-422333.html

到了这里,关于矢量图斑局部狭长判断和定位局部狭长部分(PostGIS、Java、C#实现)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 全新CorelDRAW2023最新版矢量图软件功能简介

    CorelDRAW2023简介 :设计绘画 CorelDraw 是一个绘图与排版的软件,它广泛地应用于商标设计、标志制作、模型绘制、插图描画、排版及分色输出等诸多领域。 作为一个强大的绘图软件,它被喜爱的程度可用下面的事实说明:用作商业设计和美术设计的PC机几乎都安装了CorelDraw!

    2023年04月09日
    浏览(44)
  • uni-app引用外部图标库(阿里矢量图)

    作为前端程序员,nui-app是必备的,但是有时候内置的图标,组件又不完全满足,这里就可以引进外部图标,这里引用的是阿里矢量图标 第一步,在项目目录中新建文件夹,如图 第二步,登上阿里矢量图官网,将自己需要的图片先加入购物车,再点击右上角购物车    第三部

    2024年02月14日
    浏览(55)
  • Python基于Excel生成矢量图层及属性表信息:ArcPy

      本文介绍基于 Python 中 ArcPy 模块,读取 Excel 表格数据并生成带有 属性表 的 矢量要素图层 ,同时配置该图层的 坐标系 的方法。   首先,我们来明确一下本文所需实现的需求。   现有一个记录 北京市部分PM2.5浓度监测站点 信息的 Excel 表格数据,格式为 .xls ;文件

    2024年03月20日
    浏览(61)
  • WPF-UI HandyControl 控件简单实战+IconPacks矢量图导入

    因为HandyControl 的功能非常的丰富,我打算完整的了解一下HandyControl 整个控件的基本使用,而且我的网易云WPF项目也打算用UserControl 进行重构 WPF-UI HandyControl 简单介绍 HandyControl Visual Studio 插件 HandyControl Github地址 HandyControl 官方中文文档 HandyControl 实战Gitee仓库 我们下载了Han

    2024年02月02日
    浏览(58)
  • arcgis 栅格数据处理2——栅格转地级市(栅格转矢量图)

    选中“自定义”中的“扩展模块” 在弹出的模块中选中能选的模块,此处需要选择“spatial analysis”以进行下一步分析 选中并输出栅格 注意是否需要“简化面” 按照需求选择平均值,或者总和等 conversion tools ——表转excel

    2024年03月11日
    浏览(61)
  • 将Matlab图窗中的可视化保存为背景透明的矢量图

    将matlab绘制的结果复制为矢量图时,去除背景的操作如下: 先打开/绘制图形窗口(不要关闭) 在命令行终端输入 axis off 关闭坐标系 继续在命令行终端分别输入: ax = gca; copygraphics(ax,\\\'ContentType\\\',\\\'vector\\\',\\\'BackgroundColor\\\',\\\'none\\\'); 此时,背景透明的矢量图就保存在系统 剪贴板 上了,详

    2024年01月21日
    浏览(45)
  • Latex | 使用MATLAB生成.eps矢量图并导入Latex中的方法

    用Latex时写paper时,要导入MATLAB生成的图进去 (1)在MATLAB生成图片的窗口中,导出.eps矢量图 (2)把图上传到overleaf的目录 (3)在文中添加相应代码 (1)MATLAB生成图像后,生成点击“文件”-“导出设置(R)” (2)参数我这里是选择了默认,再点击右侧栏的“导出” (3)

    2024年02月15日
    浏览(43)
  • 优化MATLAB中quiver函数绘制箭头图或矢量图(1)-MATLAB开发

    Matlab的基本数据单位是矩阵,利用Matlab可以较方便得绘制向量分布图,比如空气流的采样数据;函数的梯度;曲面的法线向量等等。Matlab自带的quiver和quiver3函数可以满足这一需求,但是箭头的箭型较为简单,这里主要目的即是进一步绘制更好看的矢量图。 Matlab中自带的quiv

    2023年04月21日
    浏览(78)
  • draw.io导出矢量图到word报错text is not svg - cannot display

    先参考https://blog.csdn.net/a625750076/article/details/126384831 如果不行,可能是转存的问题 解决方法:直接在draw.io上操作 第一步 第二步 然后再word中粘贴,依旧是矢量图哦!

    2024年02月12日
    浏览(46)
  • 怎么把word里面的彩色图转化为灰度图,直接在word里面操作,无需转其他软件,超简单!(位图和矢量图都可以)

    Microsoft Office Word是微软公司的一个文字处理器应用程序。它最初是由Richard Brodie为了运行DOS的IBM计算机而在1983年编写的。随后的版本可运行于Apple Macintosh (1984年)、SCO UNIX和Microsoft Windows (1989年),并成为了Microsoft Office的一部分。 Word给用户提供了用于创建专业而优雅的文档工具

    2024年02月05日
    浏览(148)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包