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)都是简单的,且两个元素只在某个点相切,那么它就是简单
多边形的简单性与有效性
单多边形
有效性:
-
多边形的环必须闭合
-
内环应该处于外环的内部
-
环不能自相交(它们不能相互接触,也不能交叉)
-
环不能与其他环接触,除非在某个点相切(只能有一个在一个点相切)
多边形的环只要不自相交,则该多边形就是简单的
多多边形
多多边形里只要各个子元素(单多边形)是简单的、有效的,而且子元素之间只在有限的点上接触,那么它就是简单的、有效的。