Address Interpolation and Point Address Data |
When geocoding an address containing a property number, such as 14 Birmingham Drive, Christchurch, the geocoder needs to first locate the correct street, then secondly determine the location of the numbered property along the length of that street.
GeoBase has two different approaches that can be used to achieve this second step:
Address interpolation is available for all GeoBase data files which support geocoding, and does not require any supplementary data. The map holds information on the range of property numbers which fall on each side of the street, together with the schema used for numbering (for example odd, even, mixed). This information can then be combined with the geometry of the street to estimate either the location of a numbered address (when forward geocoding), or the address number at a given location (when reverse geocoding).
As an example, consider forward geocoding 1149 38th St, Sacramento, California, 95816. The address range data for 38th Street tells us the following:
Side | Range Start | Range End | Numbering Schema |
---|---|---|---|
Left | 1000 | 1298 | Even |
Right | 1001 | 1299 | Odd |
Note |
---|
In this context, the left and right side of the road are relative to travel from the first point (reference end) to the last point (non-reference end) of the StreetLink object that represents the street. Note that this may not match the direction of travel for unidirectional streets. |
As 1149 is an odd number, and falls in the middle of the 1001-1299 range, address interpolation will return a result half-way down the street on the right.
Address interpolation typically delivers good results, accurate to within 100 yards. However, as it assumes properties are sequentially numbered and evenly spaced along the length of a street, accuracy may be reduced in areas with non-sequential numbering, or markedly heterogenous property sizes or distributions.
Note |
---|
In some countries, notably those in North America, the range information provided for a street will be the range assigned by civic authorities for planning/census purposes, which is typically a block of 100 numbers. In practice, a street might only have houses numbered across a smaller range, for example 1-25. This can affect the accuracy of address interpolated geocoding results. |
This approach requires a supplementary Point Address Data GBFS file, which contains individual geospatial points for all known numbered addresses. This enables GeoBase to return exact locations for numbered addresses when forward geocoding, and to provide higher precision results when reverse geocoding.
Note |
---|
If point address data is present for a region, GeoBase will automatically use the advanced forward/reverse geocoding functionality documented below. This uses the same classes, methods and overloads as conventional geocoding functionality, with no code changes required. |
Forward Geocoding with Point Address Data
Returning to the earlier example, if we geocode 1149 38th St, Sacramento, California, 95816 with point address data present, we get a slightly different result:
Note |
---|
When using point address data with default settings, address numbers will be drawn on the map at close zoom levels. can be disabled by setting the Show_Address_Numbers parameter in the default map style. See Map Styles and Parameters for more information. |
With the addition of point data, we receive an exact location for number 1149, which falls further south than the location estimated by address interpolation. The slight inaccuracy in the interpolated result can be attributed to the uneven distribution of address numbers along the length of the street.
In some circumstances, a numbered address may not be present in the point address data. This may happen if a new property has been built since the data file was issued, or if street numberings have changed. If forward geocoding for an address number which appears in the street's address range, but has no entry in the point address data, then address interpolation will be used as a fallback to estimate the correct location. The GeocodeAddressMatchType field can be inspected to determine whether a forward geocode result was matched against a point address, or an interpolated result.
GeocodeAddress[] results = GeoCoder.GeoCode("1149 38th St, Sacremento, California, 95816", Country.USA); /* We only want results with address numbers */ if (results.Length > 0 && results[0].Number != -1) { GeocodeAddress gca = results[0]; if (gca.MatchType == GeoCodeMatch.MATCH_POINT_ADDRESS) { Console.WriteLine("Match made against point address data") } else if (gca.MatchType == GeoCodeMatch.MATCH_STREET) { Console.WriteLine("Match made via address interpolation.") } }
Reverse Geocoding with Point Address Data
When reverse geocoding with point address data, addresses may be matched against either the nearest address point or the nearest street. The exact behavior varies depending on whether you are performing normal or aligned reverse geocoding - see Geocoding Concept for a definition of these terms.
Normal Reverse Geocoding
When performing normal (unaligned) reverse geocoding, GeoBase will check the area surrounding the location provided for the nearest object, which may be an address point or a street. The method of returning the address will depend on the object type:
Address Point - the street and numbered address corresponding to the point will be returned. In this example, location 1 will return 916 Firestone Circle, as this address point is the closest object. This is despite Congressional Road being closer to the query point that Firestone Circle.
Street - the nearest side of the street will be queried for address points, and the closest address point attached to that side will be returned as the address. If we look at location 2 in this example, Congressional Road is the closest street, and number 897 is the nearest point address on the north side of the street, so an address of 897 Congressional Road will be returned.
Note |
---|
If a street has no point addresses, address interpolation will be used to return an estimated address. If a street has point addresses, but none attached to the side closest to the query point, then only the street name will be returned, with no property number estimated. |
Aligned Reverse Geocoding
When performing aligned reverse geocoding, GeoBase will locate the nearest aligned street, bypassing any closer point locations. When a street is identified, then based on direction of travel and local driving side laws, the nearest point address on the correct side of the road will be returned. Our example is in the USA, which drives on the right, so location 3 will return 898 Congressional Road, whereas location 4 will return 985 Firestone Circle.