我有两个数据帧,每个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时,它会给出一个包含16行的两列sp.ob,以便lon / lat与光栅匹配。
如果我这样做:
coords <- cbind(lon =lon.t , lat= lat.t)
sp.ob <- SpatialPoints(coords)
我得到一个4 x 4但是前4列中的所有lon然后所有lat在最后4列中,并且我认为如果我查看内容,这不会给我正确的lon / lat对:
sp.ob[1]
例如。
答案 0 :(得分: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)))
取决于所需的订单(按行或按列)
答案 1 :(得分:0)
我最初的问题是关于如何将单独的lon / lat数据帧组合成一个,以便我可以添加这些数据框来指定栅格中的相关坐标。根本问题是我有一个tiff图像,表示1000 x 1000像素的极地立体(南极)投影和经度和纬度的单独文件,每个1000 x 1000元素与像素图像匹配。 @Gilles指出了一个简单的数据帧转换(基本R!),我可以使用它来转换1000 x 1000 lon / lat数据帧,以一种形式获得x和y坐标,我可以将这种形式与rastered tiff的数据帧转换相结合给一个xyz列的文件。然后我可以使用rasterFromXYZ来完成我的任务。但是,坐标不是很规则,但'griddify'可以解决这个问题。我最初的问题的答案非常感谢!
答案 2 :(得分:0)
根本问题是我有一个代表a的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
。