6 releases
0.1.5 | Jul 4, 2023 |
---|---|
0.1.4 | Jul 4, 2023 |
#212 in Geospatial
23KB
340 lines
pinpointer
Gets provinces and countries from latitudes and longitudes.
Installation:
From source:
You will need to install Rust in order to install this program from source. After installing Rust, installation is simply:
cargo install pinpointer
Usage
As a library:
The main feature of this library is the LabeledPartitionTree
, which can be used to perform fast point-in-region queries.
A LabeledPartitionTree
can be built from a mapping from labels to polygons with those labels.
This library provides some helper functions to make it easy to get map data and build label trees to perform point-in-country and point-in-province queries. See the examples folder for full code examples for downloading data, computing the label trees, and finally performing millions of point-in-country/point-in-province lookups.
Demo server:
You can also run a local demo server on port 8000 by running the pinpointer-server
command after installation.
On startup, the server will download country and province data to the data
directory and compute depth 6 label trees for both.
The server exposes two endpoints, /lat_lon_to_country
and /lat_lon_to_province
, which take lat
and lon
query arguments and return a country or province code, respectively.
If the lat/lon pair does not fall within any country, the endpoints return "-99" instead.
Here are some example requests to the server:
curl http://localhost:8000/lat_lon_to_country?lat=10&lon=20
# TD
curl http://localhost:8000/lat_lon_to_province?lat=10&lon=20
# TD-SA
Dependencies
~18–31MB
~476K SLoC