Як узагальнити просторові полігони та зберегти топологію в 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.