8

对于我在 ggmap 和雄蕊水彩画中遇到的问题,我真的很感激一些帮助/想法。

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

"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-bit] C:\Program Files\R\R-3.0.2 在 windows 8 下

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

4

3 回答 3

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 包,即 library(jpeg),因为 ggmap 没有意识到现在需要这样做。我还需要 library(plyr) 但我不知道为什么 - 我这样做是因为我后来收到了关于 ldply() 的错误消息,我在那个包中找到了它。

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

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

现在您应该准备好再次使用 qmap。此过程对我有用,并且比使用相同更改重新编译软件包或下载具有这些修复和编译的最新源代码更简单。

于 2014-06-19T07:55:30.683 回答
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 。

于 2014-06-10T16:25:40.030 回答
1

在库中发布 2.4 之前,另一种方法是加载存储库中可用的函数并替换 ggmap 包中已经存在的函数(正如迈克尔回答的那样)。我刚刚加载了get_stamenmap.Rfiledrawer.R的内容(需要url_lookup()),因为它很适合搭配水彩地图。

于 2014-08-29T13:01:16.243 回答