Сукупні лінії на основі відстані між сегментами


12

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

Дороги зберігаються в таблиці Postgis (індивідуальна таблиця для кожного рівня збільшення), і я хочу агрегувати дороги на основі рівня масштабування, на якому вони будуть відображатися. Наприклад, у таблиці Zoom Level 5 я хочу об'єднати дороги, які знаходяться на певній відстані одна від одної, і зробити єдину лінію для відрізків дороги: введіть тут опис зображення

Оскільки окремі дороги неможливо розробити на цьому масштабі: введіть тут опис зображення

Як можна об'єднати геометрію доріг на основі відстані між відрізками дороги?

PS: Я працюю над PostGIS і QGIS на Linux, але я відкритий для рішень, використовуючи будь-яку платформу або технологію з відкритим кодом


Чи мають дороги загальний ідентифікатор, наприклад, дві смуги на рівні масштабу 5 на A50 представлені двома лініями, але на рівні 4 однією лінією, і всі вони мають "A50" як їх атрибут?
AnserGIS

Вони представлені двома лініями на всіх рівнях збільшення. У них автомагістралі та автомагістралі матимуть загальний атрибут типу "М-2" для автомобільних доріг.
Хасан Мустафа

Відповіді:


5

Ви можете спробувати переглянути цей варіант ОС, Skeletron , це:

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

Він заснований на статті 1996 року Алнура Ладака та Роберто Б. Мартинеса, "Автоматизоване виведення високоточних дорожніх центральних ліній полігонів Тиссена"

Потрібні деякі залежності:

Необхідні залежності:
- qhull binary ( http://www.qhull.org )
- стрімкий 1.2+ ( http://pypi.python.org/pypi/Shapely )
- pyproj ( http://code.google.com/p / pyproj )
- networkx 1.5+ ( http://networkx.lanl.gov )
- StreetNames 0.1+ ( https://github.com/nvkelso/map-label-style-manual/tree/master/tools/street_names )

Примітка. Це старіша модель / інструмент, яку можна застосувати, як орієнтир для вивчення.


1
Я думаю, що скелет може стати дорогою, але ваша відповідь - це копія минулого файлу readme, і посилання на веб-сайт esri мертве. Тут посилання, щоб показати, що він робить для карт: kartographie.geo.tu-dresden.de/downloads/ica-gen/workshop2004/… . це виглядає дійсно чудово, але коли я намагаюся його використовувати, я не знав, як ним користуватися. Я не знайшов документацію, окрім деяких хабарів із використанням команди setup.py --help ... Якщо хтось пояснить, як користуватися цією lib, я даю йому щедрість.
Hugo Roussaffa - GeoDatup

Крім того, він використовує OSM-дороги, як на вході, наскільки я бачу, я хочу рішення, яке може працювати на будь-якому типі лінії. І все-таки я дуже люблю науку, яка стоїть за нею, хотіла б застосувати це і в інших сценаріях.
Хасан Мустафа

Я оновив свою публікацію, щоб відобразити ваші коментарі, я ціную відгуки.
whyzar

4

ArcGIS є найпростішим, якщо він взагалі є варіантом. Я знаю, що ОП вказує ОС, але я згадую це, оскільки параметри ОС просто не виглядають дуже корисними порівняно з: http://resources.arcgis.com/en/help/main/10.1/index.html#/Merge_Divided_Roads/00700000000w000000 /

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

Якщо ви кодуєте, ви можете обчислити середнє положення координат на основі вершин, якщо ні, то:

  1. буфер дороги з опцією "об'єднати всіх" на виході.
  2. Отримайте центральну лінію багатокутника
  3. Розділіть лінії на перехрестях з лініями JUMP Split на перетині інших ліній
  4. Просторове Приєднання атрибутів знову

Здається, не існує і хорошої ОС, еквівалентної інструменту ArcGIS "Полігон до центру". Я можу запропонувати:

а. Створіть діаграму вороной і візьміть скелет.
б. Створіть евклідову растрову відстань і витягніть центральне значення та перетворіть у рядок

... напевно, і деякі інші.

Нарешті, залежно від масштабу та застосування. Можливо, варто також просто видалити один із двох рядків - чи буде неточність?


Варіант ArcGIS виглядає добре, я спробую це зробити, але я вважаю за краще рішення ОС. Розрахунок середнього положення координат на вершинній основі - це моя стратегія запасного звороту. Я спробую всі перелічені вами методи і побачу, чи працюють вони на мене, дякую!
Хасан Мустафа

Інструмент ArcGIS, «Об’єднати розділені дороги (картографія)», - саме те, що я шукаю, але вся обробка, яку я роблю, відбувається в Linux, використовуючи Postgres і QGIS, щоб використовувати інструмент, який мені знадобиться для переходу на windows .
Хасан Мустафа
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.