/// <summary> /// 将几何对象从投影转换到84 /// </summary> /// <returns></returns> public static bool ConvertGeoPrjToEarth(this Geometry SourceGeo, PrjCoordSysType coordSysType) { CoordSysTransParameter cstp = new CoordSysTransParameter(); return(CoordSysTranslator.Convert(SourceGeo , new PrjCoordSys(coordSysType) , new PrjCoordSys(PrjCoordSysType.EarthLongitudeLatitude) , new CoordSysTransParameter() , CoordSysTransMethod.GeocentricTranslation)); }
/// <summary> /// 地理坐标向投影坐标转换 /// </summary> /// <param name="point3Ds"></param> /// <returns></returns> private Point3Ds coordinateTrans3D(Point3Ds point3Ds) { Point2Ds point2Ds = new Point2Ds(); foreach (Point3D p3d in point3Ds) { Point2D point2D = new Point2D(p3d.X, p3d.Y); point2Ds.Add(point2D); } //Assume Wgs1984WorldMercator as target project coordinate system PrjCoordSys prjTarget = new PrjCoordSys(PrjCoordSysType.Wgs1984Utm50N); bool b = CoordSysTranslator.Forward(point2Ds, prjTarget); Point3Ds result = new Point3Ds(); for (int i = 0; i < point2Ds.Count; i++) { Point3D point3D = new Point3D(point2Ds[i].X, point2Ds[i].Y, point3Ds[i].Z); result.Add(point3D); } return(result); }
/// <summary> /// 转换主函数 /// Main function of transformation /// </summary> /// <param name="type">对应不同的投影类型 Projection type</param> /// <returns>转换后投影的描述信息 The description information of projection after transformed</returns> public String TransformPrj(int type) { try { m_srcMapControl.Map.Layers.Clear(); this.CopyDataset(m_bufPrjDataName); PrjCoordSys gaussPrjSys = this.GetTargetPrjCoordSys(type); Boolean result = CoordSysTranslator.Convert(m_processDataset, gaussPrjSys, new CoordSysTransParameter(), CoordSysTransMethod.GeocentricTranslation); m_srcMapControl.Map.Layers.Add(m_processDataset, true); m_srcMapControl.Map.Center = m_srcMapControl.Map.Bounds.Center; m_srcMapControl.Map.Scale = m_srcMapControl.Map.Scale; m_srcMapControl.Map.Refresh(); return(this.GetPrjStr(m_processDataset)); } catch (Exception ex) { Trace.WriteLine(ex.Message); } return(null); }