PostGreSQL(八)PostGIS-图形有效性和简单性

图形有效性和简单性

  • ST_IsValid(geometry),检查图形有效性

    • 可以通过添加CHECK约束(即用户定义的完整性约束)来手动对表强制执行这样的有效性检查

    ALTER TABLE mytable ADD CONSTRAINT geometry_valid_check CHECK (ST_IsValid(the_geom));
  • ST_IsValidReason(geometry),查找无效的原因

  • ST_MakeValid,函数尝试在不对输入几何图形进行更改的情况下修复缺陷。不会删除或移动任何顶点,只需重新排列对象的结构即可。对于清晰但无效的数据来说,这个函数非常适用,对于杂乱无章且无效的数据来说,这个函数可能并不适用

  • ST_IsSimple(),检查图形的简单性

    • 几何图形的简单性可以理解为几何图形比较简单整齐,不会自己与自己重叠,不繁杂

点的简单性与有效性

单点

单个点(Point)肯定是简单的且有效的,因为一个点孤零零的肯定是简单、有效的

多点

多个点(MultiPoint)肯定是有效的,但不一定是简单的。

如果多点中有两个或两个以上的点重合(也就是坐标一致),那么它就不是简单的,但是确是有效

线串的简单性与有效性

单线串

单线串(LINESTRING)如果有重叠、相交就不是简单的(除了端点相交,端点相交就说明这条线串是闭合的,但它是简单的)

多线串

多线串(MULTILINESTRING)只要它的元素(LINESTRING)都是简单的,且两个元素只在某个点相切,那么它就是简单

多边形的简单性与有效性

单多边形

有效性:

  • 多边形的环必须闭合

  • 内环应该处于外环的内部

  • 环不能自相交(它们不能相互接触,也不能交叉)

  • 环不能与其他环接触,除非在某个点相切(只能有一个在一个点相切)

多边形的环只要不自相交,则该多边形就是简单的

多多边形

多多边形里只要各个子元素(单多边形)是简单的、有效的,而且子元素之间只在有限的点上接触,那么它就是简单的、有效的。

 

posted @ 2020-10-28 20:51  hjy1995  阅读(1127)  评论(0编辑  收藏  举报