我有两组数据:线表(道路)和多边形表(地点)
两个集都非常大,包含数千个几何。
我需要位于多边形表外的线表中的所有几何或几何图形段(在我的情况下,所有地方以外的道路);
我尝试过类似的事情:
create table roadsdifference as (select
r.osm_id as osm_id, ST_Difference(r.geom,c.geom) geom
from
roads r join localities c on ST_Crosses(c.geom,r.geom));
如果每条道路只加入一个地方,那就有效。如果我有两个或多个地方的道路,我会得到重叠的多个几何,每个地方一个(我知道这是一个连接如何工作)。
我也尝试过:
create table localitiesunion as select st_union(geom) geom from localities;
create table roadsdifference as (select
r.osm_id as osm_id, ST_Difference(r.geom,c.geom) geom
from
roads r join localitiesunion c on ST_Crosses(c.geom,r.geom));
但是这个选项要么永远需要,要么抛出拓扑错误并崩溃。
正如我所说,我有大约5万个地方多边形和5密耳。道路线串。
在ArcGIS中使用“擦除”功能可以完成工作,但我必须将表格转换为shapefile,处理它们,将它们转换回来等等,这是一项耗费大量时间的手动工作。我想要一个自动解决方案,我可以将其包含在脚本(或.sql文件)中。
关于如何做到这一点的任何其他方式或想法?