Почему график GADM SpatialPolygonsDataFrame не загружается в R?
Одна строка : R занимает слишком много времени для построения SpatialPolygonsDataFrame, и лучший ответ, который я нашел в Интернете, заключается в том, что проблема связана с конкретной машиной.
Проблема: я пытаюсь построить график SpatialPolygonsDataFrame из Индии (уровень = 1), который я скачал из GADM, но никакая функция построения графиков (spplot, plot, tm_shape) не создает график в любой момент времени; вместо этого R, кажется, выполняет работу в фоновом режиме, но спустя 5 с лишним минут все еще нет графика. Нажатие кнопки "Стоп", которая появляется над консолью, ничего не делает, и, в конце концов, чтобы повторить попытку другого метода, я вынужден выйти из приложения. Мой вопрос похож на этот вопрос, но консенсус по этому вопросу заключался в том, что проблема кажется машинно-специфичной, а решения после этого не существует.
Вот некоторая информация о моей машине / версия R studio: R версия 3.3.2 (2016-10-31) / R Studio версия 1.0.136 / OS: MacOS Sierra версия 10.12.6.
Файл был скачан с: GADM в формате RDS
(1.) Я пробовал разные механизмы построения
setwd("~/Data/Reference/")
india <- readRDS("IND_adm1.rds")
library(sp)
library(tmap)
# Plot method #1
plot(india)
# Plot method #2
spplot(india, "NAME_1")
# Plot method #3
tm_shape(india) + tm_borders()
(2.) Я попытался воссоздать SpatialPolygonsDataFrame из шейп-файла вместо RDS
india <- readOGR(dsn = "~/Data/Reference/" , layer = "IND_adm1")
(3.) Я обновил все пакеты на машине, удалил и переустановил пакет sp и пакет tmap.
(4.) Я попробовал файл из других стран, и у меня возникла та же проблема.
(5.) Я изучил структуру SpatialPolygonsDataFrame и не нашел никаких проблем с ней - вещи, кажется, на месте и в правильном направлении.
(6.) Использование пакета карт для построения своих данных работает нормально. По какой-то причине классы SpatialPolygonsDataFrame не отображаются. Теперь я также попытался построить файлы форм из DIVA-GIS.
library(maps)
tx <- map("county", "texas", plot = FALSE, fill = TRUE)
plot(tx) # this plots fine and immediately
Требование Мне в основном нужна карта границ штатов Индии, которую я могу поместить в интерактивный отчет Sharkine RMarkdown и заполнить цвета штатов на основе факторной переменной. Есть ли обходной путь для данных, которые я могу использовать?
Спросите: я не уверен, что делать или как для дальнейшей диагностики. Я был бы признателен за любую помощь, которую я могу получить, и с удовольствием предоставлю дополнительную информацию, если это будет полезно. Я также связываю точный файл RDS, который я использую для загрузки и тестирования на вашем компьютере.
Обновление Ни одно из предложенных решений не работало в моей системе, но я думаю, что эта проблема, с которой я столкнулся, была специфичной для системы. В конце концов я попытался запустить тот же код на удаленном экземпляре Windows на веб-сервисах Amazon, и там код работал нормально. Поэтому я не уверен, была ли это проблема Mac или аппаратная проблема, но я надеюсь, что это обновление полезно.
1 ответ
У меня была эта проблема на моем Mac некоторое время, и при поиске решений нашел это в блоггерах R. Код упрощает шейп-файл, позволяя создавать его гораздо проще:
library("shapefiles")
map = readOGR(dsn = "shp", layer = "shp")
for(i in 1:length(map@polygons)){
for(j in 1:length(map@polygons[[i]]@Polygons)){
temp <- as.data.frame(map@polygons[[i]]@Polygons[[j]]@coords)
names(temp) <- c("x", "y")
temp2 <- dp(temp, 0.01)
map@polygons[[i]]@Polygons[[j]]@coords <- as.matrix(cbind(temp2$x, temp2$y))
}
}
plot(map, col = "black")
( http://www.r-bloggers.com/simplifying-polygon-shapefiles-in-r/).
Однако, хотя это может помочь процессу построения графика, становится трудным попытаться выполнить ГИС-операции с новым шейп-файлом из-за его упрощенной формы.
Стоит искать шейп-файлы стран с сайтов, отличных от GADM. Например, все шейп-файлы, которые я использовал на этом сайте, легко и быстро отображаются на моем компьютере Mac: http://mapeastafrica.com/countries/east-africa-shapefiles/.