Skip to main content
Join the official 2019 Python Developers SurveyStart the survey!

Python wrapper for multiple APIs, that provide catchments-areas

Project description

https://travis-ci.org/Luqqk/catchments.svg?branch=master https://coveralls.io/repos/github/Luqqk/catchments/badge.svg

🌍 catchments

Python wrapper for multiple APIs, that provide catchments-areas. It allows to acquire and manipulate catchments from those APIs.

img/catchments.png

Installation

$ pip install catchments

Usage

Currently there are implemented two classes: SkobblerAPI and HereAPI.

You can use them as follows:

>>> from catchments import SkobblerAPI

>>> # get catchment from Skobbler API
>>> skobbler = SkobblerAPI('your_api_key')
>>> # if you don't provide params values default ones will be used
>>> params = {"range": 600, "highways": 1}
>>> catchment = skobbler.get_catchment({"lat" 52.05, "lon": 16.82}, **params)
>>> {"realReach": {...} ...}
>>> geojson = skobbler.catchment_as_geojson(catchment)
>>> {"type": "Feature", geometry: {"type": "Polygon", ...}, ...}
>>> skobbler.save_as_geojson(geojson)
>>> 'SKOBBLER_52.05_16.82.geojson'

As you can see .get_catchment method uses params as second argument. Params keys names should be exactly the same as mentioned in APIs documentations, otherwise they will be ignored and default values will be used.

Params supported by SKOBBLER and HERE:

SKOBBLER (startMercator, response_type - not supported)

HERE

You can use also inbuilt command line scripts which accept *.csv file input with points as coordinates resource. Scripts generate *.geojson files for every point in given *.csv file.

Example *.csv file structure (name column is optional):

name lat lon
point1 52.0557 16.8278
point2 52.4639 16.9410

Example command line script usage:

$ catchments-skobbler.py -k your_api_key -p path/to/file/with/points/*.csv

All scripts and their options are mentioned below:

$ catchments-skobbler.py
  • -k –key [REQUIRED] [DEFAULT: None]
  • -p –points [REQUIRED] [DEFAULT: None]
  • -r –range - [OPTIONAL] [DEFAULT: 600]
  • -u –units - [OPTIONAL] [DEFAULT: sec]
  • -t –transport - [OPTIONAL] [DEFAULT: car]
  • -l –toll - [OPTIONAL] [DEFAULT: 0]
  • -w –highways - [OPTIONAL] [DEFAULT: 0]
  • -n –nonReachable - [OPTIONAL] [DEFAULT: 0]
$ catchments-here.py
  • -i –app_id [REQUIRED] [DEFAULT: None]
  • -c –app_code [REQUIRED] [DEFAULT: None]
  • -r –range - [OPTIONAL] [DEFAULT: 600]
  • -e –range-type - [OPTIONAL] [DEFAULT: time]
  • -m –mode - [OPTIONAL] [DEFAULT: fastest;car;traffic:disabled]

Tests

$ python setup.py test

TODO

  • Add support for Mapzen API catchments
  • Add support for OpenRouteService catchments
  • Add support for concurrent HTTP requests

Release History

1.1.1 (2017-05-04)

  • Split catchments-cls.py into separate scripts (one for each API)
  • Documentation

1.0.0 (2017-05-01)

  • Bug fixes, code reorganization
  • Better documentation

0.9.1b (2017-03-11)

  • Required params validation in catchments-cls.py

0.9.0b (2017-03-11)

  • Initial release (beta)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for catchments, version 1.1.1
Filename, size File type Python version Upload date Hashes
Filename, size catchments-1.1.1-py3-none-any.whl (11.1 kB) File type Wheel Python version py3 Upload date Hashes View hashes
Filename, size catchments-1.1.1.tar.gz (6.1 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page