You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
1.3 KiB
C++
72 lines
1.3 KiB
C++
#include "stdafx.h"
|
|
#include "MapElevation.h"
|
|
#include <string>
|
|
using namespace std;
|
|
#include "QB_ImgProcessFun.h"
|
|
|
|
MapElevation::MapElevation()
|
|
{
|
|
m_grid = nullptr;
|
|
|
|
m_gisManager = GISManager::getInstance();
|
|
|
|
m_isAdd = false;
|
|
}
|
|
|
|
|
|
MapElevation::~MapElevation()
|
|
{
|
|
if(m_gisManager !=NULL)
|
|
{
|
|
m_gisManager->DestroyObject();
|
|
m_gisManager = NULL;
|
|
}
|
|
|
|
ClearDem();
|
|
}
|
|
|
|
|
|
bool MapElevation::addDem(const char* fileName)
|
|
{
|
|
m_grid.CreateInstance("MapWinGIS.Grid");
|
|
if( !m_grid->Open((_bstr_t)fileName,mapWindow::GridDataType::FloatDataType,VARIANT_TRUE,mapWindow::GridFileType::GeoTiff,NULL))
|
|
{
|
|
return false;
|
|
}
|
|
|
|
m_isAdd = true;
|
|
|
|
return true;
|
|
}
|
|
|
|
|
|
bool MapElevation::getElevation2(float& alt, const double& lon, const double& lat)
|
|
{
|
|
long column = 0;
|
|
long row = 0;
|
|
|
|
m_grid->ProjToCell(lon, lat, &column, &row);
|
|
_variant_t value = m_grid->GetValue(column, row);
|
|
alt = (float)value;
|
|
|
|
//如果没有加载高程数据或者加载高程数据后计算出野值
|
|
if(m_isAdd==false || alt < -99999)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
|
|
bool MapElevation::getElevation(float& alt, const double& lon, const double& lat)
|
|
{
|
|
USES_CONVERSION;
|
|
|
|
CString _DEMpath = GetSoftwareCurrentDirectory() + _T("\\ElevationData");
|
|
bool bGCSDem = GetElevation(alt, lon, lat, _DEMpath.GetBuffer());
|
|
|
|
_DEMpath.ReleaseBuffer();
|
|
|
|
return bGCSDem;
|
|
} |