Sql的MakeValid与道格拉斯普克算法对比

2024-09-04 12:58

本文主要是介绍Sql的MakeValid与道格拉斯普克算法对比,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Sql Server 的MakeValid

用途

主要用于对不符合地理实例的的空间对象或地理对象进行修正,有时会伴随着类型的变换。

示例

修改前
  • WKT:
    POLYGON ((
    108.624008 22.121124, 108.624001 22.121117, 108.623993 22.121109, 108.623993 22.121098,
    108.623993 22.121084,
    108.624008 22.121075, 108.624016 22.121065, 108.624023 22.121056, 108.624031 22.121046,
    108.624039 22.121035,
    108.624046 22.121023, 108.624054 22.121014, 108.624062 22.121004, 108.624077 22.120998,
    108.624084 22.121,
    108.624092 22.121008, 108.6241 22.121016, 108.624115 22.121021, 108.624123 22.121027,
    108.62413 22.121033,
    108.624146 22.121038, 108.624153 22.121046, 108.624161 22.12105, 108.624168 22.121052,
    108.624176 22.121056,
    108.624184 22.121061, 108.624184 22.121071, 108.624176 22.121077, 108.624168 22.12108,
    108.624161 22.12109,
    108.624153 22.121094, 108.624146 22.121105, 108.62413 22.121115, 108.624123 22.121124,
    108.624123 22.12113,
    108.624115 22.121138, 108.624107 22.121145, 108.6241 22.121155, 108.624092 22.121162,
    108.624084 22.121168,
    108.624069 22.121172, 108.624054 22.121168, 108.624054 22.121159, 108.624046 22.121149,
    108.624039 22.12114,
    108.624023 22.121132, 108.624023 22.121126, 108.624016 22.121124, 108.624016 22.12112,
    108.624008 22.121119,
    108.624008 22.121115, 108.624008 22.121124))
  • 图形显示:
  • 面积:0.31077113673110934 亩
修改后:
  • WKT:
    POLYGON ((
    108.624077000015 22.1209980000276, 108.62408400001 22.1209999999846,
    108.624092000013 22.1210079999873, 108.624100000015 22.12101599999,
    108.624115000013 22.1210210000281,
    108.624123000016 22.1210270000156, 108.624130000011 22.1210330000031,
    108.624146000016 22.1210379999829, 108.624153000012 22.1210459999857,
    108.624161000014 22.1210500000161,
    108.624168000009 22.1210519999731, 108.624176000012 22.1210560000036,
    108.624184000015 22.1210609999835, 108.624184000015 22.1210710000014,
    108.624176000012 22.1210769999889,
    108.624168000009 22.1210800000117, 108.624161000014 22.1210899999714,
    108.624153000012 22.1210940000019, 108.624146000016 22.1211050000275,
    108.624130000011 22.1211149999872,
    108.624123000016 22.1211239999975, 108.624123000016 22.121129999985,
    108.624115000013 22.1211379999877, 108.624107000011 22.1211449999828,
    108.624100000015 22.1211550000007,
    108.624092000013 22.1211619999958, 108.62408400001 22.1211679999833,
    108.624069000012 22.1211720000138, 108.624054000014 22.1211679999833,
    108.624054000014 22.121158999973,
    108.624046000012 22.1211490000132, 108.624039000017 22.1211400000029,
    108.624023000011 22.1211320000002, 108.624023000011 22.1211260000127,
    108.624016000016 22.1211239999975,
    108.624016000016 22.1211200000253, 108.624008000013 22.1211190000176,
    108.624008000013 22.1211239999975, 108.624001000018 22.1211170000024,
    108.623993000016 22.1211089999997,
    108.623993000016 22.1210979999742, 108.623993000016 22.121083999984,
    108.624008000013 22.1210749999736, 108.624016000016 22.1210650000139,
    108.624023000011 22.1210560000036,
    108.624031000014 22.1210459999857, 108.624039000017 22.1210350000183,
    108.624046000012 22.1210229999851, 108.624054000014 22.1210139999748,
    108.624062000017 22.1210040000151,
    108.624077000015 22.1209980000276))

  • 图形显示:
  • 面积:0.3107711356846611 亩
对比:可以看出图形经过修整,原本的重合线段已经抹去,但从坐标点的数值可以看出,坐标点有着轻微的移动。同时,经过面积的对比,也可看出面积上也有些许不同,至于能不能
达到精度,就见仁见智了。

道格拉斯普克(以openlayer为例)

用途

主要通过算法来减少冗余点,以方便加载。

原理

通过ABC三点,头尾连成线段,求中间点C到线段的垂线距离有没有超过自行设定的阈值,有则去掉C,没有则保留。

openlayer方法

主要用geometry下的simplify方法生成。

示例

  • WKT:
    POLYGON ((107.8292574 22.8128866, 107.8293028 22.8129182, 107.8294356 22.8130177, 107.8295185 22.8130742, 107.8295963 22.8131402,107.8296349 22.8131766, 107.8296503 22.81319, 107.8296684 22.8132005, 107.8296777 22.8132041, 107.8296523 22.8132306, 107.8296389 22.8132449,107.8296216 22.8132589, 107.8296114 22.8132343, 107.8295876 22.8131918, 107.829567 22.8131709, 107.8295187 22.8131386, 107.8294279 22.813071,107.8293661 22.8130339, 107.8292824 22.8129801, 107.8292573 22.8129591, 107.8292406 22.8129352, 107.8292381 22.8129239, 107.8292374 22.8129042,107.8292384 22.8128895, 107.8292399 22.8128832, 107.8292425 22.8128813, 107.8292461 22.8128818, 107.8292574 22.8128866))
  • 阈值为0.000005(即.simplify(0.000005))得到图形:


  • 对比:前为27个点,后为26个点,面积比为99.47042815230094%,我认为只要面积比达到95%以上的阈值都是可以接受的,取决于自身更需要减轻浏览器压力还是追求高精度数据。

这篇关于Sql的MakeValid与道格拉斯普克算法对比的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/1136087

相关文章

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE

MySql死锁怎么排查的方法实现

《MySql死锁怎么排查的方法实现》本文主要介绍了MySql死锁怎么排查的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录前言一、死锁排查方法1. 查看死锁日志方法 1:启用死锁日志输出方法 2:检查 mysql 错误

MySQL数据库函数之JSON_EXTRACT示例代码

《MySQL数据库函数之JSON_EXTRACT示例代码》:本文主要介绍MySQL数据库函数之JSON_EXTRACT的相关资料,JSON_EXTRACT()函数用于从JSON文档中提取值,支持对... 目录前言基本语法路径表达式示例示例 1: 提取简单值示例 2: 提取嵌套值示例 3: 提取数组中的值注意

MySQL修改密码的四种实现方式

《MySQL修改密码的四种实现方式》文章主要介绍了如何使用命令行工具修改MySQL密码,包括使用`setpassword`命令和`mysqladmin`命令,此外,还详细描述了忘记密码时的处理方法,包... 目录mysql修改密码四种方式一、set password命令二、使用mysqladmin三、修改u

查询SQL Server数据库服务器IP地址的多种有效方法

《查询SQLServer数据库服务器IP地址的多种有效方法》作为数据库管理员或开发人员,了解如何查询SQLServer数据库服务器的IP地址是一项重要技能,本文将介绍几种简单而有效的方法,帮助你轻松... 目录使用T-SQL查询方法1:使用系统函数方法2:使用系统视图使用SQL Server Configu

SQL Server数据库迁移到MySQL的完整指南

《SQLServer数据库迁移到MySQL的完整指南》在企业应用开发中,数据库迁移是一个常见的需求,随着业务的发展,企业可能会从SQLServer转向MySQL,原因可能是成本、性能、跨平台兼容性等... 目录一、迁移前的准备工作1.1 确定迁移范围1.2 评估兼容性1.3 备份数据二、迁移工具的选择2.1

MySQL 缓存机制与架构解析(最新推荐)

《MySQL缓存机制与架构解析(最新推荐)》本文详细介绍了MySQL的缓存机制和整体架构,包括一级缓存(InnoDBBufferPool)和二级缓存(QueryCache),文章还探讨了SQL... 目录一、mysql缓存机制概述二、MySQL整体架构三、SQL查询执行全流程四、MySQL 8.0为何移除查

在Mysql环境下对数据进行增删改查的操作方法

《在Mysql环境下对数据进行增删改查的操作方法》本文介绍了在MySQL环境下对数据进行增删改查的基本操作,包括插入数据、修改数据、删除数据、数据查询(基本查询、连接查询、聚合函数查询、子查询)等,并... 目录一、插入数据:二、修改数据:三、删除数据:1、delete from 表名;2、truncate

MySQL的cpu使用率100%的问题排查流程

《MySQL的cpu使用率100%的问题排查流程》线上mysql服务器经常性出现cpu使用率100%的告警,因此本文整理一下排查该问题的常规流程,文中通过代码示例讲解的非常详细,对大家的学习或工作有一... 目录1. 确认CPU占用来源2. 实时分析mysql活动3. 分析慢查询与执行计划4. 检查索引与表

MySQL中的MVCC底层原理解读

《MySQL中的MVCC底层原理解读》本文详细介绍了MySQL中的多版本并发控制(MVCC)机制,包括版本链、ReadView以及在不同事务隔离级别下MVCC的工作原理,通过一个具体的示例演示了在可重... 目录简介ReadView版本链演示过程总结简介MVCC(Multi-Version Concurr