【发布时间】:2017-01-07 12:25:55
【问题描述】:
创建函数来计算多边形列表的面积和质心(如 georgia.polys 的格式)。多边形的面积公式是
其中 A 是多边形区域,xi 是多边形边界的第 i 个 x 坐标(R 中的 x[i]),yi 是多边形边界的第 i 个 y 坐标(R 中的 y[i] ) - n 是用于指定多边形边界的点数。假设多边形是封闭形式,因此 xi 和 yi 取与 xn 和 yn 相同的值。 质心具有坐标 (Cx, Cy),其中:
这是已经创建的代码,但我不确定质心坐标是否正确
library(GISTools)
data("georgia")
polyn<-function(x){
poly.df<-data.frame()
for(d in 1:159){
poly.d<-x[[d]]
n<-length(poly.d[,1])
i<-1
A.sum<-0
C.xsum<-0
C.ysum<-0
while(i<n){
A.area<-0.5*(poly.d[i,2]*poly.d[i+1,1]-poly.d[i+1,2]*poly.d[i,1])
A.sum<-A.sum+A.area
C.x<-(1/(6*A.sum))*(poly.d[i,2]+poly.d[i+1,2])*(poly.d[i,2]*poly.d[i+1,1]-poly.d[i+1,2]*poly.d[i,1])
C.xsum<-C.xsum+C.x
C.y<-(1/(6*A.sum))*(poly.d[i,1]+poly.d[i+1,1])*(poly.d[i,2]*poly.d[i+1,1]-poly.d[i+1,2]*poly.d[i,1])
C.ysum<-C.ysum+C.y
i<-i+1
}
poly.df<-rbind(poly.df, c(A.sum,C.xsum,C.ysum))
colnames(poly.df) <- c("Area", "Cx", "Cy")
}
poly.df
}
polyn(georgia.polys)
这是该函数的一些结果,
Area Cx Cy
1 1326077000 4044403.4 4855396.03
2 891511462 -2237689.5 -2962558.41
3 740601936 10709355.7 12996988.27
有人可以帮我写代码吗?
【问题讨论】: