空间分析“完全覆盖”判断

后端实现

“输入图形是否被指定图形完全覆盖”这个判断主要利用postgis的st_coveredby函数实现,该函数与另一个可以判断图形重叠关系的函数st_within的区别,官方给出的解释如下:

因为多边形边界并不算多边形内部,因此st_within为判断“真包含”,即两图形完全覆盖或者说输入图形与指定图形有任何边界上的相交,都会判断为false,不完全覆盖。

而st_coveredby则为判断“假包含”,即如果有边界上的相交,只要输入图形没超出指定图形边界,就认为是被完全覆盖。

以上方法,当指定图形只有一个的时候,可以方便实现,可一旦指定图形有复数个,固然可以利用st_intersects先找到与输入图形相交的图形,再使用st_unions进行合并之后再求交集,但真要在后台使用sql实现有点麻烦,因此我们可以寻找一些别的思路,

一般来说,在判断空间冲突之后,我们一般是要在前台可视化出冲突相关的图形,因此要在接口中返回冲突图形的geom信息,既然前台已经拿到这些信息,我们也可以在这里也可以通过前台来实现上面复数指定图形情况下这个复杂的判断:

1.2 前台实现

前台如果要实现空间分析,可以借助js类库turf:

http://turfjs.org

可以使用turf的difference方法,将输入图形与指定图形之一求差集,然后将差集与剩下的指定图形求差集,直到差集为空,若最后差集不为空,则说明不完全覆盖,否则就是完全覆盖。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值