0

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

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

我想找到德国的中心并从这一点绘制一个圆圈,以显示任何位于 100 公里距离内的区域。同样,我希望能够为许多不同的国家/地区执行此操作,因此理想情况下,我想要一个通用的解决方案,而不是仅针对德国的解决方案。

4

1 回答 1

1

This is a partial answer. The code snippet below calculates the centroid of a polygon, so if you can pull the polygon vertex data for your country of interest, this will give you the "center," after which it's trivial to draw a circle. (polyx and polyy are vectors of x- and y- coordinates

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
于 2013-08-15T11:26:26.790 回答