Geocoding
I've done work before on geocoding and geocoders but somehow never wrote a separate page for it. Recapturing what I've done now...
Geocoding Services
Esri
Two options:
- Build your own and host it in ArcGIS Enterprise.
- Use their service [1]
Nominatim
Nominatim is the OpenStreetMap geocoder. If I put the right data into OSM, it works great for me. For example, I currently live in the Anderson Ungerman duplex. I added it to OSM so now I can find my way home! Updates are near instantaneous, if you add an address you can immediately start searching for it in Nominatim. I have been adding historic houses around Astoria, as a hobby.
Usage: https://operations.osmfoundation.org/policies/nominatim/ No fees but limit your requests to one per second. Most likely not a problem.
API: https://nominatim.org/release-docs/develop/api/Overview/
See also https://locationiq.com/ (10,000 requests/day, 2 per second) and OpenCage (2500 requests/day, 1 per second).
I am just not a Google fan. I cannot update their database, so if anything fails, I cannot fix it in a timely or controllable fashion. It's hard to see what limits are and what rates are. I know I could find it but I don't care right now. I've tried it out in the past, in fact I have a page with a demo in Wiki Maps. Go forth and research it yourself: https://developers.google.com/maps/documentation/geocoding/intro
OpenCage
I set up an account using Github 6a9af53028354dbfbf92b0dde5dc2c4a
OpenCage is a fusion of many services. You can use up to 2500 geocodes per day for free, not a problem AT ALL for my use cases!
Because it's a fusion, you can search for many things, not just OpenStreetMap addresses.
My extensive test data
A mix of addresses and descriptions
data | OpenCage | Esri | Nominatim | LocationIQ | |
32534 Riverpoint Dr, OR | yes | yes | |||
Anderson Ungerman | yes | yes | |||
97103 | yes | yes | |||
Sutton Mountain | yes | yes | |||
Soapstone Lake | yes | yes | |||
Knappa | yes | yes | |||
Hammond, OR | yes | yes | |||
Battery Russell | yes | yes |