为什么GADM SpatialPolygonsDataFrame的图不在R中加载?

时间:2017-12-03 10:29:38

标签: r geospatial sp rgdal tmap

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问题还是硬件问题,但我希望这次更新很有帮助。

1 个答案:

答案 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/