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