计算两个数据帧的平均纬度差并转换为公里

问题描述 投票:0回答:1

我有两个数据框,

DF1
DF2
,包含北美尺度的经度/纬度空间数据,它们的投影是
EPSG:4326
。我想计算
M1
的 y 坐标的平均值 (
DF1
) 和
M2
的 y 坐标的平均值 (
DF2
) 之间的差值,并且我希望表达差值以公里为单位。在我的情况下,我不确定使用哪种投影系统将经度和纬度转换为公里。

我发现了函数

terra::expanse()
通过使用经度/纬度 CRS 来计算非 NA 的栅格单元覆盖的区域。据说最好用经纬度CRS来计算面积。

我找不到这个函数的源代码,看看是否有办法将值

M1
M2
转换为 km。我是GIS新手,非常感谢您的帮助。这是我的数据框以及值
M1
M2
的摘要:

> summary(DF1 [,c(“x”, “y”)])
 decimalLongitude  decimalLatitude
 Min.   :-171.62   Min.   :14.88 
 1st Qu.:-118.62   1st Qu.:41.88 
 Median :-103.38   Median :53.38 
 Mean   :-104.81   Mean   :51.95 
 3rd Qu.: -87.88   3rd Qu.:63.62 
 Max.   : -52.88   Max.   :76.38
 
 
> summary(DF2 [,c(“x”, “y”)])
 decimalLongitude  decimalLatitude
 Min.   :-171.62   Min.   :15.62 
 1st Qu.:-118.62   1st Qu.:42.12 
 Median :-103.12   Median :53.38 
 Mean   :-104.70   Mean   :52.04 
 3rd Qu.: -87.88   3rd Qu.:63.62 
 Max.   : -52.88   Max.   :76.38
 
 
 
> M1 <- mean(DF1[,c(“y”)], na.rm = TRUE)
> M1
[1] 51.95062
 
> M2 <- mean(DF2[,c(“y”)], na.rm = TRUE)
> M2
[1] 52.03755
 
> M2 - M1
[1] 0.08692784 ## how to convert to km ?
r gis
1个回答
0
投票

您可以使用

geosphere::distm

计算第一个 data.frame 中的每个点到第二个 data.frame 中的每个点的距离

示例数据

d1 <- data.frame(lon=0:1, lat=0:1)
d2 <- data.frame(lon=30:33, lat=20:23)

解决方案

m <- geosphere::distm(d1, d2, distGeo)
mean(m) / 1000
#[1] 4088.824
© www.soinside.com 2019 - 2024. All rights reserved.