One-liner: R花费太长时间来绘制SpatialPolygonsDataFrame,我在网上找到的最佳答案是该问题是特定于机器的。
问题:我正在尝试绘制我从GADM下载的India(level = 1)的SpatialPolygonsDataFrame,但没有绘图功能(spplot,plot,tm_shape)正在生成一个情节在任何给定的时间;相反R似乎在后台工作,但5分钟后仍然没有情节。按下控制台上方出现的停止按钮不会做任何事情,最终为了重新尝试其他方法,我必须强制退出应用程序。我的问题类似于this question,但对该问题的共识是该问题看起来是机器特定的,之后没有解决方案。
以下是关于我的机器/ R工作室版本的一些信息: R版本3.3.2(2016-10-31)/ R Studio版本1.0.136 / OS:MacOS Sierra版本10.12.6。
该文件是以RDS格式的GADM下载的
(1。)我尝试过不同的绘图机制
var lists = document.querySelectorAll('.list');
if (lists.length) {
lists.forEach(list => {
list.addEventListener('click', e => {
if (!e.target.id) return;
var id = e.target.id;
var item = e.target;
var nelly = ct++;
var newCt = "" + nelly + ""; // need to wrap ID in speech marks to get delete element functionality to work
var findme = foo.findIndex(e => e.name == id);
if (findme == -1) {
foo.push({ id: newCt, name: id });
item.className = 'col-md-3 col-sm-6 col-xs-6 fav';
} else {
foo.splice(findme, 1)
item.className = 'col-md-3 col-sm-6 col-xs-6 nofav';
}
localStorage.setItem('foo', JSON.stringify(foo));
});
});
}
(2。)我尝试从shapefile而不是RDS重新创建SpatialPolygonsDataFrame
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()
(3。)我已更新机器上的所有软件包,并已卸载并重新安装sp软件包和tmap软件包。
(4。)我尝试过其他国家的档案并遇到同样的问题。
(5。)我已经检查了SpatialPolygonsDataFrame的结构,发现它没有任何问题 - 事情似乎已经到位并以正确的方式。
(6。)使用地图包绘制他们的数据工作正常。由于某种原因,SpatialPolygonsDataFrame类不是绘图。我现在还试图从DIVA-GIS绘制形状文件。
india <- readOGR(dsn = "~/Data/Reference/" , layer = "IND_adm1")
要求我基本上需要印度的州边界地图,我可以将其放入Shiny交互式RMarkdown报告中,并根据因子变量填充州的颜色。我可以使用哪些解决方法?
问:我不知道该做什么或如何进一步诊断。我很感激我能得到的任何帮助,并乐意提供更多信息,如果这将有所帮助。我还要为您加载exact RDS file that I'm using以加载并试用您的计算机。
更新 没有一个建议的解决方案适用于我的系统,但我认为我遇到的这个挑战是系统特定的。我最终尝试在Amazon Web服务上的远程Windows实例上运行相同的代码,并且代码运行良好。所以我不确定这是Mac问题还是硬件问题,但我希望这次更新很有帮助。
答案 0 :(得分:0)
我的Mac上有这个问题已经有一段时间了,在搜索解决方案时,在R Bloggers上发现了这个问题。该代码简化了shapefile,使其更容易绘制:
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/)。
然而,尽管这有助于绘图过程,但由于其简化的形式,尝试在新的shapefile上执行GIS操作变得很麻烦。
值得从GADM以外的网站查找国家/地区的shapefile。例如,我在本网站上使用的所有shapefile都可以毫不费力地立即在我的mac上绘制:http://mapeastafrica.com/countries/east-africa-shapefiles/。