如何我可以通过QGIS还是PostGIS来实现?我不担心精度会略微下降(在几米之内),并且希望将单线显示在当前平行线之间(理想情况下是其中心)。
谢谢。
(这是我要合并的两条道路线的示例)
#1 楼
ESRI具有可折叠的双车道到中心线工具。您可以获得与OSM一起使用的廉价版本。否则,您可以选择要素并另存为新图层。从用于导出的图层中删除选定的内容。缓冲特征在包括第二车道的车道一侧的范围内。将shapefile与原始文件合并,连接任何损坏的拓扑。如果可以编码和/或编写脚本,则可以通过节点匹配的段匹配来平均节点上通道之间的中心线,然后以编程方式输出中心线,然后以编程方式输出删除选定的用于生产过程的功能,检查并修复损坏的拓扑,然后就完成了。
我找到了我所包含的arcpy代码示例,如何在以下注释中找到链接。
归功于ESRI ARCGis帮助
# Name: CollapseDualLinesToCenterline_Example.py
# Description: Creates street centerlines from a street casing coverage.
# Requirements: ArcInfo Workstation
# Import system modules
import arcpy
from arcpy import env
# Set environment settings
env.workspace = "C:/data"
# Set local variables
inCover = "streets"
outCover = "C:/output/centerlines"
maximumWidth = 50
# Execute CollapseDualLinesToCenterline
arcpy.CollapseDualLinesToCenterline_arc(inCover, outCover, maximumWidth, "")
#2 楼
您可以尝试使用Mike Migurski的Skeletron。这是一个开放源代码工具,他可以将其用于地形地图样式。#3 楼
也许这不是一个非常优雅的解决方案,它基于回答问题的方法:https://gis.stackexchange.com/a/295348/120129。这是解决问题的一种方法,设置一个地理仪器(对我来说,这是一条名为“ road_border”的道路,宽11 m,类型-线(MultiLineString)),
运行一个地理仪器:-),
WITH
tbla AS (SELECT id, ((ST_DumpPoints(geom)).geom) geom FROM road_border),
tblb AS (SELECT (ST_Buffer((ST_Dump(geom)).geom, 0.0001)) geom FROM tbla),
tblc AS (SELECT ST_Centroid(ST_UnaryUnion(Unnest(ST_ClusterWithin(geom, 0.0001)))) geom FROM tblb),
tbld AS (SELECT ((ST_Dump(ST_DelaunayTriangles(ST_Collect(geom)))).geom) geom FROM tblc),
tble AS (SELECT (ST_Boundary(geom)) geom FROM ST_Dump((SELECT ST_Polygonize(geom) geom FROM (SELECT ST_Union(geom) geom FROM
(SELECT ST_ExteriorRing(geom) geom FROM tbld) AS lines) AS foo))),
tblf AS (SELECT ST_MakeLine(p1, p2) geom FROM (SELECT ST_PointN(geom, generate_series(1, ST_NPoints(geom)-1)) p1,
ST_PointN(geom, generate_series(2, ST_NPoints(geom))) p2 FROM tble) AS geom),
tblg AS (SELECT ST_Buffer((ST_Dump(ST_Union(ST_Buffer(geom, 0.0005)))).geom, -0.0005) geom FROM road_border)
SELECT ST_Intersection (a.geom, b.geom) geom FROM tblf a JOIN tblg b ON ST_Within(a.geom, b.geom);
并查看结果。
祝大家好运:-),
原始解决方案...
这个脚本叫做-ST_RoadAxisFromDelaunayTriangulation ...
评论
您能否链接到ESRI收合中心线工具?我找不到我唯一能找到的是此页面的“编辑双车道”部分。
– Fezter♦
13年2月13日在5:56
ArcGIS帮助会生成没有参考的唯一链接作为我看到的链接链接,因此...请转至resources.arcgis.com/en/help/main/10.1/index.html并搜索将双线折叠为中心线(覆盖),原始链接来自讨论,可能会因为您需要ArcGIS for Desktop Advanced而出现错误:需要安装ArcInfo Workstation
–刘易斯
13年2月13日在18:51
除非明确使用Arc7 coverage数据,否则大多数用户不应使用“ Coverage”工具(需要Workstation)。相反,在大多数情况下,请使用将双线折叠到中心线(制图)。
– RyanKDalton
13年2月13日在19:08