我有一个点层和一个线层。点是道路交叉点,使用 DGPS 收集,而线是连接道路,通过手持 GPS 在跟踪模式下收集。结果,这些线实际上并没有连接到这些点。
现在我想:
从每个线串中删除所有中间节点,使其成为一条直线。
将线的开始和结束顶点捕捉到最近的点。
我正在使用 PostGIS 2.0。到目前为止,我所做的是:
UPDATE line
SET geom = ST_Simplify(geom, 1000);
问:有没有其他更好的方法来完成它?(因为我使用了一个荒谬的容忍度)
UPDATE line
SET geom = ST_AddPoint(
(SELECT geom FROM line WHERE id = 1),
(SELECT p.geom FROM point AS p, line AS l
ORDER BY ST_Distance(p.geom,(SELECT ST_StartPoint(l.geom) FROM lt WHERE l.id=1)) LIMIT 1),
0)
WHERE id=1;
这会将线(id=1)延伸到最近的点(在线的开头添加的点)。
Q. 上面看起来有点复杂,还有其他有效的方法/功能吗?