node package manager



Geocodes a file (JSON or CSV). Requires a Google-style geocoder.

For example:

Given a CSV,

address,              city,       state, zip
135 Morrisey Blvd,    Boston,     MA,    02125
1150 15th Street NW,  Washington, DC,    20071
242 West 41st Street, New York,   NY,    10036 

file-geocoder adds several geocoding fields (what's the deal with GeocodeAdminAreaLevel1?):

address,              city,       state, zip,   GeocodeLat, GeocodeLng, GeocodeStatus, GeocodeLocality, GeocodeAdminAreaLevel1, GeocodeCountry, GeocodeAddress
135 Morrisey Blvd,    Boston,     MA,    02125, 42.293929,  -71.047218, ROOFTOP,       Boston,          MA,                     United States,  "135 Morrisey Blvd, Boston, MA, 02125"
1150 15th Street NW,  Washington, DC,    20071, 38.904711,  -77.034647, ROOFTOP,       Washington,      DC,                     United States,  "1150 15th Street NW, Washington, DC, 20071"
242 West 41st Street, New York,   NY,    10036, 40.755819,  -73.988402, ROOFTOP,       New York,        NY,                     United States,  "242 West 41st Street, New York, NY, 10036"

Usage examples

Geocode a JSON file, hit http://localhost:8080 (how to setup a local geocoder):

file-geocoder \
    -f myaddresses.json \
    -a address,city,state,zip # list of fields containing the address, in order 

Geocode a CSV file, hit Google, throttle geocoding requests to 1 per second (read up on their usage limits):

file-geocoder \
    -f myaddresses.csv \
    -a address,city,state,zip # list of fields containing the address, in order 
    -h # geocoding host 
    -p 80 # geocoding port 
    -s 1 # time (in seconds) to throttle the geocoding requests 

Your laptop battery died before the geocoder finished. No problem. file-geocoder stores its work on a .db file. Let's resume the geocoding:

file-geocoder \
    -d myaddresses.db # database 
    -a address,city,state,zip # list of fields containing the address, in order 

Progress bar!

Progress bar!


npm install file-geocoder -g


file-geocoder imports the JSON/CSV file to a NeDB datastore before geocoding. For performance reasons, NeDB keeps a copy of the whole database in memory. In other words, file-geocoder is a memory hog. If the JSON file is 1GB, you better have at least that much RAM.