# -*- coding: utf-8 -*-
"""核对 drive 矩阵是否与单点 /route 一致（怀疑 table 索引错位）。"""
import io, json, time, urllib.request

GEO = r"D:\workbbbbbb\build\geodb.json"
OUT = r"D:\workbbbbbb\build\_vchk.txt"
BASE = 'https://router.project-osrm.org/route/v1/driving/'
OPENER = urllib.request.build_opener(urllib.request.ProxyHandler({}))
db = json.load(io.open(GEO, encoding='utf-8'))
orgs = {o['c']: o for o in db['orgs']}
log = []


def route(lng1, lat1, lng2, lat2):
    url = '%s%.6f,%.6f;%.6f,%.6f?overview=false' % (BASE, lng1, lat1, lng2, lat2)
    req = urllib.request.Request(url, headers={'User-Agent': 'paiban-tool/1.0'})
    with OPENER.open(req, timeout=40) as r:
        js = json.loads(r.read().decode('utf-8'))
    rt = (js.get('routes') or [None])[0]
    return (round(rt['distance'] / 1000.0, 1), round(rt['duration'] / 60.0)) if rt else (None, None)


cases = [
    ('桦枫居', 'T710950000'), ('桦枫居', 'T710220000'), ('桦枫居', 'T710630000'),
    ('崇盛里', 'T710220000'), ('吉鸿家园', 'T706020000'),
]
for hn, code in cases:
    h = [x for x in db['homes'] if x['n'] == hn][0]
    o = orgs[code]
    d, t = route(h['lng'], h['lat'], o['lng'], o['lat'])
    log.append('%s -> %s(%s)  单点=%s km/%s min  库drive=%s min=%s  直线=%s' % (
        hn, o['n'], code, d, t,
        db['drive'].get(hn, {}).get(code), db['driveMin'].get(hn, {}).get(code),
        db['dist'].get(hn, {}).get(code)))
    time.sleep(1.1)
io.open(OUT, 'w', encoding='utf-8').write(chr(10).join(log))
print('ok')
