Посилання на ідеї на карті на карті? [зачинено]


44

Я використовую OpenStreetMap та його векторну дорожню мережу, і я хотів би реалізувати алгоритм відповідності карти.

В даний час я в змозі отримати для кожного положення GPS найближчий відрізок дороги і обчислити проекцію цієї позиції на цей відрізок, як на цьому зображенні (Червоний штифт - це чиста позиція GPS, синім кольором - нанесений відрізок, а зеленим - зелений картографічне положення):

введіть тут опис зображення

Однак через недостатню точність GPS, інколи відображене положення перескакує з сегмента в інший і час від часу може надати певну непослідовну картографічну позицію.

Мій поточний алгоритм дуже основний: із чистої позиції GPS я отримую найближчий сегмент і вирішую, що відображена відповідна позиція знаходиться на цьому. Я знаю, що це можна справді покращити.

Я можу собі уявити, що врахування напрямку автомобіля покращить відповідність карти, але чи знаєте ви який-небудь інший підхід, який би дозволив мені покращити відповідність карти?

Я шукаю будь-яке посилання та / або програмне забезпечення з відкритим кодом?


4
Ви можете додати коло - Google використовує прийом стільникового зв'язку та створює світло-синє коло, щоб показати ваше приблизне місцезнаходження. Ви додаток виглядає добре, добре працює. Якщо у вас є векторні дані, ви можете перейти до найближчого рядка з точки GPS - див. Допис від Paul Ramsey blog.cleverelephant.ca/2008/04/snapping-points-in-postgis.html
Mapperz

4
Ключове слово, яке ви шукаєте, - відповідність карти. Великий предмет.
Uffe Kousgaard

1
Uffe правильний, збіг карт. Перевірте цей документ на кілька підходів: cens.ucla.edu/~mhr/cs219/maps/white00.pdf
lexicore

Дякую! лексикоре, папір надсилається на мій принтер, коли я друкую це. Час отримати огляд. Дякую за посилання
scrrr

Я вдосконалював би алгоритм, намагаючись також підключитися до фактичної дороги, а не лише до вершин.
Devdatta Tengshe

Відповіді:


11

Проегування точок на лінію, як ви вже робите, можливо зробити безпосередньо в PostGIS. Я писав про це деякий час тому, ось

Але вирішити свою проблему, коли точки ближче до неправильного відрізка, ніж правильний відрізок, можливо, це може бути можливим підходом.

  1. Побудуйте лінію рядків точок
  2. Спробуйте запропоновані рішення в Алгоритмах для відповідності сегментів, щоб вони відповідали цілому рядку, а не просто точка за точкою

Thx для вашої відповіді. Проекція гаразд: я це вже роблю (не через ST_Closest, тому що вона не доступна в просторовому просторі, який я використовую, але це нормально). Я також просто дивився на згадане вами запитання і дізнався про існування цієї "відстані Хаусдорфа", яку, можливо, буде цікаво подивитися.
yonel

10

Прочитавши ваше запитання та різні відповіді, я зацікавився цією проблемою. Дещо прочитавши алгоритми відповідності карт, я зрозумів наступне:

  • Щоб відповідати розташування gps дорозі, потрібні фактичні дані про дороги у векторному форматі
  • Це допоможе, якщо у вас різні ваги для різних доріг. Тож шанси на збіг точки з трасою будуть вищими, а потім із узгодженням бічної лінії.
  • Вам потрібно взяти історію та швидкість зчитування GPS. Наприклад, якщо точка gps довгий час узгоджувала бічну смугу, ви повинні врахувати це, а не відповідати його безпосередньо шосе. -Справжня відповідність проводиться за допомогою різноманітних статистичних методик.

Для подальшого читання пропоную наступне:


Так, я також читав і почав грати з впровадженням простого алгоритму, який я можу розширити. Поки я завантажив деякі дані з OSM, і я граю з тим, як я можу найкраще зберігати (і отримувати доступ до них) для своїх цілей. Думаю, це цікава тема. :) Я оновлю це питання, як тільки матиму щось, що працює. Також дякую за посилання!
scrrr

Я був би обережним із використанням ваг "Так шанси на точку зіставлення з трасою будуть вищими, а потім з узгодженням бічної лінії". ... Це залежить від вхідних даних і може піти не так.
underdark

@Devdatta, я отримую 404 на другому посиланні. Замість того, щоб я просто редагував це, у вас є альтернативне посилання?
Чау

У мене немає посилання на безкоштовний доступ до цієї статті. Але якщо ви перебуваєте в навчальних закладах. Стаття повинна бути доступна після швидкого пошуку
Devdatta Tengshe

@Chau: Я знайшов PDF за адресою: researchgate.net/profile/Alain_Kornhauser/publication/…
Devdatta Tengshe

7

Відповідаючи на моє власне запитання!

1- Приємний .pdf Я щойно знайшов про цю тему:

http://safari.ce.sharif.edu/file/2011-06-06/259/2009_An%20off-line%20map-matching%20algorithm%20for%20incomplete%20map%20databases.pdf

що також посилається на реалізацію C ++ з відкритим вихідним кодом відповідника карти, описаного в документі: http://eden.dei.uc.pt/~camara/files/mgemma.zip
(цей варіант є автономним відповідником карти, я розумію: що він обчислює положення зіставлених на карті зі ШЛЯХ шляхом як вхідні дані і не може це робити під час руху для кожної позиції).

2- Тоді, я щойно прочитав цю детально, і на мій погляд, це дуже добре: https://dspace.lboro.ac.uk/dspace-jspui/bitstream/2134/4860/1/velaga.pdf "Розвивається вдосконалений алгоритм топологічної карти на основі інтелектуальної транспортної системи на основі ваги "
Алгоритм чітко пояснений, а значення коригування ваги також надані в документі.


4

Проводиться велика робота над узгодженням карти, див. Цей документ для короткого огляду деяких досить недавніх робіт (до 2007 року). Останнім часом підходи, засновані на прихованих моделях Маркова, здаються, в нормальних умовах спрацьовують досить добре. Наприклад, ознайомтеся з цією публікацією з 2009 року. Ідея та модель є досить простими і не повинні доставляти вам великих труднощів у здійсненні, навіть якщо ви не знайомі з HMM (у цьому випадку не панікуйте, є багато з підручників і впровадження в Інтернеті)


1
Щойно зрозумів, що босоніж -проект, про який я згадував у своїй відповіді, ґрунтується на папері @Nick рекомендує.
nik

4

Метод також називають "векторним зв'язком". Існує спеціальна сторінка Wiki ( http://wiki.openstreetmap.org/wiki/Conflation ), яка дає загальний огляд та перелічує (Open Source) програмні пакети для виконання дорожнього векторного конфліктування, наприклад "плагін JOSM conflation", "Potlatch 2 об'єднання" інструмент "," RoadMatcher "(для OpenJUMP) та інші.


1
Я завжди думав, що конфлікт - це те, що ти робиш з двома шарами рядків, а не зіставляєш точки на лінії. Це справді те саме?
underdark

4

Для алгоритмів відповідності карт залежить, чи потрібна вам обробка в режимі реального часу або офлайн. У пізнішому випадку найсучасніші альго можуть обробляти ~ 1000 балів за секунду. Вимоги до пам'яті залежать від покриття курсу. Для цього нам вдалося стиснути дорожню мережу OSM планети приблизно на 16 Гбіт.

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

Ви можете перевірити мій профіль на API, який відповідає зіставленням карт безпосередньо в OSM: він використовує топологічну відповідність і добре працює, наприклад, з плаваючими даними автомобіля.


Чи можете ви розширити алгоритми, які ви використовуєте? І як допомагає зменшувати розмір дорожньої мережі?
Devdatta Tengshe

Менше покриття = менша мережа для збереження пам’яті. Це трохи пришвидшує обчислення. Посилання: trb.metapress.com/content/p31485vw72645686
Fabrice Marchal

3

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


2

Після тестування більшості згаданих рамок я знайшов босоніж і дійсно можу порекомендувати його. Він використовує приховані моделі марків як імовірнісний підхід до узгодження карт (детальніше у їх роботі "Поставлення машини на карту" ) та реалізований на Java. Він відкритий і активно розробляється відділом CarIT BMW.


2

Предмет називається збігом карт. Але, як перше дуже гарне наближення, напевно, досить добре просто знайти найближчі точки для кожної точки GPS (без жодних виправлень, які вгадують правильний шлях).

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


1

Спробуйте отримати хороші дані тесту. Використовуйте додатковий GPS-протокол з більш високою точністю, окрім пунктів реєстрації на вашому цільовому пристрої. Це дозволить виявити помилки в GPS та в основних даних OSM. Знання розумних порогів значно спростить розробку алгоритму.


1

Якщо ви можете отримати дані про дороги для вашого регіону, вас може зацікавити автоматичне об'ємне оснащення за допомогою FOSS

Залежно від того, чи хочете ви розмістити дані в режимі реального часу, чи плануєте після цього виконати якусь пост-обробку на вашому ПК, GRASS може допомогти.


1

Я знайшов API, який може просто виконати цю роботу, не намагаючись одразу розробити власне рішення.

Вони використовують дані OSM для відповідності карти. Вони також мають демонстраційну сторінку, яка дозволяє завантажувати файли GPX, щоб побачити, наскільки добре це може працювати для вас.


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