#r #memory #mapping #sf
Вопрос:
Я использую пакеты sf и rmapshaper для выполнения некоторых сопоставлений в R, но у меня заканчивается память из-за размера данных. Пока я работал над французскими департаментами (меньшие данные), это работало хорошо, но теперь я работаю над французскими городами, и при выполнении функции ms_simplify() я получаю следующую ошибку :
V8 ФАТАЛЬНАЯ ОШИБКА В НОВОМ МАССИВЕ: сбой выделения — процесс исчерпал память
Это фатальная ошибка, из-за которой сеанс R прерывается.
Данные, которые я использую, находятся по следующей ссылке : https://www.data.gouv.fr/fr/datasets/r/a01aff2a-8f36-4a77-a73f-efc212fe2899
код, который я выполнил, выглядит следующим образом :
library(sf)
library(rmapshaper)
shp.city.sf <- read_sf("communes-20200101-shp/communes-20200101.shp")
shp2 <- ms_simplify(shp.city.sf) #, sys_mem=12)
Я видел похожие вопросы, на которые были даны ответы путем увеличения размера памяти, но когда я использую аргумент «sys_mem» функции ms_simplify (), я получаю ту же ошибку (я попробовал sys_mem=12)
Комментарии:
1. Привет! Есть ли какая-то особая причина, по которой вы не использовали
st_simplify
вместоms_simplify
этого ? Я попробовал запуститьst_simplify(shp2, dTolerance = 100)
, и это работает без каких-либо особых проблем, но я не уверен в различиях междуst_simplify
иms_simplify
.2. Привет! Я в основном изучал этот метод в школе, с пакетом RGDAL, а не sf, и мы учились с ms_simplify. Я не знал о другом ! я могу попробовать и скажу вам, если проблема все еще существует ! Спасибо!
3. Раздел 5.2.1 этой книги geocompr.robinlovelace.net/geometric-operations.html объясняет различия между bw
st_simplify()
иms_simplify()
.ms_simplify()
похоже, что он работает с каждым объектом в коллекции по отношению к его соседям и гарантирует, что при упрощении между соседними полигонами не образуется отверстий/перекрытий, ноst_simplify()
работает с каждым объектом отдельно, поэтому могут возникнуть неожиданные результаты. Я предполагаю, что это связано с тем, что отдельные операцииst_simplify()
могут работать с коллекциями различной геометрии, ноms_simplify()
не могут.4. Я бы предположил, что
ms_simplify()
это более обременительно для памяти, поскольку оно должно обрабатывать все функции сразу, в тоst_simplify()
время как может обрабатывать их несколько отдельно?