Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
根据Lat/Lon矩阵或R中多个多边形的50%轮廓内计算面积_R_Coordinates_Geospatial_Area_Contour - Fatal编程技术网

根据Lat/Lon矩阵或R中多个多边形的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的列表。我们需要对以下各项应用

我想从核密度(kde2d)的不同轮廓线内的多个多边形中找到总面积。 这是内核密度和50%等高线的图像。如何计算50%等高线内的面积

我还创建了一个lat-lon坐标矩阵,表示这条50%等高线内的点。使用这些点计算总面积会更容易吗


如有任何建议,将不胜感激

在笛卡尔坐标系中获得坐标,并使用这些坐标进行内核平滑后,可以使用
轮廓线
函数获取直线的坐标,然后使用
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