Beispiel #1
0
        /// <summary>
        /// Initializes this source.
        /// </summary>
        public override void Initialize()
        {
            _reader.Initialize();

            _start    = DateTime.Now.Ticks;
            _node     = 0;
            _way      = 0;
            _relation = 0;
        }
Beispiel #2
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();
        }
        /// <summary>
        /// Initializes this source.
        /// </summary>
        public override void Initialize()
        {
            _reader.Initialize();

            _lastTypeStart = 0;
            _lastType      = null;

            _node          = 0;
            _nodeTicks     = 0;
            _way           = 0;
            _wayTicks      = 0;
            _relation      = 0;
            _relationTicks = 0;
        }
            private void transferData(OsmStreamSource src, OsmStreamTarget sqlTarget)
            {
                src.Initialize();
                sqlTarget.Initialize();

                while (src.MoveNext(false, false, false) && !_shouldStop)
                {

                    OsmGeo sourceObject = src.Current();

                    if (!typeCount.ContainsKey(sourceObject.Type))
                    {
                        typeCount.Add(sourceObject.Type, 0);
                    }

                    typeCount[sourceObject.Type] = 1 + typeCount[sourceObject.Type];

                    if (sourceObject is Node)
                    {
                        sqlTarget.AddNode(sourceObject as Node);
                    }
                    else if (sourceObject is Way)
                    {
                        sqlTarget.AddWay(sourceObject as Way);
                    }
                    else if (sourceObject is Relation)
                    {
                        sqlTarget.AddRelation(sourceObject as Relation);
                    }
                }

                try
                {

                    sqlTarget.Flush();
                    sqlTarget.Close();
                }
                catch (Exception ex)
                {
                    Console.Error.WriteLine(ex);
                }
            }