求R中4个坐标的中点坐标

Find the coordinates of mid point of 4 coordinates in R

首先感谢大家对我之前的问题的帮助。

我试图寻找一个可以为我的数据集找到中心坐标的函数:

df <- read.table(sep=",", col.names=c("Start_Latitude","Start_Longitude","End_Latitude", "End_Longitude"),text="43.9567343,  -78.8571382, 43.9399364, -78.8497342")

Start_Latitude    Start_Longitude   End_Latitude    End_Longitude      
  43.9567343       -78.8571382       43.9399364      -78.8497342

我试过这段代码,但它只计算从起点坐标到终点坐标的距离,我想找到中点坐标而不仅仅是距离。我的意思是我需要找到中点的经度和纬度。

#dd the distance as column in the dataframe
df1$dist <- distm(x = df[, c('Start_Longitude', 'Start_Longitude')], 
                y = df[, c('End_Longitude', 'End_Latitude')],
                fun = distHaversine
)

我有这个数据集:

 Start_Latitude    Start_Longitude   End_Latitude    End_Longitude       dist
      43.9567343       -78.8571382       43.9399364      -78.8497342     13669708

有没有办法找到中点的经纬度?另外,如何计算以公里为单位的距离。

提前致谢!

这是 geosphere::midPoint 的方法:

library(geosphere)
data.frame(df,
           dist = distHaversine(df[, c('Start_Longitude', 'Start_Latitude')],
                                df[, c('End_Longitude', 'End_Latitude')]) / 1000, 
           midPoint(p1 = df[, c('Start_Longitude', 'Start_Latitude')],
                    p2 = df[, c('End_Longitude', 'End_Latitude')]))
#  Start_Latitude Start_Longitude End_Latitude End_Longitude    dist       lon      lat
#1       43.95673       -78.85714     43.93994     -78.84973 1.96183 -78.85344 43.94834

可以通过平均纬度/经度组合来计算中点。使用原始 post 中的数据,我们使用 dplyr::mutate() 计算中点。

textFile <- "Start_Latitude    Start_Longitude   End_Latitude    End_Longitude      
  43.9567343       -78.8571382       43.9399364      -78.8497342
41.947460   -87.654730   41.890620   -87.624480"

data <- read.table(text=textFile,header=TRUE)

library(dplyr)
data %>% rowwise(.) %>% 
    mutate(midpoint_lat = sum(Start_Latitude,End_Latitude)/2,
           midpoint_long = sum(Start_Longitude,End_Longitude)/2) %>%
    as.data.frame(.) # print as df, not tibble

...输出:

  Start_Latitude Start_Longitude End_Latitude End_Longitude id midpoint_lat
1       43.95673       -78.85714     43.93994     -78.84973  1     43.94834
2       41.94746       -87.65473     41.89062     -87.62448  2     41.91904
  midpoint_long
1     -78.85344
2     -87.63961

正在计算距离(公里)

distHaversine() function from the geosphere 包的帮助中所述,结果中的度量单位是根据地球半径的给定参数返回的。默认值为 r = 6378137 米,因此测量单位以米为单位返回。

要转换为公里,有两种选择:

  1. 将结果除以 1,000(如该问题的其他答案所示),或
  2. 将参数 r 更改为 6378.137