private Dimensions ParseDimensions(WktTokenQueue tokens) { var result = Dimensions.XY; var token = tokens.Peek(); if (token.Type == WktTokenType.String) { var value = token.Value.ToUpperInvariant(); if (value == "Z") { tokens.Dequeue(); result |= Dimensions.Z; } if (value == "M") { tokens.Dequeue(); result |= Dimensions.M; } if (value == "ZM") { tokens.Dequeue(); result |= Dimensions.Z; result |= Dimensions.M; } } return(result); }
private object ParseGeometry(WktTokenQueue tokens) { if (tokens.Count == 0) { return(null); } var token = tokens.Peek(); if (token.Type == WktTokenType.String) { var value = token.Value.ToUpperInvariant(); if (value == "POINT") { return(ParsePoint(tokens)); } if (value == "LINESTRING") { return(ParseLineString(tokens)); } if (value == "LINEARRING") { return(ParseLinearRing(tokens)); } if (value == "POLYGON") { return(ParsePolygon(tokens)); } if (value == "TRIANGLE") { return(ParseTriangle(tokens)); } if (value == "MULTIPOINT") { return(ParseMultiPoint(tokens)); } if (value == "MULTILINESTRING") { return(ParseMultiLineString(tokens)); } if (value == "MULTIPOLYGON") { return(ParseMultiPolygon(tokens)); } if (value == "GEOMETRYCOLLECTION") { return(ParseGeometryCollection(tokens)); } } throw new SerializationException("WKT type '" + token.Value + "' not supported."); }