#include "stdafx.h" #include "MapElevation.h" #include 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; }