Ada 3 kemungkinan scenerio yang saya coba tangkap dalam jarak dekat untuk:
- Stasiun kereta bawah tanah interchange, yang memiliki 2 stasiun tetangga atau lebih. Artinya, stasiun yang dimaksud menghubungkan 2 atau lebih rute utama dan memiliki 2 atau lebih stasiun tetangga.
- Stasiun kereta bawah tanah terminal, yang hanya memiliki 1 stasiun tetangga. Ini adalah stasiun di ujung jalur.
- Stasiun kereta bawah tanah inline, yang memiliki tepat 2 stasiun tetangga, salah satunya.
Saya mencoba menghitung nilai yang mungkin disebut "jarak rata-rata antara stasiun tetangga"
The arcpy.GenerateNearTable_analysis()
dapat menangani dua pilihan: Jarak fitur terdekat, dan Jarak antara semua fitur.
Adakah yang punya metode pintar untuk menyelesaikan skenario ini? Perhatikan bahwa setiap stasiun ditetapkan sebagai "Interchange", "Terminal" atau "Inline" di tabel atribut di bawah bidang "StationType".
Ditambahkan:
Berikut adalah beberapa kode psuedo berdasarkan saran @ whuber di komentar. Saya belum punya waktu untuk memikirkannya, jadi jika ada yang ingin menusuknya, Anda akan diberi tanda centang! ;)
Saya telah melihat perpustakaan NetworkX dan tampaknya berfungsi seperti yang saya inginkan.
Diberikan grafik:
A —― B ―― C ―― D
|
E
serta simpul dan tautan:
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
Jawaban:
Saya percaya masalah Anda, sebagai @whuber, disarankan akan diwakili dalam Matriks Adjacency . Artinya, jika Anda punya waktu dan kecenderungan untuk memahami teori di baliknya, daripada mengandalkan paket untuk melakukan pekerjaan untuk Anda.
Untuk grafik G yang diberikan, dengan simpul {v 1 , v 2 , ..., v n } dengan n adalah jumlah simpul, Anda perlu membuat matriks ukuran M i, j di mana i = n dan j = n. Setiap dhuwur kemudian diwakili dalam baris ke- i dengan jumlah lintasan yang ditemukan ke verticies yang berdekatan di kolom j .
Contoh di bawah ini:
Dengan bentuk yang agak rumit ini untuk merepresentasikan data Anda yang relatif sederhana, Anda perlu memberi nomor pada simpul Anda secara sewenang-wenang, tidak mewakili urutan logis apa pun.
CATATAN: Dengan asumsi tidak ada stasiun loop pada dirinya sendiri, baris ke- k tidak akan pernah memiliki nilai selain 0 pada kolom ke- k . Semua definisi di bawah menganggap ini benar
CATATAN: Dengan asumsi tidak ada garis konkuren antara stasiun yang sama, semua contoh di bawah ini mengasumsikan bahwa nilai sel hanya akan menjadi 1 atau 0. Contoh di atas juga mengasumsikan perjalanan dua arah diizinkan.
Aturan untuk mengidentifikasi kategori stasiun:
1. Terminal
Terminal akan diidentifikasi oleh baris k yang memiliki kolom tunggal yang tidak memiliki nilai 0, dan nilai mana adalah 1. Lihat simpul 1, 2, dan 3 pada contoh 1 di atas.
2. Persimpangan
Persimpangan akan diidentifikasi oleh baris k yang memiliki lebih dari dua kolom yang berisi nilai 1. Lihat simpul 4 pada contoh 1 di atas, atau semua simpul dalam contoh 3 di atas.
3. Sebaris
Stasiun inline ditandai dengan memiliki tepat 2 kolom di baris ke- k di mana nilainya adalah 1. Lihat semua simpul pada contoh 2 di atas. (Abaikan fakta bahwa {v 1 , v 3 } memotong {v 2 , v 4 }.)
sumber
Anda dapat mencoba menggunakan Shapely . Jika Anda mengonversi titik lengket Anda ke titik bentuk, Anda dapat menghitung jarak antara titik-titik individual.
sumber