コード例 #1
0
        private static VerticalCoordinateSystem ReadVerticalCoordinateSystem(WktStreamTokenizer tokenizer, bool includeAuthority)
        {
            //VERT_CS["Newlyn",
            //VERT_DATUM["Ordnance Datum Newlyn",2005,AUTHORITY["EPSG","5101"]]
            //UNIT["metre",1,AUTHORITY["EPSG","9001"]]
            //AUTHORITY["EPSG","5701"]

            tokenizer.ReadToken("[");
            string name = tokenizer.ReadDoubleQuotedWord();

            tokenizer.ReadToken(",");
            tokenizer.ReadToken("VERT_DATUM");
            VerticalDatum verticalDatum = ReadVerticalDatum(tokenizer, includeAuthority);

            tokenizer.ReadToken("UNIT");
            Unit   unit          = ReadUnit(tokenizer, includeAuthority);
            string authority     = String.Empty;
            string authorityCode = String.Empty;

            if (includeAuthority)
            {
                tokenizer.ReadAuthority(ref authority, ref authorityCode);
            }
            tokenizer.ReadToken("]");

            VerticalCoordinateSystem verticalCS = new VerticalCoordinateSystem(name, verticalDatum, String.Empty, authority, authorityCode, String.Empty, String.Empty);

            return(verticalCS);
        }
コード例 #2
0
 private static void WriteVerticalDatum(VerticalDatum verticalDatum, bool esri, IndentedTextWriter writer)
 {
     writer.WriteLine("VERT_DATUM[");
     writer.Indent = writer.Indent + 1;
     writer.WriteLine(String.Format("\"{0}\",{1},", verticalDatum.Name, DatumTypeAsCode(verticalDatum.DatumType)));
     //writer.WriteLine(String.Format("AUTHORITY[\"{0}\",\"{1}\"]", verticalDatum.Authority, verticalDatum.AuthorityCode));
     WriteAuthority(verticalDatum, esri, writer);
     writer.Indent = writer.Indent - 1;
     writer.WriteLine("]");
 }
コード例 #3
0
 internal VerticalCoordinateSystem(
     string name,
     VerticalDatum verticaldatum,
     string remarks, string authority, string authorityCode, string alias, string abbreviation)
     : base(remarks, authority, authorityCode, name, alias, abbreviation)
 {
     if (verticaldatum == null)
     {
         throw new ArgumentNullException("verticaldatum");
     }
     _verticaldatum = verticaldatum;
     _units         = LinearUnit.Meters;
     _axisinfo      = new AxisInfo[1] {
         AxisInfo.Altitude
     };
 }
コード例 #4
0
        public VerticalCoordinateSystem(string name,
                                        VerticalDatum verticaldatum,
                                        AxisInfo axisinfo,
                                        LinearUnit linearUnit,
                                        string remarks, string authority, string authorityCode, string alias, string abbreviation)
            : base(remarks, authority, authorityCode, name, alias, abbreviation)
        {
            if (verticaldatum == null)
            {
                throw new ArgumentNullException("verticaldatum");
            }

            _verticaldatum = verticaldatum;
            _axisinfo      = new AxisInfo[1] {
                axisinfo
            };
            _units = linearUnit;
        }
コード例 #5
0
        internal VerticalCoordinateSystem(string name, VerticalDatum verticaldatum, AxisInfo axisinfo, LinearUnit units)
            : base(name, String.Empty, String.Empty, String.Empty, String.Empty, String.Empty)
        {
            if (verticaldatum == null)
            {
                throw new ArgumentNullException("verticaldatum");
            }
            if (units == null)
            {
                throw new ArgumentNullException("units");
            }

            _name          = name;
            _verticaldatum = verticaldatum;
            _axisinfo      = new AxisInfo[1] {
                axisinfo
            };
            _units = units;
        }
コード例 #6
0
        private static VerticalDatum ReadVerticalDatum(WktStreamTokenizer tokenizer, bool includeAuthority)
        {
            //VERT_DATUM["Ordnance Datum Newlyn",2005,AUTHORITY["5101","EPSG"]]
            tokenizer.ReadToken("[");
            string datumName = tokenizer.ReadDoubleQuotedWord();

            tokenizer.ReadToken(",");
            tokenizer.NextToken();
            string datumTypeNumber = tokenizer.GetStringValue();

            string authority     = String.Empty;
            string authorityCode = String.Empty;

            if (includeAuthority)
            {
                tokenizer.ReadToken(",");
                tokenizer.ReadAuthority(ref authority, ref authorityCode);
            }
            DatumType     datumType     = (DatumType)Enum.Parse(typeof(DatumType), datumTypeNumber);
            VerticalDatum verticalDatum = new VerticalDatum(datumType, String.Empty, authorityCode, authority, datumName, String.Empty, String.Empty);

            tokenizer.ReadToken("]");
            return(verticalDatum);
        }
コード例 #7
0
        public static object Create(string wkt)
        {
            object             returnObject     = null;
            bool               includeAuthority = (wkt.ToLower().IndexOf("authority") != -1);
            StringReader       reader           = new StringReader(wkt);
            WktStreamTokenizer tokenizer        = new WktStreamTokenizer(reader);

            tokenizer.NextToken();
            string objectName = tokenizer.GetStringValue();

            switch (objectName)
            {
            case "UNIT":
                Unit unit = ReadUnit(tokenizer, includeAuthority);
                returnObject = unit;
                break;

            case "VERT_DATUM":
                VerticalDatum verticalDatum = ReadVerticalDatum(tokenizer, includeAuthority);
                returnObject = verticalDatum;
                break;

            case "SPHEROID":
                Ellipsoid ellipsoid = ReadEllipsoid(tokenizer, includeAuthority);
                returnObject = ellipsoid;
                break;

            case "TOWGS84":
                WGS84ConversionInfo wgsInfo = ReadWGS84ConversionInfo(tokenizer, includeAuthority);
                returnObject = wgsInfo;
                break;

            case "DATUM":
                HorizontalDatum horizontalDatum = ReadHorizontalDatum(tokenizer, includeAuthority);
                returnObject = horizontalDatum;
                break;

            case "PRIMEM":
                PrimeMeridian primeMeridian = ReadPrimeMeridian(tokenizer, includeAuthority);
                returnObject = primeMeridian;
                break;

            case "VERT_CS":
                VerticalCoordinateSystem verticalCS = ReadVerticalCoordinateSystem(tokenizer, includeAuthority);
                returnObject = verticalCS;
                break;

            case "GEOGCS":
                GeographicCoordinateSystem geographicCS = ReadGeographicCoordinateSystem(tokenizer, includeAuthority);
                returnObject = geographicCS;
                break;

            case "PROJCS":
                ProjectedCoordinateSystem projectedCS = ReadProjectedCoordinateSystem(tokenizer, includeAuthority);
                returnObject = projectedCS;
                break;

            case "COMPD_CS":
                CompoundCoordinateSystem compoundCS = ReadCompoundCoordinateSystem(tokenizer, includeAuthority);
                returnObject = compoundCS;
                break;

            case "GEOCCS":
            case "FITTED_CS":
            case "LOCAL_CS":
                throw new NotSupportedException(String.Format("{0} is not implemented.", objectName));

            default:
                throw new ParseException(String.Format("'{0'} is not recongnized.", objectName));
            }
            reader.Close();
            return(returnObject);
        }