forked from vv01f/ccc-map
debug info to stderr, fix geojson list
This commit is contained in:
parent
a88f731dde
commit
40fd4a8ce0
|
@ -1,7 +1,7 @@
|
|||
#!/usr/bin/env sh
|
||||
for file in $(ls *-csv) ; do
|
||||
out=$(echo ${file}|cut -d- -f1)
|
||||
test -e ${out}".geojson" && { echo "file exists: "${out}", skipping."; continue; }
|
||||
out=$(echo ${file}|cut -d- -f1)".geojson"
|
||||
test -e ${out} && { echo "file exists: "${out}", skipping."; continue; }
|
||||
echo ./lookup.py ${file}
|
||||
./lookup.py ${file} > ${out}".geojson"
|
||||
./lookup.py ${file} 2>/dev/null > ${out}
|
||||
done
|
||||
|
|
28
lookup.py
28
lookup.py
|
@ -1,37 +1,55 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
from __future__ import print_function
|
||||
from geopy import Nominatim
|
||||
# ~ import json
|
||||
import sys
|
||||
|
||||
import sys
|
||||
|
||||
# debug print to stderr, https://stackoverflow.com/questions/5574702/how-to-print-to-stderr-in-python
|
||||
def eprint(*args, **kwargs):
|
||||
print(*args, file=sys.stderr, **kwargs)
|
||||
|
||||
# ~ fn="ct-csv"
|
||||
if len(sys.argv) == 2:
|
||||
fn = sys.argv[1]
|
||||
else:
|
||||
print("in case you do know know what you are doing, better call via e.g. `create-geojson.sh`.\n");
|
||||
print("expecting one argument: csv-file.");
|
||||
print("received "+str(len(sys.argv))+" argument(s): "+str(sys.argv));
|
||||
eprint("in case you do know know what you are doing, better call via e.g. `create-geojson.sh`.\n");
|
||||
eprint("expecting one argument: csv-file.");
|
||||
eprint("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
|
||||
|
||||
# convert csv to geojson
|
||||
|
||||
firstline = true
|
||||
# start json list
|
||||
print ( "[" )
|
||||
# get data from file
|
||||
with open( fn, 'r' ) as fp:
|
||||
for place in fp:
|
||||
#error handling: expect
|
||||
arrAddress = place.split(",")
|
||||
strAddress = ",".join(arrAddress[2:5])
|
||||
print( strAddress )
|
||||
eprint( "looking up: "+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[1], fn.split("-")[0] )
|
||||
# ~ {"type": "Feature","geometry": {"type": "Point","coordinates":[125.6, 10.1]},"properties":{"name":"Dinagat Islands"}}
|
||||
if firstline == false:
|
||||
print (",")
|
||||
else
|
||||
firstline = false
|
||||
print ( strCoordPlace )
|
||||
# end json list
|
||||
print ( "]" )
|
||||
|
||||
# exit fine
|
||||
sys.exit(0)
|
||||
|
|
Loading…
Reference in New Issue