gpt4 book ai didi

import - 在shp2pgsql中自动修复环形自交点

转载 作者:行者123 更新时间:2023-12-04 17:02:32 24 4
gpt4 key购买 nike

我们正在将一大堆ArcGIS shapefile导入PostGIS,并使用shp2pgsql进行即时转换。问题是,如果shapefile具有任何环自交,则导入扼流圈:

NOTICE:  Ring Self-intersection at or near point -80.1338 25.8102
ERROR: new row for relation "place_shapes" violates
check constraint "shape_is_valid"

我们该如何解决呢?

最佳答案

正如Marcelo所建议的那样,将特征零缓冲是自相交多边形的一种已知解决方案(在shp文件中太常见了),但也有ST_MakeValid函数用于此目的。还有一个关联的函数ST_IsValidReason,它将告知问题所在,而不仅仅是盲目地尝试解决它。

实际上,使用ST_MakeValid(geom)或ST_Buffer(geom,0)可能会产生混合的几何类型,包括孤立点和线串。因此,进一步的改进可能是检查返回的几何类型,并且仅包括例如由ST_MakeValid生成的多边形。

create table valid_geoms as
with make_valid (id, geom) as
(select
row_number() over() as id,
(ST_Dump(ST_MakeValid(geom))).geom as geom from invalid_table
)
select id, geom from make_valid where ST_GeometryType(geom)='ST_Polygon';

其中invalid_table是原始shp2pgsql导入产生的表。

我在此处包括一个生成的ID,因为ST_MakeValid可能会根据输入几何图形生成一个以上的多边形。可以将查询重写为包含原始id字段,但是不再保证它是唯一的。

关于import - 在shp2pgsql中自动修复环形自交点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11894149/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com