Esempio n. 1
0
        public static Point Trans(CoordinateFormat inFormat, CoordinateFormat outFormat, Point point)
        {
            // int == out -> return
            if (inFormat == outFormat)
                return point;

            // direct transformations
            if (inFormat == CoordinateFormat.PTV_Geodecimal && outFormat == CoordinateFormat.WGS84)
                return Geodecimal_2_WGS84(point);

            if (inFormat == CoordinateFormat.WGS84 && outFormat == CoordinateFormat.PTV_Geodecimal)
                return WGS84_2_Geodecimal(point);

            if (inFormat == CoordinateFormat.PTV_Mercator && outFormat == CoordinateFormat.PTV_SmartUnits)
                return Mercator_2_SmartUnits(point);

            if (inFormat == CoordinateFormat.PTV_SmartUnits && outFormat == CoordinateFormat.PTV_Mercator)
                return SmartUnits_2_Mercator(point);

            if (inFormat == CoordinateFormat.PTV_Mercator && outFormat == CoordinateFormat.PTV_Geodecimal)
                return Mercator_2_GeoDecimal(point);

            if (inFormat == CoordinateFormat.PTV_Geodecimal && outFormat == CoordinateFormat.PTV_Mercator)
                return GeoDecimal_2_Mercator(point);

            // transitive transformations
            if (inFormat == CoordinateFormat.PTV_SmartUnits)
            {
                return Trans(CoordinateFormat.PTV_Mercator, outFormat,
                    SmartUnits_2_Mercator(point));
            }

            if (outFormat == CoordinateFormat.PTV_SmartUnits)
            {
                return Mercator_2_SmartUnits(
                    Trans(inFormat, CoordinateFormat.PTV_Mercator, point));
            }

            if (inFormat == CoordinateFormat.WGS84)
            {
                return Trans(CoordinateFormat.PTV_Geodecimal, outFormat,
                    WGS84_2_Geodecimal(point));
            }

            if (outFormat == CoordinateFormat.WGS84)
            {
                return Geodecimal_2_WGS84(
                    Trans(inFormat, CoordinateFormat.PTV_Geodecimal, point));
            }

            if (inFormat == CoordinateFormat.PTV_Geodecimal && outFormat == CoordinateFormat.PTV_Mercator)
            {
                return GeoDecimal_2_Mercator(point);
            }

            if (inFormat == CoordinateFormat.PTV_Mercator && outFormat == CoordinateFormat.PTV_Geodecimal)
            {
                return Mercator_2_GeoDecimal(point);
            }

            throw new NotImplementedException(string.Format("transformation not implemented for {0} to {1}",
                inFormat.ToString(), outFormat.ToString()));
        }
Esempio n. 2
0
        public static PlainPoint Trans(CoordinateFormat inFormat, CoordinateFormat outFormat, PlainPoint point)
        {
            // int == out -> return
            if (inFormat == outFormat)
            {
                return(point);
            }

            // direct transformations
            if (inFormat == CoordinateFormat.Ptv_Geodecimal && outFormat == CoordinateFormat.Wgs84)
            {
                return(Geodecimal_2_WGS84(point));
            }

            if (inFormat == CoordinateFormat.Wgs84 && outFormat == CoordinateFormat.Ptv_Geodecimal)
            {
                return(WGS84_2_Geodecimal(point));
            }

            if (inFormat == CoordinateFormat.Ptv_Mercator && outFormat == CoordinateFormat.Ptv_SmartUnits)
            {
                return(Mercator_2_SmartUnits(point));
            }

            if (inFormat == CoordinateFormat.Ptv_SmartUnits && outFormat == CoordinateFormat.Ptv_Mercator)
            {
                return(SmartUnits_2_Mercator(point));
            }

            if (inFormat == CoordinateFormat.Ptv_Mercator && outFormat == CoordinateFormat.Wgs84)
            {
                return(SphereMercator_2_Wgs(point, Ptv_Radius));
            }

            if (inFormat == CoordinateFormat.Wgs84 && outFormat == CoordinateFormat.Ptv_Mercator)
            {
                return(Wgs_2_SphereMercator(point, Ptv_Radius));
            }

            if (inFormat == CoordinateFormat.Web_Mercator && outFormat == CoordinateFormat.Wgs84)
            {
                return(SphereMercator_2_Wgs(point, Google_Radius));
            }

            if (inFormat == CoordinateFormat.Wgs84 && outFormat == CoordinateFormat.Web_Mercator)
            {
                return(Wgs_2_SphereMercator(point, Google_Radius));
            }

            if (inFormat == CoordinateFormat.Ptv_Mercator && outFormat == CoordinateFormat.Web_Mercator)
            {
                return(Ptv_2_Google(point));
            }

            if (inFormat == CoordinateFormat.Web_Mercator && outFormat == CoordinateFormat.Ptv_Mercator)
            {
                return(Google_2_Ptv(point));
            }

            // transitive transformations
            if (inFormat == CoordinateFormat.Ptv_SmartUnits)
            {
                return(Trans(CoordinateFormat.Ptv_Mercator, outFormat, SmartUnits_2_Mercator(point)));
            }

            if (outFormat == CoordinateFormat.Ptv_SmartUnits)
            {
                return(Mercator_2_SmartUnits(Trans(inFormat, CoordinateFormat.Ptv_Mercator, point)));
            }

            if (inFormat == CoordinateFormat.Ptv_Geodecimal)
            {
                return(Trans(CoordinateFormat.Wgs84, outFormat, Geodecimal_2_WGS84(point)));
            }

            if (outFormat == CoordinateFormat.Ptv_Geodecimal)
            {
                return(WGS84_2_Geodecimal(Trans(inFormat, CoordinateFormat.Wgs84, point)));
            }

            // this should not happen
            throw new NotImplementedException(string.Format("transformation not implemented for {0} to {1}",
                                                            inFormat.ToString(), outFormat.ToString()));
        }