postgis ST_CoverageInvalidEdges用法

news2024/11/16 13:56:30

官方文档

概要

geometry ST_CoverageInvalidEdges(geometry winset geom, float8 tolerance = 0);

描述

一个窗口函数,用于检查窗口分区中的多边形是否形成有效的多边形覆盖范围。 它返回线性指示器,显示每个多边形中无效边(如果有)的位置。

如果满足以下条件,则一组有效多边形是有效的覆盖范围:

  • Non-overlapping-多边形不重叠(它们的内部不相交)

  • Edge-Matched-沿共享边的顶点相同

作为窗口函数,为每个输入多边形返回一个值。 对于违反一个或多个有效性条件的多边形,返回值是包含有问题边的 MULTILINESTRING。 覆盖范围有效的面返回值 NULL。 非多边形或空几何图形也会产生 NULL 值。

只要周围的多边形边缘匹配,这些条件就允许有效的覆盖范围包含孔(多边形之间的间隙)。 然而,非常窄的间隙通常是不希望的。 如果使用非零距离指定公差参数,则形成较窄间隙的边缘也将被返回为无效。

正在检查覆盖范围有效性的多边形也必须是有效的几何图形。 这可以使用ST_IsValid 进行检查。

可用性:3.4.0

需要GEOS >= 3.12.0

由重叠和不匹配顶点引起的无效边

WITH coverage(id, geom) AS (VALUES
  (1, 'POLYGON ((10 190, 30 160, 40 110, 100 70, 120 10, 10 10, 10 190))'::geometry),
  (2, 'POLYGON ((100 190, 10 190, 30 160, 40 110, 50 80, 74 110.5, 100 130, 140 120, 140 160, 100 190))'::geometry),
  (3, 'POLYGON ((140 190, 190 190, 190 80, 140 80, 140 190))'::geometry),
  (4, 'POLYGON ((180 40, 120 10, 100 70, 140 80, 190 80, 180 40))'::geometry)
)
SELECT id, ST_AsText(ST_CoverageInvalidEdges(geom) OVER ())
  FROM coverage;

 id |               st_astext
----+---------------------------------------
  1 | LINESTRING (40 110, 100 70)
  2 | MULTILINESTRING ((100 130, 140 120, 140 160, 100 190), (40 110, 50 80, 74 110.5))
  3 | LINESTRING (140 80, 140 190)
  4 | null

解析:

这个方法有2个功能。

  • 1、检测多边形集合是否有效。
  • 2、把多边形集合无效(例如相交、重叠)的部分给依次列举出来。

返回值

  • 1、返回几何对象
  • 2、返回NULL(没有相交) 

我把数据插入到表中。因为最终使用都会在表中使用。

  --新建表
  create table t2(
	id serial primary key,
	geom geometry(POLYGON,4326)
  )
  --插入数据
  insert into t2 values
  (1, 'POLYGON ((10 190, 30 160, 40 110, 100 70, 120 10, 10 10, 10 190))'::geometry),
  (2, 'POLYGON ((100 190, 10 190, 30 160, 40 110, 50 80, 74 110.5, 100 130, 140 120, 140 160, 100 190))'::geometry),
  (3, 'POLYGON ((140 190, 190 190, 190 80, 140 80, 140 190))'::geometry),
  (4, 'POLYGON ((180 40, 120 10, 100 70, 140 80, 190 80, 180 40))'::geometry)

我把示例中的4条数据插入到了数据库,下图是4条数据的集合。

举例说明

数据可视化

你会发现,有些多边形有重叠的部分,我们把数据在详细展开。拿id=1和id=2为例。

数据分析

通过数据可视化我们发现,id=1和id=2的数据有相交的,对于多边形数组来说是无效的。

则一组有效多边形是有效的覆盖范围:

  • Non-overlapping-多边形不重叠(它们的内部不相交)

  • Edge-Matched-沿共享边的顶点相同

 相交抛分

通过查询,我们可以得到id=1和id=2相交的部分。

  select id,geom,ST_AsText(ST_CoverageInvalidEdges(geom) OVER ()),
  ST_GeomFromText(ST_AsText(ST_CoverageInvalidEdges(geom) OVER ()),4326)
  from t2 where id=1 or id=2

  • 图1是第1条数据相交部分
  • 图2是第2条数据相交部分

 如果数据集合没有相交,则会返回NULL。见下图。

 id=4的数据与前面2条数据不相交,所以通过函数返回NULL。

场景

本函数适用于校验多边形是否有效,并返回错误的几何的位置,有助于去辨别修改。

ST_IsValid函数只是判定是否有效,且不能鉴别定位。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++项目——云备份-⑥-服务端热点管理模块的设计与实现

文章目录 专栏导读1.热点管理类设计2.热点管理类的实现与整理 专栏导读 🌸作者简介:花想云 ,在读本科生一枚,C/C领域新星创作者,新星计划导师,阿里云专家博主,CSDN内容合伙人…致力于 C/C、Linu…

解放工程师双手帮助网工做运维

✍ SNMP为什么被誉为“网管神器”? ✍ SNMP不同版本有何区别? ✍ SNMP有哪些问题及Telemetry有何优势? telnet, ssh远程登录到设备: 简单网络管理协议:SNMP 集中式管理: 华为:e-sight 华三…

计算机毕设 基于CNN实现谣言检测 - python 深度学习 机器学习

文章目录 1 前言1.1 背景 2 数据集3 实现过程4 CNN网络实现5 模型训练部分6 模型评估7 预测结果8 最后 1 前言 Hi,大家好,这里是丹成学长,今天向大家介绍 一个深度学习项目 基于CNN实现谣言检测 1.1 背景 社交媒体的发展在加速信息传播的…

使用NATAPP内网穿透详细步骤

在开发过程中,避免不了前端和后端不在一个局域网下,这时候,前后端联调的时候,前端访问不到后端的服务器,使用穿透就可以解决这个问题。 1、打开网址https://natapp.cn/2、进行注册,然后登录 3、击购买渠道…

大数据-Storm流式框架(五)---DRPC

DRPC 概念 分布式RPC(DRPC)背后的想法是使用Storm在运行中并行计算真正强大的函数。 Storm拓扑接收函数参数流作为输入,并为每个函数调用发送结果的输出流。 DRPC并不是Storm的一个特征,因为它基于Storm的spouts,bo…

推荐一个高效测试用例工具:XMind2TestCase..

一、背景 软件测试的核心是什么?毫无疑问是测试分析和测试用例设计,也是日常测试投入最多时间的工作内容之一。 然而,传统的测试用例设计过程有很多痛点: 1、使用Excel表格进行测试用例设计,虽然成本低,但…

FL Studio音乐编曲软件好不好用?要不要购买

音乐编曲软件的出现使得音乐创作者能够克服时间和空间的限制,随时随地进行创作。随着信息时代的发展,使用编曲软件已成为音乐创作领域的主流。那么编曲软件哪个好用呢?我推荐这三款。 在业内,常用的音乐编曲软件包括Cubase、Logi…

增强常见问题解答搜索引擎:在 Elasticsearch 中利用 KNN 的力量

在快速准确的信息检索至关重要的时代,开发强大的搜索引擎至关重要。 随着大型语言模型和信息检索架构(如 RAG)的出现,在现代软件系统中利用文本表示(向量/嵌入)和向量数据库已变得越来越流行。 在本文中&am…

scratch接钻石 2023年9月中国电子学会图形化编程 少儿编程 scratch编程等级考试三级真题和答案解析

目录 scratch接钻石 一、题目要求 1、准备工作 2、功能实现 二、案例分析

postgis ST_ClipByBox2D用法

官方文档 概述 geometry ST_ClipByBox2D(geometry geom, box2d box); 描述 以快速且宽松但可能无效的方式通过 2D 框剪切几何体。 拓扑上无效的输入几何图形不会导致抛出异常。 不保证输出几何图形有效(特别是,可能会引入多边形的自相交)…

FL Studio21.2中文版多少钱?值得下载吗

水果,全称Fruity Loop Studio,简称FL Studio。是一款全能的音乐制作软件,经过二十多年的演化更迭,其各项功能非常的先进。其开创性的Pat\song模式,也为初学者的学习提供了便利。那么水果音乐制作软件需要多少钱呢&…

鸡尾酒学习——沧海桑田

1、材料:冰块(或者雪莲)、蓝橙力娇酒、伏特加、橙汁、柠檬、雪碧/气泡水; 2、口感:酸甜口味,下层感觉是再喝橙汁,上层在喝有些度数的雪碧,可能是昨天的长岛冰茶过于惊艳,…

机器学习(四十九):高斯混合模型

补充一个聚类算法:高斯混合模型 假设有一组需要根据它们的相似性分组到几个部分或簇中的数据点。在机器学习中,这被称为聚类。有几种可用的聚类方法: K均值聚类分层聚类高斯混合模型在这篇文章中,我们将讨论高斯混合模型。 文章目录 正态或高斯分布期望最大化(EM)算法期…

微信 macOS 版迎来 3.8.4.20 更新,新功能一览

微信 macOS 版迎来 3.8.4.20 更新,增加了多个新功能,包括可将某个聊天在独立窗口中显示、可在聊天中搜索表情等。 附更新信息如下: 可将某个聊天在独立窗口中显示; ・可在聊天中搜索表情; ・新增 「看一看」&#…

Umijs创建一个antd+Ts项目环境

上文搭建Umijs环境并创建一个项目 介绍基本操作中 我们构建了一个Umijs环境的环境 但也只创建了一个页面 真正开发来讲 也不可能只创建几个界面这么简单 这里面的创建 还是非常完整的 这里 我创建一个文件夹 主要是做我们的项目目录 然后 我们在终端输入命令 然后 打开目录终…

VScode 自定义主题各参数解析

参考链接: vscode自定义颜色时各个参数的作用(史上最全)vscode编辑器,自己喜欢的颜色 由于 VScode 搜索高亮是在是太不起眼了,根本看不到此时选中到哪个搜索匹配了,所以对此进行了配置,具体想增加更多可配置项可参考…

第三篇:实践篇 《使用Assembler 实现图片任意切割功能》

实现原理: 共用一个texture、material、渲染状态等。紧通过修改vertex、uvs、indexes数据即可实现任意切割功能。 一、线段分割多边形,并分散多边形 线段分割多边形 已知多边形points,线段sp、ep。线段分割多边形得到两个多边形。 publi…

双十一期间VBA钜惠

大家好,本年度双11即将到来,为了答谢大家多年来的支持及更广泛的推广VBA的应用,“VBA语言専功”在此期间推出巨大优惠:此期间打包购买VBA技术资料实行半价优惠。 1 :面向对象:学员及非学员 2 &#xff1a…

AR眼镜安卓主板,智能眼镜光机方案定制

AR智能眼镜是一项涉及广泛技术的创新产品,它需要考虑到光学、显示、功耗、散热、延迟、重量以及佩戴人体工学等多个方面的因素,每一个项目都是技术进步所需攻克的难题。 在本文中,我们将重点讨论AR眼镜的主板和光学方案。 首先是AR智能眼镜的…

OpenCV学习(三)——响应鼠标事件(获取点击点坐标和颜色,利用鼠标进行绘图)

响应鼠标事件 3. 响应鼠标事件3.1 获取鼠标点击的坐标3.2 获取鼠标点击像素点的颜色3.3 在鼠标点击的位置生成圆3.4 通过拖动鼠标来绘制填充矩形3.5 通过拖动鼠标绘制未填充矩形3.6 使用鼠标选点绘制多边形3.7 按住鼠标左键进行绘图 3. 响应鼠标事件 使用OpenCV读取图像&#…