I am the developper of gisgraphy. I plan to update my reverse geocoding service to house numbers (it was only for streets).

Understanding what reverse geocoding is seems very simple and wikipedia says:

Reverse geocoding is the process of back (reverse) coding of a point location (latitude, longitude) to a readable address or place name

But; imagine I am on a highway (let's say street A) and there is a house in 5 kilometers (house A), an hotel ( hotel A) in 1.5 kilometers on that road, and there is an street intersection (street B) in 2 kilometers where there is a house (house B) in 1 kilometers (so house B is at 3km from where i am).

If I reverse geocode my current position, what do I should expect:

  • The street A (cause house A is too far and reverse geocoding is only about address, not POI ),
  • The hotel A, cause it is the nearest place on the road where I am, and geocoding is not only about address but also about POI)
  • The house A cause it is the nearest house on the road I am
  • The house B (cause it is the nearest house, even if it is not on my road)

What are the usages?

I am sure it depends on what you want, but what reverse geocoder usually do ?

I already have a street search API by position and a find nearby (POI), should I simply search the nearest 'feature' (street, house, poi, whatever...) or limit geocoding to address only ?

  • Usually, I do reverse geocoding with a buffer radius from the location where I am to find all features inside this buffer. It depends of your application and what you want the user to find the nearest? See in google maps. Enter a geographic position and see what sort first in the list of places. Commented Feb 13, 2014 at 15:28
  • 1
    When I reverse geocode the center of NY (40.7305991, -73.9865812) I got a street address, When I reverse geocode bagdad cafe (34.8196934, -116.6434101), I also got an address, not the Café, I think I will consider only address and return the nearest house or the nearest street if too far (>1km)
    – gisgraphy
    Commented Feb 13, 2014 at 17:10

2 Answers 2


The answer to this could be VERY broad in that it really does depend on what you want it to do. Generally, the way a complex geocoding system works is there are multiple layers that the geocode operation runs against, in a specified order. So, for example, many of them will look and try and match the input up with a point of interest by name, then it'll try and match against address points, then it'll try and interpolate an address by a road, and finally it may resort to using generic community name &/or zipcode matches. Furthermore, many of these will have some sort of threshold system set up for each layer, such as allowing a low match tolerance for POI matches because someone may have slightly mis-spelled something (matching Bob Mountain Range with Bob Mountains), but having higher tolerances for addresses because you don't want it to take you to West Main St instead of East Main St. So, when you type in an address to geocode, it will search these different layers, in order, looking for matches and will return the best match from the first layer that returns a sufficiently precise match to meet that layer's threshold.

Now, I say all that because reverse geocoding can work very similarly, if only in reverse. Instead of the user providing an address and it doing textual searches through attribute tables of layers and returning the geometry of matching features or interpolated geometries; you provide a location and it searches the geometries of various layers and returns the attributes or interpolated attribute of a nearby feature. However, a complex geocoder should be able to support complex reverse geocoding as well. Just as you can set tolerances for geocoding, you should be able to set layer specific thresholds for reverse geocoding. So, just for example, you provide an input XY location and it searches within, lets say, 0.75 mile for a matching POI. If no POI is returned, it looks within 0.5 miles for an address point. If no address point it searches within 1 mile for a road to interpolate an address from. If no road it searches within 10 miles for the closest zipcode or city center. Now, that is just an example, but hopefully it gives you some ideas in setting up your new system.

Hope it helps, let us know if you still have questions.


Your question is "What is reverse geocoding"
Reverse geocoding is when you have a point (either as an x,y pair or by the user picking a point) and you want an address.
Geocoding is when you have an address, or poi, or city center, and you want a point.

All geocodable street segments contain a range of addresses for each side (set forth by the addressing authority) for that particular segment.
When you reverse geocode with a coordinate you are returned the value determined by distance of the possible address at that point.

In other words. range of segment A is 0-99, segment B is 100-199
A coordinate matching the middle of segment A on the even side would return
segment A 50

A coordinate matching 75 percent distance of segment B on the odd side
would return the address
segment B 175.

  • so geocoding is only for address, not POI ? in my case what results should I return ?
    – gisgraphy
    Commented Feb 13, 2014 at 16:55
  • 5
    No, you can Geocode any spatial data based on something you want to use as a search term. Geocoding's most common use is a interpolated street address range search, but is just as functional for searching POI/Landmarks if you have appropriate data. I have a Geocoder built to locate Airports based on there IATA 3 Letter codes. The potential is very broad.
    – D.E.Wright
    Commented Feb 13, 2014 at 17:07

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.