|
from apis import GoogleDistanceMatrix |
|
import os |
|
import json |
|
from tqdm import tqdm |
|
import csv |
|
|
|
os.environ["http_proxy"] = "http://127.0.0.1:7890" |
|
os.environ["https_proxy"] = "http://127.0.0.1:7890" |
|
gdm = GoogleDistanceMatrix() |
|
|
|
|
|
|
|
|
|
def load_line_json_data(filename): |
|
data = [] |
|
with open(filename, 'r', encoding='utf-8') as f: |
|
for line in f.read().strip().split('\n'): |
|
unit = json.loads(line) |
|
data.append(unit) |
|
return data |
|
|
|
|
|
def get_city_list(days, deparure_city, destination): |
|
city_list = [] |
|
city_list.append(deparure_city) |
|
if days == 3: |
|
city_list.append(destination) |
|
else: |
|
city_set = open('/home/xj/toolAugEnv/code/toolConstraint/database/background/citySet_with_states.txt').read().split('\n') |
|
state_city_map = {} |
|
for unit in city_set: |
|
city, state = unit.split('\t') |
|
if state not in state_city_map: |
|
state_city_map[state] = [] |
|
state_city_map[state].append(city) |
|
for city in state_city_map[destination]: |
|
if city != deparure_city: |
|
city_list.append(city + f"({destination})") |
|
return city_list |
|
|
|
if __name__ == '__main__': |
|
|
|
org_dest_list = [] |
|
query_list =load_line_json_data('/home/xj/toolAugEnv/code/toolConstraint/data/query/all.jsonl') |
|
info_list = [] |
|
|
|
for query in tqdm(query_list): |
|
|
|
destination_city_list = get_city_list(query['days'],query['org'],query['dest']) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for city_1 in tqdm(destination_city_list): |
|
for city_2 in destination_city_list: |
|
if city_1 != city_2 and [city_1,city_2] not in org_dest_list: |
|
org_dest_list.append([city_1,city_2]) |
|
info_list.append(gdm.run_for_build_database(city_1,city_2)) |
|
|
|
|
|
|
|
with open('/home/xj/toolAugEnv/code/toolConstraint/database/background/distance.csv', 'w', newline='') as csvfile: |
|
fieldnames = ['origin', 'destination', 'cost', 'duration', 'distance'] |
|
writer = csv.DictWriter(csvfile, fieldnames=fieldnames) |
|
writer.writeheader() |
|
for unit in info_list: |
|
writer.writerow(unit) |
|
|
|
|
|
|