You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
24 lines
765 B
24 lines
765 B
import numpy as np
|
|
import os
|
|
import csv
|
|
path = os.path.dirname(os.path.abspath(__file__))
|
|
# locally cache cities from
|
|
# https://github.com/thampiman/reverse-geocoder
|
|
csv_file_name = path + '/rg_cities1000.csv'
|
|
|
|
# right hand drive is when the steering wheel is on the right of the car
|
|
# left hand traffic is when cars driver on the left side of the road
|
|
LHT_COUNTRIES = ['AU', 'IN', 'IE', 'JP', 'MU', 'MY', 'NZ', 'UK', 'ZA']
|
|
|
|
|
|
def get_city(lat, lon):
|
|
cities = np.array(list(csv.reader(open(csv_file_name))))[1:]
|
|
positions = cities[:,:2].astype(np.float32)
|
|
idx = np.argmin(np.linalg.norm((positions - np.array([lat, lon])), axis=1))
|
|
return cities[idx]
|
|
|
|
|
|
def is_lht(lat, lon):
|
|
city = get_city(lat, lon)
|
|
country = city[-1]
|
|
return country in LHT_COUNTRIES
|
|
|