- GIS论坛-GIS空间站 ( http://bbs.gissky.net/Default.asp )
-- ESRI(ArcGIS) ( http://bbs.gissky.net/ShowForum.asp?forumid=10 )
--- [求助]AGS开发过程中遇到的坐标转换问题 ( http://bbs.gissky.net/ShowPost.asp?id=44864 )
作者:xiaoye
发表时间:2008-7-4 10:11:03
问题描述:发布的数据使用的是大地坐标(经纬度的),现开发一个长度和面积测量工具,要求返回的结果是54或80坐标下的(用千米、平方公里)表示。以下是坐标转换代码,是否是我的思路有误还是其他原因?请问各位高人指点!应该如何实现这样的坐标转换。在此谢过! //获取转换参数 ESRI.ArcGIS.ADF.Web.Geometry.TransformationParams traforpara = mapctrl.GetTransformationParams(TransformationDirection.ToMap); //直接用地图本身的投影进行转换(得到的结果是经纬度) ESRI.ArcGIS.ADF.Web.Geometry.PointCollection AAAs = new ESRI.ArcGIS.ADF.Web.Geometry.PointCollection(); ESRI.ArcGIS.ADF.Web.Geometry.Point A = new ESRI.ArcGIS.ADF.Web.Geometry.Point(); foreach (System.Drawing.Point scrpnt in ScreenPnts) { A = ESRI.ArcGIS.ADF.Web.Geometry.Point.ToMapPoint(scrpnt, traforpara);//*****// AAAs.Add(A); }
//将坐标系统参数改为:“Beijing 1954 3 Degree GK Zone 40.prj”投影 string SpaRefDef = "PROJCS[\"Beijing_1954_3_Degree_GK_Zone_40\",GEOGCS[\"GCS_Beijing_1954\",DATUM[\"D_Beijing_1954\",SPHEROID[\"Krasovsky_1940\",6378245.0,298.3]],PRIMEM[\"Greenwich\",0.0],UNIT[\"Degree\",0.0174532925199433]],PROJECTION[\"Gauss_Kruger\"],PARAMETER[\"False_Easting\",40500000.0],PARAMETER[\"False_Northing\",0.0],PARAMETER[\"Central_Meridian\",120.0],PARAMETER[\"Scale_Factor\",1.0],PARAMETER[\"Latitude_Of_Origin\",0.0],UNIT[\"Meter\",1.0]]"; ESRI.ArcGIS.ADF.Web.SpatialReference.DefinitionSpatialReferenceInfo DefSpaRefInfo = new ESRI.ArcGIS.ADF.Web.SpatialReference.DefinitionSpatialReferenceInfo(SpaRefDef); traforpara.SpatialReference.CoordinateSystem =(ESRI.ArcGIS.ADF.Web.SpatialReference.SpatialReferenceInfo) DefSpaRefInfo; //用设置的新坐标系进行坐标转换(希望得到54坐标,但实际返回的结果仍然是经纬度的!!!) ESRI.ArcGIS.ADF.Web.Geometry.PointCollection gPntColtn = new ESRI.ArcGIS.ADF.Web.Geometry.PointCollection(); ESRI.ArcGIS.ADF.Web.Geometry.Point sglPnt = new ESRI.ArcGIS.ADF.Web.Geometry.Point(); foreach (System.Drawing.Point scrpnt in ScreenPnts) { sglPnt = ESRI.ArcGIS.ADF.Web.Geometry.Point.ToMapPoint(scrpnt, traforpara);//*****// gPntColtn.Add(sglPnt); }
|