आर्कपी का उपयोग करने वाले पड़ोसियों की x संख्या के लिए तालिका के पास उत्पन्न करें


9

वहाँ 3 संभावना scenerios है कि मैं के लिए दूरी के पास कब्जा करने की कोशिश कर रहा हूँ:

  1. एक इंटरचेंज सबवे स्टेशन, जिसमें 2 या अधिक पड़ोसी स्टेशन हैं। अर्थात्, विचाराधीन स्टेशन 2 या अधिक प्रमुख मार्गों को जोड़ता है और 2 या अधिक पड़ोसी स्टेशन हैं।
  2. एक टर्मिनल सबवे स्टेशन, जिसमें केवल 1 पड़ोसी स्टेशन है। यह लाइन के अंत में स्टेशन है।
  3. इनलाइन सबवे स्टेशन, जिसमें बिल्कुल 2 पड़ोसी स्टेशन हैं, दोनों में से एक।

मैं एक मूल्य की गणना करने का प्रयास कर रहा हूं जिसे "पड़ोसी स्टेशनों के बीच औसत दूरी" कहा जा सकता है

arcpy.GenerateNearTable_analysis()निकटतम सुविधा से दूरी, और सभी सुविधाओं के बीच दूरी: दो विकल्प संभाल कर सकते हैं।

क्या इन परिदृश्यों को हल करने के लिए किसी के पास एक चतुर तरीका है? ध्यान दें कि प्रत्येक स्टेशन को "इंटरचेंज", "टर्मिनल" या "इनलाइन" के रूप में नामित किया गया है "स्टेशन स्टेशन" के तहत विशेषता तालिका में।

जोड़ा गया:

यहाँ टिप्पणियों में @ व्ह्यूबर के सुझाव के आधार पर कुछ प्यूसो कोड है। मेरे पास अभी तक यह पता लगाने का समय नहीं है, इसलिए यदि कोई इसे लेना चाहता है तो आपको चेकमार्क से पुरस्कृत किया जाएगा! ;)

मैंने NetworkX लाइब्रेरी पर एक नज़र डाली है और जैसा मैं चाहता हूँ, यह काम करती है।

ग्राफ को देखते हुए:

A —― B ―― C ―― D
     |
     E

साथ ही नोड्स और लिंक:

Nodes = ["A", "B", "C", "D", "E"]
Links = [("A", "B"), ("B", "C"), ("C", "D"), ("B", "E")]

def myFunction(node):
    identify the links that node belongs to
    count the number of links
    calculate the total link lengths
    divide the total link lengths by the number of links
    return someValue

मुझे लगता है कि मैं यह भी उल्लेख कर सकता हूं कि मैं आर्कगिस 10.1 का उपयोग कर रहा हूं और मुझे आर्कपी.डा मॉड्यूल (इसकी गति के लिए) से प्यार है। मुझे उम्मीद है कि हम इसका उपयोग कर सकते हैं।
माइकल मार्कीटा

3
एफडब्ल्यूआईडब्ल्यू यह विशुद्ध रूप से एक ग्राफ-सिद्धांत समस्या है जिसमें एक मानक समाधान है: आप प्रत्येक शीर्ष के पड़ोस ग्राफ की तलाश करते हैं । जैसे ही आप एक मानक प्रारूप में नेटवर्क का प्रतिनिधित्व करते हैं, जैसे कि DCEL (या यदि गैर-प्लानर में नेटवर्क का सामान्यीकरण) है, तो यह लगभग तुरंत उपलब्ध है । यह बताता है कि कुछ आउट-ऑफ-द-बॉक्स पायथन समाधान उपलब्ध हो सकते हैं।
whuber

जवाबों:


5

मैं आपकी समस्या को ध्यान में रखते हुए, @whuber के रूप में, सुझाव दिया गया कि सबसे अच्छा एक आसन्न मैट्रिक्स में प्रतिनिधित्व किया जाएगा । यही है, अगर आपके पास इसके लिए सिद्धांत को समझने के लिए समय और झुकाव है, बल्कि आपके लिए काम करने के लिए पैकेज पर निर्भर है।

किसी दिए गए ग्राफ़ G के लिए, {v 1 , v 2 , ..., v n } के कोने के साथ, जहाँ n कोने की संख्या है, आपको आकार का एक मैट्रिक्स बनाने की आवश्यकता है M i, j जहाँ i = n और j = एन। प्रत्येक शीर्ष को तब j वें कॉलम में समीपवर्ती लंबवत पथों की संख्या से i th पंक्ति में दर्शाया गया है ।

नीचे उदाहरण:

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

अपने अपेक्षाकृत सरल डेटा का प्रतिनिधित्व करने के इस सौम्य रूप से जटिल रूप को देखते हुए, आपको किसी भी तार्किक क्रम के प्रतिनिधि के रूप में, अपने मनमाने ढंग से फैशन में नंबर की आवश्यकता होगी।

नोट: अपने आप पर कोई स्टेशन छोरों मानते हुए, एक कश्मीर वें पंक्ति में 0 के अलावा किसी अन्य मान होना कभी नहीं होगा कश्मीर वें स्तंभ। नीचे दी गई सभी परिभाषाएं इसे सच मानती हैं

नोट: मान लें कि एक ही स्टेशन के बीच कोई समवर्ती लाइनें नहीं हैं, तो नीचे दिए गए सभी उदाहरण यह मानते हैं कि सेल वैल्यू केवल 1 या 0. होगी। ऊपर दिए गए उदाहरण से यह भी लगता है कि द्विदिश यात्रा की अनुमति है।

स्टेशन श्रेणियों की पहचान करने के नियम:

1. टर्मिनल

एक टर्मिनल की पहचान एक k वें पंक्ति से होगी जिसमें एक एकल स्तंभ होता है जिसका मान 0 नहीं होता है, और कौन सा मूल्य 1. ऊपर 1, 2, और 3 उदाहरण 1 में कोने देखें।

2. जंक्शन

एक जंक्शन की पहचान एक k वें पंक्ति से होगी जिसमें दो से अधिक कॉलम होंगे जिनका मूल्य 1 होगा। उदाहरण 1 में शीर्ष 4 देखें, उपर्युक्त उदाहरण 3 में वैकल्पिक रूप से सभी कोने।

3. इनलाइन

इनलाइन स्टेशन को k वें पंक्ति में ठीक 2 कॉलम होने से दर्शाया जाता है, जहाँ मान 1. होता है। उदाहरण के लिए उपरोक्त सभी 2 लंबियाँ देखें। (इस तथ्य को अनदेखा करें कि {v 1 , v 3 } प्रतिच्छेदन {v 2 , v 4 }।)


आप कौन हैं और कहां से आए हैं! यह एक सबसे अच्छा जवाब था जो मुझे लंबे समय में मिला है। शुक्रिया @Geoist।
माइकल मार्किटा

@MichaelMarkieta अजीब कहानी है, मैं बस से पहले 2 घंटे नहीं मैं अपने पोस्ट को देखा इस बारे में सीखा।
नगीतेच

1

आप Shapely का उपयोग करने की कोशिश कर सकते हैं । यदि आप अपने चापलूसी बिंदुओं को सुडौल बिंदुओं में बदलते हैं, तो आप व्यक्तिगत बिंदुओं के बीच की दूरी की गणना कर सकते हैं।

import arcpy
import shapely

arc_point1 = arcpy.Point(1,1)
arc_point2 = arcpy.Point(5,5)

shp_point1 = shapely.geometry.Point(arc_point1.X, arc_point1.Y)
shp_point2 = shapely.geometry.Point(arc_point2.X, arc_point2.Y)

distance = shp_point1.distance(shp_point2)
print "distance:", distance

मुझे यह उल्लेख करना चाहिए कि Shapely का उपयोग केवल Cartesian विमान पर सुविधाओं के लिए किया जा सकता है, इसलिए यदि आपका डेटा भौगोलिक निर्देशांक में है तो यह विधि काम नहीं करेगी।
साइरस

यह उत्तर इस बात की अस्पष्टता बताता है कि प्रश्न को कैसे समझा जा सकता है। मैंने प्रश्न को पढ़ा है जैसे कि दूरियों को इंगित करने के लिए जाना जाता है; उनकी गणना मुद्दा नहीं बनती है। ओपी क्या चाहता है, मेरा मानना ​​है, एक नेटवर्क के साथ कोने के तत्काल पड़ोसियों की एक चर संख्या की पहचान करने के लिए एक एल्गोरिथ्म है , फिर उनकी दूरियों को प्राप्त करने और उनमें से एक सांख्यिकीय सारांश (जैसे एक औसत) की गणना करने के लिए।
whuber

@ शुभंकर उफ़! सहमत, मैंने सवाल का जवाब बहुत जल्दबाजी में दिया।
सायरस

@whuber निशान पर है।
१t

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