Answers:
保留格式错误的数据不是一个好主意,因为您永远无法预测故障发生的时间和地点。此外,格式错误的数据可能会导致Heisenbug,这是最恶性和最虚幻的bug类型。
我认为讨论存储无效几何的可能结果有点没有意义。话虽如此,后果可能包括:
ST_Distance
将返回不正确或简单的错误数字)我的建议-如果小的缓冲区不会严重损害您的数据一致性,请使用它们来防止上述任何情况的发生。保持您的数据有效。
ST_Buffer(the_geom, 0.0000001)
可能会达到自我交集的目的。仅当几何形状稍大的后果不严重时才使用它。
ST_Buffer(the_geom, 0.0000001)
技巧绝对有很大帮助。
MULTIPOLYGON
两个多边形中的一个处理,而不是一个POLYGON
。如果可能,请尝试获取原始的WKT。
您可以首先防止无效的几何图形进入数据库。对于PostgreSQL / PostGIS用户,这很容易通过检查约束来完成。例如,考虑public.my_valid_table
具有一列多边形几何的表geom
,请使用以下SQL / DDL:
ALTER TABLE public.my_valid_table
ADD CONSTRAINT enforce_valid_geom CHECK (st_isvalid(geom));
注意:在执行约束之前,该表必须具有有效的多边形。
如果然后尝试插入/添加无效的几何,则会看到错误:
ERROR: new row for relation "my_valid_table" violates check constraint "enforce_valid_geom"