#osrm #link #libosrm #libboost-filesystem #libboost-iostreams #libboost-thread #libboost-system

rsc_osrm

osrm的Rust封装,来自TehGoat/rs_osrm

50个版本

0.1.50 2024年2月29日
0.1.47 2023年9月21日
0.1.46 2023年6月1日
0.1.44 2023年3月10日
0.1.16 2020年11月13日

#174 in 算法

MIT 许可证

155KB
4K SLoC

Rust 2.5K SLoC // 0.0% comments C++ 2K SLoC

rsc_osrm

Crates.io

License: MIT

Rust封装的osrm

需要安装osrm的依赖项

要链接最终二进制文件,您需要:0. libosrm.a

  1. libboost_filesystem.so
  2. libboost_iostreams.so
  3. libboost_thread.so
  4. libboost_system.so

如何使用

  1. 创建一个EngineConfig,传递.osrm文件的路径。您可以更改其他设置,请参阅osrm文档。
  2. 通过Osrm::new创建一个Osrm,并传递配置。
  3. 创建一个请求对象(例如NearestRequest),建议始终使用::new以获取正确的默认值。
  4. 在请求对象上调用run并传递osrm。

最近示例

use rsc_osrm::{EngineConfig, Osrm, Algorithm, Status, route::RouteRequest, general::Coordinate};

fn main() {
    let mut config = EngineConfig::new("<path to your .osrm file>");
    config.use_shared_memory = false;
    config.algorithm = Algorithm::MLD;
    let osrm = Osrm::new(&mut config).unwrap();
    let coords = vec!(Coordinate{latitude:12.98657118,longitude:77.56644753}, Coordinate{latitude:12.97436012,longitude:77.62567071});
    let mut request = RouteRequest::new(&coords);
    let (status,result) = request.run(&osrm);
    match status{
        Status::Ok => {
            let route0 = &result.routes[0];
            println!("eta: {}, eda: {}, geometry: {}",route0.duration, route0.distance, (route0.geometry).as_ref().unwrap());
        }
        _ => println!("call osrm failed"),
    }
}

无运行时依赖项

~225KB