mirror of
https://github.com/osm-search/Nominatim.git
synced 2026-02-26 11:08:13 +00:00
Implement geocoding and reverse geocoding with tiger interpolation lines instead of points.
This commit is contained in:
43
mytests/forward_tiger_functional.py
Normal file
43
mytests/forward_tiger_functional.py
Normal file
@@ -0,0 +1,43 @@
|
||||
import numpy as np
|
||||
import urllib2 as url
|
||||
import json as json
|
||||
import random_points_bbox
|
||||
import time
|
||||
|
||||
def test(num):
|
||||
#first get some random points in the bbox
|
||||
aPoints = random_points_bbox.getPoints(num, -100.815, 46.789, -100.717, 46.84)
|
||||
#get the addresses
|
||||
sReverseUrl = "http://localhost/nominatim/reverse.php?format=json&lat=%f&lon=%f"
|
||||
aAddresses = []
|
||||
for point in aPoints:
|
||||
response = url.urlopen(sReverseUrl % (point[1], point[0]))
|
||||
aAddresses.append(json.load(response)['address'])
|
||||
#print aAddresses
|
||||
# now we have all the addresses of the points in a list
|
||||
# lets forward geocode this list
|
||||
sOldUrl = "http://localhost/nominatim_old/search.php?format=json&city=%s&street=%s&addressdetails=1"
|
||||
sLineUrl = "http://localhost/nominatim/search.php?format=json&city=%s&street=%s&addressdetails=1"
|
||||
diff_lat =0
|
||||
diff_lon =0
|
||||
points =0
|
||||
for address in aAddresses:
|
||||
if 'house_number' in address and 'road' in address:
|
||||
responseOld = url.urlopen(sOldUrl % (address['city'], address['house_number']+' '+address['road']))
|
||||
dataOld = json.load(responseOld)
|
||||
print dataOld[0]['display_name']
|
||||
responseLine = url.urlopen(sLineUrl % (address['city'], address['house_number']+' '+address['road']))
|
||||
dataLine = json.load(responseLine)
|
||||
print dataLine[0]['display_name']
|
||||
temp_diff_lat = np.abs(float(dataOld[0]['lat'])-float(dataLine[0]['lat']))
|
||||
temp_diff_lon = np.abs(float(dataOld[0]['lon'])-float(dataLine[0]['lon']))
|
||||
print "diff lat: "+str(temp_diff_lat*111166)+", diff lon: "+str(temp_diff_lon*250456)
|
||||
diff_lat += temp_diff_lat
|
||||
diff_lon += temp_diff_lon
|
||||
points +=1
|
||||
|
||||
print "Average difference in lat degrees with %d elements: %f (meters: %f)" % (points, diff_lat/points, diff_lat/points*111166)
|
||||
print "Average difference in lon degrees with %d elements: %f (meters: %f)" % (points, diff_lon/points, diff_lon/points*250456)
|
||||
# at 46.8 deg: 1 deg lat=111.166, 1 deg lon=250.456
|
||||
|
||||
test(20)
|
||||
Reference in New Issue
Block a user