ggmap雄蕊水彩png错误

时间:2014-05-06 07:04:52

标签: png ggmap stamen-maps

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

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

"Error in readPNG(destfile) : file is not in PNG format"

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

qmap("new-york", zoom=13, source="stamen", maptype="watercolor")

get_map(location='Auckland', source="stamen", maptype="watercolor", zoom=13)

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

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

3 个答案:

答案 0 :(得分:14)

作为临时修复,您可以自行进行更改。输入

get_stamenmap 
在R终端

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

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

get_stamenmap <- function (bbox = 

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

64: urls <- paste(urls, ".jpg", sep = "")
71: destfile <- paste(filename, "jpg", sep = ".")

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

tile <- readJPEG(destfile)

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

现在将此“全新”功能粘贴回终端。之后,您需要覆盖包中嵌入的功能,这与您刚刚粘贴到终端的本地副本不同,因此您需要输入:

assignInNamespace("get_stamenmap",get_stamenmap,ns="ggmap")

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

答案 1 :(得分:2)

我遇到了同样的问题。请注意,如果您运行

get_map(location='Auckland', source="stamen", maptype="watercolor", zoom=13)

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

看起来这是由Stamen的API更改引入的ggmap中的错误。看来版本2.4将解决这个问题;在这里看到GitHub提交:https://github.com/dkahle/ggmap/commit/c7c48947360351f2e86ba13d0457aa3894b51d46

答案 2 :(得分:1)

在库中发布2.4之前的另一种方法是加载存储库中可用的函数并替换ggmap包中已存在的函数(如Michael回答的那样)。我刚刚加载了 get_stamenmap.R filedrawer.R url_lookup()所需)的内容用水彩地图。