#location #geocoding #latitude-longitude #zip #geonames #postcodes

geo_rust

使用GeoNames数据集进行地理编码和反向地理编码的库

5个版本 (3个重大更新)

0.4.1 2024年3月25日
0.4.0 2024年3月24日
0.3.0 2024年3月24日
0.2.0 2024年3月23日
0.1.0 2024年3月23日

#105 in 地理空间

MIT 许可证

48KB
973

GeoRust

使用GeoNames数据集进行地理编码和反向地理编码的Rust库。

GitHub Release Crates.io Version Crates.io Total Downloads Crates.io License

用法

运行

cargo add geo_rust

然后你可以像这样使用库

use geo_rust::{GeoLocation, Country, get_postal_data, get_nearest_postcode};

fn main() {
    let geonames_data = get_postal_data(Country::All);

    let location = GeoLocation {
        latitude: 51.7923246977375,
        longitude: 0.629834723775309,
    };

    let nearest_postcode = get_nearest_postcode(location, &geonames_data).unwrap();
    println!("Nearest postcode: {}", nearest_postcode.postal_code);
}
use geo_rust::{GeoLocation, Country, get_gazetteer_data, get_nearest_place};

fn main() {
    let geonames_data = get_gazetteer_data(Country::GreatBritain);

    let location = GeoLocation {
        latitude: 51.7923246977375,
        longitude: 0.629834723775309,
    };

    let nearest_place = get_nearest_place(location, &geonames_data).unwrap();
    println!("Nearest place: {}", nearest_place.name);
}

文档可在docs.rs找到

功能

  • 计算两个位置之间的哈夫曼距离
  • 获取一个位置最近的邮编
  • 获取邮编的位置
  • 获取某个位置一定半径范围内的所有邮编
  • 获取一个位置最近的地方
  • 获取地点的位置
  • 获取某个位置一定半径范围内的所有地点
  • 获取某个位置一定半径范围内的所有PostalData结构

配置

库使用缓存目录来存储下载的GeoNames数据。默认情况下,它使用系统临时目录中名为geonames的目录。你可以通过设置环境变量GEOCODER_CACHE_DIR来覆盖此设置。

要完全禁用缓存,请将环境变量DISABLE_GEOCODER_CACHE设置为任何值。

请注意,我们鼓励你"成为好邻居"并使用缓存以减轻GeoNames服务器的负载。

贡献

欢迎贡献!请打开一个问题或提交一个pull请求。

依赖项

~9–20MB
~288K SLoC