ฉันจะรวม / ยุบบริเวณใกล้เคียงและเส้นถนนคู่ขนาน (เช่นถนนสองเลน) เป็นเส้นเดียวได้อย่างไร


23

ฉันมี shapefile จาก OSM ซึ่งมีถนนทุกสายในเมือง ถนนที่ใหญ่กว่า (เช่นรถสองทาง) ดูเหมือนจะมีเส้นคู่ขนาน 2 เส้น ฉันต้องการยุบ / รวมสิ่งเหล่านั้นเป็น 1 บรรทัดเพื่อให้ฉันสามารถส่งออกและทำให้พวกเขาเป็นอย่างดีในแอปพลิเคชัน 3D ภายนอก (ถนนที่ทับซ้อนกัน 2 แห่งจะซับซ้อนและจะดูแปลกในแบบ 3 มิติ)

ฉันจะบรรลุสิ่งนี้ด้วย QGIS หรือ PostGIS ได้อย่างไร ฉันไม่กังวลเกี่ยวกับการสูญเสียความแม่นยำเล็กน้อย (ภายในไม่กี่เมตร) และต้องการให้ผลลัพธ์ที่เกิดขึ้นเป็นเส้นเดี่ยว (ระหว่างจุดศูนย์กลาง) เส้นคู่ขนานในปัจจุบัน

ขอขอบคุณ.

(นี่คือตัวอย่างของเส้นถนนคู่ที่ฉันต้องการรวม)

ป้อนคำอธิบายรูปภาพที่นี่

คำตอบ:


3

ESRI มีทางแยกสองเลนไปยังเครื่องมือกลาง คุณสามารถรับเวอร์ชันราคาถูกสำหรับใช้กับ OSM มิฉะนั้นคุณสามารถเลือกคุณสมบัติและบันทึกเป็นเลเยอร์ใหม่ ลบที่เลือกจากเลเยอร์ที่คุณใช้เพื่อการส่งออก คุณสมบัติบัฟเฟอร์อยู่ในระยะของด้านใดด้านหนึ่งของถนนที่มีเลนที่สอง ผสาน shapefile กับต้นฉบับเชื่อมต่อทอพอโลยีที่เสียหาย

หากคุณสามารถโค้ดและ / หรือสคริปต์คุณสามารถเฉลี่ย centerline ระหว่างเลนบนโหนดโดย seg โดยการจับคู่โหนดและส่งออก programaticaly centerline แล้ว programaticaly ลบคุณสมบัติที่เลือกใช้สำหรับกระบวนการผลิตตรวจสอบและแก้ไขโทโพโลยีที่เสียหายและคุณ เสร็จแล้ว

ฉันพบตัวอย่างรหัส 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, "")

คุณช่วยลิงค์ไปที่ ESRI ยุบไปที่เครื่องมือกลางได้ไหม ฉันหามันไม่เจอ สิ่งเดียวที่ฉันสามารถหาได้คือส่วนการแก้ไข carriageways คู่ของหน้านี้
Fezter

ArcGIS ช่วยสร้างลิงก์ที่ไม่เหมือนใครซึ่งไม่มีการอ้างอิงเป็นลิงค์ pated ที่ฉันเห็นดังนั้น ... ไปที่resources.arcgis.com/th/help/main/10.1/index.htmlและค้นหายุบบรรทัดที่สองเพื่อ Centerline (ครอบคลุม) การเชื่อมโยงเดิมมาจากการสนทนาและอาจจะผิดตามที่คุณต้องการ ArcGIS สำหรับเดสก์ท็สูง: ต้อง ArcInfo Workstation ติดตั้ง
lewis

1
ผู้ใช้ส่วนใหญ่ไม่ควรใช้เครื่องมือ "ความคุ้มครอง" (ซึ่งต้องใช้เวิร์กสเตชัน) เว้นแต่จะทำงานกับข้อมูลความครอบคลุมของ Arc7 อย่างชัดเจน แทนการใช้ยุบคู่สายที่จะ Centerline (แผนที่)ในกรณีส่วนใหญ่
RyanDalton

2

คุณอาจลองใช้ไมค์ Migurski ของSkeletron มันเป็นเครื่องมือโอเพนซอร์ซที่เขาใช้สำหรับสิ่งต่างๆเช่นสไตล์แผนที่ภูมิประเทศของเขา


1

บางทีมันอาจจะไม่ได้เป็นทางออกที่สวยงามมากและมันขึ้นอยู่กับวิธีการตอบคำถาม: /gis//a/295348/120129

มันเป็นหนึ่งในตัวแปรในการแก้ไขคำถามของคุณตั้งค่า geoinstrument (สำหรับฉันมันเป็นถนนที่มีชื่อ "road_border" กว้าง 11 ม. พิมพ์ - เส้น (MultiLineString)

เรียกใช้ geoinstrument :-)

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),
      tblj 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 tblj b ON ST_Within (a.geom, b.geom);

และดูผลลัพธ์

ขอให้ทุกคนโชคดี :-)

โซลูชันดั้งเดิม ...

สคริปต์นี้มีชื่อว่า - ST_RoadAxisFromDelaunayTriangulation ...

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.