add nominatim-based extract-geo script
parent
817a61c2c7
commit
6b0366ca9e
|
@ -1,5 +1,6 @@
|
|||
import csv
|
||||
import re
|
||||
import time
|
||||
import click
|
||||
import requests
|
||||
from flask.cli import AppGroup
|
||||
|
@ -97,3 +98,33 @@ def extract_places(apikey):
|
|||
print(' -> failed (%s)' % (exc,))
|
||||
|
||||
db.session.commit()
|
||||
|
||||
@cli.command('extract-geo')
|
||||
def extract_geo():
|
||||
places = FaceshieldRequest.query.filter(FaceshieldRequest.shipping_latitude == None, FaceshieldRequest.shipping_postalcode != None, FaceshieldRequest.status != Status.rejected, FaceshieldRequest.status != Status.spam).all()
|
||||
for data in places:
|
||||
try:
|
||||
query = {
|
||||
'postalcode': data.shipping_postalcode,
|
||||
'format': 'json',
|
||||
'country': 'Poland',
|
||||
}
|
||||
|
||||
if data.shipping_street:
|
||||
query['street'] = data.shipping_street
|
||||
|
||||
print(' * [%s] %r' % (data.id, query))
|
||||
resp = requests.get('https://nominatim.openstreetmap.org/search', params=query)
|
||||
resp_json = resp.json()
|
||||
if not resp_json:
|
||||
print(' -> not found')
|
||||
else:
|
||||
print(' -> %r' % (resp_json[0],))
|
||||
data.shipping_latitude = resp_json[0]['lat']
|
||||
data.shipping_longitude = resp_json[0]['lon']
|
||||
db.session.commit()
|
||||
|
||||
except Exception as exc:
|
||||
print(' -> failed (%s)' % (exc,))
|
||||
|
||||
time.sleep(1.0)
|
||||
|
|
Loading…
Reference in New Issue