我试图在R的美国地图上绘制几个长点和纬度点。每个点都有一个特定的半径,我也试图想象。它们存储在标题long,lat和rad下的表格中。我还想确定具有拦截国界的半径的点。
我在地图上有点,但似乎无法获得多个点的半径,并返回具有拦截边界的半径的点。
library("maps")
library("mapproj")
library("mapdata")
data("stateMapEnv")
dat <- read.csv("R/longlat.csv",header = T)
map('state',fill = T, col = "white")
points(dat$lng,dat$lat,col = "red", cex = 0.6, pch = 20)
plotCircle <- function(lonDec, latDec, mile) {
ER <- 3959
angdeg <- seq(1:360)
lat1rad <- latDec*(pi/180)
lon1rad <- lonDec*(pi/180)
angrad <- angdeg*(pi/180)
lat2rad <- asin(sin(lat1rad)*cos(mile/ER) + cos(lat1rad)*sin(mile/ER)*cos(angrad))
lon2rad <- lon1rad + atan2(sin(angrad)*sin(mile/ER)*cos(lat1rad),cos(mile/ER)-sin(lat1rad)*sin(lat2rad))
lat2deg <- lat2rad*(180/pi)
lon2deg <- lon2rad*(180/pi)
polygon(lon2deg,lat2deg,lty = 2 , col = alpha("blue",0.35))
}
agents <- mapproject(dat$lng,dat$lat)
points(agents, col = "red", cex = 0.4, pch = 20)
plotCircle(dat$lng,dat$lat,dat$rad)