根据Lat/Lon矩阵或R中多个多边形的50%轮廓内计算面积
我想从核密度(kde2d)的不同轮廓线内的多个多边形中找到总面积。 这是内核密度和50%等高线的图像。如何计算50%等高线内的面积 我还创建了一个lat-lon坐标矩阵,表示这条50%等高线内的点。使用这些点计算总面积会更容易吗根据Lat/Lon矩阵或R中多个多边形的50%轮廓内计算面积,r,coordinates,geospatial,area,contour,R,Coordinates,Geospatial,Area,Contour,我想从核密度(kde2d)的不同轮廓线内的多个多边形中找到总面积。 这是内核密度和50%等高线的图像。如何计算50%等高线内的面积 我还创建了一个lat-lon坐标矩阵,表示这条50%等高线内的点。使用这些点计算总面积会更容易吗 如有任何建议,将不胜感激 在笛卡尔坐标系中获得坐标,并使用这些坐标进行内核平滑后,可以使用轮廓线函数获取直线的坐标,然后使用splancs包中的areapl函数计算每个简单环的面积 例如,使用帮助(kde2d)中的示例: 现在C8是长度为3的列表。我们需要对以下各项应用
如有任何建议,将不胜感激 在笛卡尔坐标系中获得坐标,并使用这些坐标进行内核平滑后,可以使用
轮廓线
函数获取直线的坐标,然后使用splancs
包中的areapl
函数计算每个简单环的面积
例如,使用帮助(kde2d)
中的示例:
现在C8
是长度为3的列表。我们需要对以下各项应用areapl
函数:
> sapply(C8,function(ring){areapl(cbind(ring$x,ring$y))})
[1] 14.65282 12.27329 14.75005
我们显然可以总结:
> sum(sapply(C8,function(ring){areapl(cbind(ring$x,ring$y))}))
[1] 41.67617
现在,只有当坐标是笛卡尔坐标,并且等高线是完整的循环时,这才有意义。如果0.008轮廓靠近边缘,那么轮廓可能会被剪裁到边界框中,然后会发生不好的事情。至少检查每个环的最后一点是否与第一点相同。您是否在lat long坐标上进行kde?因为这可能是错误的。1度的lat不是1度的long,因此您的循环内核不是真正的循环内核。转换为笛卡尔坐标系(可能是UTM分区),然后重试。由于坐标和面积的计算很容易,所以最后你会得到米。为了强调坐标系的问题,在你的纬度,就在南极半岛附近,64度纬度线的周长是赤道周长的0.43倍,因此经度是纬度的2.28倍。所以你的内核密度是由一个2.28:1的偏心椭圆来估计的。转换为类似epsg:32720的格式,然后重试!(请参阅sp和rgdal软件包中的spTransform)@Spacedman,感谢您的关注!结果表明,果仁几乎完全相同。
> sapply(C8,function(ring){areapl(cbind(ring$x,ring$y))})
[1] 14.65282 12.27329 14.75005
> sum(sapply(C8,function(ring){areapl(cbind(ring$x,ring$y))}))
[1] 41.67617