Open Elevator is a free elevation API with up to 3m global accuracy. API currently down due to moving to another provider The API is publicly hosted for free at https://opendata.predly.com/v1/elevation.
API
$ curl https://opendata.predly.com/v1/elevation/json?lat=50.078217&lon=8.239761
{
"elevation": 118.73242074762783,
"location": {
"lat": 50.078217,
"lon": 8.239761
}
}
- OpenElevator Class
- Retrieving and preprocessing of dataset
- Builtin cache for elevation query within python
- Builtin interpolation of elevation between grid points
- Visualization of elevation for given locatio
- OpenElevator Web API
- Single location lookup (GET request)
- multiple location lookup
- Builtin API cache
- Builtin Rate Limiting
(Tested on a machine with Ryzen Epyc 32 Cores and 0.5 TB RAM on empty cache)
Request average: 22.21 ms @ 84k requests in 30seconds
running (0m31.8s), 0000/5000 VUs, 84046 complete and 0 interrupted iterations
default ✓ [======================================] 5000 VUs 30s
data_received..................: 3.3 MB 103 kB/s
data_sent......................: 2.1 MB 65 kB/s
http_req_blocked...............: avg=1.24ms min=0s med=0s max=536.8ms p(90)=4.95µs p(95)=6.14µs
http_req_connecting............: avg=1.11ms min=0s med=0s max=276.99ms p(90)=0s p(95)=0s
http_req_duration..............: avg=22.21ms min=0s med=0s max=2s p(90)=86.27ms p(95)=141.39ms
{ expected_response:true }...: avg=113.01ms min=600.59µs med=87.86ms max=2s p(90)=216.27ms p(95)=294.67ms
http_req_failed................: 80.34% ✓ 67523 ✗ 16523
http_req_receiving.............: avg=414.08µs min=0s med=0s max=1.98s p(90)=41.56µs p(95)=68.35µs
http_req_sending...............: avg=1.2ms min=0s med=0s max=1.31s p(90)=20.65µs p(95)=37.66µs
http_req_tls_handshaking.......: avg=0s min=0s med=0s max=0s p(90)=0s p(95)=0s
http_req_waiting...............: avg=20.6ms min=0s med=0s max=957.46ms p(90)=82.3ms p(95)=134.58ms
http_reqs......................: 84046 2639.131214/s
iteration_duration.............: avg=1.83s min=1s med=1.72s max=4.91s p(90)=2.5s p(95)=2.7s
iterations.....................: 84046 2639.131214/s
vus............................: 2915 min=2915 max=5000
vus_max........................: 5000 min=5000 max=5000
from PIL import Image
from openelevator import OpenElevator
elevator = OpenElevator()
# visualize a specific location
img = elevator.plot_elevation(lat=50.078217, lon=8.239761)
with Image.open(img) as im:
im.show()
4. Set up your own with this Tutorial
- Add support for interpolation add tile edges
- Add routes for - max/min slope in area - height profile of given geojson
- add Dockerfile
- add Makefile
- update installation information
- check for free space
Downloading could be speeded up if using a shared client, but boto3 currently does not offer pickling of its ressources (boto/boto3#2741)
- fastapi-limiter currently has a bug that is not merged yet so the current project will throw an exception!!!