Как обобщить SpatialPolygons и сохранить топологию в R?


18

Я хотел бы обобщить SpatialPolygonsDataFrame в R, чтобы сделать построение графиков более эффективным. Полигоны, которые я имею, приводят к огромным pdf-графикам, которые медленно загружаются и трудно интегрируются в документ.

Я попытался использовать gSimplifyфункцию из rgeosпакета, но, к сожалению, она не сохраняет топологию полигонов.

Есть ли альтернатива, которую я могу использовать?


не совсем решение, но вы могли бы вместо этого построить растр (jpg / png)? Этот вопрос stackoverflow, который обсуждает уменьшение размера pdfs, может быть
— полезен

Построение карт в виде растровых изображений является опцией, но по возможности я бы хотел использовать векторную графику. Качество изображения лучше при использовании векторной графики, особенно при просмотре цифровых версий документов.
— желтая шапка

gSimplify()имеет необязательный параметр, topologyPreserveкоторый по умолчанию равен FALSE. Вы пытались установить это TRUE?
— krlmlr

Ответы:


7

Об этом идет дискуссия на r-sig-geo . Для окончательного ответа вы должны спросить там, потому что есть люди, которые знают идеи пространственного R.

Но вы также можете сделать это в настольных ГИС-приложениях (экспортируйте фигуру с помощью команды writeOGR из rgdal или writePolyShape () из maptools), например, QuantumGIS, GRASS или SAGA.

Для QuantumGIS используйте Vector / Geometry Tools / Упростить геометрию (я протестировал и не сохраняю топологию, но применительно к шейп-файлу admin1 в Румынии, отлично смотрится с 2000 узлами).

Для GRASS используйте v.generalize (см. Руководство для получения информации об алгоритмах, некоторые из них).

Для SAGA вы должны сначала преобразовать полигон в линию (Shapes - Lines / Convert Polygons to Lines), затем упростить линии (Shapes Lines / Line Simplification) и, наконец, преобразовать линии в полигоны (Shapes - Polygons / Convert Lines в Polygons). Я проверил это, и результаты сохранили топологию.

Ура и удачи,


Тем временем я также нашел онлайн-сервис, который выполняет упрощение при сохранении топологий: mapshaper.org . Я использовал его как альтернативу, так как кажется, что это невозможно в R напрямую (QGis на самом деле не сохраняет топологию, и я не знаю других программных пакетов)
— yellowcap

1
Я проверил ваши наблюдения с помощью Saga 2.0.8, и результат не сохранил топологию!
— Фабиан Цейндль

2

Теперь есть замечательный rmapshaperпакет от Andy Teucher, который включает в себя функцию упрощения, которая «выполняет топологически-упрощенное многоугольное упрощение».

Из их репозитория github, пример использования:

states_simp <- ms_simplify(states_sp)

где states_spявляется spatialPolygons*объектом.

См. Пакет README для получения дополнительной информации: https://github.com/ateucher/rmapshaper


0

это должно помочь:

  • gSimplify(..., topologyPreserve=T)из GEOSпакета

2
К сожалению, опция сохранения топологии в gSimplifyдействительности не сохраняет топологию для нескольких полигонов. Я думаю, что это больше относится к топологии одиночных или мультиполигонов. Для шейп-файла со многими полигонами топология не сохраняется.
— yellowcap
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.