Beispiel #1
0
        private object ParseMultiPolygon(WktTokenQueue tokens)
        {
            tokens.Dequeue("MULTIPOLYGON");
            var dimensions = ParseDimensions(tokens);

            if (tokens.NextTokenIs("EMPTY"))
            {
                tokens.Dequeue();
                return(_shapeConverter.ToMultiPolygon(new CoordinateInfo[0][][]));
            }

            tokens.Dequeue(WktTokenType.LeftParenthesis);
            var polygons = new List <CoordinateInfo[][]> {
                ParseLineStrings(tokens, dimensions)
            };

            while (tokens.NextTokenIs(WktTokenType.Comma))
            {
                tokens.Dequeue();
                polygons.Add(ParseLineStrings(tokens, dimensions));
            }
            tokens.Dequeue(WktTokenType.RightParenthesis);

            return(_shapeConverter.ToMultiPolygon(polygons.ToArray()));
        }
        private bool TryParseMultiPolygon(RavenJObject obj, out object result)
        {
            RavenJToken coord;

            if (obj.TryGetValue("coordinates", out coord))
            {
                var coordinates = coord as RavenJArray;
                CoordinateInfo[][][] co;
                if (coordinates != null && TryParseCoordinateArrayArrayArray(coordinates, out co))
                {
                    result = _shapeConverter.ToMultiPolygon(co);
                    return(true);
                }
            }
            result = null;
            return(false);
        }