コード例 #1
0
ファイル: ProjectionInfo.cs プロジェクト: AlvaIce/GFJT-2020
        /// <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());
        }