资源简介

基于激光雷达点云数据,采用规则格网的方法构建DEM,使用的时候记得更改数据的路径和名称。欢迎下载和交流。

资源截图

代码片段和文件信息

#define _CRT_SECURE_NO_DEPRECATE;
#include 
#include “MyPoint.h“
#include 
#include 
#include “Grid.h“
using namespace std;
int main()
{
vector p;
//读取数据
FILE* file1 = fopen(“E:/195527043张少晴_工程测量作业提交/data/G02_17_0 - Cloud_clip.txt“ “r+“);
if (file1 == NULL)
{
printf(“打开文件失败!\n“);
system(“pause“);
return 1;
}
else
{
while (!feof(file1))
{
MyPoint point;
fscanf(file1 “%lf%lf%lf“ &point.x &point.y &point.z);
p.push_back(point);
}
}
fclose(file1);
//遍历所有点云,求出x、y的最大坐标和最小坐标,从而确定格网的范围
double minx = p[0].x;
double maxx = p[0].x;
double miny = p[0].y;
double maxy = p[0].y;
int i;
for (i = 0; i < p.size(); i++)
{
if (minx > p[i].x)
{
minx = p[i].x;
}
if (maxx < p[i].x)
{
maxx = p[i].x;
}
if (miny > p[i].y)
{
miny = p[i].y;
}
if (maxy < p[i].y)
{
maxy = p[i].y;
}
}
cout << “minx:“ << minx << “ maxx:“ << maxx << “ miny:“ << miny << “ maxy:“ << maxy << endl;
////////创建格网/////////
Grid grid;
grid.dx = 1;
grid.dy = 1;
grid.CreatGrid(minx miny maxx maxy);
//遍历所有点,将每个点添加到对应的单元格网容器中
int row1;
int rank1;
int k;
for (int i = 0; i < p.size(); i++)
{
rank1 = int((p[i].x - grid.dem_minx) / grid.dx) + 1;
row1 = int((p[i].y - grid.dem_miny) / grid.dy) + 1;
k = (rank1 - 1) * grid.x_num + row1;
grid.grid_vector[k - 1].point_vector.push_back(p[i]);
}
/////为每个格网附上高程值//////
cout << “为格网中有点的格网赋高程值“ << endl;
for (int i = 0; i < grid.grid_num; i++)
{
if (grid.grid_vector[i].point_vector.size() != 0)//判断每个格网中是否有点
{
grid.grid_vector[i].h1_sum = 0;
for (int j = 0; j < grid.grid_vector[i].point_vector.size(); j++)
{
grid.grid_vector[i].h1_sum += grid.grid_vector[i].point_vector[j].z;
}
grid.grid_vector[i].h1 = grid.grid_vector[i].h1_sum / grid.grid_vector[i].point_vector.size(); //取格网中所有点的高程的平均值赋给该格网
}
else
{
grid.grid_vector[i].h1 = 0;//如果该格网中没有点,将该网格的高程值赋值为0
}
}
cout << “为格网中没有点的格网赋高程值“ << endl;
for (int i = 0; i < grid.grid_vector.size(); i++)
{
if (grid.grid_vector[i].h1 == 0)
{
int j = 1;
while (grid.grid_vector[i].h1 == 0)
{
double sum = 0;
int number = 0;
int q;
//向四周逐渐扩展,每次扩展一周,直到搜索到高程不为零的格网为止,最后取平均值作为该中心格网的高程值
for (int m = grid.grid_vector[i].row - j; m < grid.grid_vector[i].row + j; m++)
{
if (m > grid.x_num || m < 1)
{
continue;
}
else
{
for (int n = grid.grid_vector[i].rank - j; n < grid.grid_vector[i].rank + j; n++)
{
if (n<1 || n>grid.y_num)
{
continue;
}
else
{
q = (m-1) * grid.y_num + n -1;
if (grid.grid_vector[q].h1 != 0)
{
sum = sum + grid.grid_vector[q].h1;
number++;
}
}
}
}
}
if (number != 0)
{
grid.grid_vector[i].h1 = sum / number;
break;

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       1800  2019-12-23 16:23  基于点云的DEM构建\data_clip.txt

     文件      78336  2019-12-28 21:23  基于点云的DEM构建\Debug\DEM.exe

     文件     670100  2019-12-28 21:23  基于点云的DEM构建\Debug\DEM.ilk

     文件    1133568  2019-12-28 21:23  基于点云的DEM构建\Debug\DEM.pdb

     文件      18822  2019-12-28 21:23  基于点云的DEM构建\DEM\Debug\cl.command.1.tlog

     文件     215456  2019-12-28 21:23  基于点云的DEM构建\DEM\Debug\CL.read.1.tlog

     文件      10816  2019-12-28 21:23  基于点云的DEM构建\DEM\Debug\CL.write.1.tlog

     文件        406  2019-12-23 12:20  基于点云的DEM构建\DEM\Debug\DEM.exe.embed.manifest

     文件        472  2019-12-28 21:21  基于点云的DEM构建\DEM\Debug\DEM.exe.embed.manifest.res

     文件        381  2019-12-28 21:23  基于点云的DEM构建\DEM\Debug\DEM.exe.intermediate.manifest

     文件         94  2019-12-28 21:23  基于点云的DEM构建\DEM\Debug\DEM.lastbuildstate

     文件       3171  2019-12-28 21:23  基于点云的DEM构建\DEM\Debug\DEM.log

     文件     133870  2019-12-28 21:23  基于点云的DEM构建\DEM\Debug\dem.obj

     文件        713  2019-12-20 21:46  基于点云的DEM构建\DEM\Debug\DEM.vcxprojResolveAssemblyReference.cache

     文件          0  2019-12-20 21:46  基于点云的DEM构建\DEM\Debug\DEM.write.1.tlog

     文件        196  2019-12-21 14:49  基于点云的DEM构建\DEM\Debug\DEM_manifest.rc

     文件      51657  2019-12-20 21:46  基于点云的DEM构建\DEM\Debug\EachGrid.obj

     文件      51509  2019-12-20 22:31  基于点云的DEM构建\DEM\Debug\EarchGrid.obj

     文件     177050  2019-12-28 21:21  基于点云的DEM构建\DEM\Debug\Grid.obj

     文件       3076  2019-12-20 22:31  基于点云的DEM构建\DEM\Debug\Index.obj

     文件          2  2019-12-28 21:23  基于点云的DEM构建\DEM\Debug\link-cvtres.read.1.tlog

     文件          2  2019-12-28 21:23  基于点云的DEM构建\DEM\Debug\link-cvtres.write.1.tlog

     文件          2  2019-12-28 21:23  基于点云的DEM构建\DEM\Debug\link.10144-cvtres.read.1.tlog

     文件          2  2019-12-28 21:23  基于点云的DEM构建\DEM\Debug\link.10144-cvtres.write.1.tlog

     文件          2  2019-12-28 21:23  基于点云的DEM构建\DEM\Debug\link.10144.read.1.tlog

     文件          2  2019-12-28 21:23  基于点云的DEM构建\DEM\Debug\link.10144.write.1.tlog

     文件          2  2019-12-28 21:23  基于点云的DEM构建\DEM\Debug\link.12284-cvtres.read.1.tlog

     文件          2  2019-12-28 21:23  基于点云的DEM构建\DEM\Debug\link.12284-cvtres.write.1.tlog

     文件          2  2019-12-28 21:23  基于点云的DEM构建\DEM\Debug\link.12284.read.1.tlog

     文件          2  2019-12-28 21:23  基于点云的DEM构建\DEM\Debug\link.12284.write.1.tlog

............此处省略74个文件信息

评论

共有 条评论