Coder Social home page Coder Social logo

willemarcel / overpass-api-python-wrapper Goto Github PK

View Code? Open in Web Editor NEW

This project forked from mvexel/overpass-api-python-wrapper

1.0 3.0 0.0 206 KB

A thin Python wrapper around the OpenStreetMap Overpass API

License: Apache License 2.0

Python 100.00%

overpass-api-python-wrapper's Introduction

Overpass API python wrapper

This is a thin wrapper around the OpenStreetMap Overpass API.

Install it

$ pip install overpass

If you get an error similar to

OSError: Could not find library geos_c or load any of its variants ['libgeos_c.so.1', 'libgeos_c.so']

you can install the required libraries on linux with

$ sudo apt-get install libgeos-c1 libgeos-3.4.2

Use it

You can use the overpass command line interface or use it as a Python library.

Command line interface

You can use the CLI to execute queries and save the result in a GeoJSON file.

Usage: overpass [OPTIONS] QUERY OUTPUT_FILE

Run query and save the result in output_file

Options:
--timeout INTEGER  Timeout in seconds
--endpoint TEXT    URL of your prefered API
--format TEXT      Format to save the data. Options are 'geojson' and 'osm'. Default format is geojson.
--help             Show this message and exit.

For example:

To make a query and save the result as GeoJSON:

overpass --timeout 50 'node(area:3602758138)[amenity=cafe]' brasilia-cafe.geojson

Or to get the result as an OSM XML file:

overpass --timeout 50 --format osm 'node(area:3602758138)[amenity=cafe]' brasilia-cafe.osm

Python Library

>>> import overpass
>>> api = overpass.API()
>>> response = api.Get('node["name"="Salt Lake City"]')

Note that you don't have to include any of the output meta statements. The wrapper will, well, wrap those.

You will get your result as a dictionary, which (for now) represents the JSON output you would get from the Overpass API directly. So you could do this for example:

>>> print [(feature['tags']['name'], feature['id']) for feature in response['elements']]
[(u'Salt Lake City', 150935219), (u'Salt Lake City', 585370637), (u'Salt Lake City', 1615721573)]

If you want to get the data on the OSM XML format, pass the option 'asGeoJSON=False':

>>> import overpass
>>> api = overpass.API()
>>> response = api.Get('node["name"="Salt Lake City"]', asGeoJSON=False)

Parameters

The API takes a few parameters:

endpoint

The default endpoint is http://overpass-api.de/api/interpreter but you can pass in the rambler instance (http://overpass.osm.rambler.ru/cgi/interpreter) or your own:

api = overpass.API(endpoint=http://overpass.myserver/interpreter)
timeout

The default timeout is 25 seconds, but you can set it to whatever you want.

api = overpass.API(timeout=600)
debug

Setting this to True will get you debug output.

Simple queries

In addition to just send your query and parse the result, the wrapper provides shortcuts for often used map queries. To use them, just pass them like to normal query to the API.

MapQuery

This is a shorthand for a complete ways and relations query in a bounding box (the 'map call'). You just pass the bounding box to the constructor:

>>> map_query = overpass.MapQuery(50.746,7.154,50.748,7.157)
>>> response = api.Get(map_query)
WayQuery

This is shorthand for getting a set of ways and their child nodes that satisfy certain criteria. Pass the criteria as a Overpass QL stub to the constructor:

>>> way_query = overpass.WayQuery('[name=Highway 51]')
>>> response = api.Get(way_query)

Need help? Want feature?

Create a new issue.

Test it

py.test

Fork it

Yes please. Help wanted.

overpass-api-python-wrapper's People

Contributors

mvexel avatar willemarcel avatar tbolender avatar mharnold avatar johnjohndoe avatar

Stargazers

Kir Vaznitcky avatar

Watchers

 avatar James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.