使用postgis数据库进行多边形裁切线
背景:有一份polyline的基础数据,有一个多边形,求出多边形内的所有polyline
PostGIS参考手册: http://postgis.net/docs/reference.html
1、polyline数据表、qgis可视化


2、polygon数据表、qgis可视化


3、使用ST_Covers,求出所有完全包含在面内的线,有一部分线是被多边形穿过了,此部分线是没有在covers里的

SELECT f.geom FROM "freeway" f LEFT JOIN area r ON 1 = 1 WHERE ST_Covers (r.geom, f.geom) = 't'

4、获取多边形边界(ST_Boundary)和polyline的相交的线(ST_Intersects),并用边界分割(ST_Split)这些线,此时结果为GEOMETRYCOLLECTION,需要提取(ST_Dump)几何图形组件的集合(GEOMETRYCOLLECTION)中的图形,涉及到的函数如下:
ST_Boundary(geometry geomA)
ST_Intersects(geometry geomA , geometry geomB )
ST_Split(geometry input , geometry blade)
ST_Dump(geometry geom)
SELECT
(ST_Dump (ST_Split (l.geom, ST_Boundary (rr.geom)))).geom
FROM
(
SELECT
f.geom
FROM
"freeway" f
LEFT JOIN area r ON 1 = 1
WHERE
ST_Intersects (ST_Boundary (r.geom), f.geom) = 't') l
LEFT JOIN area rr ON 1 =1

5、第4步骤分割完成后,一部分线在面内,一部分线在面外,此时:
面内的线与面还有交点,所以ST_Covers不可用
面外的线与面还有交点,所以ST_Intersects不可用
思路为:判断所有线的中心点,中心点在面内,则线段被面完全包含
SELECT f.geom FROM res_3 f LEFT JOIN area r ON 1 = 1 WHERE
ST_Covers (r.geom, ST_Centroid (f.geom)) = 't';

6、把1的查询结果和5的结果union一下,最终结果如下

使用postgis数据库进行多边形裁切线的更多相关文章
- 在IDEA中已经配置postgis数据库驱动并且能在Java类中连接数据库,但在servlet中无法连接数据库且导致Tomcat自动断开连接的解决方案
最近在IDEA中用JDBC连接PostgreSQL数据库时遇到了这样一个奇怪的事情: 从PostgreSQL JDBC Driver官网下载好JDBC驱动之后,在IDEA的Project Struct ...
- GeoServer 发布PostGIS数据库中的栅格数据
1.导入栅格数据 进入PostgreSQL\bin目录,利用raster2pgsql工具导入栅格数据,具体命令如下所示: <!-- 分块,切片存储到PostGIS数据库中 --> rast ...
- postgis数据库文件shapefile导入 dbf file (.dbf) can not be opened.shapefile import failed.
Destination: public.train_polylineSource File: C:\Documents and Settings\Administrator\桌面\ffffff\tra ...
- PostgreSQL数据库的安装与PostGIS的安装(转)
原文:http://lovewinner.iteye.com/blog/1490915 安装postgresql sudo apt-get install postgresql-9.1 postgre ...
- 基于Arcgis Engine 10.2(C#)+PostgreSQL 11(Postgis 3)+pgRouting 3.0实现使用数据库进行路径规划
前言:最近在(被迫)使用ArcGIS Engine10.2(.NET平台)进行二次开发(桌面应用),因为想做一个最短路径查询的功能,而arcgis的网络分析又比较麻烦,于是想到了使用Postgis.但 ...
- PostgreSQL+PostGIS的使用 函数清单
一. PostgreSQL与PostGIS的关系 PostgreSQL 是世界上技术最先进的开源数据库,其前身是1977年一个源于Berkeley名为Ingres的非关系型数据库,其项目领导人为Mic ...
- PostgreSQL+PostGIS 的使用
一.PostGIS中的几何类型 PostGIS支持所有OGC规范的“Simple Features”类型,同时在此基础上扩展了对3DZ.3DM.4D坐标的支持. 1. OGC的WKB和WKT格式 OG ...
- PostGIS导入导出SHP文件常用命令
SHP导入POSTGIS数据库 引用 直接导入数据库 shp2pgsql -I -s 2437 -W GBK shop_point.shp public.ntable | psql -U postg ...
- PostGIS ShapeFile 导入数据
系统环境:WIN10 相关软件:PostgresSQL+PostGIS+QGIS 1.添加postGIS数据扩展 (1).打开PostgresSQL 客户端pgAdmin,在需要导入shp数据的数据库 ...
- [zz] 安装PostGIS(Linux篇)
0.安装PostgreSQL数据库 参考安装PostgreSQL数据库(Linux篇). 1.安装proj4 #tar zxvf proj-4.8.0.tar.gz#cd proj-4.8.0#./c ...
随机推荐
- Sealos 基础教程:Sealos Devbox 的架构原理解析
今天这篇文章咱们来聊一聊 Sealos Devbox 到底是怎么设计的,据说隔壁老奶奶最喜欢看这种有技术深度的文章了. Devbox 返璞归真,把开发者的开发精力放到开发中去,真正做到了摈弃复杂的 C ...
- java通过SSE实现消息推送
一.什么是SSE 严格地说,HTTP 协议无法做到服务器主动推送信息.但是,有一种变通方法,就是服务器向客户端声明,接下来要发送的是流信息(streaming). 也就是说,发送的不是一次性的数据包, ...
- php技术交流群
php技术交流群-656679284,为PHP广大爱好者提供技术交流,有问必答,相互学习相互进步!也欢迎大牛入群指导!
- SpringBoot必须掌握的常用注解!
Spring Boot 提供了大量的注解,用于简化配置和加速程序开发. 那么接下来,咱们就一起来看下 Spring Boot 中的常用注解有哪些?及其这些注解的具体使用. 1.Bean相关 @Comp ...
- Windows 自动色彩管理(ACM)
在一些笔记本上Win11可以看到设置里有"自动管理应用的颜色"选项,有些笔记上没有.这里讲下"自动管理应用的颜色"的显示规则 看华为MetaBook E设置界面 ...
- bootstrapTable初始化常用参数
bootstrapTable初始化常用参数,前端分页排序,后端获取表格数据 $('#table').bootstrapTable({ toolbar: '#mybar', //工具按钮用哪个容器 st ...
- 我是如何从0开始,在23天里完成一款Android游戏开发的 – Part 1 – 开篇与前2天
本文由 ImportNew - ImportNew读者 翻译自 bigosaur.如需转载本文,请先参见文章末尾处的转载要求. 本文是这个系列的第一篇文章,记录作者的开篇和前2天的情况.文章由 朱新亮 ...
- Impala源代码分析(1)-Impala架构和RPC
Leave a reply Impala总共分为3个组件:impalad, statestored, client/impala-shell.关于这三个组件的基本功能在这篇文章中已经介绍过了. Cli ...
- 13TB的StarRocks大数据库迁移过程
公司有一套StarRocks的大数据库在大股东的腾讯云环境中,通过腾讯云的对等连接打通,通过dolphinscheduler调度datax离线抽取数据和SQL计算汇总,还有在大股东的特有的Flink集 ...
- 论文解读《From Generation to Judgment: Opportunities and Challenges of LLM-as-a-judge》
发表时间:2024 期刊会议:arxiv 论文单位:Arizona State University 论文作者:Dawei Li, Bohan Jiang, Liangjie Huang, Alimo ...