SpatialParse / scoring.py
Shunfeng Zheng
Upload 89 files
17e77ea verified
import requests
import urllib3
import json
from utils import geoutil
import llm_coding
def get_geojson(ent, arr, centroid):
poly_json = {}
poly_json['type'] = 'FeatureCollection'
poly_json['features'] = []
coordinates= []
coordinates.append(arr)
poly_json['features'].append({
'type':'Feature',
'id': ent,
'properties': {
'centroid': centroid
},
'geometry': {
'type':'Polygon',
'coordinates': coordinates
}
})
return poly_json
def get_coordinates(ent):
request_url = 'https://nominatim.openstreetmap.org/search.php?q= ' +ent +'&polygon_geojson=1&accept-language=en&format=jsonv2'
headers = {
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.3 Safari/605.1.15"
}
page = requests.get(request_url, headers=headers, verify=False)
json_content = json.loads(page.content)
all_coordinates = json_content[0]['geojson']['coordinates'][0]
centroid = (float(json_content[0]['lon']), float(json_content[0]['lat']))
for p in all_coordinates:
p2 = (p[0], p[1])
angle = geoutil.calculate_bearing(centroid, p2)
p.append(angle)
geojson = get_geojson(ent, all_coordinates, centroid)
return geojson['features'][0]['geometry']['coordinates'][0], geojson['features'][0]['properties']['centroid']
predict_path = 'answer/GPT4o.json'
# predict_path = 'dataset/test.json'
target_path = 'dataset/dataset_20.json'
with open(predict_path, 'r') as f:
predit = json.load(f)
with open(target_path, 'r') as f:
target = json.load(f)
result = []
for i in range(len(predit)):
# if llm_coding.execute_steps(i['steps']) ==
print(predit[i])
print(i)
try:
coord1 = llm_coding.execute_steps(predit[i]['steps'])
coord2 = llm_coding.execute_steps(target[i]['steps'])
res = coord1[(max(coord1.keys()))][0] == coord2[(max(coord2.keys()))][0]
except:
res = False
result.append(res)
print(result)
print(result.count(True))