【发布时间】:2018-05-16 23:32:36
【问题描述】:
单线: R 绘制 SpatialPolygonsDataFrame 花费的时间太长,我在网上找到的最佳答案是问题是特定于机器的。
问题:我正在尝试绘制从 GADM 下载的印度 SpatialPolygonsDataFrame(级别 = 1),但没有绘图功能(spplot、plot、tm_shape)在任何给定时间;相反,R 似乎在后台工作,但 5 分钟后仍然没有情节。按下控制台上方出现的停止按钮没有任何作用,最终为了重试其他方法,我必须强制退出应用程序。我的问题与this question 类似,但对该问题的共识是该问题出现在机器特定的情况下,此后没有解决方案。
以下是有关我的机器/R studio 版本的一些信息: R 版本 3.3.2 (2016-10-31) / R Studio 版本 1.0.136 / 操作系统: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.) 我尝试从 shapefile 而不是 RDS 重新创建 SpatialPolygonsDataFrame
india <- readOGR(dsn = "~/Data/Reference/" , layer = "IND_adm1")
(3.)我已经更新了机器上的所有包,卸载并重新安装了sp包和tmap包。
(4.) 我尝试了其他国家的文件并遇到了同样的问题。
(5.) 我检查了 SpatialPolygonsDataFrame 的结构,并没有发现任何问题 - 一切似乎都已到位且方式正确。
(6.) 使用 maps 包来绘制他们的数据工作正常。由于某种原因,SpatialPolygonsDataFrame 类没有绘制。我现在也尝试从DIVA-GIS 绘制形状文件。
library(maps)
tx <- map("county", "texas", plot = FALSE, fill = TRUE)
plot(tx) # this plots fine and immediately
要求我基本上需要一张印度的州界地图,我可以将其放入闪亮的交互式 RMarkdown 报告中,并根据因子变量填充州颜色。有一些我可以使用的数据的解决方法吗?
问:我不知道该怎么做或如何进一步诊断。如果有帮助,我将不胜感激,并乐于提供更多信息。我还链接了exact RDS file that I'm using 供您加载并在您的机器上试用。
更新 建议的解决方案都不适用于我的系统,但我认为我遇到的这个挑战是特定于系统的。我最终尝试在 Amazon Web 服务上的远程 Windows 实例上运行相同的代码,并且代码运行良好。所以我不确定这是 Mac 问题还是硬件问题,但我希望此更新对您有所帮助。
【问题讨论】:
-
我直接从 GADM 下载了 India 文件(级别 1)。文件大小为 2.7MB。使用我 6 岁的 Mac,它不需要五分钟。我使用了两种方法来绘制地图。一个是你所做的 plot() 。另一个是ggplot。在我看来,前者比后者需要更多时间。话虽如此,您可以尝试的一种选择是强化 SP 数据并使用 ggplot 绘制地图。
-
我下载了 1 级 India spatialpolygondataframe 并根据您的代码绘制它。所有这三个都可以在不到一分钟的时间内在我的笔记本电脑上完成。
-
感谢您检查机器上的代码。 @jazzurro 我刚才试过了,甚至 ggplot 正在无限期地处理但没有绘图。有什么方法可以查看这些函数调用的后台发生了什么?我该如何进一步诊断?我也尝试过重新下载 RDS 文件。
-
不确定你能做什么。正如您所说,这可能是特定于机器的问题。如果你有另一台电脑,你可能想用它看看会发生什么。
-
在 mac 上绘制空间对象似乎存在一些问题。也许这个讨论会有所帮助:community.rstudio.com/t/ggplot2-geom-sf-performance/3251
标签: r geospatial sp rgdal tmap