R:绘制距世界地图shapefile上的点的径向距离

时间:2013-08-15 10:47:43

标签: r plot maptools world-map

与我之前的问题here类似,我说我正在使用maptools在世界地图上绘制国家,如果我要绘制一个国家,是否有办法找到这个国家的中心点并绘制一个径向距离这一点?我正在使用wrld_simpl附带的shapefile maptools,所以如果我绘制德国:

 plot(wrld_simpl[wrld_simpl$NAME=='Germany',], col='red', add=T)

我想找到德国的中心并从这一点绘制一个圆圈,显示任何距离100公里的区域。我希望能够为许多不同的国家做到这一点,所以我理想地想要一个通用的解决方案,而不仅仅是德国的具体解决方案。

1 个答案:

答案 0 :(得分:1)

这是部分答案。下面的代码片段计算多边形的质心,因此如果您可以为您感兴趣的国家/地区提取多边形顶点数据,这将为您提供“中心”,之后绘制一个圆圈是微不足道的。 (polyx和polyy是x和y坐标的向量

require(pracma)
pchit <- polyarea(polyx,polyy)
centx <- centy <- 0
    for (kk in 1:(length(polyx)-1) ) {
        centx <- centx + (polyx[kk]+polyx[kk+1]) * (polyx[kk]*polyy[kk+1]-polyx[kk+1]*polyy[kk])
        centy <- centy + (polyy[kk]+polyy[kk+1]) * (polyx[kk]*polyy[kk+1]-polyx[kk+1]*polyy[kk])
    }
    centx <- -1/pchit/6 * centx
    centy <- -1/pchit/6 * centy