osmq

openstreetmap for command line
git clone https://logand.com/git/osmq.git/
Log | Files | Refs

commit cd5cc9a080461f9d0c3d58927d71906a6f2a8abf
parent 34870c7a1094904bc1c9202cea963ec0a355d732
Author: Tomas Hlavaty <tom@logand.com>
Date:   Sat, 15 Jun 2019 07:16:20 +0200

first working version on cli

OSMQ_ZOOM=14 osqm alberobello

Diffstat:
Mosmq | 23++++++++++++++++-------
Mosmtile.c | 35+++++++++++++++++++++++++++++++++++
2 files changed, 51 insertions(+), 7 deletions(-)

diff --git a/osmq b/osmq @@ -1,10 +1,19 @@ #!${bash}/bin/bash set -e set -o pipefail -curl \ - -s \ - "https://nominatim.openstreetmap.org/search?q=$*&format=json" \ - | jq \ - -r \ - 'map([.lat, .lon, .display_name] | join(", ")) | join("\n")' \ - | fzf -0 -1 --with-nth=3.. +DIR=~/.cache/osmq +URL=$(curl \ + -s \ + "https://nominatim.openstreetmap.org/search?format=json&q=$*" \ + | jq \ + -r \ + 'map([.lat, .lon, .display_name] | join(", ")) | join("\n")' \ + | fzf -0 -1 --with-nth=3.. \ + | osmtile url $OSMQ_ZOOM) +CACHE=$(echo "$URL" | osmtile cache $DIR) +if test ! -f $CACHE; then + mkdir -p $(dirname "$CACHE") + curl -s "$URL" >"$CACHE" +fi +test -f $CACHE +fbi -a $CACHE diff --git a/osmtile.c b/osmtile.c @@ -107,6 +107,39 @@ static int url(int argc, char *argv[]) { return 0; } +static int cache(int argc, char *argv[]) { + char *dir = argv[0]; + if(!dir) goto fail; + for(int c = getchar(); c != ':'; c = getchar()) { + if(EOF == c) { + fprintf(stderr, "expected ':'\n"); + return 1; + } + } + for(int i = 0; i < 2; i++) { + if('/' != getchar()) { + fprintf(stderr, "expected '/'\n"); + return 1; + } + } + for(int c = getchar(); c != '/'; c = getchar()) { + if(EOF == c) { + fprintf(stderr, "expected '/'\n"); + return 1; + } + } + int z, x, y; + if(3 != scanf("%d/%d/%d.png", &z, &x, &y)) { + fprintf(stderr, "expected z/x/y.png\n"); + return 1; + } + printf("%s/%d/%d/%d.png\n", dir, z, x, y); + return 0; + fail: + fprintf(stderr, "unexpected dir %s\n", dir); + return 1; +} + static int version(int argc, char *argv[]) { printf("%s\n", #include "VERSION" @@ -121,6 +154,7 @@ static int help(int argc, char *argv[]) { printf(" x zoom longitude\n"); printf(" y zoom latitude\n"); printf(" url zoom\n"); + printf(" cache dir\n"); printf(" --version\n"); printf(" --help\n"); return 0; @@ -138,6 +172,7 @@ int main(int argc, char *argv[]) { {"x", x}, {"y", y}, {"url", url}, + {"cache", cache}, {"--version", version}, {"--help", help}, {NULL}