-
Notifications
You must be signed in to change notification settings - Fork 50
Geocoding
This is the one hard part about going open source geo.
- Yonder - Compare geocoding results from multiple providers.
- GeoPy - Python library has a Yahoo and some opensource options.
- https://github.com/straup/js-geocoder
- https://github.com/straup/js-geolocation
- https://github.com/straup/js-reversegeocoder
- Edina Unlock - Excels with historic places but also uses modern UK data, and global modern places via GeoNames.org and Natural Earth.
- pySHPgeocode - This Python package reverse geocodes data points to shapefile regions. It is developed primarily for assigning administrative region codes to a set of geo coordinates (in standard latitude/longitude). All you need is a shapefile of the regions you want to geocode to.
- OSM Nominatim - Used in OpenStreetMap, tied to OSM data.
- OSM Imposm.geocoder - Optimized for German addresses.
- MapQuest's version of Nominatim - Warning, assumes USA addresses.
- GeoCommons GeoCoder - an open-source Geocoder using open data mostly just for the US using Census geography files
- Gisgraphy - an open-source Geocoder using open data
###Not a batch geocoder, but useful:
- http://aaronland.info/iamhere/ - Decimal degrees, DDMMSS, geohash, and WOE ID place reverse geocode.
- Geonames Reverse Geocoder services list
###What's in a location?###
Location Types:
-
Street Address: - An address consists of a street number, a street name, and a quadrant (NE, NW, SE, SW). The address number and street name are required.
Example: 441 4th ST NW
Input, gazetter: in a point XY, matches free text to points, polys, or street segment lines with addy ranges.
Result: New point location. The NAME normalized version of the address, including City, State, [Country], and ZIP+[4]. Optional: aggregated form placed back onto the POLYs/POINTS/etc used for matching.
-
Intersection: - An Intersection consists of two streets.
Example: 14th ST NW and Pennsylvania Avenue NW, or 14th ST NW & Pennsylvania Avenue NW, or 16th ST NW over Military RD NW, or Military RD NW under 16th ST NW
Input, gazetter: a point XY, matches free text to points, polys.
Result: New point location. The NAME normalized version of the intersection. Optional: aggregated form placed back onto the POLYs used for matching.
-
Block: - A block consists of a street and any other cross streets.
Example: 4th ST NW from D Street NW to E Street NW or 400 Block of 4th St NW
Input, gazetter: a point XY or line segment, matches free text to points, polys, or street segment lines with addy ranges.
Result: New point location at mid zooms, new lines at high zooms, now with NAME normalized form and uniqueID added to their attributes. Optional: aggregated form placed back onto the POLYs/LINES/PTS used for matching.
-
Place, POI Names: - A place name consists of common place names (neighborhoods etc.) and public/institutional building names.
Example: "White House" or "Dupont Circle" or "Wilson Building" or "Wilson High School" or "Woodrow Wilson House"
Input, gazetter: a point XY or polygon, matches free text to points, polys.
Result: New points, now with NAME normalized form and uniqueID added to their attributes. Optional: aggregated form placed back onto the POLYs/PTS used for matching.
-
Cities: - Both incorporated and unincorporated. Usually disambiguated with as a city-state pair, also a country context.
Example: "Washington, DC" with context being USA.
Input, gazetter: a point XY or polygon, matches free text to points, polys.
Result: New points or same points that went in, now with NAME normalized form and uniqueID added to their attributes. Optional: aggregated form placed back onto the POLYs used for matching.
-
Zipcodes: - Used for postal routing. Often point in polygon tests result in the name of the polygon being added to the point attribute columns.
Example: "95501" with context being USA.
Input, gazetter: a point XY or polygon, matches free text to points, polys.
Result: New points or same points that went in, now with ZIP normalized form added to their attributes. Optional: aggregated form placed back onto the POLYs used for matching.
-
States, counties, countries: - Other administrative units.
Example: "Humboldt County, California" with context being USA. Example: "California" with context being USA. Example: "United States" with context being Planet Earth.
Input, gazetter: a point XY or polygon, matches free text to points, polys.
Result: New points or same points that went in, now with NAME normalized form added to their attributes. Optional: aggregated form placed back onto the POLYs used for matching.
Image source: DC MAR