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


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.