我是靠谱客的博主 老实指甲油,这篇文章主要介绍使用PostGIS求两个要素类的相交部分1.0 版本2.0 版本3.0 版本,现在分享给大家,希望可以做个参考。

先用一张图来表达。

在这里插入图片描述

ArcGIS的相交是将两个要素类的交集部分保存到生成的要素类中。

  • PostGIS的相交和ArcGIS的相交底层数学逻辑不一样

1.0 版本

create table ana_test as
with 
a as (select * from  xzqxs_temp ),
b as (select * from  yjjbntcbq_temp ),
resultTable as (select ST_Multi(st_intersection(ST_MakeValid(a.wkb_geometry),ST_MakeValid(b.wkb_geometry))) as wkb_geometry from a,b)
select *,ST_Area(resultTable.wkb_geometry) as inter_area
from resultTable where ST_Area(wkb_geometry)>0

但是该版本sql执行效率很慢,我们看一下执行计划
在这里插入图片描述

2.0 版本

create table ana_test as
with 
a as (select * from  xzqxs_temp ),
b as (select * from  yjjbntcbq_temp ),
resultTable as (select ST_Multi(st_intersection(ST_MakeValid(a.wkb_geometry),ST_MakeValid(b.wkb_geometry))) as wkb_geometry from a,b where ST_Intersects(a.wkb_geometry,b.wkb_geometry))
select *,ST_Area(resultTable.wkb_geometry) as inter_area
from resultTable where ST_Area(wkb_geometry)>0

但是该版本sql执行效率很慢,我们看一下执行计划

在这里插入图片描述

3.0 版本

增加索引,提升分析过滤效率

CREATE INDEX spatial_xzqxs_temp_geom_idx
ON xzqxs_temp
USING GIST (wkb_geometry);


CREATE INDEX spatial_yjjbntcbq_temp_geom_idx
ON yjjbntcbq_temp
USING GIST (wkb_geometry);
explain analyze 
create table ana_test as
with 
a as (select * from  xzqxs_temp ),
b as (select * from  yjjbntcbq_temp ),
resultTable as (select ST_Multi(st_intersection(ST_MakeValid(a.wkb_geometry),ST_MakeValid(b.wkb_geometry))) as wkb_geometry from a,b where ST_Intersects(a.wkb_geometry,b.wkb_geometry))
select *,ST_Area(resultTable.wkb_geometry) as inter_area
from resultTable where ST_Area(wkb_geometry)>0

在这里插入图片描述

4.0 版本

在比较特殊的情况下,上述版本3的代码执行还是很慢,首先我们观察数据

在这里插入图片描述

原因有如下几点:

  1. 行政区数据较大,空间索引发挥的作用优先,大图斑筛选出来的图斑个数仍然较多
  2. 行政区数据较大,每一个筛选出来的图斑需要与行政区图版做计算,大图斑中绝大部分节点的计算是无效且无意义的。但是大量节点的计算耗时巨大

所以如果使用小图斑计算可以更加便捷。

  1. 将行政区数据格网化后计算
  2. 使用下一级行政区数据进行计算,比如CJDCQ(村级调查区)、XZXZQ(乡镇行政区)

最后

以上就是老实指甲油最近收集整理的关于使用PostGIS求两个要素类的相交部分1.0 版本2.0 版本3.0 版本的全部内容,更多相关使用PostGIS求两个要素类的相交部分1.0内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部