আরকিপি ব্যবহার করে x সংখ্যক প্রতিবেশীর জন্য টেবিলের কাছাকাছি তৈরি করুন


9

এখানে সম্ভবত 3 টি প্রাকৃতিক দৃশ্য রয়েছে যার জন্য আমি দূরত্বগুলি কাছাকাছি নেওয়ার চেষ্টা করছি:

  1. একটি ইন্টারচেঞ্জ সাবওয়ে স্টেশন, যার ২ বা ততোধিক প্রতিবেশী স্টেশন রয়েছে। এটি, প্রশ্নে স্টেশনটি 2 বা ততোধিক প্রধান রুটগুলিকে সংযুক্ত করে এবং 2 বা ততোধিক প্রতিবেশী স্টেশন রয়েছে।
  2. একটি টার্মিনাল পাতাল রেল স্টেশন, যেখানে কেবল 1 টি প্রতিবেশী স্টেশন রয়েছে। এটি লাইনের শেষে স্টেশন।
  3. একটি ইনলাইন পাতাল রেল স্টেশন, যার ঠিক ২ টি প্রতিবেশী স্টেশন রয়েছে, উভয়ের মধ্যে একটিরই অ্যাপ্রোচ।

আমি এমন একটি মান গণনা করার চেষ্টা করছি যা বলা যেতে পারে "পার্শ্ববর্তী স্টেশনগুলির মধ্যে গড় দূরত্ব"

এটি arcpy.GenerateNearTable_analysis()দুটি বিকল্প পরিচালনা করতে পারে: নিকটতম বৈশিষ্ট্যটির দূরত্ব এবং সমস্ত বৈশিষ্ট্যের মধ্যে দূরত্ব।

এই পরিস্থিতিগুলির সমাধান করার জন্য কারও কাছে কি চতুর পদ্ধতি রয়েছে? নোট করুন যে প্রতিটি স্টেশন "স্টেশনটাইপ" ক্ষেত্রের অধীনে বৈশিষ্ট্য সারণীতে "ইন্টারচেঞ্জ", "টার্মিনাল" বা "ইনলাইন" হিসাবে মনোনীত হয়েছে।

যোগ করা হয়েছে:

মন্তব্যগুলিতে @ whuber এর পরামর্শের ভিত্তিতে এখানে কিছু psuedo কোড দেওয়া আছে। আমার এখনই এটি বের করার সময় নেই, সুতরাং কেউ যদি এটির জন্য ছুরিকাঘাত করতে চায় তবে আপনাকে একটি চেকমার্ক দিয়ে পুরস্কৃত করা হবে! ;)

আমি নেটওয়ার্কএক্স গ্রন্থাগারটি একবার দেখেছি এবং মনে হচ্ছে এটি যেমন কাজ করবে তেমন কাজ করে।

গ্রাফ দেওয়া:

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
এফডাব্লুআইডাব্লু এটি নিখুঁতভাবে একটি আদর্শ সমাধান সহ একটি গ্রাফ-তাত্ত্বিক সমস্যা: আপনি প্রতিটি শীর্ষবিন্দুর আশেপাশের গ্রাফটি সন্ধান করেন । এটি একটি স্ট্যান্ডার্ড ফর্ম্যাটে যেমন নেটওয়ার্কের প্রতিনিধিত্ব করার সাথে সাথেই এটি উপলব্ধ হয়, যেমন একটি ডিসিএল (বা জেনারাইজেশন যদি না প্ল্যানারে নেটওয়ার্ক থাকে)। এটি প্রস্তাব দেয় যে বাক্সের বাইরে কিছু পাইথন সমাধান পাওয়া যায়।
শুক্র

উত্তর:


5

আমি আপনার সমস্যাটিকে হতাশ করছি, @ হুবুহু হিসাবে, প্রস্তাব দেওয়া হয়েছে সেরাভাবে অ্যাডজেসেন্সি ম্যাট্রিক্সে উপস্থাপন করা হবে । এটি হ'ল, যদি আপনার জন্য কাজটি করার জন্য কোনও প্যাকেজের উপর নির্ভর না করে তার পিছনে তত্ত্বটি বোঝার সময় এবং প্রবণতা থাকে।

প্রদত্ত গ্রাফ জি এর জন্য, {v 1 , v 2 , ..., v n } এর উল্লম্ব সহ, যেখানে n টির সংখ্যা, সেখানে আপনাকে M = , j আকারের একটি ম্যাট্রিক্স তৈরি করতে হবে যেখানে i = n এবং j = এন। প্রতিটি শীর্ষস্থানটি i ম সারিতে j তম কলামে সংলগ্ন প্রান্তিকের সাথে পাওয়া পাথের সংখ্যা দ্বারা উপস্থাপিত হয় ।

নীচে উদাহরণ:

এখানে চিত্র বর্ণনা লিখুন

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

দ্রষ্টব্য: কোনও স্টেশন নিজেই লুপ করে ধরে নিয়েছে, কে- থ্রি সারিটির কখনই কে থম কলামে 0 ব্যতীত অন্য মান হবে না । নীচের সমস্ত সংজ্ঞা এটি সত্য বলে ধরে নিয়েছে

দ্রষ্টব্য: ধরে নিচ্ছি যে একই স্টেশনের মধ্যে কোনও একত্রীকরণের রেখা নেই, নীচের সমস্ত উদাহরণ ধরে ধরে নেওয়া হয়েছে যে কোনও সেল মান কেবল 1 বা 0 হবে above উপরের উদাহরণটিও ধরে নিয়েছে দ্বিদ্বন্দ্বী ভ্রমণের অনুমতি রয়েছে।

স্টেশন বিভাগগুলি শনাক্ত করার নিয়ম:

1. টার্মিনাল

একটি টার্মিনাল একটি কে- থ সারি দ্বারা চিহ্নিত করা হবে যার একক কলাম রয়েছে যার মান 0 নেই এবং কোন মান 1 হবে। উপরের 1, 2 এবং 3 উদাহরণ 1 এর উপরে দেখুন।

2. জংশন

একটি জংশনটি কে- থ সারি দ্বারা চিহ্নিত করা হবে যার মান ১ টির বেশি দুটি কলাম রয়েছে above উদাহরণস্বরূপ 1 টির উপরে শীর্ষবিন্দু 4 দেখুন, বিকল্পভাবে উপরের উদাহরণে 3 টির মতো সমস্ত উল্লম্ব।

3. ইনলাইন

একটি ইনলাইন স্টেশন হ'ল কে 1 তম সারিতে ঠিক 2 কলাম রয়েছে যেখানে মান 1 রয়েছে all উপরের উদাহরণ 2 তে সমস্ত উলম্ব দেখুন। ({V 1 , v 3 } ছেদ করে {v 2 , v 4 } এই বিষয়টি উপেক্ষা করুন ))


কে তুমি আর কোথা থেকে এসেছ! এটি একটি দীর্ঘ সময় আমি পেয়েছি সেরা উত্তরগুলির মধ্যে একটি ছিল। আপনাকে ধন্যবাদ জিওজিস্ট
মাইকেল মার্কিয়েটা

@ মিশেলমারকিটিয়া মজার গল্প, আমি আপনার পোস্টটি দেখার আগে ২ ঘন্টা আগেই এটি সম্পর্কে জানতে পারি।
nagytech

1

আপনি শেপলি ব্যবহার করার চেষ্টা করতে পারেন । আপনি যদি আপনার আরকি পয়েন্টগুলিকে আকৃতির বিন্দুতে রূপান্তর করেন তবে আপনি পৃথক পয়েন্টগুলির মধ্যে দূরত্ব গণনা করতে পারেন।

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

আমার উল্লেখ করা উচিত যে শেপলি কেবল কার্টেসিয়ান বিমানের বৈশিষ্ট্যগুলির জন্যই ব্যবহার করা যেতে পারে, সুতরাং আপনার ডেটা ভৌগলিক স্থানাঙ্কে থাকলে এই পদ্ধতিটি কাজ করবে না।
সাইরাস

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

@ শুভ উফ! রাজি হয়েছি, আমি খুব তাড়াহুড়ো করে প্রশ্নের উত্তর দিয়েছি।
সাইরাস

@ শুভ চিহ্ন আছে।
হরতাল

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