Ejemplo n.º 1
0
        /// <summary>
        /// Parses a geometry tagged text.
        /// </summary>
        /// <param name="tokens">The list of tokens.</param>
        /// <returns>A geometry specified by tokens.</returns>
        private static Geometry ParseGeometryTaggedText(WktTokensBuffer tokens)
        {
            WktToken t = tokens.Peek(true);

            if (t.Type == TokenType.STRING)
            {
                if (t.Value.ToUpperInvariant() == "POINT")
                {
                    return(WktReader.ParsePointTaggedText(tokens));
                }
                else if (t.Value.ToUpperInvariant() == "LINESTRING")
                {
                    return(WktReader.ParseLineStringTaggedText(tokens));
                }
                else if (t.Value.ToUpperInvariant() == "POLYGON")
                {
                    return(WktReader.ParsePolygonTaggedText(tokens));
                }
                else if (t.Value.ToUpperInvariant() == "MULTIPOINT")
                {
                    return(WktReader.ParseMultiPointTaggedText(tokens));
                }
                else if (t.Value.ToUpperInvariant() == "MULTILINESTRING")
                {
                    return(WktReader.ParseMultiLineStringTaggedText(tokens));
                }
                else if (t.Value.ToUpperInvariant() == "MULTIPOLYGON")
                {
                    return(WktReader.ParseMultiPolygonTaggedText(tokens));
                }
                else if (t.Value.ToUpperInvariant() == "GEOMETRYCOLLECTION")
                {
                    return(WktReader.ParseGeometryCollectionTaggedText(tokens));
                }
            }

            if (t.Type == TokenType.END_OF_DATA)
            {
                return(null);
            }

            throw new WktParseException(string.Format("Invalid geometry type '{0}'", t.Value));
        }