我需要在Google Map上绘制一些值(我使用RgoogleMap包下载地图)
所以我有纬度和经度点(X
和Y
),以及网格中每个点的值(evalmat
)
GoogleMap(evalmat~Y*X,map=MapVeneto)
是错误,因为evalmat
是一个矩阵。这个命令的正确用法是什么?
我认为填充evalmat
值的向量可能是一个想法,我创建了两个向量lat
和lon
,只要新的向量,有相应的vaues,但它没用。
我发现了这个错误
Error using packet 1
X and units must have length >0
此命令中这些向量的正确用法是什么?
答案 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)