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.

306 lines
9.7 KiB
C

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#ifndef GLOBE_H
#define GLOBE_H
#include <afxwin.h>
/////////////////////////////////////////////////////////消息定义////////////////////////////////////////////////////////////
const UINT WM_SET_LAYER_STATUS = WM_USER+1056; //设置图层的显示状态
const UINT WM_CLOSE_LONLAT_DIALOG = WM_USER+1057; //关闭经度、纬度显示的界面
const UINT WM_CLOSE_DISTANCE_DIALOG = WM_USER+1058; //关闭显示2点之间的测量距离的界面
const UINT WM_CLOSE_LINEDESIGN_DIALOG = WM_USER+1059; //关闭航线设计对话框
const UINT WM_ADD_LINE_POINT = WM_USER+1060; //增加航点
const UINT WM_EDIT_LINE_POINT = WM_USER+1061; //编辑航点
const UINT WM_DELETE_LINE_POINT = WM_USER+1062; //删除航点
const UINT WM_SAVE_LINE_POINTS = WM_USER+1063; //保存航线
const UINT WM_CHECK_FLY_LINE_STATUS = WM_USER+1064; //检查航线的显示状态
const UINT WM_SEL_UAV = WM_USER+1065; //切换飞机
const UINT WM_DRAW_TARGET = WM_USER+1066; //标绘目标点
const UINT WM_SEND_SELECTTARGET = WM_USER+1067; //在地图上选点
const UINT WM_SEND_CLOSEDEMALT = WM_USER+1068; //关闭高程分析对话框
const UINT WM_SEND_DRAWMARKER = WM_USER+1069; //绘制标记点
const UINT WM_SEND_DRAWUAV = WM_USER+1070; //绘制无人机
//可视域分析相关消息
const UINT WM_SEND_REGIONTOGIS = WM_USER+1073; //可视域分析对话框到GISDlg的消息
const UINT WM_SEND_UPDATEDIALOG = WM_USER+1074; //更新可视域对话框信息
const UINT WM_SHOW_POINTINMAP = WM_USER+1075; //显示通视分析目标点
const UINT WM_SHOW_ISVISIBLE = WM_USER+1076; //显示可视点
const UINT WM_SHOW_NOTVISIBLE = WM_USER+1077; //显示不可视点
const UINT WM_SEND_CLEARSHAPE = WM_USER+1078; //清除图层
const UINT WM_SHOW_VISI_REALTIME = WM_USER+1079; //实时显示可视区域
const UINT WM_SHOW_NOTVISI_REALTIME = WM_USER+1080; //实时显示不可视区域
const UINT WM_SHOW_VISI_DELETE = WM_USER+1081; //清除实时区域
const UINT WM_DEL_LINELAYER = WM_USER+1082; //删除通视等高线图层
const UINT WM_ADD_LINELAYER = WM_USER+1083; //添加点到通视等高线图层
const UINT WM_DRAW_LINEPOINT = WM_USER+1084; //标绘航线上的点
const UINT WM_SHOW_CRASH_REALTIME = WM_USER+1085; //实时显示碰撞检测区域
const UINT WM_SEND_DRAWFIGHT = WM_USER+1086; //绘制作用范围
const UINT WM_SEND_DRAWDEMREGION = WM_USER+1087; //绘制高程数据区域
const UINT WM_SEND_MAPLOCATION = WM_USER+1088; //在线地图定位
const UINT WM_SEND_MAPCURSORMODE = WM_USER+1089; //设置Map CursorMode
const UINT WM_SEND_SHOWSURVEYLINE = WM_USER+1090; //显示测绘航线
const UINT WM_SEND_SHOWSURVEYREGION = WM_USER+1091; //显示测绘区域
const UINT WM_BIND_SURVEYLINE = WM_USER+1092; //装订测绘航线
const UINT WM_CLEAR_TMPSURVEYFEATURE = WM_USER+1093; //清除临时测绘要素
/////////////////////////////////////////////////////////消息定义////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////数据结构体定义////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////数据结构体定义////////////////////////////////////////////////////////////
//视图类句柄
extern HWND g_viewHwnd;
//红绿灯的位图实例
extern CBitmap g_bmpRed;
extern CBitmap g_bmpGreen;
//黄灯
extern CBitmap g_bmpYellow;
//灰灯
extern CBitmap g_bmpGray;
//数据刷新显示的间隔
extern int g_refreshTimes;
//地图显示区软件界面句柄
extern HWND g_mapHwnd;
//地面站位置
extern double g_gcsLon; //经度
extern double g_gcsLat; //纬度
extern double g_gcsAlt; //高度
//航线设计时航点模式0为置点1为航点编辑和删除模式
extern int g_ptModeInLineDesign;
struct UAVState
{
UAVState()
{
pitch = pitchPreset = 0.0;
roll = rollPreset = 0.0;
drift = 0.0;
wflypt = 0;
flyPtH = 0;
wflyDis = 0.0;
orgptDis = 0.0;
}
float pitch; //俯仰角
float pitchPreset; //俯仰给定
float roll; //滚转角
float rollPreset; //滚转给定
float drift; //偏航角
int wflypt; //待飞点
float flyPtH; //航点高度
float wflyDis; //待飞距
float orgptDis; //原点距离
};
struct TargetPt
{
int id;
double lon;
double lat;
};
///////////////////////////////////////////////以下为全局函数///////////////////////////////////////////
//功能:获得软件的运行目录
extern CString GetSoftwareCurrentDirectory();
//功能:在文件夹中查找文件,看其是否存在
//输入文件或文件夹名称strDir
//返回值true——存在该文件或文件夹
// false——不存在该文件或文件夹
extern bool SearchDirectory(const CString &strDir);
//功能:新建文件夹
//输入文件夹名称strDir
//返回值true——创建成功
// false——创建失败
extern bool CreateDirectory(const CString &strDir);
//提取没有后缀名的文件名
//extern CString ExtractFileName(CString fileName);
//功能一个字节分成8位分别存储到数组中
//输入字节oneByte
//输出8位的位集合bitArray
extern void BYTE2BitArray(int *bitArray, const BYTE oneByte);
//功能无符号2个字节的整数转换成位数组16个数据
//输入无符号的整数usValue
//返回值含16个数据的一维数组
extern void UnsignedShort2BitArray(int *pBitArray, const unsigned short usValue);
//功能GPS UTC时间转换成北京时间
//输入GPS UTC时间utcTime
//返回值:北京时间
extern CString GPSUTCTime2BeijingTime(const double utcTime);
//获得航线文件名输入航线号1、2、3、4、5
extern CString GetFlyLineName( const int lineID );
//获取航线文件夹名字
extern CString GetFlyLineDirName( const int lineID );
//获取文件路径字符串
extern CString ExtractDirPath(CString strFullPath);
//获取文件名字字符串
extern CString ExtractFileName(CString strFullPath,bool bIncludeType=true);
//获取文件类型
extern CString ExtractFileType(CString strFullPath);
const int LINEPTNUM = 256;
//可视域分析相关变量
/************************************************************************/
struct structPoint
{
double lon;
double lat;
};
extern structPoint g_structPointVisible[360];
extern structPoint g_structPointNotVisible[722];
extern structPoint g_structPointVisiReal[180];
extern structPoint g_structPointNotVisiReal[180];
extern structPoint g_structPointCrashReal[360];
extern long m_longGroundID; //地面站标绘图层
extern long m_visbleCircleLayerID; //可视区域图层
extern long m_notVisibleCircleLayerID; //不可视区域图层
extern long m_visiRealCircleLayerID; //实时可视区域图层
extern long m_notVisiRealCircleLayerID; //实时不可视区域图层
extern long m_RealCircleLayerID; //实时圆图层
extern long m_longContourLineID[20]; //通视等高线图层 每500米一条 500 1000 1500 2000 2500 .... 10000
extern long m_longContourTextID[20]; //通视等高线标签图层
extern bool g_bSelectDropPoint; //可视域分析对话框是否在选点
extern long m_longSelectLineID; //地面站与目标点连线图层
extern long m_longLabelPlotID; //地面站与目标点连线标注图层
extern long m_longLinePointID; //航线上的点标绘图层
extern long m_crashAreaLayerID; //实时碰撞检测区域图层
extern long m_fightRegionLayerID; //作用范围图层
extern long m_DemRegionLayerID[500]; //高程数据图层
/************************************************************************/
//多点高程分析相关变量
/************************************************************************/
extern bool g_bDemAnalysising; //是否在高程分析中
extern int g_iDemPointNum; //参与高程分析的点数
//限制参与高程分析的点数
const int g_iDemAltPtNum = 10;
extern double g_dDemPtLon[g_iDemAltPtNum];
extern double g_dDemPtLat[g_iDemAltPtNum];
//两点所连线段图层
extern long g_lDemAltLayerID[g_iDemAltPtNum];
//两点所连线段标注距离方位图层
extern long g_lDemAltDisLayerID[g_iDemAltPtNum];
//点序号的标注图层
extern long g_lDemPtNumLayerID[g_iDemAltPtNum];
/************************************************************************/
/*-------------------------------------------------------------------------------------------------------------
说明:标记点相关变量
-------------------------------------------------------------------------------------------------------------*/
//是否在移动鼠标选择标记点
extern bool g_bSelectMarker;
//最大支持的标记点数
const int g_iMarkerPtNum = 120;
//标记点图层
extern long g_lMarkerLayerID[g_iMarkerPtNum];
//已经标记的点数
extern int g_iHaveMarkedPts;
extern CString g_iMarkerName[g_iMarkerPtNum];
extern double g_iMarkerLon[g_iMarkerPtNum];
extern double g_iMarkerLat[g_iMarkerPtNum];
extern bool g_bMarkerPlot[g_iMarkerPtNum];
/*-------------------------------------------------------------------------------------------------------------
说明:不同型号变量,用于控制是否启用个性功能
-------------------------------------------------------------------------------------------------------------*/
extern bool g_b981ADesktop; // 981A电脑端
extern bool g_b981APad; // 981A平板端
extern bool g_b981CDesktop; // 981C电脑端
extern bool g_b981AMulti; // 981A多机
extern CString mapVersion[3];
#endif