Take the 2-minute tour ×
Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. It's 100% free, no registration required.

I am the developper of gisgraphy (and in few weeks), the new version will be roof top. So i plan to update my reverse geocoding service to house numbers (it was only for streets), I thought it was evident, but it is not (for me).

The question 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 usage ? I 'm 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 ?

every suggestions are welcomed

Thanks

share|improve this question
    
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. –  Below the Radar Feb 13 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 Feb 13 at 17:10
add comment

2 Answers 2

up vote 4 down vote accepted

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.

share|improve this answer
add comment

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.

share|improve this answer
    
so geocoding is only for address, not POI ? in my case what results should I return ? –  gisgraphy Feb 13 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 Feb 13 at 17:07
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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