【问题标题】:R: combining a separate data frame of longitude and one of latitude into spatial pointsR:将单独的经度和纬度数据框组合成空间点
【发布时间】:2018-05-30 02:37:32
【问题描述】:

我有两个数据框,每个 1000 x 1000,一个带有经度的数据框 (lon) 和一个带有纬度的数据框 (lat),指定像素(或栅格)数组的坐标,我不知道如何组合将两个数据帧合并为一个 1000 x 1000 空间点数据帧(或等效数据)。空间点数据帧的第一个单元格将具有由 lon[1,1] 和 lat[1,1] 等指定的坐标。有没有简单的方法可以做到这一点?我想我可以逐列执行,然后按顺序将空间点对象绑定在一起,但这似乎有点啰嗦。有什么想法吗?

按照建议尝试:

lat.t <- data.frame(seq(10, 15, 1), seq(20, 25, 1), 
    seq(30, 35, 1),seq(40, 45, 1))
colnames(lat.t) <- c("1", "2", "3", "4")
lon.t <- data.frame(seq(90, 95, 1), seq(100, 105, 1), 
seq(110, 115, 1), seq(120, 125, 1))
colnames(lon.t) <- c("1", "2", "3", "4")
coords <- cbind(lon = unlist(lon.t), lat= unlist(lat.t))
sp.ob <- SpatialPoints(coords)

当我认为我需要一个 4 x 4 以便 lon/lat 与栅格匹配时,它会给出一个 16 行的两列 sp.ob。

如果我这样做:

coords <- cbind(lon =lon.t , lat= lat.t)
sp.ob <- SpatialPoints(coords)

我确实得到了 4 x 4,但前 4 列中都是 lon,最后 4 列中都是 lat,如果我查看以下内容,我认为这不会给我正确的 lon/lat 对:

sp.ob[1]

例如。

【问题讨论】:

  • 请提供一个工作示例。
  • 不确定 1000x1000 的“spatialpointsdataframe”是什么意思。我认为这种类型的对象是以“长”格式记录的。为什么不制作 5 x 5 的 lat 和 lon 的玩具版本并显示所需的内容。
  • 非常感谢您的建议-这是一个有用的刺激,让我思考得更清楚一点!

标签: r spatial


【解决方案1】:

试试这个:

lon <- data.frame(matrix(rnorm(10000), 100, 100))
lat <- data.frame(matrix(rnorm(10000), 100, 100))

cbind(lon = unlist(lon), lat = unlist(lat))

或者:

cbind(lon = unlist(t(lon)), lat = unlist(t(lat)))

取决于想要的顺序(按行或按列)

【讨论】:

  • 非常感谢——这解决了我的问题,尽管我花了一段时间才意识到这一点。您的回答还帮助我了解了栅格数据的组织方式以及如何解决更广泛的问题。
【解决方案2】:

我最初的问题是关于如何将单独的 lon/lat 数据帧合并为一个,以便我可以添加这些数据以指定栅格中的相关坐标。根本问题是我有一个 tiff 图像,表示 1000 x 1000 像素的极地立体(南极)投影,以及经度和纬度的单独文件,每个 1000 x 1000 元素与像素图像匹配。 @Gilles 指出了一个简单的数据帧转换(基本 R !),我可以使用它来转换 1000 x 1000 经度/纬度数据帧,以获取 x 和 y 坐标的形式,我可以将其与光栅 tiff 的数据帧转换相结合给出一个带有 xyz 列的文件。然后我可以使用 rasterFromXYZ 来完成我的任务。然而,坐标不是很规则,但“griddify”可以解决这个问题。非常感谢您回答我最初的问题!

【讨论】:

  • 请编辑您的问题,而不是像回答一样添加问题。否则,其他人使用此讨论可能会非常混乱。
  • 很公平。我确实打算表明我认为原始问题已得到解答,并且(我认为)解决了根本问题。我会在这方面做得更好!
【解决方案3】:

根本问题是我有一个 tiff 图像代表一个 1000 x 1000 像素的极地立体(南极)投影和 经度和纬度的单独文件,每个 1000 x 1000 个元素 匹配像素图像

你需要做的是

library(raster)
r <- raster("file.tif")

检查坐标参考系(投影)

crs(r)

如果已正确设置为极地立体,您就可以开始了; 否则,您可以使用适当的描述对其进行设置。类似的东西

crs(r) <- "+proj=stere +lat_0=-90 +lon_0=0  +lat_ts=-71 +datum=WGS84 +units=m"

如果要转换成经度/纬度,试试:

x <- projectRaster(r, "+proj=longlat +datum=WGS84")

有关其他参数,请参阅?projectRaster

【讨论】:

  • 这非常有用,我没有考虑过 lon/lat 的单独文件可能不是必需的,但它们仍然是一个有用的检查。非常感谢您的建议!
猜你喜欢
  • 2013-04-05
  • 1970-01-01
  • 1970-01-01
  • 2013-08-02
  • 2019-10-30
  • 2022-11-27
  • 1970-01-01
  • 2011-07-29
  • 2015-06-10
相关资源
最近更新 更多