예제 #1
0
        /// <summary>
        /// Returns the relation with the given id.
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public override Relation GetRelation(long id)
        {
            string        relationKey   = PrimitiveExtensions.BuildRelationRedisKey(id);
            RedisRelation redisRelation = _clientRelation.GetValue(relationKey);
            Relation      relation      = null;

            if (redisRelation != null)
            {
                relation = PrimitiveExtensions.ConvertFrom(redisRelation);
            }
            return(relation);
        }
예제 #2
0
        /// <summary>
        /// Converts the given relation to a redis relation.
        /// </summary>
        /// <param name="relation"></param>
        /// <returns></returns>
        public static RedisRelation ConvertTo(Relation relation)
        {
            RedisRelation redisWay = new RedisRelation();

            redisWay.Id          = relation.Id.Value;
            redisWay.ChangeSetId = relation.ChangeSetId;
            redisWay.TimeStamp   = relation.TimeStamp;
            redisWay.UserId      = relation.UserId;
            redisWay.UserName    = relation.UserName;
            redisWay.Version     = relation.Version;
            redisWay.Visible     = relation.Visible;
            redisWay.Tags        = PrimitiveExtensions.ConvertTo(relation.Tags);
            redisWay.Members     = PrimitiveExtensions.ConvertTo(relation.Members);

            return(redisWay);
        }
예제 #3
0
        /// <summary>
        /// Reads an osmGeo object from disk.
        /// </summary>
        /// <param name="id"></param>
        /// <param name="type"></param>
        private OsmGeo Read(long id, OsmGeoType type)
        {
            switch (type)
            {
            case OsmGeoType.Node:
                string    nodeKey   = PrimitiveExtensions.BuildNodeRedisKey(id);
                RedisNode redisNode = _clientNode.GetValue(nodeKey);
                Node      node      = null;
                if (redisNode != null)
                {
                    node = PrimitiveExtensions.ConvertFrom(redisNode);
                }
                return(node);

            case OsmGeoType.Way:
                string   wayKey   = PrimitiveExtensions.BuildWayRedisKey(id);
                RedisWay redisWay = _clientWay.GetValue(wayKey);
                Way      way      = null;
                if (redisWay != null)
                {
                    way = PrimitiveExtensions.ConvertFrom(redisWay);
                }
                return(way);

            case OsmGeoType.Relation:
                string        relationKey   = PrimitiveExtensions.BuildRelationRedisKey(id);
                RedisRelation redisRelation = _clientRelation.GetValue(relationKey);
                Relation      relation      = null;
                if (redisRelation != null)
                {
                    relation = PrimitiveExtensions.ConvertFrom(redisRelation);
                }
                return(relation);
            }
            throw new ArgumentOutOfRangeException("type");
        }