R和传单绘制的圆半径不正确?

R和传单绘制的圆半径不正确?,r,leaflet,R,Leaflet,代码如下: library(leaflet) library(geosphere) startLoc <- c(-100, 45) #Long/Lat endLoc <- c(-100, 42) #Long/Lat totalDist <- distHaversine(startLoc, endLoc) leaflet() %>% addTiles() %>% # Add default OpenStreetMap map tiles addMar

代码如下:

library(leaflet)
library(geosphere)

startLoc <- c(-100, 45) #Long/Lat
endLoc <- c(-100, 42) #Long/Lat

totalDist <- distHaversine(startLoc, endLoc)


leaflet() %>%
  addTiles() %>%  # Add default OpenStreetMap map tiles
  addMarkers(lng=c(startLoc[1],endLoc[1]), lat=c(startLoc[2], endLoc[2]), popup  = paste(totalDist)) %>%
  addCircles(lng = endLoc[1], lat = endLoc[2], radius = totalDist)
图书馆(传单)
图书馆(地球圈)
百分之五十
添加圆(lng=endLoc[1],lat=endLoc[2],半径=totalDist)
如您所见,圆中不包括顶点。我想这是因为“添加圆”没有考虑地球的曲率?对吗


如果将两个点靠得更近,则更好…

这是因为WebMercator不是保持距离的投影。传单是在地图上画一个几何圆,它没有找到离中心等距离的点。当您向北移动时,投影会延伸距离,因此北面点位于几何圆之外。如果你尝试

  startLoc <- c(-103, 42) #Long/Lat
  endLoc <- c(-100, 42) #Long/Lat
startoc
library(geosphere)
library(plyr)
startLoc <- c(-100, 45) #Long/Lat
endLoc <- c(-100, 42) #Long/Lat

totalDist <- distHaversine(startLoc, endLoc)

points = ldply(1:360, function(angle) destPoint(endLoc, angle, totalDist))
leaflet() %>%
  addTiles() %>%  # Add default OpenStreetMap map tiles
  addMarkers(lng=c(startLoc[1],endLoc[1]), lat=c(startLoc[2], endLoc[2]), popup  = paste(totalDist)) %>%
  addPolygons(lng = points$lon, lat = points$lat)