osrm-extract的源代码在src/tools/extract.cpp中。
其中用到了tbb并行库
main函数主要采用boost::program_options读取命令行的参数,具体实现交给osrm::extract执行。osrm::extract使用facade设计模式。
该函数是整个extraction的入口。extraction的目的是将OSM的数据过滤与转化,使之更适合寻路,包括:
增加转向限制;
将道路改为有向边;
检查节点时路障还是信号灯;
丢弃所有tag信息,我们已经保留所需要的节点与道路信息。
此进程将会产生如下文件:
.names :使用prefix sum存储所有街的名字;
.osrm:易于进行后处理的中间格式;
.restrictions :osrm-contract构建有向图时的转向限制。