Crates.io | geo_rust |
lib.rs | geo_rust |
version | 0.4.2 |
source | src |
created_at | 2024-03-23 10:03:24.751131 |
updated_at | 2024-11-07 17:09:39.911459 |
description | A library for geocoding and reverse geocoding using the GeoNames dataset. |
homepage | https://github.com/LordOfPolls/georust |
repository | https://github.com/LordOfPolls/georust |
max_upload_size | |
id | 1183455 |
size | 47,073 |
A rust library for geocoding and reverse geocoding using the GeoNames dataset.
Run
cargo add geo_rust
Then you can use the library like this:
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);
}
Documentation is available at docs.rs
Calculate the haversine distance between two locations
Get the nearest postcode to a location
Get the location of a postcode
Get all postcodes within a certain radius of a location
Get the nearest place to a location
Get the location of a place
Get all places within a certain radius of a location
Get all PostalData structs within a certain radius of a location
The library uses a cache directory to store downloaded GeoNames data.
By default, it uses a directory named geonames in the system's temporary directory.
You can override this by setting the GEOCODER_CACHE_DIR
environment variable.
To disable caching entirely, set the DISABLE_GEOCODER_CACHE
environment variable to any value.
Please note, you are encouraged to "be a good neighbour" and use caching to reduce the load on the GeoNames servers.
Contributions are welcome! Please open an issue or submit a pull request.