Як узагальнити просторові полігони та зберегти топологію в R?


18

Я хотів би узагальнити букву SpatialPolygonsDataFrame в R, щоб зробити графік більш ефективним. У полігонах у мене є величезні графічні файли у форматі PDF, які повільно завантажуються та важко інтегруються в документ.

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

Чи є альтернатива, яку я можу використовувати?


насправді не рішення, але ви могли б замість цього створити растровий (jpg / png)? Це StackOverflow питання , яке обговорюється скорочення pdfsize можуть бути використані: stackoverflow.com/questions/8521299 / ...
djq

побудова карт як растрових зображень - це варіант, але, коли це можливо, я хотів би використовувати векторну графіку. Якість зображення краще при використанні векторної графіки, особливо при перегляді цифрової версії документів.
yellowcap

gSimplify()має необов'язковий параметр, topologyPreserveза замовчуванням FALSE. Ви намагалися встановити це TRUE?
krlmlr

Відповіді:


7

Про це йде дискусія на r-sig-geo . Для остаточної відповіді вам слід запитати там, бо є люди, які знають уявлення про просторовий Р.

Але ви також можете це зробити в настільних додатках GIS (експортуйте форму за допомогою команди writeOGR з rgdal або writePolyShape () з maptools), наприклад QuantumGIS, GRASS або SAGA.

Для QuantumGIS використовуйте інструменти Vector / Geometry / Спростіть геометрію (я протестував і не зберігає топологію, але застосований до Румунії admin1 shapefile, виглядає чудово з 2000 вузлами).

Для GRASS використовуйте v.generalize (прочитайте посібник для інформації про алгоритми, є деякі).

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

Ура, удачі,


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

1
Я перевірив ваше спостереження за допомогою Saga 2.0.8, і в результаті немає збереженої топології!
Fabian Zeindl

2

Зараз існує чудовий rmapshaperпакет Енді Teucher, який включає в себе спрощену функцію, яка "виконує топологічно обізнане багатополігонове спрощення".

З їхнього github repo, приклад використання:

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.