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++

2 years ago
#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;
//<2F><><EFBFBD><EFBFBD>û<EFBFBD>м<EFBFBD><D0BC>ظ߳<D8B8><DFB3><EFBFBD><EFBFBD>ݻ<EFBFBD><DDBB>߼<EFBFBD><DFBC>ظ߳<D8B8><DFB3><EFBFBD><EFBFBD>ݺ<EFBFBD><DDBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ұֵ
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;
}