对坐标点进行投影坐标和地理坐标的转换,不需要套用复杂的公式,两款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中关于投影参数变量的赋值请参考这篇文章:
(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值,详细的对照表参见这篇文章:
虽然不是很明白,但还是认真的看了一遍,