geocode-csv

Crates.iogeocode-csv
lib.rsgeocode-csv
version1.4.0
sourcesrc
created_at2019-11-19 14:45:50.92562
updated_at2024-03-26 11:24:36.326206
descriptionCLI tool to bulk geocode CSV data using the Smarty API or libpostal
homepage
repositoryhttps://github.com/faradayio/geocode-csv
max_upload_size
id182459
size243,089
Eric Kidd (emk)

documentation

https://github.com/faradayio/geocode-csv

README

geocode-csv: Geocode a CSV file using libpostal or the Smarty API

(This project is not associated with Smarty.)

WARNING: This project geocodes CSV files thousands of rows per second, which can use up your Smarty quota very quickly. This may cost you money.

If you have a CSV file that appears as follows:

name,street1,street2,city,state,zip
Resident,1600 Pennsylvania Avenue NW,,Washington DC,20500

...and an address_spec.json file that appears as follows:

{
  "geocoded": {
    "street": ["street1", "street2"],
    "city": "city",
    "state": "state",
    "zipcode": "zip"
  }
}

...then you can geocode it using:

# Set up credentials.
export SMARTY_AUTH_ID=...
export SMARTY_AUTH_TOKEN=...

# Geocode the CSV.
geocode-csv --spec address_spec.json < in.csv > out.csv

This will add a series of columns starting with geocoded_, which will contain various postal delivery information, plus estimated latitude and longitude. If geocoding succeeds, geocode-csv will return 0. If it fails, it will return a non-zero error code and print a human-readable error message to standard error.

You can geocode multiple addresses per row as follows:

{
  "geocoded_shipping": {
    /* ... */
  },
  "geocoded_billing": {
    /* ... */
  }
}

This will insert two sets of columns, one beginning with geocoded_shipping_ and the other with geocoded_billing_.

Build

You'll need to run:

git submodule update --init

...to pull in the C++ source for libpostal.

You will also need to install protoc:

# Linux.
sudo apt install protobuf-compiler

# Mac.
brew install protobuf

A note about Macs

We provide pre-built Mac binaries for Intel- and M1-based Macs. These binaries use "ad-hoc" signatures, so you may need to set appropriate security settings or run:

xattr -d com.apple.quarantine geocode-csv
Commit count: 130

cargo fmt