मैं पास और समानांतर सड़क लाइनों (जैसे। एक दोहरी-कैरिजवे) को एक सिंगल लाइन में कैसे मर्ज / पतन कर सकता हूं?


23

मेरे पास OSM से एक आकृति है जिसमें एक शहर के भीतर सभी सड़कें हैं। बड़ी सड़कों (जैसे दोहरी-कैरिजवे) में 2 समानांतर रेखाएं लगती हैं। मैं उन्हें 1 पंक्ति में ध्वस्त / संयोजित करना चाहता हूं, ताकि मैं बाहरी 3 डी एप्लिकेशन में उन्हें अच्छी तरह से निर्यात और रेंडर कर सकूं (2 अतिव्यापी सड़कें जटिल होंगी और 3 डी में अजीब दिखेंगी)।

मैं इसे QGIS या PostGIS के साथ कैसे प्राप्त कर सकता हूं? मैं सटीकता की थोड़ी हानि (कुछ मीटर के भीतर) के बारे में चिंतित नहीं हूं और इसके परिणामस्वरूप, वर्तमान (समानांतर) केंद्र के समानांतर, समानांतर रेखाओं के बीच परिणामी एकल लाइन करना चाहूंगा।

धन्यवाद।

(यहां दोहरी सड़क लाइनों का एक उदाहरण है जिसे मैं संयोजित करना चाहता हूं)

यहां छवि विवरण दर्ज करें

जवाबों:


3

ईएसआरआई के पास एक संक्षिप्त दोहरी कैरिजवे है जो केंद्र-रेखा उपकरण के लिए है। आप OSM के साथ उपयोग के लिए एक सस्ता संस्करण प्राप्त कर सकते हैं। अन्यथा आप सुविधाओं का चयन कर सकते हैं और नई परत के रूप में सहेज सकते हैं। निर्यात के लिए आपके द्वारा उपयोग की जाने वाली परत से चयनित हटाएं। कैरिजवे के एक तरफ की सीमा में बफर फीचर जिसमें दूसरी लेन भी शामिल है। मूल के साथ शेपफाइल मर्ज करें, किसी भी टूटी हुई टोपोलॉजी को कनेक्ट करें।

यदि आप कोड और / या स्क्रिप्ट कर सकते हैं, तो आप नोड मिलान के द्वारा नोड पर लेन के बीच एक केंद्र रेखा को औसत कर सकते हैं, नोड मिलान और आउटपुट द्वारा एक centerline programaticaly और फिर उत्पादन प्रक्रिया के लिए उपयोग की जाने वाली चयनित सुविधाओं को हटा सकते हैं, टूटी हुई टोपोलॉजी की जांच कर सकते हैं और ठीक कर सकते हैं, और आप कर रहे हैं किया हुआ।

मुझे एक चापलूसी कोड का नमूना मिला, जिसमें मैं शामिल हूं, लिंक कैसे पाया जाए नीचे टिप्पणी में है।

ईएसआरआई 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, "")

क्या आप कृपया ईएसआरआई पतन को सेंटरलाइन टूल से लिंक कर सकते हैं? मैं इसे ढूंढ नहीं सका। केवल एक चीज जो मुझे मिल सकती थी, वह थी इस पृष्ठ का संपादन दोहरे कैरिजवे अनुभाग ।
Fezter

आर्कगिस मदद से उन लिंक को उत्पन्न करता है जो मेरे द्वारा देखे गए लिंक के रूप में कोई संदर्भ नहीं देते हैं, इसलिए ... resource.arcgis.com/en/help/main/10.1/index.html पर जाएं और खोज डुअल लाइन्स टू सेंटरलाइन (कवरेज) खोजें मूल लिंक एक चर्चा से आया है और गलत हो सकता है के रूप में आप डेस्कटॉप उन्नत के लिए ArcGIS की जरूरत है: आवश्यक ArcInfo कार्य केंद्र स्थापित
लुईस

1
अधिकांश उपयोगकर्ताओं को "कवरेज" टूल (जिसमें वर्कस्टेशन की आवश्यकता होती है) का उपयोग नहीं किया जाना चाहिए, जब तक कि आर्क 7 कवरेज डेटा के साथ स्पष्ट रूप से काम नहीं कर रहा हो। इसके बजाय, ज्यादातर मामलों में संक्षिप्त दोहरी लाइनें टू सेंटरलाइन (कार्टोग्राफी) का उपयोग करें
रेयानडाल्टन

2

आप माइक Migurski का उपयोग की कोशिश कर सकते Skeletron । यह एक ओपन सोर्स टूल है, जिसका इस्तेमाल वह अपनी टेरेन मैप स्टाइल जैसी चीजों के लिए करता है।


1

शायद यह एक बहुत ही सुंदर समाधान नहीं है और यह सवाल का जवाब देने की विधि पर आधारित है: /gis//a/295348/120129

यह आपके प्रश्न को हल करने के वेरिएंटों में से एक है, एक जियोइन्स्टेक्टस सेट करें (मेरे लिए यह "रोड_बॉर्डर" 11 मीटर चौड़ा, टाइप - लाइन (मल्टीलाइनरिंग) नाम से एक सड़क है)

एक जियोइन्स्टैटिक्स चलाएं :-),

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 ...

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.