gpt4 book ai didi

graph - 如何使用 PostGIS 按交叉路口划分城市街道?

转载 作者:行者123 更新时间:2023-12-01 09:25:25 25 4
gpt4 key购买 nike

我想使用 PostGIS 按交叉路口分解 OpenStreetMap 街道。我试图将一个城市的街道放入一个图形结构中,节点由交叉点构成,边缘由道路绘制。
我目前正在使用 ST_Intersection 命令为它的组件的所有可能排列开辟一条道路。
例如,对于具有三个交叉点的道路(下方从顶部开始的第二条水平线),我想要四条分开的道路,但是我得到了三个街区、两个街区和一个长度的道路的所有可能组合堵塞。我如何简单地将所有道路除以每个单独的街区?

最佳答案

对此有两种选择——

1) 使用 pgRouting ,它考虑了道路之间的垂直差异(如隧道和立交桥)

2) 使用此 SQL 代码,其中 dc_streets_subset 是 DC 的 OSM 数据。

--Get a list of all intersections in city
CREATE TABLE dc_intersections AS
SELECT DISTINCT (ST_DUMP(ST_INTERSECTION(a.geom, b.geom))).geom AS ix
FROM dc_streets_subset a
INNER JOIN dc_streets_subset b
ON ST_INTERSECTS(a.geom,b.geom)
WHERE geometrytype(st_intersection(a.geom,b.geom)) = 'POINT';

CREATE INDEX ON dc_intersections USING gist(ix);

CREATE TABLE dc_union AS
SELECT ST_UNION(geom) as geom
FROM dc_streets_subset;

CREATE INDEX ON dc_union USING gist(geom);

CREATE TABLE dc_segments AS
SELECT (ST_DUMP(ST_SPLIT(a.geom,b.ix))).geom
FROM dc_union a
INNER JOIN dc_intersections b
ON ST_INTERSECTS(a.geom, b.ix);

关于graph - 如何使用 PostGIS 按交叉路口划分城市街道?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25753348/

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