The OSM API uses a specific format for their geometric primitive types based on nodes, ways and relations; and those unfortunately don’t translate 1:1 with GeoJSON types, thus a conversion is needed,
Make sure have at least Python 3.11, and install it with:
$ pip install osmexp
The only requirements are Requests
and Shapely
.
For all exports, this is the format:
$ osmexp [element_type] [element_id]
Where element_type
can be node
, way
or rel
(for "relation"). And the ID is the numerical identifier used by OSM, if you don’t know how to get the OSM ID, follow this article.
The output is set to STDOUT
, and it is recommended to be piped into a file or another command.
$ osmexp node 9589344640 > outdoor_seating.geojson
This returns a GeoJSON with a Point
as a root type.
$ osmexp way 398987317 > canal_grande.geojson
This returns a GeoJSON with a LineString
as a root type if the the line is “open” or Polygon
if the line is “closed”.
$ osmexp rel 4817103 > venice.geojson
This returns a GeoJSON with a FeatureCollection
as a root, and the internal features as LineString
or Polygon
, depending if they can self-close, or fail the polygon transformation by other means (self crossing, etc).
This library is released under the 3-Clause BSD License.
tl;dr: "free to use as long as you credit me".