【问题标题】:Inserting and invalid geometry PostGIS插入和无效几何 PostGIS
【发布时间】:2019-08-23 01:59:51
【问题描述】:

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

【问题讨论】:

    标签: postgresql postgis


    【解决方案1】:

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

    您可以尝试停止有效的几何图形,也可以尝试插入无效的几何图形。

    例如,这条线创建了一条无效线(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 会将其转换为多面体

    您还可以找到更多示例案例here

    【讨论】:

    • 这非常有效。领结失败(因为列只允许使用多边形)并且扭曲的多边形也能正常工作,因为它的ST_MakeValid 结果是一个多边形。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-04
    • 2020-03-21
    • 2019-07-03
    • 2020-09-25
    • 2018-05-27
    • 1970-01-01
    • 2014-11-09
    相关资源
    最近更新 更多