ccc-map/lookup.py

46 lines
1.8 KiB
Python
Executable File

#!/usr/bin/env python3
from geopy import Nominatim
# ~ import json
import sys
# ~ fn="ct-csv"
if len(sys.argv) == 2:
fn = sys.argv[1]
else:
print("expecting one argument: csv-file.");
print("received "+str(len(sys.argv))+" argument(s): "+str(sys.argv));
sys.exit(1) # exit with error
# for retreiving geo coordinates from addresses
geolocator = Nominatim(user_agent="my-mapper")
# lat: 0=111,1km,1=11km,2=1km… lng: 0=70km,1=7km,2=.7km…
precision = 2
# get data from file
with open( fn, 'r' ) as fp:
for place in fp:
#error handling: expect
arrAddress = place.split(",")
strAddress = ",".join(arrAddress[1:4])
# ~ print( strAddress )
location = geolocator.geocode( strAddress )
if location is not None: # its a class
# todo: ceil coords to hide true location in format string
# ~ strCoordPlace = '{:s},{:.6f},{:.6f}'.format( arrAddress[3], location.latitude, location.longitude )
geojson = '{{"type":"Feature","geometry":{{"type":"Point","coordinates":[{:.'+str(precision)+'f},{:.'+str(precision)+'f}]}},"properties":{{"name":"{:s}","marker":"{:s}"}}}}';
strCoordPlace = geojson.format( location.latitude, location.longitude, arrAddress[3], fn.split("-")[0] )
# ~ {"type": "Feature","geometry": {"type": "Point","coordinates":[125.6, 10.1]},"properties":{"name":"Dinagat Islands"}}
print ( strCoordPlace )
# exit fine
sys.exit(0)
# ~ m = folium.Map( # etc..)
# ~ m.save("filename.png")
# ~ https://github.com/python-visualization/folium/issues/35#issuecomment-164784086
# ~ https://github.com/wbkd/leaflet-mapshot
# ~ https://stackoverflow.com/questions/44800396/python-ipyleaflet-export-map-as-png-or-jpg-or-svg
# ~ m = folium.Map(location=[51, 13], zoom_start=5, tiles='Stamen Toner') # Mapbox Bright , CartoDB Positron