Я делаю карту, содержащую информацию об общественном транспорте: автобусах, трамваях и т. Д. На карте будет слой, содержащий, например, линии трамвая. Каждая строка имеет свой цвет и представлена геометрией строки.
Проблема заключается в том, что многие линии имеют перекрывающиеся части, где несколько трамвайных линий покрывают один и тот же участок. Чтобы показать это пользователю, я бы предпочел, чтобы линии проходили параллельно друг другу, а не рисовались поверх друг друга. Например, посмотрите, как Карты Google показывают линии метро Нью-Йорка.
Я подозреваю, что это довольно распространенная проблема в картографии, но не знаю, какую терминологию мне следует искать.
Я использую PostGIS / GeoServer / OpenLayers в качестве стека, но любое решение с открытым исходным кодом будет приемлемым.
Ответы:
Если вы хотите узнать больше об этой области, проблема называется картографическим смещением , и это один из аспектов картографического обобщения .
Пара статей, обсуждающих смещение и подходы к решению проблемы:
Бадер, Матиас. 2001. Методы минимизации энергии для смещения элементов в обобщении карты.
Steiniger, S Tefan S и S Iegfried M Eier. Змеи: техника сглаживания и смещения линий при обобщении карты: 1-11.
Уэр, Марк Дж, и Кристофер Б. Джонс. 1998. Разрешение конфликтов в обобщении карт с использованием итеративного улучшения. GeoInformatica 2, нет. 4: 383-407 +.
источник
Эта проблема является очень типичной в картографическом обобщении. Для этого существуют автоматизированные методы, но пока нет доступных реализаций.
Методы, основанные на « Лучах » и « Змеях », дают эффективные результаты для решения этих картографических конфликтов сетевых данных (см. Также ссылки, предоставленные scw ). Вот некоторые результаты алгоритмов лучей на дорожных данных:
До:
После:
Смотрите также эту статью и эту презентацию, которые объясняют, как сделать это преобразование .
РЕДАКТИРОВАТЬ: Я никогда не проверял это, но кажется, что есть что-то, связанное со змеями в GRASS. Смотрите здесь .
источник
Я не знаю решения, но думаю, что термин, который вы ищете, - это «разрешение конфликтов» - тема обобщения карты. Поиск Google по «конфликтам обобщения карты» показывает некоторую интересную информацию - но я не знаю, есть ли много практического использования.
источник
В текущих реализациях вы часто можете найти «Смещение» или «Смещение». Используя ваш текущий стек, выглядит немного сложным для автоматического достижения параллельных линий:
Подводя итог: Самый простой способ, который я знаю, это использовать UMN Mapserver и значение Offset там. Пример стиля для вашего файла карты:
источник
Если вы рисуете слои линий, которые перекрываются, у вас есть несколько опций, позволяющих зрителю видеть все линии.
Я не использую GeoServer, но я знаю, что MapServer обладает функциональностью для выполнения всех этих задач. Вероятно, что GeoServer делает то же самое.
источник