Beispiel #1
0
        /// <summary>
        /// Seeks for objects that are children of other objects.
        /// </summary>
        private void Seek()
        {
            var relations = new List <Relation>();

            _simpleSource.Initialize();
            while (_simpleSource.MoveNext(true, false, false))
            {
                var osmGeo = _simpleSource.Current();

                switch (osmGeo.Type)
                {
                case OsmGeoType.Way:
                    var way = (osmGeo as Way);
                    if (way.Nodes != null)
                    {
                        foreach (long nodeId in way.Nodes)
                        {
                            this.MarkNodeAsChild(nodeId);
                        }
                    }
                    break;

                case OsmGeoType.Relation:
                    var relation = (osmGeo as Relation);
                    if (relation.Members != null)
                    {
                        foreach (RelationMember member in relation.Members)
                        {
                            switch (member.MemberType.Value)
                            {
                            case OsmGeoType.Node:
                                this.MarkNodeAsChild(member.MemberId.Value);
                                break;

                            case OsmGeoType.Way:
                                this.MarkWayAsChild(member.MemberId.Value);
                                break;

                            case OsmGeoType.Relation:
                                this.MarkRelationAsChild(member.MemberId.Value);
                                break;
                            }
                        }
                    }
                    relations.Add(relation);
                    break;
                }
            }
            foreach (var relation in relations)
            {
                if (_relationsToInclude.Contains(relation.Id.Value))
                { // yep, cache relation!
                    _dataCache.AddRelation(relation);
                }
            }
            _simpleSource.Reset();
        }
Beispiel #2
0
        public static MemoryDataSource CreateFrom(OsmStreamSource sourceStream)
        {
            if (sourceStream.CanReset)
            {
                sourceStream.Reset();
            }
            MemoryDataSource memoryDataSource = new MemoryDataSource();

            foreach (OsmGeo osmGeo in sourceStream)
            {
                if (osmGeo != null)
                {
                    switch (osmGeo.Type)
                    {
                    case OsmGeoType.Node:
                        memoryDataSource.AddNode(osmGeo as Node);
                        continue;

                    case OsmGeoType.Way:
                        memoryDataSource.AddWay(osmGeo as Way);
                        continue;

                    case OsmGeoType.Relation:
                        memoryDataSource.AddRelation(osmGeo as Relation);
                        continue;

                    default:
                        continue;
                    }
                }
            }
            return(memoryDataSource);
        }
        /// <summary>
        /// Creates a new memory data source from all the data in the given osm-stream.
        /// </summary>
        /// <param name="sourceStream"></param>
        /// <returns></returns>
        public static MemoryDataSource CreateFrom(OsmStreamSource sourceStream)
        {
            // reset if possible.
            if (sourceStream.CanReset)
            {
                sourceStream.Reset();
            }

            // enumerate all objects and add them to a new datasource.
            MemoryDataSource dataSource = new MemoryDataSource();

            foreach (var osmGeo in sourceStream)
            {
                if (osmGeo != null)
                {
                    switch (osmGeo.Type)
                    {
                    case OsmGeoType.Node:
                        dataSource.AddNode(osmGeo as Node);
                        break;

                    case OsmGeoType.Way:
                        dataSource.AddWay(osmGeo as Way);
                        break;

                    case OsmGeoType.Relation:
                        dataSource.AddRelation(osmGeo as Relation);
                        break;
                    }
                }
            }
            return(dataSource);
        }
Beispiel #4
0
 /// <summary>
 /// Resets this stream.
 /// </summary>
 public override void Reset()
 {
     if (_source != null)
     {
         _source.Reset();
     }
 }
        /// <summary>
        /// Resets this filter.
        /// </summary>
        public override void Reset()
        {
            _source1.Reset();
            _source2.Reset();

            _source1Status = null;
            _source2Status = null;
        }
Beispiel #6
0
        /// <summary>
        /// Resets this source.
        /// </summary>
        public override void Reset()
        {
            _start    = DateTime.Now.Ticks;
            _node     = 0;
            _way      = 0;
            _relation = 0;

            _reader.Reset();
        }
Beispiel #7
0
        /// <summary>
        /// Resets this filter.
        /// </summary>
        public override void Reset()
        {
            _source1?.Reset();
            _source2?.Reset();

            _source1Status = null;
            _source2Status = null;
            _current       = null;
        }
        /// <summary>
        /// Seeks for objects that are children of other objects.
        /// </summary>
        private void Seek()
        {
            foreach (OsmGeo osmGeo in _simpleSource)
            {
                switch (osmGeo.Type)
                {
                case OsmGeoType.Way:
                    foreach (long nodeId in (osmGeo as Way).Nodes)
                    {
                        if (nodeId == 1014892489)
                        {
                            System.Diagnostics.Debug.WriteLine("");
                        }
                        this.MarkNodeAsChild(nodeId);
                    }
                    break;

                case OsmGeoType.Relation:
                    foreach (RelationMember member in (osmGeo as Relation).Members)
                    {
                        switch (member.MemberType.Value)
                        {
                        case OsmGeoType.Node:
                            this.MarkNodeAsChild(member.MemberId.Value);
                            break;

                        case OsmGeoType.Way:
                            this.MarkWayAsChild(member.MemberId.Value);
                            break;

                        case OsmGeoType.Relation:
                            this.MarkRelationAsChild(member.MemberId.Value);
                            break;
                        }
                    }
                    break;
                }
            }
            _simpleSource.Reset();
        }
        /// <summary>
        /// Resets this source.
        /// </summary>
        public override void Reset()
        {
            _lastTypeStart = 0;
            _lastType      = null;

            _node          = 0;
            _nodeTicks     = 0;
            _way           = 0;
            _wayTicks      = 0;
            _relation      = 0;
            _relationTicks = 0;

            _reader.Reset();
        }
        /// <summary>
        /// Seeks for objects that are children of other objects.
        /// </summary>
        private void Seek()
        {
            foreach (OsmGeo osmGeo in _simpleSource)
            {
                switch (osmGeo.Type)
                {
                case OsmGeoType.Way:
                    foreach (long nodeId in (osmGeo as Way).Nodes)
                    {
                        this.MarkNodeAsChild(nodeId);
                    }
                    break;

                case OsmGeoType.Relation:
                    foreach (RelationMember member in (osmGeo as Relation).Members)
                    {
                        switch (member.MemberType.Value)
                        {
                        case OsmGeoType.Node:
                            this.MarkNodeAsChild(member.MemberId.Value);
                            break;

                        case OsmGeoType.Way:
                            this.MarkWayAsChild(member.MemberId.Value);
                            break;

                        case OsmGeoType.Relation:
                            this.MarkRelationAsChild(member.MemberId.Value);
                            break;
                        }
                    }
                    break;
                }
            }
            _simpleSource.Reset();
        }
Beispiel #11
0
 public void Reset()
 {
     Source.Reset();
 }
        /// <summary>
        /// Creates a new memory data source from all the data in the given osm-stream.
        /// </summary>
        /// <param name="sourceStream"></param>
        /// <returns></returns>
        public static MemoryDataSource CreateFrom(OsmStreamSource sourceStream)
        {
            // reset if possible.
            if (sourceStream.CanReset) { sourceStream.Reset(); }

            // enumerate all objects and add them to a new datasource.
            MemoryDataSource dataSource = new MemoryDataSource();
            foreach (var osmGeo in sourceStream)
            {
                if (osmGeo != null)
                {
                    switch(osmGeo.Type)
                    {
                        case OsmGeoType.Node:
                            dataSource.AddNode(osmGeo as Node);
                            break;
                        case OsmGeoType.Way:
                            dataSource.AddWay(osmGeo as Way);
                            break;
                        case OsmGeoType.Relation:
                            dataSource.AddRelation(osmGeo as Relation);
                            break;
                    }
                }
            }
            return dataSource;
        }