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())); }
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())); }