আর্কম্যাপে লাইন শেফফিলের "সংযোগ" 'পরীক্ষা করা হচ্ছে?


9

আমি আর্কম্যাপে একটি লাইন শেফফাইল উত্তরাধিকার সূত্রে পেয়েছি যা একটি রোড নেটওয়ার্ক প্রতিনিধিত্ব করতে ব্যবহৃত হয়। সমস্যাটি হ'ল রাস্তার নেটওয়ার্কটি বেশ বড় এবং আমার পক্ষে এটি অসম্ভব:

  1. প্রতিটি লাইনের (রাস্তা বিভাগ) প্রান্তটি একটি প্রান্ত, শীর্ষে বা অন্য লাইনের (রাস্তা বিভাগ) এর শেষের সাথে "সংযুক্ত" রয়েছে কিনা তা বলুন; এবং
  2. পুরো সড়ক নেটওয়ার্কটি "সংযুক্ত" রয়েছে কিনা তা বলুন - অর্থাত্, আমি কি রাস্তা নেটওয়ার্কের কোনও বিন্দু থেকে রাস্তা নেটওয়ার্কের অন্য কোনও বিন্দুতে কোনও পথটি সনাক্ত করতে পারি?

আর্কম্যাপে এটি সম্পাদন করার কোনও উপায় আছে কি? এটিই কি এমন কোনও ফাংশন রয়েছে যা আমাকে লাইন বিভাগগুলি হাইলাইট করার অনুমতি দেবে যা অন্য লাইন বিভাগগুলির সাথে সংযোগ স্থাপন করে না, বা অনুরূপ কিছু যা আমাকে উপরের দুটি প্রশ্নের উত্তর দেওয়ার অনুমতি দেয়?

উত্তর:


14

হ্যাঁ, তবে সাজানো আরকগিসের আর লাইন নোড টপোলজি নেই যা ব্যবহারকারীকে তাদের প্রান্তে (নোডগুলি) কতগুলি আর্ক (লাইন) সংযুক্ত রয়েছে তা জানাতে সক্ষম করে।

যাচাই করা একটি জিনিস, তবে পরিবর্তে কীভাবে ঠিক করবেন? আপনি যদি আরক্যাম্যাপে বৈশিষ্ট্য শ্রেণিটি খোলেন এবং তারপরে প্ল্যানারাইজ লাইনগুলি (একটি সহনশীলতা দিন) ব্যবহার করেন এবং লাইনগুলি ছড়িয়ে দেওয়া হবে এবং ছেদে বিভক্ত হবে - প্রচুর কাজ সাশ্রয় করে। আপনি যদি লাইনগুলি বিভক্ত করতে না চান তবে সরঞ্জামটি সংহতকরণ বিবেচনা করুন তবে খুব ছোট সহনশীলতা ব্যবহারে সতর্ক থাকুন, এটি প্রান্তগুলি একসাথে স্ন্যাপ করবে তবে লাইনগুলি একসাথে স্ন্যাপ করতে পারে। ইন্টিগ্রেট ব্যবহার করার আগে একটি ব্যাকআপ রাখুন এটি আপনার ডেটা নষ্ট করতে পারে!

এখন, সংযোগ বিচ্ছিন্ন প্রান্তগুলি সন্ধান করতে শেষ পয়েন্টগুলি পেতে বৈশিষ্ট্য অনুসারে ব্যবহার করুন এবং তারপরে ইভেন্টগুলি সংগ্রহ করুন যা আপনাকে উপস্থিত পয়েন্টগুলির সংখ্যা সহ একটি বৈশিষ্ট্য বর্গ দেবে, এই পর্যায়ে 1 এর যে কোনও ইভেন্ট সন্দেহ করা হয় তাই আপনাকে আলাদা করতে হবে এই আউট।

এটি যদি সংযুক্ত হওয়া উচিত তবে কাজটি পরবর্তী কাজ, জেনারেট টেবিল জেনারেট করুন (আবার একটি উপযুক্ত সহনশীলতা সহ) এবং নিকটতম = ALL বিকল্পটি ব্যবহার করে আসল লাইনের বিপরীতে 1 টি গণনা করে ইভেন্টগুলি ব্যবহার করুন, তারপরে সংক্ষিপ্ত পরিসংখ্যান ব্যবহার করে আপনি খুঁজে পেতে পারেন প্রতিটি পয়েন্টের জন্য IN_FID কেস ক্ষেত্র হিসাবে এবং NEAR_FID হিসাবে একটি পরিসংখ্যান ক্ষেত্র হিসাবে "COUNT" ব্যবহার করে রেকর্ডের গণনা।

সারণী নির্বাচন ব্যবহার করে 0 টির চেয়ে বেশি দূরত্ব সহ রেকর্ডগুলি নিকটবর্তী টেবিল থেকে আরও সহজে সরানোর জন্য । প্রতিটি ইভেন্ট লাইনটি তৈরি করেছে যা এটি তৈরি করেছে তবে দূরত্বটি 0 হবে, যদি এটি অন্য লাইনের সাথে সঠিকভাবে সংযুক্ত থাকে (একটি শীর্ষে) দূরত্বও 0 হবে, সুতরাং এখন যে কোনও ইভেন্টের নিকটবর্তী টেবিলে রেকর্ড রয়েছে সম্ভবত অসমাপ্ত তবে এগুলি ম্যানুয়ালি দেখা দরকার।


ধন্যবাদ। আগামীকাল আমি যখন কাজ করতে যাব তখন আমি এই ফাংশনটি যাচাই করব এবং আবার রিপোর্ট করব।
derNincompoop

3
"ফিচার ভার্টিস টু পয়েন্ট" এর ডাঙ্গাল পয়েন্টগুলিকে আউটপুট দেওয়ার বিকল্প রয়েছে। আমি মনে করি এটি আপনার কর্মপ্রবাহকে সহজ করবে।
ক্লিভিস

বাহ ক্লেউইস, কখন হাজির? এটি অবশ্যই 9.3 সালে ছিল না। ভাল বিক্ষোভ!
মাইকেল সিসটেমসন

4

আর একটি পদ্ধতি হ'ল এমএপি টপোলজি ব্যবহার করা। আমি ভিবিএ কোডটির এই বিটটি ঠকিয়েছি যা ঝোলা প্রান্তগুলি সনাক্ত করতে পারে। আপনি যদি নেটওয়ার্কের প্রত্যাশিত প্রান্তের পরিবর্তে নেটওয়ার্কের মধ্যে ঝোলা প্রান্তগুলি দেখেন তবে অবশ্যই সংযোগ বিচ্ছিন্ন হতে হবে।

ঝোলা প্রান্তগুলি নির্বাচন করার উদাহরণ

কোডটি আপনার ভিবিএ ইনস্টল করা, সম্পাদনা মোডে থাকা এবং মানচিত্র টপোলজিতে পললাইন স্তর যুক্ত করেছে rel

Public Sub SelectDanglingPolylines()
 ' Description: Takes a polyline dataset and select all dangling polylines.
 '
 ' Requirements: You need to be in edit mode and have added the layer to a MAP TOPOLOGY,
 ' also polyline layer must be first in TOC.
 '
 ' Limitations: Large datasets take a long time to build the cache and may even fail.
 '
 ' Author: Duncan Hornby
 ' Created: 11/12/2011
 '

 ' Get map and then first layer, must be of polyline type
 Dim pMXDocument As IMxDocument
 Set pMXDocument = ThisDocument
 Dim pMap As IMap
 Set pMap = pMXDocument.FocusMap
 Dim pLayer As ILayer
 Set pLayer = pMap.Layer(0)
 Dim pFeatureLayer As IFeatureLayer
 Set pFeatureLayer = pLayer
 Dim pFeatureClass As IFeatureClass
 Set pFeatureClass = pFeatureLayer.FeatureClass
 If pFeatureClass.ShapeType <> esriGeometryPolyline Then
     MsgBox "This code works only with polylines!", vbExclamation, "Wrong data type at layer 0"
     Exit Sub
 End If

 ' Get editor and topology extension
 Dim pEditor As IEditor
 Dim pID As New UID
 Dim pTopologyExtension As ITopologyExtension
 Dim pTEID As New UID
 pID = "esriEditor.editor"
 Set pEditor = Application.FindExtensionByCLSID(pID)
 pTEID = "esriEditorExt.TopologyExtension"
 Set pTopologyExtension = Application.FindExtensionByCLSID(pTEID)
 If pTopologyExtension.CurrentTopology Is Nothing Then Exit Sub

 ' Get a MAP topology not a geodatabase topology
 Dim pMapTopology As IMapTopology
 If TypeOf pTopologyExtension.CurrentTopology Is IMapTopology Then
     Set pMapTopology = pTopologyExtension.MapTopology
 Else
     ' Not a Map Topology
     Exit Sub
 End If

 ' This is the colection that FID are added to
 Dim aColl As New Collection

 ' Build cache
 Application.StatusBar.Message(0) = "Building MAP TOPOLOGY cache, this can take a long time on large datasets..."
 DoEvents
 Dim pGeoDataset As IGeoDataset
 Set pGeoDataset = pFeatureClass
 Dim pEnvelope As IEnvelope
 Set pEnvelope = pGeoDataset.Extent
 pMapTopology.Cache.Build pEnvelope, False

 ' Identify dangling nodes and add polyline FID to collection
 Application.StatusBar.Message(0) = "Identifying dangling nodes..."
 DoEvents
 Dim pEnumTopologyParent As IEnumTopologyParent
 Dim pTopologyNode As ITopologyNode
 Dim pEnumTopologyNode As IEnumTopologyNode
 Set pEnumTopologyNode = pMapTopology.Cache.Nodes
 pEnumTopologyNode.Reset
 Set pTopologyNode = pEnumTopologyNode.Next
 While Not pTopologyNode Is Nothing
 If pTopologyNode.Degree = 1 Then
     ' As this has 1 degree it has only 1 parent polyline
     Set pEnumTopologyParent = pTopologyNode.Parents
     pEnumTopologyParent.Reset
     aColl.Add (pEnumTopologyParent.Next.m_FID) 'Adds polyline FID to collection
 End If
 Set pTopologyNode = pEnumTopologyNode.Next
 Wend

 ' Use collection to select polylines
 Application.StatusBar.Message(0) = "Selecting polylines..."
 DoEvents
 Dim pFeatureSelection As IFeatureSelection
 Set pFeatureSelection = pFeatureLayer
 Dim X As Variant
 For Each X In aColl
     pFeatureSelection.SelectionSet.Add CLng(X)
 Next
 pMXDocument.ActiveView.PartialRefresh esriViewGeoSelection, Nothing, pEnvelope
 Application.StatusBar.Message(0) = ""
 DoEvents
End Sub

আমি এই কোডটি পছন্দ করি, আপনি যদি কিছু মনে না করেন তবে আমি এর কয়েকটি বিট অনুলিপি করব; এইভাবে করার সুবিধাটি হ'ল এটি লাইভ এবং ত্রুটিগুলি স্থির হয়ে গেলে তারা অদৃশ্য হয়ে যাবে, খারাপ অংশটি হ'ল যদি কোনও লাইন খসখসে থাকে তবে তা দেখানো হয় - একটি প্রান্ত সংযুক্ত আছে বা লাইনটি সম্পূর্ণ সংযোগ বিচ্ছিন্ন কিনা। আমি আপনাকে পরামর্শ দিতে পারি যে আপনি কোডটি নোড "ভ্যালেন্স" (সংযুক্ত কতগুলি লাইন) বা কেবল ডাঙ্গাল নোডগুলি প্রদর্শন করুন (এটি আমার ওয়ার্কস্টেশনটি আবার বেরিয়ে আসছে!) ... এটি দুর্দান্ত থাকবে ... তবে কেবল ওপি হলে ভিবিএ / ভিবি.net দক্ষতা রয়েছে।
মাইকেল সিসটেমসন

1
একটি কোডটি টুইঙ্ক করতে পারে এবং একটি প্রান্ত সম্পূর্ণ সংযোগ বিচ্ছিন্ন লাইন খুঁজে পেতে উভয় প্রান্তে 1 এর ভারসাম্যযুক্ত প্রান্তগুলি পেতে পারে, বা অন্যদিকে 1 টির মতো একটি এবং অন্যটিতে 2 এর মতো তারতম্যগুলি আমার অনুমান করা নেটওয়ার্কের উপর নির্ভর করে?
হর্নবিড্ড

2

এটি একটি পুরানো পোস্ট, তবে আমি মনে করি এর সহজ সমাধানটি হ'ল:

  1. আপনার পললাইন বৈশিষ্ট্যটি দ্রবীভূত করুন
  2. দঙ্গি বিকল্পের সাথে পয়েন্টগুলিতে বৈশিষ্ট্য শীর্ষক ব্যবহার করুন
  3. স্থানিক অবস্থান অনুসারে ফলাফলের পয়েন্ট স্তরগুলিতে মূল পললাইন বৈশিষ্ট্যটি যোগ দিন । "এর দ্বারা ছেদ করা" বিকল্পটি ব্যবহার করুন।

ফলাফলটিতে আপনার স্তরের প্রতিটি লাইনের জন্য একটি "কাউন্ট" ক্ষেত্র থাকবে। গণনা যদি 1 এর চেয়ে বেশি হয় তবে লাইনটি বাকী লাইনের সাথে "সংযুক্ত" থাকে না।

ধারণাগতভাবে: দ্বিতীয় ধাপটি এখানে একক সংযুক্ত প্রান্তের সাথে শীর্ষে বিন্দু তৈরি করে (একটি লাইন "ভিতরে যাচ্ছে", শূন্য "বাইরে যাচ্ছে")। যেহেতু "সংযুক্ত" নেটওয়ার্কের মধ্যে প্রতিটি লাইনে সর্বাধিক 1 টির মতো ভার্টেক্স থাকবে তাই 1 টির বেশি লাইন কোনও নেটওয়ার্কের অংশ নয় এবং তাই "সংযুক্ত" নয়।


এই পদ্ধতিটি অনেক মিথ্যা ইতিবাচক উত্পাদন করে। বলুন কোনও রাস্তা টি টি মোড়কে নিয়ে যায়। টি এর উপরের অংশে দুটি ঝোলা কোণে থাকবে। আপনি যদি দুটি গণনা সহ বৈশিষ্ট্যগুলি গ্রহণ করেন এবং তারপরে তাদের আবার রাস্তার নেটওয়ার্কের সাথে ছেদ করেন তবে যেগুলি স্পর্শ করে না সেগুলি দ্বীপগুলি।
Woot

আসলে, দ্বিতীয়টি ছেদটি আমি উপরে লিখেছি কেবল বিচ্ছিন্ন রাস্তাগুলি। এটা খুঁজে তাহলে নেটওয়ার্কের একাধিক অংশ আছে
Woot

1

মডেল নির্মাতা এবং গেফিকে ব্যবহার করে কিছু বন্ধুদের সহায়তায় আমি এখানে একটি পদ্ধতি নিয়ে এসেছি। পদক্ষেপ 1 আর্কমোডেল লিংক / প্রান্তগুলির সারণী তৈরি করে (প্রতিটি লাইনে নোড যুক্ত করতে চাইলে) দ্বিতীয় ধাপে লিংকগুলি / প্রান্তগুলি গেফি আমদানি করে তারপর উপাদান আইডি যুক্ত করুন পদক্ষেপ 3 আর্কমোডেল উপাদান আইডিগুলি মূল লাইনে ফিরে যুক্ত করে

Step1screenshot পদক্ষেপ 1 কোনও নেটওয়ার্ক নোড উপস্থিত রয়েছে তা নিশ্চিত করার জন্য সমস্ত ইনপুট বৈশিষ্ট্যগুলি চৌরাস্তাগুলিতে বিভাজন করে এবং গিফিতে আমদানি করার জন্য একটি সারণী তৈরি করে। পদক্ষেপগুলি এখানে: প্রক্রিয়া: ফিচার টু লাইন (একাধিক ইনপুট নিতে পারে) প্রক্রিয়া: একক অংশে একাধিক অংশ প্রক্রিয়া: পুনরুদ্ধার জ্যামিতি প্রক্রিয়া: সূচনা সমাপ্ত কর্ডগুলি যুক্ত করুন (জ্যামিতির বৈশিষ্ট্যগুলি যুক্ত করুন) প্রক্রিয়া: ক্ষেত্র যোগ করুন "উত্স" প্রক্রিয়া: ক্ষেত্রটি "লক্ষ্য" যুক্ত করুন প্রক্রিয়া: "উত্স" গণনা করুন (স্টার্টএক্স এবং স্টার্টওয়াই হিসাবে) প্রক্রিয়া: "টার্গেট" গণনা করুন (শেষ এক্স এবং শেষের হিসাবে) প্রক্রিয়া: ক্ষেত্রগুলি মুছুন (বিভ্রান্তি এড়াতে অতিরিক্ত ক্ষেত্রগুলি সাফ করুন) প্রক্রিয়া: জিডিবি সারণিতে সিএসভি

Step2Gephi_Screenshot পদক্ষেপ 2 গিফি প্রক্রিয়া (ফ্রি ডাউনলোড) -এসএসভি আউটপুটটি সোর্স এবং টার্গেটের সাথে নোড ক্ষেত্রগুলির লিঙ্ক হিসাবে নামকরণ করুন-গণনা করা উপাদানগুলি পুনঃনির্দেশিত হিসাবে চালান (পরিসংখ্যান সরঞ্জামের অধীনে)-নোডের জন্য ডেটা ল্যাবরেটরি থেকে এক্সপোর্ট সিএসভি (নোড আইডি এবং উপাদান আইডি অন্তর্ভুক্ত)

পদক্ষেপ 3: গিফি আউটপুট নেয় এবং মূল লাইনগুলিতে উপাদান / নেটওয়ার্কের বৈশিষ্ট্য যুক্ত করে তোলে প্রক্রিয়া: টেবিলের টেবিলের সাথে (জিওপ্যাটিপটে জিফিট আউটপুটকে অনন্য অবজেক্টগুলির কাঠামোতে আটকানো) প্রক্রিয়া: ফিল্ডে যোগ দিন (উত্স নোড মানগুলি গিফির আউটপুটটির সাথে সংখ্যার সংখ্যার লাইনে আবদ্ধ হওয়ার জন্য) উপাদান দ্বারা প্রতীক

এই পয়েন্টের পরে ক্লিনআপ সম্ভবত এটির পরীক্ষা করার একটি ম্যানুয়াল প্রক্রিয়া হবে যেখানে লাইনগুলির সাথে সংযোগ বিচ্ছিন্ন হচ্ছে এবং যদি সংযোগ বিচ্ছিন্ন হয় তবে এটি একটি বৈধ বাস্তব-বিশ্ব বিচ্ছেদ বা কেবলমাত্র একটি ডেটা ত্রুটি।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.