Installing PostGIS TIGER Geocoder
July 15th, 2012Start and connect to a Ubuntu 12.04 vagrant instance.
$ sudo apt-get update && sudo apt-get upgrade
$ sudo apt-get install python-software-properties unzip
$ sudo apt-add-repository ppa:sharpie/for-science
$ sudo apt-add-repository ppa:sharpie/postgis-nightly
$ sudo apt-get update
$ sudo apt-get install postgresql-9.1-postgis
$ sudo apt-get install postgresql-contrib-9.1
$ http://www.postgis.org/download/postgis-2.0.2SVN.tar.gz
$ tar -zxvf postgis-2.0.2SVN.tar.gz
$ cd postgis-2.0.2SVN/extras/tiger_geocoder/tiger_2010
Set up an empty PostGIS database:
$ sudo su - postgres
$ createuser --superuser geocoder
$ createdb --owner=geocoder geocoder
$ psql geocoder
geocoder=# \password geocoder
geocoder=# CREATE EXTENSION postgis;
geocoder=# CREATE EXTENSION fuzzystrmatch;
geocoder=# ALTER DATABASE geocoder SET search_path=public, tiger;
geocoder=# \q
$ ./create_geocode.sh
Verify that address normalization works:
$ psql geocoder
geocoder=# SELECT pprint_addy(normalize_address('202 East Fremont Street, Las Vegas, Nevada 89101')) As pretty_address;
pretty_address
-----------------------------------
202 E Fremont St, Vegas, NV 89101
(1 row)
Generate a loader script:
psql geocoder -c "SELECT loader_generate_script(ARRAY['IL'], 'sh');" -A -o ILdata.sh
Run the loader script:
$ psql geocoder -c "SELECT loader_generate_script(ARRAY['IL'], 'sh');" -A -o ILdata.sh
$ chmod +x ./ILdata.sh
Edit the ILdata.sh file:
- Remove the first line that says “loader_generate_script”
- Change “export PGBIN=” to “export PGBIN=/usr/bin/”
- Change PGUSER and PGPASSWORD to “geocoder”
- Change all references to /temp to /tmp
Run the revised ILdata.sh file:
$ ./ILdata.sh
Fill in missing indexes:
$ psql geocoder -c "SELECT install_missing_indexes();"
Test that geocoding works:
geocoder=# SELECT g.rating, ST_X(g.geomout) As lon, ST_Y(g.geomout) As lat,
(addy).address As stno, (addy).streetname As street,
(addy).streettypeabbrev As styp, (addy).location As city, (addy).stateabbrev As st,(addy).zip
FROM geocode('100 Hinman Ave, Evanston, IL 60202') As g;
rating | lon | lat | stno | street | styp | city | st | zip
--------+-------------------+------------------+------+--------+------+----------+----+-------
9 | -87.6774282132404 | 42.033033193792 | 801 | Hinman | Ave | Evanston | IL | 60202
11 | -87.6760688731306 | 42.0493828931995 | 1801 | Hinman | Ave | Evanston | IL | 60201
(2 rows)
Source Links: http://trac.osgeo.org/postgis/wiki/UsersWikiPostGIS20Ubuntu1204, http://www.vagrantbox.es/, http://wiki.bitnami.org/Components/PostgreSQL/PostGIS_Quick_Start_Guide#How_can_I_install_Tiger_Geocoder.3f