关于DEM土方量算的计算方法
最近在写一个关于dem土方计算的功能,网上搜索了下,普遍提到的都是三角网和矩形格网形式进行计算,然后又研究了下arcgis软件的结果,最后发现arcgis中使用的也是格网形式进行了矩形立方计算。
于是开始动手编写代码段,其实实现的代码相当简单最后测试结果与arcgis中结果一致,下面是实现的核心函数代码:
double caculateElevation(DEMHEADERINFO m_demInfo, float *m_lpHeight,int x,int y, double referenceElevation, double &rmax)
{
double gz=0;
double s = m_demInfo.lfDx*m_demInfo.lfDy;获取格网面积
float mh=0;
float xyz;
GetZ(m_demInfo, m_lpHeight, y , x , xyz);
//
if (xyz== m_demInfo.lfNoData)
{
rmax = 0;
return 0;
mh += 0;
}
rmax = abs(xyz- referenceElevation);
gz = s*(xyz - referenceElevation);
return gz; 返回格网计算的体积
}
实际原理就是把每个格网作为一个独立的立方体来进行考量,思路较为单纯