MapGIS二次开发中投影参数变量(MAP_PARA)的赋值

/ 0评 / 1

MapGIS 67中MAP_PARA结构体用于管理空间数据的投影参数,为一个MAP_PARA类型的变量赋值主要有两种方式,一种是定义变量后,对结构体中的各个字段直接赋值,一种是从现有空间数据中读取投影参数并赋给MAP_PARA类型的变量。

直接赋值的方式需要对MAP_PARA结构体定义有明确了解,其完整定义如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
typedef struct MAP_PARAstruct
{
char type; //空间数据水平坐标系类型
char unit; //空间数据水平坐标单位,
double mapw; //空间数据图幅理论宽 type坐标系,unit单位.
double maph; //................高 type坐标系,unit单位.

char projType; //空间数据投影类型
char earthParam; //空间数据参考椭球体参数类型
double jd0; //空间数据数据左下角经度 , 数据单位统一采用UNIT_DMS格式
double wd0; //空间数据数据......纬度 , 数据单位统一采用UNIT_DMS格式
double djd; //空间数据数据经度跨度, 数据单位统一采用UNIT_DMS格式
double dwd; //空间数据数据纬度跨度, 数据单位统一采用UNIT_DMS格式
double rate; //空间数据数据水平比例尺倒数, 无单位

double lon; //空间数据中央经线经度 , 数据单位统一采用UNIT_DMS格式
double lon1; //空间数据双经线1 经度 , 数据单位统一采用UNIT_DMS格式
double lon2;//空间数据双经线2 经度 , 数据单位统一采用UNIT_DMS格式
double lat; //空间数据投影原点纬度 , 数据单位统一采用UNIT_DMS格式
double lat1; //空间数据双纬线1 纬度 , 数据单位统一采用UNIT_DMS格式
double lat2;//空间数据双纬线2 纬度 , 数据单位统一采用UNIT_DMS格式
double dx; //空间数据图纸坐标原点在投影坐标系中的X偏移值 ,type坐标系,unit单位.
double dy; //....................................Y偏移 ,type坐标系,unit单位.

char levelType; //空间数据大地水准面类型
double h; //空间数据大地水准面与参考椭球面之间的高差, 单位为
double H; //空间数据投影平面与大地水准面的高差, 单位为

double vRate; //空间数据垂向比例尺倒数
char vUnit; //空间数据垂向数据单位
char TICtype; //TIC点理论坐标系类型
char TICunit; //TIC点理论坐标单位
char infoUnit; //图形显示参数单位
double infoRatex; //图形显示参数单位值相对于当前数据单位值的x比例系数, 初始值必须赋0或1
double infoRatey; //........................................y比例系数, 初始值必须赋0或1
}MAP_PARA;

其中,earthParam和projType数据项需要按照标准值定义进行赋值,MapGIS二次开发文件中通过定义宏的方式将这些标准值一一列出,在进行赋值时只需要填写宏名称,详细参数如下所示:

参考椭球体参数类型(MAP_PARA结构的earthParam字段值)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#define EP_UnDefine 0 //未指定"参考椭球体参数类型"
#define EP_Beijing54 1 //" 1:北京54/克拉索夫斯基(1940年)椭球", //"Krasovsky"
#define EP_Krasovsky 1 //" 1:北京54/克拉索夫斯基(1940年)椭球", //"Krasovsky"
#define EP_Xian80 2 //" 2:西安80/1975 年I.U.G.G推荐椭球 ",
#define EP_IUGG1975 2 //" 2:西安80/1975 年I.U.G.G推荐椭球 ",
#define EP_IUGG1979 3 //" 3:1979 年I.U.G.G推荐椭球 ",
#define EP_IUGG1983 4 //" 4:1983 年I.U.G.G推荐椭球",
#define EP_UserDefine 5 //" 5:新的椭球参数(自定义) ",
#define EP_IUGG1967 6 //" 6:1967 年I.U.G.G推荐椭球",
#define EP_WGS84 7 //" 7:WGS-84 ",
#define EP_GRS80 8 //" 8:GRS-80 ",
#define EP_WGS72 9 //" 9:WGS-72 ",
#define EP_Australia1965 10 //" 10:澳大利亚1965年椭球",
#define EP_ 11 //" 11:海福特1910年椭球",
#define EP_ 12 //" 12:克拉克1880年椭球",
#define EP_ 13 //" 13:克拉克1866年椭球",
#define EP_ 14 //" 14:白塞尔1841年椭球"

投影类型(MAP_PARA结构的projType字段)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#define PRJ_LonLat 0 //地理坐标系(经纬度)
#define PRJ_UTM 1 //通用横向墨卡托投影坐标系(UTM)",
#define PRJ_Albers_Conical_EQ_Area 2 //亚尔勃斯等积圆锥投影坐标系",ALBERS CONICAL EQUAL AREA
#define PRJ_Lambert_Conformal_Conic 3 //兰伯特等角圆锥投影坐标系",LAMBERT CONFORMAL CONIC
#define PRJ_Mercator 4 //墨卡托(正轴等角圆柱)投影坐标系",MERCATOR
#define PRJ_Gauss_Kruger 5 //高斯-克吕格(横切椭圆柱等角)投影",GAUSS-KRUGER
#define PRJ_Polyconic 6 //普通多圆锥投影坐标系",POLYCONIC
#define PRJ_EQ_Dist_Conic 7 //等距圆锥投影坐标系",EQUIDISTANT CONIC
#define PRJ_Transverse_Mecator 8 //横向墨卡托(横切圆柱等角)投影",TRANSVERSE MECATOR
#define PRJ_StereoGraphic 9 //球面投影(视点在球面)坐标系",STEREOGRAPHIC
#define PRJ_Lambert_Azimuthal_EQ_Area 10 //兰伯特等积方位投影坐标系",LAMBERT AZIMUTHAL EQUAL_AREA
#define PRJ_Azimuthal_EQ_Dist 11 //等距方位投影坐标系",AZIMUTHAL EQUIDISTANT
#define PRJ_Gnomonic 12 //心射切面(球心)投影坐标系",GNOMONIC
#define PRJ_Orthographic 13 //正射投影(视点无穷远)坐标系",ORTHOGRAPHIC
#define PRJ_General_VER_NS_Perspective 14 //通用垂直近距透视(外心)投影",GENERAL VERTICAL NEAR_SIDE PERSPECTIVE
#define PRJ_Sinusoidal 15 //正弦投影(伪圆柱)坐标系",SINUSOIDAL
#define PRJ_Equirectangular 16 //等距离切圆柱(方格)投影坐标系",EQUIRECTANGULAR
#define PRJ_Miller_Cylindrical 17 //米勒圆柱(透视正圆柱)投影坐标系",MILLER CYLINDRICAL
#define PRJ_V_D_Grinten_I 18 //范德格林顿I投影坐标系",VAN DER GRINTEN I
#define PRJ_Oblique_Mercator 19 //斜轴墨卡托投影坐标系",OBLIQUE MERCATOR (HOTINE)
#define PRJ_Polar_Srereographic 20 //极点球面投影坐标系",POLAR SREREOGRAPHIC

第二种赋值方式可以通过MapGIS提供的二次开发函数来实现,代码示例如下所示:

1
2
3
MAP_PARA *LayerTYCS = new MAP_PARA; //图件的投影参数
short sArea = _PRJGetItemArea(m_mapPrj, nLayerIndex);// 图层工作区号
_GetMapParam(sArea, LayerTYCS);

LayerTYCS就是从目标图层上获取的投影参数。

发表评论

邮箱地址不会被公开。 必填项已用*标注