Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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.");
        }