【发布时间】:2012-10-30 21:53:16
【问题描述】:
我有两个包含纬度、经度和温度数据的数据集。一个数据集对应于一个感兴趣的地理区域,对应的纬度/经度对构成该区域的边界和内容(矩阵维度 = 4518x2)
另一个数据集包含包含感兴趣区域的较大区域的纬度/经度和温度数据(矩阵维度 = 10875x3)。
我的问题是:如何从与第一个数据集的纬度/经度数据匹配的第二个数据集中提取适当的行数据(纬度、经度、温度)?
我尝试了各种“for loops”、“subset”和“unique”命令,但无法获得匹配的温度数据。
提前致谢!
10/31 编辑:我忘了提到我正在使用“R”来处理这些数据。
感兴趣区域的纬度/经度数据以 4,518 个文件的列表形式提供,每个文件的名称中包含纬度/经度坐标:
x<- dir()
lenx<- length(x)
g <- strsplit(x, "_")
coord1 <- matrix(NA,nrow=lenx, ncol=1)
coord2 <- matrix(NA,nrow=lenx, ncol=1)
for(i in 1:lenx) {
coord1[i,1] <- unlist(g)[2+3*(i-1)]
coord2[i,1] <- unlist(g)[3+3*(i-1)]
}
coord1<-as.numeric(coord1)
coord2<-as.numeric(coord2)
coord<- cbind(coord1, coord2)
纬度/经度和温度数据是从 NCDF 文件中获得的,其中包含 10,875 个纬度/经度对的温度数据:
long<- tempcd$var[["Temp"]]$size[1]
lat<- tempcd$var[["Temp"]]$size[2]
time<- tempcd$var[["Temp"]]$size[3]
proj<- tempcd$var[["Temp"]]$size[4]
temp<- matrix(NA, nrow=lat*long, ncol = time)
lat_c<- matrix(NA, nrow=lat*long, ncol=1)
long_c<- matrix(NA, nrow=lat*long, ncol =1)
counter<- 1
for(i in 1:lat){
for(j in 1:long){
temp[counter,]<-get.var.ncdf(precipcd, varid= "Prcp", count = c(1,1,time,1), start=c(j,i,1,1))
counter<- counter+1
}
}
temp_gcm <- cbind(lat_c, long_c, temp)`
所以现在的问题是如何从“temp_gcm”中删除与“coord”中的纬度/经度数据对相对应的值?
【问题讨论】:
-
一个非常有趣的问题。感兴趣区域的纬度/经度集是简单地限制了该区域,还是该区域有温度数据的所有纬度/经度对的集合?
-
我们在这里使用什么语言?我们能否获得一个简短的代码示例来看看您的数据结构是什么样的?
-
@Nathaniel Ford:纬度/经度数据集对应于区域边界和感兴趣区域内每个网格的质心。
-
@slashingweapon 哦,对了,我正在使用“R”语言来处理这些数据。我将很快提供数据结构的示例!
-
你能把边界点和网格质心点分开吗?您可以使用边界点创建多边形并使用“多边形中的点”函数之一(例如包 sp)来选择位于该区域内的点。