• 大小: 3KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-05-18
  • 语言: C/C++
  • 标签: DEM内插  

资源简介

地理信息系统(gis)中由一些离散点,通过此程序生成所有规则格网点的高程.采用中心点移动拟合法.

资源截图

代码片段和文件信息

#include 
#include
#include
#include
#include 
using namespace std;



class point                          //点类
{
public:
point(){};
int ID;
double x;
double y;
double h;
};

vector pdata;                     //输入数据
vector re;                    //得到的结果即格网点坐标

double dist(point p1point p2)
{
return sqrt((p2.x-p1.x)*(p2.x-p1.x)+(p2.y-p1.y)*(p2.y-p1.y));
}

class ptRelate                         //这个类用于存放在搜索过程中邻域范围内的点及与它们对应的距离
{
public:
ptRelate(point pidouble r);
point pt;                          //当前点
vector ptHeight;              //存放邻域内所有点的高程这里通过向量的编号将高程与距离联系
vector distance;           //邻域内各点到该点的距离
double r;
void search();
void calculate();
};
ptRelate::ptRelate(point pidouble c)
{
pt=pi;
    r=c;
}
/***
*此函数是从全部点中找出全部符合条件的点
*当给定的点数据很大时这种搜索算法效率就差多了,得改进搜索算法
***/
void ptRelate::search()
{
    double temp_dist;
for(int i=0;i {
temp_dist=dist(ptpdata.at(i));       
if(temp_dist {
ptHeight.push_back(pdata.at(i).h);
distance.push_back(temp_dist);
}
}
}
/***
*calculate函数的功能是以该点到达搜索半径之内所有点的距离的平均值为单位权
*然后采用加权平均去求出当前要拟合点的高程
***/
void ptRelate::calculate()
{                                      
double sum=0;
for(int i=0;i {
sum+=distance.at(i);
}
if(pt

评论

共有 条评论