Пример #1
0
        private object ParseGeometryCollection(WktTokenQueue tokens)
        {
            tokens.Dequeue("GEOMETRYCOLLECTION");

            ParseDimensions(tokens);

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

            tokens.Dequeue(WktTokenType.LeftParenthesis);

            var geometries = new List <object>();

            geometries.Add(ParseGeometry(tokens));

            while (tokens.NextTokenIs(WktTokenType.Comma))
            {
                tokens.Dequeue();
                geometries.Add(ParseGeometry(tokens));
            }

            tokens.Dequeue(WktTokenType.RightParenthesis);

            return(_shapeConverter.ToGeometryCollection(geometries.ToArray()));
        }
        private bool TryParseGeometryCollection(RavenJObject obj, out object result)
        {
            result = null;
            RavenJToken geom;

            if (obj.TryGetValue("geometries", out geom))
            {
                var geometries = geom as RavenJArray;

                if (geometries != null)
                {
                    var temp = new object[geometries.Length];
                    for (var index = 0; index < geometries.Length; index++)
                    {
                        var geometry = geometries[index];
                        if (!TryParseGeometry((RavenJObject)geometry, out temp[index]))
                        {
                            return(false);
                        }
                    }
                    result = _shapeConverter.ToGeometryCollection(temp);
                    return(true);
                }
            }
            return(false);
        }