#!/bin/sh # # Copyright © 2014, 2017 Jonas Smedegaard # Description: resolve GeoJSON from OSM node, way and relation objects. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # Depends: gdal-bin jq set -eu # type must be either polygons, lines or points type="$1"; shift features=$* onlineosmxml2geojson() { set -e echo '[' first=yes for feature in "$@"; do case "$feature" in node/*) url="http://www.openstreetmap.org/api/0.6/$feature" ;; *) url="http://www.openstreetmap.org/api/0.6/$feature/full" ;; esac [ -n "$first" ] || echo ',' case "$type" in polygons) ogr2ogr --config OSM_USE_CUSTOM_INDEXING NO -nlt PROMOTE_TO_MULTI -f GeoJSON /vsistdout/ /vsicurl_streaming/"$url" multipolygons ;; lines) ogr2ogr --config OSM_USE_CUSTOM_INDEXING NO -nlt PROMOTE_TO_MULTI -f GeoJSON /vsistdout/ /vsicurl_streaming/"$url" multilinestrings ;; points) ogr2ogr --config OSM_USE_CUSTOM_INDEXING NO -f GeoJSON /vsistdout/ /vsicurl_streaming/"$url" points ;; esac first= done echo ']' } onlineosmxml2geojson $features \ | jq --tab --sort-keys . \ | perl -0 -pe 's/},\s*{/}, {/g; s/\[\s*([\d.,]+)\s*([\d.]+)\s*\]/[$1 $2]/g'