【发布时间】:2015-08-06 21:12:18
【问题描述】:
我正在使用 R 使用 poly_center(pracma 包)计算在此file 中读取的图形定义的多边形的质心。
奇怪的是,我得到的结果超出了多边形边界,中心点低于 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
【问题讨论】:
-
由于我们没有您的 CSV 文件,因此发布
read.csv()并没有多大帮助。也许你可以发帖dput(t)?另外,我强烈建议从不使用attac()。 -
感谢@Gregor 的输入。实际上我在 [这里] (drive.google.com/file/d/0B-NeuuVjTy4IQmRINVZHb1ZWNkE/view?pli=1) 上传了文件。在上面的问题中也是如此。干杯,再次感谢!
-
points(t(colMeans(coordinates(t))), col="red")给出一个近似中心 -
这是真的@nongkrong。它适用于这种情况以及“常规”形状。不幸的是,这种方法不会给我想要的结果,例如“L”形......:(