/// <summary> /// Registers the source for this target. /// </summary> /// <param name="source">The source.</param> /// <param name="filterTags">The filter tags flag.</param> public virtual void RegisterSource(OsmStreamSource source, bool filterTags) { if (filterTags) { // add filter to remove all irrelevant tags. var tagsFilter = new OsmStreamFilterTagsFilter((TagsCollectionBase tags) => { var tagsToRemove = new List <Tag>(); foreach (var tag in tags) { if (!_interpreter.IsRelevant(tag.Key, tag.Value) && !Vehicle.IsRelevantForOneOrMore(tag.Key, tag.Value)) { // not relevant for both interpreter and all registered vehicle profiles. tagsToRemove.Add(tag); } } foreach (Tag tag in tagsToRemove) { tags.RemoveKeyValue(tag.Key, tag.Value); } }); tagsFilter.RegisterSource(source); base.RegisterSource(tagsFilter); } else { // no filter! base.RegisterSource(source); } }
/// <summary> /// Does the filtering. /// </summary> /// <param name="osmGeos"></param> /// <param name="filter"></param> private List <OsmGeo> Filter(OsmGeo[] osmGeos, OsmStreamFilterTagsFilter.TagsFilterDelegate filter) { OsmStreamFilterTagsFilter tagsFilter = new OsmStreamFilterTagsFilter(filter); tagsFilter.RegisterSource(osmGeos); return(new List <OsmGeo>(tagsFilter)); }
/// <summary> /// Registers the source for this target. /// </summary> /// <param name="source"></param> public override void RegisterSource(OsmStreamSource source) { // add filter to remove all irrelevant tags. OsmStreamFilterTagsFilter tagsFilter = new OsmStreamFilterTagsFilter((TagsCollectionBase tags) => { List <Tag> tagsToRemove = new List <Tag>(); foreach (Tag tag in tags) { if (!_interpreter.IsRelevant(tag.Key, tag.Value)) { tagsToRemove.Add(tag); } } foreach (Tag tag in tagsToRemove) { tags.RemoveKeyValue(tag.Key, tag.Value); } }); tagsFilter.RegisterSource(source); base.RegisterSource(tagsFilter); }