MapGIS和ArcGIS二次开发中投影坐标和地理坐标的转换

对坐标点进行投影坐标和地理坐标的转换,不需要套用复杂的公式,两款GIS软件都提供了现成的函数供二次开发人员调用,分别举例说明一下:

(1)MapGIS二次开发中投影坐标和地理坐标的转换

GIS平台:MapGIS 6.7

语言:C++

头文件:Cordcvt.h

代码示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
void TransPara(double &x, double &y,MAP_PARA pInMappara, MAP_PARA pOutMappara)

{

CProjTrans pTrans=_GetCProjTrans();

_MapToInPara(pTrans,pInMappara);

_MapToOutPara(pTrans,pOutMappara);

_PntCProjTrans(pTrans,&x,&y);//转换后结果存储到x,y变量中

}

代码说明:

投影直角坐标系和地理坐标系的互转是通过将pInMappara和pOutMappara互换实现的,MapGIS中关于投影参数变量的赋值请参考这篇文章:

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

(2)ArcGIS二次开发中投影坐标和地理坐标的转换

CIS平台:ArcGIS 9.3以上版本

语言:C#

引用:ESRI.ArcGIS.Geometry;

代码示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public static void TransPara(IPoint pt, out double x, out double y, int inpara, int outpara)

{

IGeometry geo = (IGeometry)pt;

ISpatialReferenceFactory pSRF=new SpatialReferenceEnvironmentClass();

IGeographicCoordinateSystem earthref = pSRF.CreateGeographicCoordinateSystem(inpara);

geo.SpatialReference = pSRF.CreateProjectedCoordinateSystem(outpara);

geo.Project(earthref);

x = pt.X;

y = pt.Y;

}

代码说明:

上述代码中inpara和outpara是ArcGIS空间参照系的WKID值,每一个空间参考对应一个ID值,详细的对照表参见这篇文章:

ArcGIS中常用的空间参考ID(WKID)对照表