www.pudn.com > Poly.rar > datasdef.h
#includeusing namespace std; #ifndef DATASDEF_H_ #define DATASDEF_H_ struct IMAGESTR { int x; }; typedef struct { short pixelBytes; double original_x,original_y; float orthoimgscale; double kapa; float pixelsizeX,pixelsizeY; unsigned char gridFlag; float gridIntervalX,gridIntervalY; long smallImgPtr,polygonPtr; } WmgImgHeader; typedef struct tagSptImgHeader { double resolution; //pixel size(mm) char camera[260]; //filename of camera calibration data short type; //type of image ( 0=aerial 2=close range 10=spot ) int cameraReverse; //camera reverse ( 1=Yes 0=No ) } SptImgHeader; #define WM_CHANGEVIEW WM_USER+12005 #define WM_GETBORDER WM_USER+12008 #define WM_STARTPROG WM_USER+12000 #define WM_STEPPROG WM_USER+12010 #define WM_ENDPROG WM_USER+12020 #define WM_CHOOSEGCP WM_USER+12050 #define WM_MYMSG WM_USER+120 struct Coe { Coe() { for(int i=0;i<8;i++) { a[i] = 0; } } int num; //系数个数 int blk; //所属的块编号 0------- double a[8]; //八个系数a0,a1,a2,a3 }; struct PRO_START { char *str; int range; int move; }; struct BLK_NUM { long code; int blknum; }; enum{ NONE_IMAGE, NO_HEADER_IMAGE, // 影象数据格式 ORTHO_IMAGE, // 正射影象格式 }; // 用于匹配点的枚举类型 enum{ KNOW_VZ=1, KNOW_OR, KNOW_BOTH, KNOW_ABOUT, }; //匹配点类型说明 enum POINTSTYLE{ UNKNOWN_POINT=-1, //未知类型 GCP_POINT=0, //控制点 MATCH_POINT =1, //同名点 FEATRUE_POINT =2, //特征线点 OR 多边形边界点 BORDER_MATCH_POINT =3, //边界区域同名点 BORDER_POINT =4, //边界点 BOX_POINT =5, }; //线类型说明 enum LINESTYLE{ UNKNOWN_LINE =-1, //未知类型 CHINE_LINE =0, //山脊线 VALLEY_LINE =1, //山谷线 POLY_BORDER_LINE =2, //多边形边界线 POLY_LINE =3, //多边形 }; // 匹配点的定义结构 struct MatchPoint{ MatchPoint() { left_x = -1; left_y = -1; right_x= -1; right_y= -1; sprintf(ss,"100000"); pStyle = UNKNOWN_POINT; code = 0; flag = 0; } float left_x; float left_y; float right_x; float right_y; char ss[6]; //点号 long code; // 点序列号 POINTSTYLE pStyle; //点类型 0为控制点,1为同名点 ,2为特征线点,3为图象边界区域点,4为边界点 int flag ; //1为左已知右未知,2为右已知左未知,3为都已知 , }; //控制地面点定义结构 struct GCP{ char ss[3]; int code; double b; //大地纬度 单位:度 或者 表示y方向坐标 double l; //大地经度 单位:度 或者 表示x方向坐标 double h; //大地高程 单位:米 }; #define MATCHSIZE sizeof(MatchPoint) typedef vector listMatchPoint; //特征线 struct MatchLine { MatchLine() { mplist.clear(); code = 0; } listMatchPoint mplist; //保存同名点 int code; //特征线类型 0-山脊线;1-山谷线 2-边界线 }; //矩形框 struct MatchRect { CRect rectleft; //左影象矩形框 CRect rectRight; //右影象矩形框 }; typedef vector listMatchLine; //人工块 struct MatchBlock { MatchBlock() { mplist.clear(); IsBordIn = 0; for(int i=0;i<8;i++) { coe.a[i] = 0; } idNum = 0; pbyte = 255; } listMatchPoint mplist; //同名点(包含边界线上的点) MatchLine mLine; //边界线 bool IsBordIn; //是否包含图象边界 1:是;0:不是 Coe coe; //纠正系数 int idNum; //块的编号 :在读文件的时候会给块分配一个编号 BYTE pbyte; }; //多边形系数计算点 struct BlockCalPoint { listMatchPoint mplist; //待计算的点数 int blockNum; //所属的块号 }; //一条水平线与多边形边界相交 struct LineInPoly { int x1; //左边界交点 int x2; //右边界交点 int blockNum; //多边形块号 }; //保存扫描线的区间 struct InterZone { vector bptlist; int row; }; typedef vector listBCPoint; typedef vector listMatchBlock; //状态 enum{ mode_choose_none, // 不选点 mode_zoom_out, //图像放大 mode_zoom_in, //图像缩小 mode_choose_control, // 选控制点 mode_choose_point, // 选择待匹配的点 mode_match_area, //匹配块顶点 mode_choose_test, // 实验匹配点 mode_choose_chine_pline, //画山脊线 mode_choose_valley_pline,//画山谷线 mode_select_object, //选取对象 mode_choose_rect, //画矩形,定义作业区 mode_choose_block, //画块 mode_correct_point, //修改点 mode_check_point_pos, //检查点位置 mode_find_block_pos, //检查块位置 mode_add_cal_point, //加待计算点 mode_affine_ori, //仿射变换 }; enum POINTMARK{ //点在图象上标志性显示 RECT_POINT, //点周围用小方框 ACCOSS_POINT, //十字丝表示点 RECT_ACCROSS_POINT, //描述同名点 ACCROSS_RECT_POINT, CIRCLE_ACCROSS_POINT, CIRCLE_POINT, }; enum MYMSG{ CHOOSE_POINT, //选点 CHOOSE_CAL_POINT, START_PROG, STEP_PROG, END_PROG, SAVE_TEMP_POINT, }; enum SCREENPOS{ LEFTTOP =1, TOP =2, RIGHTTOP =3, LEFT =4, SCREEN =-1, RIGHT =5, LEFTBOTTOM =6, BOTTOM =7, RIGHTBOTTOM=8, }; struct rpcParameter{ double line_off; double samp_off; double lat_off; double long_off; double heig_off; double line_scale; double samp_scale; double lat_scale; double long_scale; double heig_scale; double line_num_coeff[20]; double line_den_coeff[20]; double sanp_num_coeff[20]; double samp_den_coeff[20]; }; //分块曲线 struct Curve { int num; double a[4]; //三次曲线系数 double b[5]; //四次曲线系数 }; enum PROTY{ pingdi_shanpo,//分块曲线属性 shanpo_shandi, shandi_left, shandi_right }; struct Epp { int xl;//左下角坐标 double yl; int xr; double yr; int width; int height; }; enum { BL_TO_XY, //大地坐标转化到平面坐标 XY_TO_BL, //平面坐标转化到大地坐标 BLH_TO_XYZ, //大地坐标转化到空间直角坐标 XYZ_TO_BLH, //空间直角坐标转化到大地坐标 XY_TO_XYZ, //仿射变换将像点坐标转化为空间直角坐标 XYZ_TO_XY, //空间直角坐标转化为像点坐标 NO_TRANS, //没有转化的状态 }; //读入影象类型 enum FTYPE { VZ_IMAGE, BMP_IMAGE, }; typedef vector listCoe; typedef vector listCurve; typedef vector listString; typedef vector listMatchLine; //typedef vector listMatchPoint; #endif