Пошук «термінальних» міст на карті


13

Я хочу знайти села / міста, які є кінцями . Це означає: мені потрібні ці села, які пов'язані з максимум одним селом на відстані X км.

Мені просто цікаво, як називається цей алгоритм (я думаю, хтось створив щось подібне раніше).

Чи є інструмент для цього? Як називається це поняття?

Напр

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

Поки Дорога в горах довша Xкм, Village 3і я Village 7вважав би її терміналом , оскільки вони пов'язані з одним селом (V2, відповідно V6).

В іншому випадку я захочу побудувати його з відкритими даними, які ми маємо.


Що я спробував :

Завантаження даних про ОСМ для моєї країни (Румунія) та імпорт сіл та міст у базу даних. Використовуючи геолокаційні функції з бази даних, я можу знайти села, у яких не більше X сіл в радіусі R км.

Однак це не є рішенням для мого випадку, тому що в моїх випадках село може бути з іншого боку гори, як у прикладі вище, але немає хорошого шляху до нього (або зовсім немає).


3
Поняття - це сполучуваність, і в теорії графіків буде представлено як кількість 'ребер', які має 'вузол'. Вам потрібно буде шукати вузли з одним краєм після того, як ви відфільтрували краї вище порогової ваги. Фактичне рішення залежатиме від того, з якими інструментами, мовою чи програмним забезпеченням ви працюєте.
RoperMaps

@RoperMaps У мене ще не створено жодних інструментів, але запитую взагалі (і, врешті-решт, чи хтось будував щось подібне раніше). Я би розширив це, даючи бал (скільки способів коротший за X у цього вузла). Чим більша кількість балів, тим більше вона пов'язана (і менше терміналу ). Якщо я буду його створювати, ймовірно, я закінчу розбір деяких графіків за допомогою Node.js, але просто цікаво, чи робив це хтось раніше. : D
Іоніка Бізау

@RoperMaps Я думаю, я можу використовувати для цього OSM, але мені це вкрай складно (наприклад, є способи підключення вузлів, але ці вузли - це лише пункти, а не міста). Я можу написати алгоритм пошуку листів у графіку чи щось більш розширене для мого випадку, але я не впевнений, як використовувати дані OSM для цього (чи існує простіший спосіб, ніж OSM?).
Ionică Bizău

яке програмне забезпечення ви використовуєте? ти працюєш на реальній відстані чи на відстані польоту птахів?
radouxju

@radouxju Моїм першим працюючим прототипом були відстані польоту птахів (радіус, заснований на координатах) - ось, це початок, але це не те, що я хочу. Я написав свій сценарій у Node.js та за допомогою MongoDB. Я віддаю перевагу реальній відстані: наприклад, якщо є два села, розділені пагорбом, без дороги через пагорб, то відстань між ними буде найкоротшою дорогою, яка їх з'єднує.
Ionică Bizău

Відповіді:


2

Мені здається, що вам потрібно перейти через геометрію лінії, отримуючи координати для кожного буфера кінцевих / кінцевих точок, виберіть геометрію лінії (з ваших доріг fc), якщо ви повернете лише одну функцію її кінцеву / кінцеву точку, якщо більше одного це не так і прокрутити. Сподіваюся, це має сенс ...


Ну, і як це зробити?
Ionică Bizău

Можливо, ви зможете це зробити з Modelbuilder та експортувати на Python. ArcObjects - інший маршрут, але більш складний. Ви раніше не використовували Modelbuilder?
користувач17260

Просторовий вибір з опцією "штрихи" може розпочати роботу. Може звузити початковий набір вибору, коли ви інвертуєте набір вибору до тих, які не торкаються.
користувач17260

Я не використовував Modelbuilder. Мені потрібна покрокова відповідь, адже це моя перша взаємодія з даними OSM. : D Мені дуже важко навіть знайти підручники з цього приводу.
Ionică Bizău

Нічого собі, це велике прохання. Чи маєте ви доступ до ліцензії ArcInfo ArcMap?
користувач17260

2

Ви можете досягти цього, використовуючи QGIS та програмне забезпечення, спочатку спрямоване на обчислення ландшафтної підключення, наприклад, Graphab або Conefor . Наприклад :

  • Імпортуйте свої дані OSM в QGIS, перетягуючи їх або за допомогою плагіна OpenStreetMap.
  • Збережіть свої дані у формі (клацніть правою кнопкою миші)
  • Використовуйте плагін Conefor для створення файлів вузлів та з'єднань, як пояснено тут
  • Обчисліть важливість кожного вузла та зв’язку за допомогою Conefor. "Кінцевий вузол" не матиме важливого значення для підключення. Я думаю, ви могли б використовувати метрику BC (IIC), оскільки вона враховує "кількість найкоротших шляхів між усіма парами виправлень, які проходять через певний вузол (...) [і] довжину (кількість посилань) шляхи між патчами, в яких задіяний певний вузол " (див. тут )

Я не зміг це перевірити - на жаль, зараз у мене недостатньо часу. Але я думаю, що це може спрацювати, якщо ти відкритий до тріщин. Наприклад, вам, ймовірно, доведеться видалити посилання, що з'єднують два вузли, які знаходяться з кожної сторони перешкоди (гори тощо), або вручну (якщо їх не так багато), або за допомогою функцій геообробки та форми, що містить ваші перешкоди .


Дякую за це! Спробую це найближчим часом. [і] довжина (кількість посилань) - це дасть мені відстань у кілометрах (якщо ні, як я можу це отримати?)?
Ionică Bizău

Щоб отримати відстань між точками, вам не доведеться заважати користуватися будь-яким іншим програмним забезпеченням, крім QGIS. Дивіться тут і тут, наприклад. Використовувана одиниця відстані залежить від системи координат шару.
Мефімефі

Крім того, якщо ви хочете отримати більше інформації про інструменти, що зосереджуються на ландшафтному зв’язку, ви можете ознайомитись із цією дискусією Researchgate
Mefimefi

Я знайшов QGIS трохи баггі (принаймні, на моєму macbook), але остання посилання корисна. Перевірятимемо і їх відповіді. Спасибі!
Ionică Bizău

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.