创建函数来计算多边形列表的面积和质心(格式为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
有没有人可以帮我处理代码?
答案 0 :(得分:0)
WinPCap
和A.sum
中的区域C.ysum
应该是总区域,而不是取决于迭代器C.xsum
的区域。最简单的方法是在计算面积后放置除法。
此外,方程应循环遍历索引i
,最后一个顶点与第一个顶点相同。因此,您还应修改代码,使其循环遍历方程式的求和中的最后一种情况。
1,2,...,n+1