Geocoding street addresses

Geocoding options  

ArcGIS Pro: Geocoding Toolbox Overview

QGIS Geocoding: with MMQGIS and QuickMapServices(to visually verify results)

  • Download & install QGIS for your Mac or PC
  • Click Plugins menu > Manage and Install Plugins…
  • In the Search… box, enter MMQGIS to search and click “Install Plugin” and close the Plugins box
  • A new menu should appear at the top of QGIS: MMQGIS
  • Click MMQGIS menu > Geocode > Geocode with web service

Spatialitics HIPAA-Compliant Geocoder

HIPAA Compliant high-volume geocoder

Texas A&M geocoding services and products

PostgreSQL in-database geocoding: see postgis.net

Postgres databases with PostGIS and data imported from the U.S. Census Bureau can be used as a in-database geocoder

Using a database administration tool such as dBeaver, connect to a pre-built Postgres database

dBeaver image
  • Once connected to the test database for New Hampshire streets, test the geocoder with a single address
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('15 west wheelock, hanover, nh 03755', 1) As g;

Create a table to hold the results:

CREATE TABLE IF NOT EXISTS GeocodedAddresses (
    id_number SERIAL PRIMARY KEY,
    original_address VARCHAR(255),
    rating FLOAT,
    lon FLOAT,
    lat FLOAT,
    stno VARCHAR(50),
    street VARCHAR(255),
    styp VARCHAR(50),
    city VARCHAR(100),
    st CHAR(2),
    zip VARCHAR(20)
);

Next, run the geocoder:

-- Geocoding multiple addresses, insert the addresses using a loop in a DO block
DO $$
DECLARE
    address_list TEXT[] := ARRAY[
        '25 Capitol St, Concord, NH 03301',
        '107 N Main St, Concord, NH 03301',
        '33 Capitol St, Concord, NH 03301',
'64 N Main St, Concord, NH 03301',
    ];
    addr TEXT;
BEGIN
    FOREACH addr IN ARRAY address_list
    LOOP
        INSERT INTO GeocodedAddresses (original_address, rating, lon, lat, stno, street, styp, city, st, zip)
        SELECT 
            addr AS original_address,
            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(addr, 1) As g;
    END LOOP;
END $$;

To view the geocoded results, select all from the table (in dBeaver, you can right-click the resulting table and export it to a CSV)

select * from geocodedaddresses g ;

Geocoded output

To compare results to base maps, CSV files with latitude and longitude values can be imported to QGIS or ArcGIS Pro