R 根据给定的gps坐标计算bbox的中心

R 根据给定的gps坐标计算bbox的中心,r,geolocation,tidyverse,sf,R,Geolocation,Tidyverse,Sf,给定具有以下值的bbox: f1 <- base::data.frame("left" = 11.46067, "bottom" = 48.05556 ,"right" = 11.69851 ,"top" = 48.21477) f1我认为应该使用中值来找到中心。我希望这段代码对您有所帮助 library(leaflet) f1 <- base::data.frame("left"

给定具有以下值的bbox:

f1 <- base::data.frame("left" = 11.46067, "bottom" = 48.05556 ,"right" = 11.69851 ,"top" = 48.21477)

<代码> f1我认为应该使用中值来找到中心。我希望这段代码对您有所帮助

library(leaflet)

f1 <- base::data.frame("left" = 11.46067, "bottom" = 48.05556 ,"right" = 11.69851 ,"top" = 48.21477)
point <- c(median(c(f1$left, f1$right)), median(c(f1$bottom, f1$top)))

leaflet() %>%
  addTiles() %>%
  addRectangles(lng1 = f1$left, lat1 = f1$bottom, lng2 = f1$right, lat2 = f1$top) %>%
  addCircleMarkers(lng = point[1], lat = point[2])
图书馆(传单)
f1%
添加矩形(lng1=f1$左,lat1=f1$下,lng2=f1$右,lat2=f1$上)%>%
添加回路标记器(lng=点[1],lat=点[2])

我不知道为什么,但提议的解决方案对我不起作用。 例如,给定以下bbox(11.360777 48.06162 11.722908 48.24812)和以下计算:根据建议的中位数(11.360777,11.722908)和中位数(48.06162,48.24812);它产生一个远离bbox中心的点

所做的工作是找到通过bbox绘制的两条对角线的交点:

geosphere::gcIntersect(p1 = c(xmin, ymin),
                       p2=c(xmax, ymax),
                       p3=c(xmax, ymin),
                       p4=c(xmin, ymax))

在x和y两个方向取平均值。。。?还是我遗漏了更复杂的东西?哦!我想你是对的:)我不确定地球的弯曲度等会有一些影响(不确定tbh),但这似乎是一个非常小的区域。如果你真的想,你可以用这个来创建一个空间多边形并计算它的质心,比如用
sf::st_centroid
非常感谢。出于好奇,两个数字的中间值不就是它们的平均值吗?你是绝对正确的,它们是等价的。不知怎的,这是行不通的:考虑到下面的bbox(11.360777 48.06162 11.722908 48.24812)和以下计算:中位数(11.360777,11.722908)和中位数(48.06162,48.24812)根据建议,它产生一个远离bbox中心的点。我在哪里有错误吗?Hello@Andreas我正在用我的代码测试这个新框,它把我的点扔到中心。
f1