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