与我之前的问题类似,假设我正在使用地图工具在世界地图上绘制国家,如果我要绘制一个国家,有没有办法找到这个国家的中心点并绘制与该点的径向距离?我使用的是maptools
附带的形状文件wrld_simpl
,所以如果我绘制德国:
plot(wrld_simpl[wrld_simpl$NAME=='Germany',], col='red', add=T)
我想找到德国的中心,并从这一点画一个圆圈,显示100公里以内的任何区域。同样,我希望能够为许多不同的国家做到这一点,所以我理想的情况是想要一个通用的解决方案,而不仅仅是德国的解决方案。
这是部分答案。下面的代码片段计算多边形的质心,因此,如果您可以提取感兴趣国家的多边形顶点数据,这将为您提供"中心",之后画一个圆就很简单了。(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