ggmap雄蕊水彩png错误

use*_*180 8 png ggmap stamen-maps

我非常感谢有关ggmap和stamen水彩问题的一些帮助/想法.

每次我尝试创建一个雄蕊水彩地图时,我都会收到相同的错误消息:

"Error in readPNG(destfile) : file is not in PNG format"
Run Code Online (Sandbox Code Playgroud)

以下是返回此错误的简单代码的一些示例:

qmap("new-york", zoom=13, source="stamen", maptype="watercolor")
Run Code Online (Sandbox Code Playgroud)

要么

get_map(location='Auckland', source="stamen", maptype="watercolor", zoom=13)
Run Code Online (Sandbox Code Playgroud)

我在Windows 8下使用r版本:[默认] [64位] C:\ Program Files\R\R-3.0.2

我意识到有几个人发布了同样的问题 - 但只有少数 - 我没有看到任何解释/建议.我很难过和沮丧,我真的希望有比我更多经验的人遇到(并解决)这个问题.提前致谢或您可以提供任何帮助

小智 14

作为临时修复,您可以自己进行更改.类型

get_stamenmap 
Run Code Online (Sandbox Code Playgroud)

在R终端.这将转储加载地图的代码.您需要编辑此代码并替换命名空间中的函数.

将代码复制到文本编辑器,并通过更改第一行再次创建函数:

get_stamenmap <- function (bbox = 
Run Code Online (Sandbox Code Playgroud)

然后你需要切换到加载jpegs.在png上搜索并将文本更改为jpg.我有两个实例,看起来像你在文件扩展名中需要的文本,它们在我的64行和71行.

64: urls <- paste(urls, ".jpg", sep = "")
71: destfile <- paste(filename, "jpg", sep = ".")
Run Code Online (Sandbox Code Playgroud)

在第75行,有函数readPNG,您需要将其更改为readJPEG.

tile <- readJPEG(destfile)
Run Code Online (Sandbox Code Playgroud)

您还需要确保加载jpeg包,即库(jpeg),因为ggmap没有意识到现在需要它.我还需要库(plyr),但我没弄清楚为什么 - 我这样做是因为我收到了一个关于ldply()的错误消息,我在该包中找到了它.

现在将这个"全新"功能粘贴回终端.之后,您需要覆盖包中嵌入的功能,这与您刚粘贴到终端的本地副本不同,因此您需要输入以下内容:

assignInNamespace("get_stamenmap",get_stamenmap,ns="ggmap")
Run Code Online (Sandbox Code Playgroud)

现在你应该准备再次使用qmap了.这个过程对我有用,并且比使用相同更改重新编译包或下载具有这些修复和编译的最新源更简单.


Nat*_*Nat 2

我也有同样的问题。请注意,如果您运行

get_map(location='Auckland', source="stamen", maptype="watercolor", zoom=13)
Run Code Online (Sandbox Code Playgroud)

您将获得您尝试在 R 中加载的图块的 URL。当我访问给定的 URL 之一时,它会重定向到 .jpg,而不是 .png。因此,错误是准确的 - 所提供的图块不是 PNG 格式 - 它们是 JPG。

看起来这是 ggmap 中的一个错误,是由 Stamen 的 API 的更改引入的。2.4 版本似乎会解决这个问题;请参阅此处的 GitHub 提交:https://github.com/dkahle/ggmap/commit/c7c48947360351f2e86ba13d0457aa3894b51d46