Skip to main content

Extract vector and raster data from OSM.

Project description

OSMxtract

Description

OSMxtract is a simple Python package that uses the Overpass API to fetch OpenStreetMap features and export them in a GeoJSON file.

Installation

Using pip:

pip install osmxtract

Command-line interface

Usage

OSMxtract can guess the extent of your query based on three different options:

  • --fromfile: use the bounds from the input vector or raster file ;
  • --latlon and --buffer: use the bounds of a buffer around a given point ;
  • --address and --buffer: use the bounds of a buffer around a geocoded address.
Usage: osmxtract [OPTIONS] OUTPUT

  Extract GeoJSON features from OSM with the Overpass API.

Options:
  --fromfile PATH                 Bounding box from input file.
  --latlon FLOAT...               Space-separated lat/lon coordinates.
  --address TEXT                  Address to geocode.
  --buffer INTEGER                Buffer size in meters around lat/lon or
                                  address.
  --tag TEXT                      OSM tag of interest (ex: "highway").
  --values TEXT                   Comma-separated list of possible values (ex:
                                  "tertiary,primary").
  --case-insensitive              Make the first character of each value case
                                  insensitive.
  --geom [point|linestring|polygon|multipolygon]
                                  Output geometry type.
  --help                          Show this message and exit.

Examples

# buildings around the "Université Libre de Bruxelles" as polygons
# save features in the file `buildings.geojson`. since no values
# are provided, all non-null values are accepted for the tag
# "highway" are accepted.
osmxtract --address "Université Libre de Bruxelles" --buffer 5000 \
          --tag building --geom polygon buildings.geojson

# primary, secondary and tertiary roads based on the extent
# of an existing raster. save the result as linestrings in the
# `major_roads.geojson` file. we use the `--case-insensitive`
# flag to get roads tagged as "primary" as well as "Primary".
osmxtract --fromfile map.tif --tag highway \
          --values "primary,secondary,tertiary" \
          --case-insensitive --geom linestring \
          major_roads.geojson

# cafes and bars near "Atomium, Brussels" 
osmxtract --address "atomium, brussels" --buffer 1000 \
          --tag amenity --values "cafe,bar" --geom point \
          cafes_and_bars.geojson

API

import json
from osmxtract import overpass, location
import geopandas as gpd

# Get bounding box coordinates from a 2km buffer
# around the Atomium in Brussels
lat, lon = location.geocode('Atomium, Brussels')
bounds = location.from_buffer(lat, lon, buffer_size=2000)

# Build an overpass QL query and get the JSON response
query = overpass.ql_query(bounds, tag='amenity', values=['cafe', 'bar'])
response = overpass.request(query)

# Process response manually...
for elem in response['elements']:
    print(elem['tags'].get('name'))

# Output:
# Au Bon Coin
# Aux 4 Coins du Monde
# Excelsior
# Welcome II
# Heymbos
# Games Café
# Stadium
# Le Beau Rivage
# The Corner
# None
# Expo
# Koning
# Centrum
# St. Amands
# Bij Manu

# ...or parse them as GeoJSON
feature_collection = overpass.as_geojson(response, 'point')

# Write as GeoJSON
with open('cafes_and_bars.geojson', 'w') as f:
    json.dump(feature_collection, f)

# To GeoPandas GeoDataFrame:
geodataframe = gpd.GeoDataFrame.from_features(feature_collection)

Project details


Download files

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

Source Distribution

osmxtract-0.0.1.tar.gz (7.9 kB view details)

Uploaded Source

Built Distribution

osmxtract-0.0.1-py3-none-any.whl (8.6 kB view details)

Uploaded Python 3

File details

Details for the file osmxtract-0.0.1.tar.gz.

File metadata

  • Download URL: osmxtract-0.0.1.tar.gz
  • Upload date:
  • Size: 7.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for osmxtract-0.0.1.tar.gz
Algorithm Hash digest
SHA256 1d81d413e06079500d29587fdff0c0e2ad3e30ef5333ea3db03517f1e7d14bba
MD5 0c1e0ac65673c244d3a313bb0a70f57b
BLAKE2b-256 0830b230da48e6674d3f5bb6e171f3e1e947e4635fdf5b83b3cfbbdf84631509

See more details on using hashes here.

File details

Details for the file osmxtract-0.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for osmxtract-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 3a813c475377fadcf4a62ec48052d44bc56b5ffb0c056b026a59ff7c94f1feef
MD5 4c75f9686187e3f7aa444d195d2bc607
BLAKE2b-256 0b6862ca532b56a4548eeb78f9be4396e58a8c5d927d8aedba7711159e419211

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page