我使用R来计算由此file中读取的图形定义的多边形的质心,使用poly_center(pracma包)。
奇怪的是,我得到的结果是多边形边界,是低于两者的中心点,x(lon)和y(纬度)轴/坐标的最小值(见下面的代码)。任何人都可以暗示我做错了什么或者这里发生了什么?
# 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
答案 0 :(得分:0)
查看poly_center
,您可能还需要将多边形坐标的第一行绑定到末尾。看起来代码不会将最后一点包装回第一个。
尝试
tmp <- rbind(coordinates(t), coordinates(t)[1,])
points(t(poly_center(tmp[,1], tmp[,2])), col="green", pch=16)