我使用地图库在R中映射了一些空间数据。具体来说,我在美国地图上绘制圆圈。我有纬度/长中心坐标和每个圆的半径,并按照这样的方式映射它们:
library(maps)
library(plotrix)
map('state')
draw.circle(x=-73.76275, y=41.04181, radius=2)
此特定圆的半径为205 km。我已经能够在图形窗口中准确匹配并准确绘图,但缩放或导出到png会改变相对于地图的圆形大小。
有没有办法a)自动化圆形大小,b)在导出时保留缩放?
答案 0 :(得分:0)
试试这个:
map('state')
x <- -73.76275
y <- 41.04181
radius <- 205 # in kilometers
s <- seq(0,2*pi,length=1000)
yradius <- optimize(interval=c(0,3),f=function(z){
abs(pointDistance(c(x,y),c(x,y+z),longlat=T) - radius*1000)})$par
xradius <- optimize(interval=c(0,3),f=function(z){
abs(pointDistance(c(x,y),c(x+z,y),longlat=T) - radius*1000)})$par
lines(cos(s)*xradius+x,sin(s)*yradius+y)
这给你一个圆圈,其中最北点位于中心以北205公里处,最东点位于中心以东205公里处。