R:poly_中心超出多边形边界
我用R来计算图中所示多边形的重心,使用poly_center(pracma软件包) 奇怪的是,我得到的结果超出了多边形边界,中心点低于x(lon)和y(lat)轴/坐标的最小值(见下面的代码)。有没有人能告诉我我做错了什么或者这里发生了什么R:poly_中心超出多边形边界,r,polygon,sp,R,Polygon,Sp,我用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=NUL
# 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
#加载所需的包
要求(pracma)
需要(sp)
t查看多边形中心
,您可能还需要将多边形坐标的第一行绑定到末端。它看起来不像是将最后一点包装回第一点的代码
试一试
tmp查看poly_center
,您可能还需要将多边形坐标的第一行绑定到末端。它看起来不像是将最后一点包装回第一点的代码
试一试
tmp由于我们没有您的CSV文件,发布read.CSV()
没有多大帮助。也许你可以发布dput(t)
?另外,我强烈建议不要使用attac()
。谢谢@Gregor的输入。实际上我上传了这个文件[这里]()。这也在上面的问题中。干杯,再次感谢<代码>点(t(colMeans(coordinates(t))),col=“red”)
给出了一个近似的中心,这在nongkrong是正确的。它在这种情况下也适用于“规则”形状。不幸的是,在“L”形中,这种方法不能给我期望的结果,例如…:(因为我们没有你的CSV文件,发布read.CSV()
没有多大帮助。也许你可以发布dput(t)
?另外,我强烈建议不要使用attac()
。感谢@Gregor的输入。实际上我上传了文件[这里]()。这也是上面的问题。干杯,再次感谢!点(t(colMeans(coordinates(t)),col=“red”)
给出了一个近似的中心。这是真的@nongkrong。它适用于这种情况以及“常规”形状。不幸的是,这种方法在“L”形状中不会给我期望的结果,例如…:(这解决了@nongkrong!我在许多多边形中有一个循环,而这恰好是唯一一个有此问题的!非常感谢!干杯!@HelioCamargo很高兴听到它:)这解决了@nongkrong!我在许多多边形中有一个循环,而这恰好是唯一一个有此问题的!非常感谢!干杯!@HelioCamargo很高兴听到它:)
tmp <- rbind(coordinates(t), coordinates(t)[1,])
points(t(poly_center(tmp[,1], tmp[,2])), col="green", pch=16)