PostGIS
Name
Geocode_Intersection — Takes in 2 streets that intersect and a state,
city, zip, and outputs a set of possible locations on the first cross
street that is at the intersection, also includes a geomout as the point
location in NAD 83 long lat, a normalized_address
(addy) for each
location, and the rating. The lower the rating the more likely the
match. Results are sorted by lowest rating first. Can optionally pass in
maximum results, defaults to 10. Uses Tiger data (edges, faces, addr),
PostgreSQL fuzzy string matching (soundex, levenshtein).
Synopsis
setof record +`*`+geocode_intersection
*(`text `+ roadway1+
, text
+ roadway2+
, text + in_state+
, text + in_city+
, text + in_zip+
,
integer max_results=10
, norm_addy OUT addy
, geometry
OUT geomout
, integer OUT rating`
)`;
Description
Takes in 2 streets that intersect and a state, city, zip, and outputs a
set of possible locations on the first cross street that is at the
intersection, also includes a point geometry in NAD 83 long lat, a
normalized address for each location, and the rating. The lower the
rating the more likely the match. Results are sorted by lowest rating
first. Can optionally pass in maximum results, defaults to 10. Returns
normalized_address
(addy) for each, geomout as the point location in
nad 83 long lat, and the rating. The lower the rating the more likely
the match. Results are sorted by lowest rating first. Uses Tiger data
(edges,faces,addr), PostgreSQL fuzzy string matching
(soundex,levenshtein)
Availability: 2.0.0
Examples: Basic
The below examples timings are on a 3.0 GHZ single processor Windows 7 machine with 2GB ram running PostgreSQL 9.0/PostGIS 1.5 loaded with all of MA state Tiger data loaded. Currently a bit slow (3000 ms)
Testing on Windows 2003 64-bit 8GB on PostGIS 2.0 PostgreSQL 64-bit Tiger 2011 data loaded — (41ms)
SELECT pprint_addy(addy), st_astext(geomout),rating
FROM geocode_intersection( 'Haverford St','Germania St', 'MA', 'Boston', '02130',1);
pprint_addy | st_astext | rating
----------------------------------+----------------------------+--------
98 Haverford St, Boston, MA 02130 | POINT(-71.101375 42.31376) | 0
Even if zip is not passed in the geocoder can guess (took about 3500 ms on the windows 7 box), on the windows 2003 64-bit 741 ms
SELECT pprint_addy(addy), st_astext(geomout),rating
FROM geocode_intersection('Weld', 'School', 'MA', 'Boston');
pprint_addy | st_astext | rating
-------------------------------+--------------------------+--------
98 Weld Ave, Boston, MA 02119 | POINT(-71.099 42.314234) | 3
99 Weld Ave, Boston, MA 02119 | POINT(-71.099 42.314234) | 3