【问题标题】:how to convert RgoogleMaps PNG to SpatialGridDataFrame in R?如何在 R 中将 RgoogleMaps PNG 转换为 SpatialGridDataFrame?
【发布时间】:2012-07-03 05:55:54
【问题描述】:

我使用 RgoogleMaps 包中的 GetMap() 函数派生了一个“静态地图”。我可以将它(MyMap)以 PNG 格式保存到我的硬盘中。但是,它会失去空间参考。

有没有人成功地从这样的 PNG 创建空间对象(在 GDAL 可读数据格式的意义上)?

【问题讨论】:

  • 我可以通过 ggmap 对象来实现,该对象从 OpenStreetMap 源获取地图数据(因此根据许可条款在法律上可重复使用)。你看过 Rgooglemaps 对象的结构吗?试试 str(thing)。
  • 尝试使用 dismo 包而不是其 gmap() 函数,您可以直接在 R 中获取数据,作为没有文件的“光栅”包对象。另一种可能有效的方法是在带有 HTML 包装器驱动程序的 rgdal 构建中直接使用由 GetMap(或 gmap)构造的 URL 和 readGDAL,或者只是尝试使用 GDAL 支持 TMS:gdal.org/frmt_wms.html
  • ggmap 和 gmap,我将尝试这两个版本。有替代品总是好的。非常感谢!

标签: r png gdal rgooglemaps


【解决方案1】:

将您的RGoogleMaps 对象设为MyMap。使其将磁贴下载到MyTile1.png 使用raster 包。

bb = MyMap$BBOX
t = stack("MyTile.png")
extent(t)=extent(bb$ll[,2],bb$ur[,2],bb$ll[,1],bb$ur[,1])

现在t 是一个光栅堆栈。做plotRGB(t) 你应该会看到。现在您可以尝试writeRaster 创建一个GDAL 数据源。或许是 GeoTIFF?

请注意讨厌的 Google 图片使用协议...

【讨论】:

  • 是的,这正是我的想法。非常感谢!当然,一切仅供个人使用。
  • 很好,但调用任何变量“t”不是一个好习惯,因为这是用于转置表格的预定义函数(更改列的行)。
  • @Rodrigo 如果我的t 是一个函数,是的,但是当 R 需要一个函数时,它会寻找一个函数。 t=99; t(matrix(1:4,2,2)) 仍然可以正常工作。
  • 是的,没错。但是“好的做法”来自这样一个事实:1)一旦你这样做,别人可能会向你学习; 2)你可能会出于纯粹的习惯,有一天把一个人混为一谈(也许是年纪大了或者因为某种原因分心了)。这在一个大项目中可能是一个很难找到的错误。
  • 所以你的意思是应该知道所有函数的所有名称,而不是用这些名称调用你的任何变量,以防它触发一个极不可能的大事件?不切实际。
猜你喜欢
  • 1970-01-01
  • 2012-06-02
  • 2013-09-08
  • 2021-01-30
  • 2016-08-11
  • 2020-09-06
  • 2019-04-23
  • 2011-01-18
  • 2016-04-03
相关资源
最近更新 更多