Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 3
0
        /// <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);
        }