added optional geocoder param
git-svn-id: https://polipoly.googlecode.com/svn/trunk@13 1885ebd5-0a40-0410-88a4-770918bee656
This commit is contained in:
parent
9923cd1a09
commit
feb9f6ca11
@ -9,9 +9,10 @@ Be sure to set GMAPS_API_KEY and PATH_TO_CDFILES appropriately:
|
|||||||
GMAPS_API_KEY: Google Maps key (http://www.google.com/apis/maps/signup.html)
|
GMAPS_API_KEY: Google Maps key (http://www.google.com/apis/maps/signup.html)
|
||||||
PATH_TO_CDFILES: copy of cd99 (http://www.census.gov/geo/www/cob/cd110.html)
|
PATH_TO_CDFILES: copy of cd99 (http://www.census.gov/geo/www/cob/cd110.html)
|
||||||
|
|
||||||
The CGI script takes two parameters:
|
The CGI script takes three parameters:
|
||||||
addr -- address string in any format the google geocoder can handle
|
addr -- address string in any format the google geocoder can handle
|
||||||
output -- optional parameter specifying formatting ('xml' or default 'json')
|
output -- optional parameter specifying formatting ('xml' or default 'json')
|
||||||
|
geocoder -- optional parameter specifying which geocoder to use
|
||||||
'''
|
'''
|
||||||
|
|
||||||
import cgi
|
import cgi
|
||||||
@ -20,7 +21,7 @@ from polipoly import AddressToDistrictService, GeocodingError
|
|||||||
|
|
||||||
PATH_TO_CDFILES = 'congdist/cd99_110'
|
PATH_TO_CDFILES = 'congdist/cd99_110'
|
||||||
GEOCODER = AddressToDistrictService.GEOCODER_US
|
GEOCODER = AddressToDistrictService.GEOCODER_US
|
||||||
GMAPS_API_KEY = 'define-me'
|
GMAPS_API_KEY = None
|
||||||
|
|
||||||
class ApiException(Exception):
|
class ApiException(Exception):
|
||||||
|
|
||||||
@ -46,6 +47,13 @@ def main():
|
|||||||
fields = cgi.FieldStorage()
|
fields = cgi.FieldStorage()
|
||||||
addr = fields.getvalue('address') or ''
|
addr = fields.getvalue('address') or ''
|
||||||
output = fields.getvalue('output')
|
output = fields.getvalue('output')
|
||||||
|
geocoder_name = fields.getvalue('geocoder')
|
||||||
|
if geocoder_name == 'googlemaps' and GMAPS_API_KEY:
|
||||||
|
geocoder = AddressToDistrictService.GEOCODER_GMAPS
|
||||||
|
geocoder_name = 'googlemaps'
|
||||||
|
else:
|
||||||
|
geocoder = AddressToDistrictService.GEOCODER_US
|
||||||
|
geocoder_name = 'geocoder.us'
|
||||||
|
|
||||||
# discard blank addresses as error 301
|
# discard blank addresses as error 301
|
||||||
if re.match('^\s*$', addr):
|
if re.match('^\s*$', addr):
|
||||||
@ -75,21 +83,22 @@ def main():
|
|||||||
for dist in districts])
|
for dist in districts])
|
||||||
print 'Content-type: text/xml\n'
|
print 'Content-type: text/xml\n'
|
||||||
print '''<results>
|
print '''<results>
|
||||||
|
<geocoder>%s</geocoder>
|
||||||
<address>%s</address>
|
<address>%s</address>
|
||||||
<latitude>%s</latitude>
|
<latitude>%s</latitude>
|
||||||
<longitude>%s</longitude>
|
<longitude>%s</longitude>
|
||||||
<districts>
|
<districts>
|
||||||
%s
|
%s
|
||||||
</districts>
|
</districts>
|
||||||
</results>''' % (addr, lat, lng, dist_str)
|
</results>''' % (geocoder_name, addr, lat, lng, dist_str)
|
||||||
|
|
||||||
# JSON output (default)
|
# JSON output (default)
|
||||||
else:
|
else:
|
||||||
dist_str = ','.join(['{"state":"%s", "district":"%s"}' % dist
|
dist_str = ','.join(['{"state":"%s", "district":"%s"}' % dist
|
||||||
for dist in districts])
|
for dist in districts])
|
||||||
print 'Content-type: application/json\n'
|
print 'Content-type: application/json\n'
|
||||||
print '''{"address":"%s", "latitude":"%s", "longitude":"%s",
|
print '''{"geocoder":"%s", "address":"%s", "latitude":"%s", "longitude":"%s",
|
||||||
"districts": [ %s ] }''' % (addr, lat, lng, dist_str)
|
"districts": [ %s ] }''' % (geocoder_name, addr, lat, lng, dist_str)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
Loading…
Reference in New Issue
Block a user