首页 > 解决方案 > 插入和无效几何 PostGIS

问题描述

我创建了一个对 postgres/postgis 中的表/视图运行一些有效性检查的函数。Postgres 9.6.11 和 PostGIS 2.3。我现在需要测试这个函数,所以我需要创建一个包含无效几何图形的表。最好的一种可以被纠正,ST_MakeValid一种不能被纠正,这样我就可以测试所有用例。如何将无效的几何图形插入到 postgis 表中。

标签: postgresqlpostgis

解决方案


这不是一项简单的任务,而且非常依赖于版本。

您可以尝试停止一个有效的几何图形,或者您可以尝试插入一个无效的几何图形。

例如,这条线创建了一条无效线(2 点,起点 = 终点)

SELECT st_setsrid(st_geomfromtext('LINESTRING(480 270,480 270)'),3857);

ST_MakeValid将其转换为一个点。

或创建一个自相交多边形

SELECT st_isValid('polygon((0 0, 1 0, 0 1, 1 1, 0 0))'::geometry);
NOTICE:  Self-intersection at or near point 0.5 0.5
 st_isvalid
------------
 f

ST_MakeValid将其转换为多面体

您还可以在此处找到更多示例案例


推荐阅读