Haritada “terminal” şehirlerini bulma


13

Ben köy vardır / şehirler bulmak istediğiniz uçları . Bunun anlamı: X km uzaklıktaki en fazla bir köye bağlı bu köylere ihtiyacım var .

Sadece bu algoritmanın nasıl adlandırıldığını merak ediyorum (sanırım birisi daha önce benzer bir şey yarattı).

Bunun için bir araç var mı? Bu kavrama nasıl denir?

Örneğin

 City ------------ Village 1 ------- Village 2 ------ Village 3 - - - [ Mountain]
                    \                 \                                \
                     Village 4         |                                Road
                     |                  \                            in mountains
                     Village 5----------Village6---------Village7 - - - - -  

Sürece dağlarda Yol uzun XKM daha, Village 3ve Village 7benim tarafımdan kabul edilecek terminali onlar (sırasıyla V2, V6) bir köye bağlı olduğu için,.

Aksi takdirde, sahip olduğumuz açık verilerle bir tane oluşturmak isteyeceğim.


Ne denedim :

Ülkem için OSM verilerini indirme (Romanya) ve köyleri ve şehirleri veritabanına aktarma. Coğrafi konum fonksiyonlarını veritabanından kullanarak, R km yarıçapında X'ten fazla köyü olmayan köyleri bulabiliyorum .

Ancak bu benim durumum için bir çözüm değildir, çünkü benim durumumda bir köy dağın diğer tarafında olabilir, yukarıdaki örnekte olduğu gibi, ancak bunun için iyi bir yol yoktur (ya da hiç yolu yoktur).


3
Kavram bağlantıdır ve grafik teorisinde bir 'düğümün' kenarları 'olarak temsil edilir. Ağırlık eşiğinizin üzerindeki kenarları filtreledikten sonra bir kenarı olan düğümleri arıyor olacaksınız. Gerçek bir çözüm, hangi araç, dil veya yazılımla çalıştığınıza bağlı olacaktır.
RoperMaps

@RoperMaps Henüz ayarlanmış bir aracım yok, ancak genel olarak soruyorum (ve sonunda, biri daha önce böyle bir şey inşa ederse). Bunu bir puan vererek uzatırdım (düğümün sahip olduğu X'ten kaç yol daha kısa). Puan ne kadar büyük olursa, o kadar bağlı (ve daha az terminal ) olur. Eğer inşa edersem, muhtemelen Node.js kullanarak bazı grafikleri ayrıştıracağım, ancak daha önce başka birinin yaptığını merak ediyorum. : D
Ionică Bizău

@RoperMaps Sanırım bunun için OSM kullanabilirim, ama son derece zor buluyorum (örneğin düğümleri bağlamanın yolları var, ancak bu düğümler sadece şehirleri temsil etmeyen noktalar). Ben bir grafik ya da benim durumum için biraz daha geniş bir şey yaprak bulmak için bir algoritma yazabilirsiniz , ama bunun için OSM verileri nasıl kullanılacağından emin değilim (ya da OSM daha kolay bir yolu var mı?).
Ionică Bizău

Hangi yazılımı kullanıyorsun ? gerçek mesafelerde mi yoksa kuş uçuş mesafelerinde mi çalışıyorsunuz?
radouxju

@radouxju İlk çalışma prototipim kuş uçuş mesafeleriydi (yarıçap, koordinatlara dayalı) - yine, bu bir başlangıç, ama istediğim bu değil. Senaryomu Node.js'ye yazdım ve MongoDB'yi kullanarak yazdım. Gerçek mesafeleri tercih ederim: örneğin bir tepeyle ayrılmış, tepenin üzerinde hiçbir yolu olmayan iki köy varsa, aralarındaki mesafe onları bağlayan en kısa yol olacaktır.
Ionică Bizău

Yanıtlar:


2

Bana öyle geliyor ki, her bir uç / terminal noktası tamponu için koordinatları alarak çizgi geometrisi boyunca adım atmanız gerekiyor gibi görünüyor. biri değil ve döngü. Umarım bu mantıklıdır ...


Peki, nasıl yapılır?
Ionică Bizău

Bunu Modelbuilder ile yapabilir ve Python'a aktarabilirsiniz. ArcObjects başka bir rota ama daha karmaşık. Daha önce hiç Modelbuilder kullandınız mı?
user17260

"Dokunuşlar" seçeneğiyle mekansal bir seçim başlamanıza neden olabilir. Seçim kümesini dokunmayanlara ters çevirdiğinizde orijinal seçim kümesini daraltabilir.
user17260

Modelbuilder kullanmadım. Adım adım cevap lazım, çünkü OSM verileriyle ilk etkileşimim. : D Bu konuda öğreticiler bile bulmak benim için çok zor.
Ionică Bizău

Vay canına, bu büyük bir istek. ArcMap'in ArcInfo lisansına erişiminiz var mı?
user17260

2

Bunu, QGIS ve başlangıçta Graphab veya Conefor gibi peyzaj bağlantısını hesaplamayı amaçlayan bir yazılım kullanarak başarabilirsiniz . Örneğin :

  • OSM verilerinizi sürükleyip bırakarak veya OpenStreetMap eklentisini kullanarak QGIS'e aktarın.
  • Verilerinizi şekil olarak kaydedin (sağ tıklayın)
  • Düğümleri ve bağlantı dosyalarını burada açıklandığı gibi oluşturmak için Conefor eklentisini kullanın
  • Conefor kullanarak her düğümün ve bağlantının önemini hesaplayın. Bağlantı için bir "uç düğüm" önemli olmayacaktır. BC (IIC) metriğini kullanabileceğinizi düşünüyorum, çünkü "belirli bir düğümden geçen tüm yamalar arasındaki en kısa yolların sayısını (...) [ve] Belirli bir düğümün yer aldığı yamalar arasındaki yollar " ( buraya bakınız )

Bunu test edemedim - maalesef şu anda yeterli zamanım yok. Ama bence biraz ince ayar yapmaya açıksanız işe yarayabilir. Örneğin, manüel olarak (çok fazla değillerse) bir engelin her iki tarafında bulunan iki düğümü birbirine bağlayan bağlantıları veya coğrafi işlem işlevlerini ve engellerinizi içeren bir şekli kullanarak kaldırmanız gerekir. .


Bunun için teşekkürler! Yakında deneyeceğim. [ve] uzunluk (bağlantı sayısı) - bu bana kilometre cinsinden mesafeyi verecek mi (değilse, bunu nasıl alabilirim?)?
Ionică Bizău

Noktalar arasındaki mesafeyi elde etmek için, QGIS dışında herhangi bir yazılım kullanmak zorunda değilsiniz. Örneğin buraya ve buraya bakınız . Kullanılan mesafe birimi katman koordinat sistemine bağlıdır.
Mefimefi

Ayrıca, peyzaj bağlantısına odaklanan araçlar hakkında daha fazla bilgi istiyorsanız, bu Researchgate tartışmasına
Mefimefi

QGIS'i biraz buggy buldum (en azından macbook'umda), ancak son bağlantı yararlı. Cevaplarını da kontrol edecekler. Teşekkürler!
Ionică Bizău

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.