diff options
Diffstat (limited to 'src/osm_where.py')
-rwxr-xr-x | src/osm_where.py | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/src/osm_where.py b/src/osm_where.py index 52e7b9b..3d466a3 100755 --- a/src/osm_where.py +++ b/src/osm_where.py @@ -1,19 +1,22 @@ #!/usr/bin/env python3 import argparse +import urllib.parse import xdg.BaseDirectory from OSMPythonTools.cachingStrategy import CachingStrategy, JSON -from OSMPythonTools.overpass import Overpass +from OSMPythonTools.api import Api -CachingStrategy.use(JSON, cacheDir=xdg.BaseDirectory.save_cache_path('osm_where')) +from shapely.geometry import shape + +CachingStrategy.use(JSON, cacheDir=xdg.BaseDirectory.save_cache_path("osm_where")) import logging logging.getLogger("OSMPythonTools").setLevel(logging.ERROR) -def get_URI(name, area, lang): +def parse_name(name, area, lang): overpass = Overpass() result = overpass.query( @@ -26,16 +29,30 @@ def get_URI(name, area, lang): return None +def parse_URL(url): + api = Api() + + parsed_url = urllib.parse.urlparse(url) + way = api.query(parsed_url.path) + geom = shape(way.geometry()) + return geom.centroid.y, geom.centroid.x + + def main(): parser = argparse.ArgumentParser( prog="osm_where", description="Get geo: URI for given locality from OSM" ) - parser.add_argument("name") + parser.add_argument("url", nargs="?", help="URL of the location") + parser.add_argument("-n", "--name", help="name of the location") parser.add_argument("-a", "--area", default="UA", help="ISO 3166 area code") parser.add_argument("-l", "--lang", default="en", help="ISO 639-1 language code") args = parser.parse_args() - geo = get_URI(args.name, args.area, args.lang) + if args.name: + geo = parse_name(args.name, args.area, args.lang) + else: + geo = parse_URL(args.url) + if geo: print(f"geo:{geo[0]},{geo[1]}") |