1 个不稳定版本
0.1.0 | 2018年10月11日 |
---|
220 在 地理空间
115 个星标 & 7 个观察者
3KB
51 行
Rust 反向地理编码器
一个快速的反向地理编码器。受 Python reverse-geocoder 启发。
链接
描述
rrgeo
以纬度和经度为输入,使用 k-d 树高效地查找已知位置列表中的最近邻,返回最接近的城市、国家、纬度和经度。如果您需要快速对大量坐标进行反向地理编码,或者只需要坐标的大致位置但不希望使用在线反向地理编码器的费用或复杂性,这可能会很有用。
此项目包含(通过 Cargo 工作空间)一个 库,一个 Axum REST API,一个 Actix REST API,一个 Warp REST API,以及一个命令行工具。
用法
命令行搜索
示例用法
> cargo run -p rrgeo-cmd --release 40 -73
0 ms to search
Location: (40.72788, -73.09761): West Sayville, New York, Suffolk County, US
Distance: 0.539337006499999
Web 服务器
示例用法
cargo run -p rrgeo-axum --release
cargo run -p rrgeo-actix --release
cargo run -p rrgeo-warp --release
基准测试
在 Apple M2 上进行基准测试。
核心库
> cargo bench
time: [154.16 ns 155.34 ns 157.00 ns]
通过 Axum 提供服务
> cargo run -p rrgeo-axum --release
> oha https://127.0.0.1:3000/\?lat\=40\&long\=\-73 -z 5sec
Summary:
Success rate: 100.00%
Total: 5.0004 secs
Slowest: 0.0099 secs
Fastest: 0.0000 secs
Average: 0.0002 secs
Requests/sec: 221767.0303
Total data: 162.86 MiB
Size/request: 154 B
Size/sec: 32.57 MiB
Response time histogram:
0.000 [1] |
0.001 [1108827] |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
0.002 [21] |
0.003 [49] |
0.004 [9] |
0.005 [4] |
0.006 [1] |
0.007 [1] |
0.008 [2] |
0.009 [1] |
0.010 [2] |
Response time distribution:
10.00% in 0.0001 secs
25.00% in 0.0002 secs
50.00% in 0.0002 secs
75.00% in 0.0003 secs
90.00% in 0.0003 secs
95.00% in 0.0004 secs
99.00% in 0.0005 secs
99.90% in 0.0006 secs
99.99% in 0.0009 secs
Details (average, fastest, slowest):
DNS+dialup: 0.0016 secs, 0.0011 secs, 0.0019 secs
DNS-lookup: 0.0000 secs, 0.0000 secs, 0.0002 secs
Status code distribution:
[200] 1108918 responses
通过 Actix Web 提供服务
> cargo run --release --bin rrgeo-actix
> oha https://127.0.0.1:3000/\?lat\=40\&long\=\-73 -z 5sec
Summary:
Success rate: 100.00%
Total: 5.0007 secs
Slowest: 0.2502 secs
Fastest: 0.0000 secs
Average: 0.0002 secs
Requests/sec: 204563.3764
Total data: 106.34 MiB
Size/request: 109 B
Size/sec: 21.26 MiB
Response time histogram:
0.000 [1] |
0.025 [1021753] |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
0.050 [432] |
0.075 [165] |
0.100 [101] |
0.125 [218] |
0.150 [266] |
0.175 [7] |
0.200 [1] |
0.225 [7] |
0.250 [12] |
Response time distribution:
10.00% in 0.0000 secs
25.00% in 0.0001 secs
50.00% in 0.0001 secs
75.00% in 0.0001 secs
90.00% in 0.0002 secs
95.00% in 0.0003 secs
99.00% in 0.0011 secs
99.90% in 0.0323 secs
99.99% in 0.1263 secs
Details (average, fastest, slowest):
DNS+dialup: 0.0015 secs, 0.0012 secs, 0.0019 secs
DNS-lookup: 0.0000 secs, 0.0000 secs, 0.0002 secs
Status code distribution:
[200] 1022963 responses
通过 Warp 提供服务
> cargo run --release --bin rrgeo-warp
> oha https://127.0.0.1:3000/\?lat\=40\&long\=\-73 -z 5sec
SuSummary:
Success rate: 100.00%
Total: 5.0003 secs
Slowest: 0.0111 secs
Fastest: 0.0000 secs
Average: 0.0002 secs
Requests/sec: 232498.2550
Total data: 170.74 MiB
Size/request: 154 B
Size/sec: 34.15 MiB
Response time histogram:
0.000 [1] |
0.001 [1162216] |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
0.002 [167] |
0.003 [52] |
0.004 [56] |
0.006 [56] |
0.007 [4] |
0.008 [3] |
0.009 [1] |
0.010 [1] |
0.011 [2] |
Response time distribution:
10.00% in 0.0001 secs
25.00% in 0.0002 secs
50.00% in 0.0002 secs
75.00% in 0.0003 secs
90.00% in 0.0003 secs
95.00% in 0.0004 secs
99.00% in 0.0004 secs
99.90% in 0.0007 secs
99.99% in 0.0038 secs
Details (average, fastest, slowest):
DNS+dialup: 0.0018 secs, 0.0013 secs, 0.0025 secs
DNS-lookup: 0.0000 secs, 0.0000 secs, 0.0005 secs
Status code distribution:
[200] 1162559 responses
许可证
许可协议为以下之一
- Apache许可证,版本2.0,(《LICENSE-APACHE》或http://www.apache.org/licenses/LICENSE-2.0)
- MIT许可证(《LICENSE-MIT》或http://opensource.org/licenses/MIT)
根据您的选择。
贡献
您有意提交以供作品包含在内的任何贡献,如Apache-2.0许可证中定义,应如上双重许可,无需任何额外的条款或条件。
依赖项
~17-32MB
~533K SLoC