-
大小: 3KB文件類型: .cpp金幣: 1下載: 0 次發(fā)布日期: 2021-05-18
- 語言: C/C++
- 標簽: DEM內(nèi)插??
資源簡介
地理信息系統(tǒng)(gis)中由一些離散點,通過此程序生成所有規(guī)則格網(wǎng)點的高程.采用中心點移動擬合法.
代碼片段和文件信息
#include?
#include
#include
#include
#include?
using?namespace?std;
class?point??????????????????????????//點類
{
public:
point(){};
int?ID;
double?x;
double?y;
double?h;
};
vector?pdata;?????????????????????//輸入數(shù)據(jù)
vector?re;????????????????????//得到的結果即格網(wǎng)點坐標
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?????????????????????????//這個類用于存放在搜索過程中鄰域范圍內(nèi)的點及與它們對應的距離
{
public:
ptRelate(point?pidouble?r);
point?pt;??????????????????????????//當前點
vector?ptHeight;??????????????//存放鄰域內(nèi)所有點的高程這里通過向量的編號將高程與距離聯(lián)系
vector?distance;???????????//鄰域內(nèi)各點到該點的距離
double?r;
void?search();
void?calculate();
};
ptRelate::ptRelate(point?pidouble?c)
{
pt=pi;
????r=c;
}
/***
*此函數(shù)是從全部點中找出全部符合條件的點
*當給定的點數(shù)據(jù)很大時這種搜索算法效率就差多了,得改進搜索算法
***/
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函數(shù)的功能是以該點到達搜索半徑之內(nèi)所有點的距離的平均值為單位權
*然后采用加權平均去求出當前要擬合點的高程
***/
void?ptRelate::calculate()
{??????????????????????????????????????
double?sum=0;
for(int?i=0;i {
sum+=distance.at(i);
}
if(pt
評論
共有 條評論