r:我把经纬度坐标投影到地图上的形状文件中的方法正确吗?

r:我把经纬度坐标投影到地图上的形状文件中的方法正确吗?,r,shapefile,sf,R,Shapefile,Sf,我有一个多边形的数据框,其中列出了每个顶点的经度和纬度坐标。考虑下面的数据框: shape longitude latitude polygon1 -0.15 51 polygon1 -0.148 51.3 polygon1 -0.148 51.3 polygon1 -0.15 51 polygon2 -0.15 51.5 polygon2 -0.148 51.5 polygon2 -0.148 52 polygon2 -0.15 5

我有一个多边形的数据框,其中列出了每个顶点的经度和纬度坐标。考虑下面的数据框:

shape    longitude latitude
polygon1 -0.15     51
polygon1 -0.148    51.3
polygon1 -0.148    51.3
polygon1 -0.15     51
polygon2 -0.15     51.5
polygon2 -0.148    51.5
polygon2 -0.148    52
polygon2 -0.15     52
我想使用sf库,并将坐标转换为shapefile多边形。首先,我将坐标参考系设置为4326,它包含地球的标准坐标系。然后我将坐标参考系转换为27700,这是英国国家网格(我的点在英国)。以下是我使用的代码:

library(sf)
library(dplyr)
library(readr)
data <- data %>%
  st_as_sf(coords = c('longitude', 'latitude')) %>%
  st_set_crs(4326)
data = data %>% st_transform(27700)
data <- data %>%
  group_by(shape) %>%
  summarise(do_union=FALSE) %>%
  st_cast("POLYGON")
库(sf)
图书馆(dplyr)
图书馆(readr)
数据%
st_as_sf(坐标=c(‘经度’、‘纬度’)%>%
st_集_crs(4326)
数据=数据%>%st_变换(27700)
数据%
分组依据(形状)%>%
总结(do_union=FALSE)%>%
st_cast(“多边形”)
投影shapefile后,我使用st_distance计算出polgons之间的距离为22247.47米。使用哈弗森公式,我得到22238.99米。有一些变化是正常的吗


重要的是,我要正确地将我的经纬度坐标映射到英国,以获得正确的距离。我的方法正确吗?

看起来不错。。。你为什么怀疑你的结果?目视检查结果:
mapview::mapview(数据)
当我计算哈弗斯线距离时,我得到22238.99米。但我认为两者之间存在一些差异是正常的?您可以使用
sfheaders::sf_polygon(obj=data,x=“longitude”,y=“latitude”,polygon_id=“shape”)