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