1

我正在使用 R使用 poly_center (pracma 包)计算在此文件中读取的图形定义的多边形的质心。

奇怪的是,我得到的结果超出了多边形边界,中心点低于 x(lon)和 y(lat)轴/坐标的最小值(参见下面的代码)。谁能提示我我做错了什么或这里发生了什么?

    # loading needed packages
    require(pracma)
    require(sp)
    t <- read.csv(file="testcm.txt",head=FALSE,row.names=NULL)[-1,] # readind file
    attach(t)
    lon <- V1
    lat <- V2
    cm <- poly_center(lon,lat) # center of mass
    cm
    [1] -49.92585 -16.52163
    min(lon)
    [1] -49.05978
    min(lat)
    [1] -16.45963
    plot(coordinates(t), type="n", xlab="longitude", ylab="latitude", xlim=c(-65,-40) , ylim=c(-35,-10)) # drawing base contours
    polygon(lon, lat, border = "red") # drawing polygon
    points(cm[1],cm[2], pch=22, col="blue") # drawing center of mass
4

1 回答 1

0

查看poly_center,您可能还需要将多边形坐标的第一行绑定到末尾。看起来代码并没有将最后一点包装回第一个点。

尝试

tmp <- rbind(coordinates(t), coordinates(t)[1,])
points(t(poly_center(tmp[,1], tmp[,2])), col="green", pch=16)
于 2015-08-06T21:34:14.120 回答