【问题标题】:Attribute values to polygons in SpatialPolygonsDataFrameSpatialPolygonsDataFrame 中多边形的属性值
【发布时间】:2016-02-02 06:59:58
【问题描述】:

我有一个 SpatialPolygonsDataFrame (poly) 我想将另一个数据帧 (df) 的值赋予属性。在poly@polygons 插槽中是一组具有唯一 ID 的多边形。此 ID 对应于 df 中的 ID 值。 df 有两种类型的列。 df$ID 是唯一 ID(对应于 poly@polygons ID),df$1988:df$2014 是指定年份的列。每年以下是有问题的价值。

对于如何将该值以及某个 ID 的所有年份的所有值转换为 poly 有什么想法吗?最终目标是可视化按值着色的多边形,一个表示所有年份的组合,然后是一个 GIF,显示每年的值变化。

【问题讨论】:

  • poly@polygons$ID 是否为您生成多边形 ID?假设一个 ID 出现多年,这可能是获得它的方法。考虑到您已将 ID 确定为唯一的,我很好奇您将如何知道连续年份是否是同一个多边形。是否有另一个变量可以让您知道多边形来自一组连续的多边形?

标签: r


【解决方案1】:

如果我正确理解了这个问题,你想要这样的东西:

newPoly <- merge(poly, df, by.x = 0, by.y = "ID")

sp 有一个合并方法,只要空间数据帧是第一个,它就应该将空间数据帧和普通数据帧连接起来。 by.x = 0 指定按行名连接,该行名应对应于空间多边形中的 ID 槽。完成此操作后,您可以绘制不同年份的值

using eithernewPoly$1998ornewPoly@data$1998`

我从未尝试过使用行名合并空间多边形,所以我不肯定它是否有效,如果不是,我会在空间多边形的数据槽中创建一个新列,如下所示:

poly@data$ID <- row.names(poly@data)

您可以在数据槽中创建新列,但在排序或删除行时要非常小心,因为它会弄乱绘图。

【讨论】:

  • 谢谢。我得到了合并功能,但是它将值放在数据槽中,必须附加到多边形,而不是数据槽中的 ID 列。在绘图时,无论如何我都知道,无法同时引用数据和多边形插槽来产生结果。也许有我只是不知道该怎么做。
  • 我不确定我是否遵循,您不应该编辑多边形插槽,任何您想要绘制的东西都应该放入数据插槽中。如果你编辑多边形槽,你可能会以一种非常严重的方式弄乱你的形状文件……在 R ggplot、tmap、base 中有很多不同的方法来绘制。都有不同的优点和缺点。最简单的方法是 plot(newPoly, col = newPoly@data$1998 在 stackoverflow 和互联网周围有很多绘图资源。
  • 以上内容通常用于分类变量,如果您有连续变量,您可以将其切割成箱或使用渐变。我不记得如何在我的头顶上以 R 为基数绘制渐变我更像是一个 ggplot 人。
猜你喜欢
  • 2016-10-07
  • 2017-10-16
  • 1970-01-01
  • 2015-04-17
  • 2015-06-19
  • 2018-08-01
  • 2012-03-08
  • 2015-06-07
  • 1970-01-01
相关资源
最近更新 更多