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

相关文章

SQL中的外键约束

外键约束用于表示两张表中的指标连接关系。外键约束的作用主要有以下三点: 1.确保子表中的某个字段(外键)只能引用父表中的有效记录2.主表中的列被删除时,子表中的关联列也会被删除3.主表中的列更新时,子表中的关联元素也会被更新 子表中的元素指向主表 以下是一个外键约束的实例展示

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

如何去写一手好SQL

MySQL性能 最大数据量 抛开数据量和并发数,谈性能都是耍流氓。MySQL没有限制单表最大记录数,它取决于操作系统对文件大小的限制。 《阿里巴巴Java开发手册》提出单表行数超过500万行或者单表容量超过2GB,才推荐分库分表。性能由综合因素决定,抛开业务复杂度,影响程度依次是硬件配置、MySQL配置、数据表设计、索引优化。500万这个值仅供参考,并非铁律。 博主曾经操作过超过4亿行数据

康拓展开(hash算法中会用到)

康拓展开是一个全排列到一个自然数的双射(也就是某个全排列与某个自然数一一对应) 公式: X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[1]*0! 其中,a[i]为整数,并且0<=a[i]<i,1<=i<=n。(a[i]在不同应用中的含义不同); 典型应用: 计算当前排列在所有由小到大全排列中的顺序,也就是说求当前排列是第

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

MySQL数据库宕机,启动不起来,教你一招搞定!

作者介绍:老苏,10余年DBA工作运维经验,擅长Oracle、MySQL、PG、Mongodb数据库运维(如安装迁移,性能优化、故障应急处理等)公众号:老苏畅谈运维欢迎关注本人公众号,更多精彩与您分享。 MySQL数据库宕机,数据页损坏问题,启动不起来,该如何排查和解决,本文将为你说明具体的排查过程。 查看MySQL error日志 查看 MySQL error日志,排查哪个表(表空间

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

【数据结构】——原来排序算法搞懂这些就行,轻松拿捏

前言:快速排序的实现最重要的是找基准值,下面让我们来了解如何实现找基准值 基准值的注释:在快排的过程中,每一次我们要取一个元素作为枢纽值,以这个数字来将序列划分为两部分。 在此我们采用三数取中法,也就是取左端、中间、右端三个数,然后进行排序,将中间数作为枢纽值。 快速排序实现主框架: //快速排序 void QuickSort(int* arr, int left, int rig