A blazing fast, offline reverse geocoder that finds the nearest city and country for given coordinates.
rrgeo is a reverse geocoder written in Rust that converts latitude and longitude coordinates into human-readable location data like city and country. It uses a k-d tree for efficient nearest-neighbor searches against a built-in dataset, making it ideal for high-throughput or offline scenarios where external APIs are impractical.
Developers and engineers who need to reverse geocode large volumes of coordinates quickly, such as those processing geospatial data in batch jobs or building offline-capable applications. It also targets those building high-performance web services that require reverse geocoding functionality without network dependencies.
Developers choose rrgeo for its exceptional speed, with nanosecond-scale search times, and its offline operation, eliminating reliance on external APIs. Its multiple interfaces, including a core library, command-line tool, and REST APIs via popular web frameworks, provide flexibility for various integration scenarios.
A blazing fast, offline, reverse geocoder
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Benchmarked at ~155 ns per query, enabling high-throughput processing without performance bottlenecks, as shown in core library tests.
Uses an embedded dataset, allowing reverse geocoding without network dependencies, ideal for batch jobs or offline scenarios.
Provides a core library, CLI tool, and REST APIs via Axum, Actix, and Warp, offering flexibility for various use cases.
Implements a k-d tree for nearest-neighbor lookups, ensuring fast and accurate location matching based on the built-in dataset.
Includes HTTP servers that handle over 200,000 requests per second, as demonstrated in benchmarks with oha for high-traffic scenarios.
Only returns city and country information, lacking street addresses, postal codes, or more granular details, which limits precision for detailed applications.
The embedded location data is fixed and not automatically updated, which can result in outdated information over time without manual intervention.
Primarily designed for Rust projects; integrating into non-Rust environments requires additional effort, such as using FFI or running separate services.
Users cannot easily modify or extend the built-in dataset without recompiling the project or forking the codebase, reducing adaptability.