У меня есть базовая карта VectorTile, которую я оптимизирую (работая над уменьшением размера отдельных плиток), основной кусок размера плиток - это дорожные данные (геометрия и атрибуты). Я работаю над упрощением геометрии отдельных дорог на основе уровня масштабирования , а также агрегирования дорог на основе уровней масштабирования.
Дороги хранятся в таблице Postgis (отдельная таблица для каждого уровня масштабирования), и я хочу объединить дороги на основе уровня масштабирования, на котором они будут отображаться. Например, в таблице «Уровень масштабирования 5» я хочу объединить дороги, которые находятся на определенном расстоянии друг от друга, и сделать одну линию для сегментов дороги:
Поскольку на этом уровне масштабирования невозможно различить отдельные дороги:
Как я могу агрегировать геометрию дороги в зависимости от расстояния между участками дороги?
PS: я работаю над PostGIS и QGIS для Linux, но я открыт для решений, использующих любую платформу или технологию с открытым исходным кодом.
источник
Ответы:
Вы можете попробовать поискать в этой опции ОС Skeletron :
Требуются некоторые зависимости:
Требуемые зависимости:
- Qhull бинарная ( 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 )
Примечание. Это более старая модель / инструмент, который можно применять, просто как справочник для изучения.
источник
ArcGIS является самым простым, если это вообще вариант. Я знаю, что в ОП указана ОС, но я упоминаю об этом, поскольку параметры ОС выглядят не очень полезными по сравнению с: http://resources.arcgis.com/en/help/main/10.1/index.html#/Merge_Divided_Roads/00700000000w000000 /
Ответы на этот вопрос дают некоторые варианты с открытым исходным кодом: Как я могу объединить / свернуть близлежащие и параллельные дороги (например, проезжую часть с двумя проезжими частями) в одну линию?
Если вы кодируете, вы можете рассчитать среднее положение координат на основе вершин, если нет, то:
Похоже, не существует хорошей ОС, эквивалентной инструменту ArcGIS 'Polygon to Center line'. Я мог бы предложить:
а. Создайте вороной диаграмму и возьмите скелет.
б. Создать евклидово растровое расстояние, извлечь центральное значение и преобразовать в линию
... возможно, некоторые другие.
Наконец, в зависимости от масштаба и области применения ... может также стоить просто удалить одну из двух строк - будет ли иметь значение неточность?
источник