Geocoding Guidance

Geocoding assigns spatial coordinates to location information such as address strings or place names. The GIS toolchain needs patient locations as coordinates (or as a geography such as a tract or ZIP code) with dates, but the working group does not develop geocoding software. This page summarizes the options and what to consider before choosing one.

Geocoding is optional and sits outside the Gaia core. A site that already holds ZIP codes or census tracts can start from those; the Gaia overview describes the coarser-to-finer options.


Methods and what they depend on

Process or method Dependencies Geocoders
Parcel-based geocoding A building parcel layer Nominatim, ArcGIS
Interpolation-based geocoding (U.S. addresses only) Roadway network; road-segment address ranges PostGIS, DeGAUSS, ArcGIS
ZIP-code geocoding ZIP/postal code polygons; ZCTA crosswalk (ZIP to tract, ZIP to county) DeGAUSS, ArcGIS
City or administrative-unit geocoding Access to a gazetteer API
Field observations GPS receiver (device calibration)


The four geocoders compared

DeGAUSS and the PostGIS TIGER geocoder are optional components of the Gaia Docker deployment and run locally. Nominatim has been used as an alternative. ArcGIS Pro is a commercial tool shown for comparison: it is not part of the toolchain, and it sends addresses to the vendor’s servers.

Geocoder Match score Match CRS Results Depends on census vintage Size for USA deployment
PostGIS TIGER 0 (good) to 100 (bad) NAD83 single yes about 233 GB
DeGAUSS 0 (bad) to 1 (good); precision as range, street, intersection, zip, city NAD83 multiple yes about 10 GB
ArcGIS Pro 0 (bad) to 100 (good); precision as address type WGS84 single no about 53 GB
Nominatim no match score WGS84 multiple no about 335 GB

PostGIS TIGER and DeGAUSS cover U.S. addresses only; Nominatim (OpenStreetMap) is not limited to the U.S.


Comparing geocoders

Geocoders differ in how close they land to the true location and in how often they match at all. Comparing them on a sample of addresses with known locations, and recording versions, reference-data dates and preprocessing, is the way to choose one for a site. The comparison data for one such exercise are in geocode-benchmark-2023.

Example geocoder results against the original locations
Example geocoder results against the original locations

Two example addresses: the green point is the original location, the others are each geocoder’s result.


An example workflow with DeGAUSS

  1. Prepare addresses: standardize for the geocoder’s input (for example USPS Publication 28 for DeGAUSS) and check the parsed address fields
  2. Geocode, keeping quality flags
  3. Review the output: spatial coordinates and accuracy metrics
  4. Quality control: completeness, conformance and plausibility
  5. Accept geocodes for the analyses needed

One address through the workflow:

Where and when:     1410 NE Campus Pkwy, Seattle, WA 98195

Geocoding input:    {'location_id': 1, 'Addr1': '1410 NE Campus Pkwy', 'Addr2': '',
                     'City': 'Seattle', 'State': 'WA', 'Zip': '98195'}

Geocoding output:   {'location_id': 1, 'Lat': '47.6567171', 'Lng': '-122.3066182',
                     'Match_score': '0.8', 'Precision': 'range', 'geocode_result': 'geocoded'}

Accuracy considerations: whether the match is interpolated or parcel-based, the spatial unit of the analysis (tract, city), address review and correction, and positional error where ground truth exists.


Privacy and cybersecurity considerations

  • Software and middleware: information security and dependency vulnerabilities
  • Client-server architecture: query logging, IP address logging, whether the geocoder runs inside the enclave or needs internet API calls, and query speed
  • Data flow: encryption, retention in external systems, and deletion clauses


More