问题描述
为了读取 OpenStreetMap 数据,我使用了一个名为“OsmSharp”的库,没有太多的文档,但足以让我四处走动。
目前我被卡住了,想知道是否可以让两个线程从 PBFOsmStreamSource 读取数据,然后同时对其进行过滤。
这是一种不好的做法吗?它甚至有什么作用吗?
using OsmSharp;
using OsmSharp.Streams;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
namespace ConsoleApp
{
public class SomeClass
{
public async Task GetSomeData()
{
using var fileStream = File.OpenRead("some-data.osm.pbf");
var source = new PBFOsmStreamSource(fileStream);
var filterFirst = Task.Run(() => FilterFirst(source));
var filterSecond = Task.Run(() => FilterSecond(source));
// Do some other stuff
var resultFirst = await filterFirst;
var resultSecond = await filterFirst;
// Do stuff with filtered data
}
private IEnumerable<OsmGeo> FilterSecond(PBFOsmStreamSource source)
{
var filtered = from osmGeo in source
where osmGeo.Type == OsmGeoType.Way
&& osmGeo.Tags != null
// Some more filtering
select osmGeo;
return filtered;
}
private IEnumerable<OsmGeo> FilterFirst(PBFOsmStreamSource source)
{
var filtered = from osmGeo in source
where osmGeo.Type == OsmGeoType.Node
&& osmGeo.Tags != null
// Some more filtering
select osmGeo;
return filtered;
}
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)