当前位置: 首页 > news >正文

在PostGIS中检查孤线(Find isolated lines in PostGIS)

场景

在PostGIS中有一张线要素表,需要检查该表中的孤线,并且进行自动纠正的计算。
其中孤线定义为两端端点都不在任何其他线的顶点上。
本文介绍在PostGIS中的线要素点,通过函数计算指定线要素表中的孤线,并计算最接近的纠偏位置。
In PostGIS, there is a table of line features, and it is necessary to check the orphan lines in this table and perform the calculation for automatic correction. Among them, an orphan line is defined as a line whose both end points are not on the vertices of any other lines. This article introduces the line feature points in PostGIS, and through functions, calculates the orphan lines in the specified line feature table and calculates the closest corrected position. The test data situation is as follows. There are six lines, ABCDEM, distributed as follows:

测试数据情况如下,存在ABCDEM六条线,分布如下:
在这里插入图片描述
其中A和M的分布关系如下:
在这里插入图片描述
ABC在相交处的关系如下:
在这里插入图片描述
CDE的关系如下:
在这里插入图片描述
我们可以直观看出B和D属于孤线。

第一步线进行孤线查找

判断待检查的要素表如果不是线类型的,则直接返回:

execute SELECT EXISTS (SELECT POSITION(''Line'' in ST_GEOMETRYTYPE(GEOM)) FROM ' ||targetTb|| ' LIMIT 1) into _ISPOINTTYPE;-- 如果类型不是点,则不检查if _ISPOINTTYPE = false then return -1;end if;

获取自动修复的容差,如果偏差大于该阈值,则不做自动修复的计算

if EXISTS (SELECT ID FROM PUBLIC.sp_ck_settings WHERE ITEMNAME = 'single_line_tolerance_4_autofix') then execute 'SELECT ITEMVAL FROM PUBLIC.sp_ck_settings WHERE ITEMNAME = ''single_line_tolerance_4_autofix'' AND USERNAME = '  ||  curUserName into _TOLERANCE;if _TOLERANCE is null then execute 'SELECT ITEMVAL FROM PUBLIC.sp_ck_settings WHERE ITEMNAME = ''single_line_tolerance_4_autofix'' AND USERNAME = ''system'' ' 

相关文章:

  • 使用PNP管控制MCU是否需要复位
  • Bytebase 2.18.0 - 支持创建用户组
  • 公众号爆文全攻略:最新推荐机制与实战干货分享
  • java-类和对象
  • HBSL-22Q/K定时限过电流继电器 板前接线 JOSEF约瑟
  • 单实例11.2.0.3迁移到RAC11.2.0.4_使用RMAN 异机恢复
  • Kafka系列之高频面试题
  • cssBFC
  • STM32自己从零开始实操03:输出部分原理图
  • Git命令清单
  • java maven selenium12306 爬虫 包含浏览器驱动
  • yolov10 瑞芯微RKNN、地平线Horizon芯片部署、TensorRT部署,部署工程难度小、模型推理速度快
  • python脚本加入到linux bin 方便用户执行
  • [Algorithm][动态规划][子序列问题][最长递增子序列][摆动序列]详细讲解
  • JDK JRE JVM 三者的关系
  • android 一些 utils
  • egg(89)--egg之redis的发布和订阅
  • Fastjson的基本使用方法大全
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • Meteor的表单提交:Form
  • node入门
  • ReactNativeweexDeviceOne对比
  • Redis字符串类型内部编码剖析
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • 计算机常识 - 收藏集 - 掘金
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • 一份游戏开发学习路线
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • ​数据链路层——流量控制可靠传输机制 ​
  • ​虚拟化系列介绍(十)
  • ​直流电和交流电有什么区别为什么这个时候又要变成直流电呢?交流转换到直流(整流器)直流变交流(逆变器)​
  • # include “ “ 和 # include < >两者的区别
  • #AngularJS#$sce.trustAsResourceUrl
  • (26)4.7 字符函数和字符串函数
  • (C#)获取字符编码的类
  • (C++哈希表01)
  • (阿里云万网)-域名注册购买实名流程
  • (办公)springboot配置aop处理请求.
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (未解决)macOS matplotlib 中文是方框
  • (一一四)第九章编程练习
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • (转)母版页和相对路径
  • .NET 8.0 中有哪些新的变化?
  • .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现
  • .NET Framework 3.5安装教程
  • .net分布式压力测试工具(Beetle.DT)
  • .NET是什么
  • .NET应用UI框架DevExpress XAF v24.1 - 可用性进一步增强
  • .net与java建立WebService再互相调用
  • //usr/lib/libgdal.so.20:对‘sqlite3_column_table_name’未定义的引用
  • @for /l %i in (1,1,10) do md %i 批处理自动建立目录
  • [ C++ ] STL_stack(栈)queue(队列)使用及其重要接口模拟实现