2

我有一些空间数据,我正在使用地图库在 R 中进行映射。具体来说,我正在美国地图上绘制圆圈。我有每个圆的纬度/经度中心坐标和半径,并像这样映射它们:

library(maps)
library(plotrix)
map('state')
draw.circle(x=-73.76275, y=41.04181, radius=2)

这个特殊的圆需要 205 公里的半径。我已经能够匹配它并在图形窗口中准确绘制,但是缩放或导出为 png 会改变相对于地图的圆圈大小。

有没有办法a)自动化圆圈大小,b)在导出时保持缩放?

4

1 回答 1

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 公里处。

于 2012-06-11T08:07:31.600 回答