/// <summary> /// Returns a representaion of this object as a Proj4 string. /// </summary> /// <returns> /// The to proj 4 string. /// </returns> public string ToProj4String() { //enforce invariant culture CultureInfo originalCulture = Thread.CurrentThread.CurrentCulture; Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture; StringBuilder result = new StringBuilder(); Append(result, "x_0", FalseEasting); Append(result, "y_0", FalseNorthing); if (_scaleFactor != 1) { Append(result, "k_0", _scaleFactor); } Append(result, "lat_0", LatitudeOfOrigin); Append(result, "lon_0", CentralMeridian); Append(result, "lat_1", StandardParallel1); Append(result, "lat_2", StandardParallel2); if (Over) { Append(result, "over", 1); } if (Geoc) { Append(result, "geoc", 1); } Append(result, "alpha", alpha); Append(result, "lonc", LongitudeOfCenter); Append(result, "zone", Zone); if (IsLatLon) { Append(result, "proj", "longlat"); } else { if (Transform != null) { Append(result, "proj", Transform.Proj4Name); } // skips over to_meter if this is geographic or defaults to 1 if (Unit.Meters != 1) { // we don't create +units=m or +units=f instead we use. Append(result, "to_meter", Unit.Meters); } } result.Append(GeographicInfo.ToProj4String()); if (IsSouth) { result.Append(" +south"); } if (NoDefs) { result.Append(" +no_defs"); } //reset the culture info Thread.CurrentThread.CurrentCulture = originalCulture; return(result.ToString()); }