资源简介
地理信息系统(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
- 上一篇:C/C++语言实现求矩阵的广义逆
- 下一篇:数据结构c语言版-单链表的操作程序代码
评论
共有 条评论