在loa包(R)中正确使用GoogleMap()命令

时间:2014-12-23 11:20:38

标签: r

我需要在Google Map上绘制一些值(我使用RgoogleMap包下载地图)

所以我有纬度和经度点(XY),以及网格中每个点的值(evalmat

GoogleMap(evalmat~Y*X,map=MapVeneto)

是错误,因为evalmat是一个矩阵。这个命令的正确用法是什么?

我认为填充evalmat值的向量可能是一个想法,我创建了两个向量latlon,只要新的向量,有相应的vaues,但它没用。 我发现了这个错误

Error using packet 1
X and units must have length >0

此命令中这些向量的正确用法是什么?

2 个答案:

答案 0 :(得分:0)

我下载了示例文件(http://www.jstatsoft.org/v63/i04)并尝试使用我的数据重新创建“FIG02_MeuseLoa01.R”并遇到类似的问题。

require(loa)
require(RgoogleMaps)
GoogleMap(zinc~latitude*longitude, data=lat.lon.meuse, map=roadmap.meuse)

这个例子工作得很好,但是当我尝试加载不同的map应用于我的数据时(好吧我仍在使用示例数据,但它对指出问题没有影响):

map <- GetMap(center=c(lat=50.97494,lon=5.743606), zoom=13,size=c(480,480))

这是来自“FIG01_Meuse.R”的示例代码(=不是我自己的代码)。

GoogleMap(zinc~latitude*longitude, data=lat.lon.meuse, map=map)

Warning messages:
1: In update.trellis(ans, panel = panel.with.map, aspect = map$aspect,  :
  Invalid value of 'aspect'
2: In is.na(x) : is.na() applied to non-(list or vector) of type 'NULL'
....

+同一个(和你的)错误信息在一个情节中(我需要一些神奇的互联网点才能在这里发布图片):

Error using packet 1
X and units must have length >0

我看了?roadmap.meuse然后跟着:

GoogleMap(zinc~latitude*longitude, data=lat.lon.meuse, size=c(480,480)) 
map <- getMapArg()
GoogleMap(zinc~latitude*longitude, data=lat.lon.meuse, map=map)

再次工作!它适用于任何数据帧。

所以这是一个解决方法而不是一个正确的答案(但你的问题有点模糊),希望它会有所帮助。 GetMap(center=c(lat=50.97494,lon=5.743606), zoom=13,size=c(480,480))的某些内容不正确,如果有人能指出什么,我会很感激

回答您的问题:您的错误消息可能与作为矩阵的evalmat无关,我不知道GoogleMap()是否适用于矩阵。 lat.lon.meuse绝对是data.frame。

编辑:这也有效:

GoogleMap(~-6.8*37.6, data=dfm, size=c(640,500), zoom=9, SCALE=1, maptype="roadmap")

答案 1 :(得分:0)

很抱歉只能看到这个/回复很晚。

首先快速建议:只是有助于了解Y和X的来源以及您如何制作地图......

GoogleMap(evalmat~Y*X,map=MapVeneto)
# not ...map=MapVeneto

同时,GoogleMap假定x(长),y(lat)和z作为公式提供时作为向量提供,因此对数据源(如data.frames)有意义。

我在loaPlot上做了一些工作,这样可以处理一些矩阵,但是如果它们是提供的而不是公式(或公式和数据)......

loaPlot(volcano)
loaPlot(volcano, panel=panel.binPlot)
# etc 

但是这还没有进入其他包中,我不确定是否会这样。

所以,对不起矩阵......

下一步

GoogleMap(zinc~latitude*longitude, data=lat.lon.meuse, size=c(480,480)) 
map <- getMapArg()
GoogleMap(zinc~latitude*longitude, data=lat.lon.meuse, map=map)

......有效,但

map <- GetMap(center=c(lat=50.97494,lon=5.743606), zoom=13,size=c(480,480))
GoogleMap(zinc~latitude*longitude, data=lat.lon.meuse, map=map)

...不是因为RgoogleMaps软件包和GetMap的更改,因为该示例来自该论文的文章已发布。我还没有赶上CRAN版本。

但是开发人员的版本是:

install.packages("loa", repos="http://R-Forge.R-project.org")

同时,如果你不想只是在表格中使用:

GoogleMap(zinc~latitude*longitude, data=lat.lon.meuse, size=c(480,480))

...让GoogleMap自己制作地图,你可以在loa中使用makeMapArg制作地图,例如。

  lat <- lat.lon.meuse$latitude
  lon <- lat.lon.meuse$longtitude
  map <- makeMapArg(y=lat, x=lon, size=c(480, 480))
  GoogleMap(zinc~latitude*longitude, data=lat.lon.meuse, map=map)