
408
|
Chapter 7, Names and Places
#80 Automatically Geocode U.S. Addresses
HACK
-> result;
# assume we only get one address
print $result->[0]->{lat} . ',' . $result->[0]->{long};
print "\n\n";
}
# just assume that the shop name is the line before the address
$shop_name = $st;
}
To run this hack, just execute the script, which produces the following
results:
Rich-Gibson-iBook:~/wa/geohacks/geocode_web_service rich$ ./divecode.pl
Aquatic Dreams Scuba Center,1212 Kansas Avenue, Modesto, CA 95351,37.
647585,-121.028297
Bamboo Reef (Monterey),614 Lighthouse Avenue, Monterey, CA 93940,36.613716,-
121.901494
Bamboo Reef,584 4th Street, San Francisco, CA 94107,37.778529,-122.396631
...
Out of 26 “legitimate” addresses, all but four were successfully geocoded.
The remaining four didn’t work because the addresses were broken across
extra lines in the original document, and I didn’t write a very good parser.
Better results could be obtained by using the
HTML::Parser module and
spending a bit more time studying this particular data set, but the goal was
to illustrate how easy it can be to get 85% success with such a simplistic
approach (and 37 lines of Perl).
Happy geocoding!
Setting up your own Geocoding server
Do you have too many addresses to geocode, or want the control of running
your own server? You can set up your own geocoder with the Geocoder
code.
You need to install the Perl Module
Geo::Coder::US from CPAN, ...