I've been given the task of assigning address ranges to a centerline feature class. I have all the data and I am just going street by street.

When assigning ranges, should I just enter the values I find for present addresses or would it be better to extrapolate the range over of the segment based on present values?

I am attempting to have further geocoding results be somewhere close to where they should be.

From the example in the graphic, where the x's are empty space and not unknown addresses:

  • Section A would clearly be from 1 to 3.
  • Section B: from 5 to 6 or from 4 to 6?
  • Section C: from 12 to 13 or from 7 to 13?

There won't be too many geocoding projects where the results will need to be spot on, but there are long stretches of road with scattered addresses (section C) and areas with clusters (section B)

address example

Should the ranges be continuous or will breaks in the range and null values (stretch or side of the road with no addresses) overly effect the geocoding process?

For the need of real example of real data:

enter image description here

The read dots are on the street in blue and range from 3115 - 3141 from left to right.

  • Is your coordinate data just at either end of the street/section, or all along the street as it winds along?
    – Matt
    Jun 7 '13 at 14:22
  • It is both sides as it winds along.
    – gm70560
    Jun 7 '13 at 14:27
  • How many segments are you working with? Is there a way to automate the address range creation process?
    – cwb
    Jul 24 '13 at 15:11

Coming from someone who formerly worked with 9-1-1 data, the best answer would be: Use a combined geocoder. By using a combined geocoder, you can use your point data as a first pass, then fallback to street centerlines for a second pass if you got no hits with the point data.

Because you already have good point locations representing actual address locations, you should be able to geocode your tabular address "text" to the your point database. Of course, because new building/addresses are popping up all the time, it is nearly impossible for you to always have an up-to-date point layer.

Therefore, for your street centerlines, you are better off trying to capture the "extrapolated range" of the potential addresses on a block (ie- 100-199). This will capture all of the new addresses that have not yet been added to your point database.

You should also consider having attribute fields for the Left and Right side of your street. Typically though your ranges would look something like Left (100-198), Right (101-199). However, some jurisdictions, you might see that the extrapolated range for the left is 100-198, whereas the right is 101-149 (where an existing house is on the corner @149, and another across the street is @198). By having a left & right field, you are increasing the accuracy of the geocode for the right side.

You may want to take a look the the following NENA Standards documents for GIS data for additional standards/ideas/examples:

  • I've gone over much of the above material; left and right are already in place. I would be nice if this area used grids or normal block numbering. There is random 2000-10000's.
    – gm70560
    Jun 7 '13 at 20:33

Some real example data (or at least a little less contrived) might help you to get answers that are more what you're looking for. However, with what you've shown, I'd say you have the option to either be "currently precise" and allow for future expansion, or be "inclusively precise". I'll explain.

Currently Precise (section B would be from 5 to 6)

  • Based on the data that you now have. Your precision would be as high as possible based on data that is currently available but you know for certain that there is additional data that you don't have and you anticipate having that data at a future point.

Inclusively Precise (section B would be from 4 to 6)

  • Based on data that you have right now, and part of that data also includes that you know are missing but that you don't currently have the data for. Basically, you DO know what you don't know. Since you know, or can infer, additional address points about the segments you are working with, you should add them. Include as much data as you have and can accurately infer.

Decide which of those methods works best for what you are doing. Either will work, and either is just fine. I prefer the inclusive method. Because even knowing what you don't know is additional information. For example, in the USPS address validation industry, when we come across an address that doesn't validate, I can then check the ZIP code and determine that it is a town that has PO Box delivery only, there is no USPS street delivery within that town. Knowing that, I now have the option to include that data that I "DON'T" know, which is that street addresses aren't made available within that town.

Any type of additional information, even knowing what you don't know, is helpful.

  • your answer seems to be on the right track and to what the question is about. My apologies for my humble little graphic. A "real world" example would only lead to situations in section B or C.
    – gm70560
    Jun 7 '13 at 16:26

Assuming I understand your question correctly...

If you know the range of the primary numbers (of the addresses) for each street/section and have coordinates of the street as it winds along, then interpolate by using the full length of each section.

For example: if you know the range of primary numbers to be 100-200, and you have addresses with primary number 175 and 190, then you may generally assume the first is 3/4 of the way between your beginning and end coordinates, and 190 is 9/10 of the way between the coordinates. In other words, you would choose the coordinate "as it winds along" that is closest to 3/4 of the way along for the first, and 9/10 of the way along for the second.

  • I am not trying to geolocate the points or standardize the addresses. I am assigning values to the FROM and TO fields in the centerline feature class.
    – gm70560
    Jun 7 '13 at 15:28

We maintain two from and to fields. One is a theoretical range which covers the anticipated values that could exist along the segment; the second is a physical address range which contains the actual range of addresses that exist along the segment. For the physical range, we include the lowest and highest along a given segment but don't concern ourselves with whether or not we have a continuous address range or have gaps in the address sequence.

I would agree with the first responder that if what you want is to have no gaps in your range, a composite locator composed of multiple point and/or line locators would be the best solution. Building a linear addressing model with no gaps in sequential addresses would be insanely difficult to produce and still wouldn't be as accurate as a comparable point address model.

The interesting thing about getting too specific with your existing address ranges (with the intention of increasing positional accuracy) is that you may inadvertently wind up making your locates worse. Take example "C" above. If you assign the segment a from and to value of 12 and 13 respectively, it will assume that 12 is near the left vertex and 13 is near the right vertex when in fact, they are both near the right end. Despite entering what appears to be more precise data in assigned address ranges, the resulting locate is actually worse than if you were to assign a range of 7-13. It seems counter-intuitive at first, but plays out this way particularly in sparsely addressed areas.

Whatever you wind up doing, I think the most important consideration is to ensure that your solution fits the need. If it's important that you locate the greatest number of possible addresses, then I would suggest that you use theoretical ranges (ie. assign 100 - 199 for a hundred block even if the highest existing address may be 149). That helps account for new construction, multi-family conversions and other events that might produce new addresses outside a very strict physical/existing range.

If however, it is more important that your geocoding task produces accurate locates, then assigning existing/physical ranges are what you need. Point locators are better yet as they are discreet locations. And repeating what I said before, a composite locator is best of all. You can begin with a very accurate, but less fault tolerant point address locator, fall back to a centerline locator based on existing/assigned addresses, and finally to a theoretical range as a sort of catch all.


If you know for certain that there are gaps you might try to interpolate, but this is inherently risky as street numbering is not always as determinate as one might like.

Do you have any point data for the addresses, or do you only have street segment centerlines and associated addresses without points? In the former case, one might try to assign an interpolated low or high address to the end of the segment when the points are far from the end; in the latter I would not, personally, try to interpolate but would assign out-of-range values to the closest in-range match.

Will your addresses be standardized? That has always been a huge problem in roll-your-own geocoder projects I've seen. There are a lot of third-party geocoders, unless your case is highly specialized, doing your own is not likely to be cost-effective.

  • I have point data; most have been field verified. Addresses are somewhat standardized, not NENA or NG-911 quality.
    – gm70560
    Jun 7 '13 at 14:50
  • @gm70560 Google address standardization and you'll find some good and cost-effective options.
    – Matt
    Jun 7 '13 at 15:03

As per Matt's answer, you could use the point positions to help interpolate whether there should be lower or higher numbers on the segment. That's actually somewhat the reverse operation to what he suggests.

You could probably also, at least in the US, simply assume that each block can start with the lowest value rounded to the nearest hundred and the highest value rounded up to the nearest hundred - 1, i.e. if you have 112, 145, 177 take 100 and 199 as endpoints.

Special case for lowest value less than 100 use 1 instead of 0.


This is a good question. Address Ranges can 'fill' a gap within a street segment, and you're looking at filling gaps between street segments.

One consideration is, which segment would you add to? In your example images it's obvious to see, however if you were programming the process then it may not be as straightforward to determine where the missing address should sit. Maybe you can calculate how many addresses are missing then divide them up between the 2 segments.

The other thing I'd suggest is that you limit how big the 'gap' can be. If a segment is ranged 2-10, and the next segment is ranged 900-912, the gap between (i.e. addresses 12-898) is huge and any interpolated/extrapolated addresses would be unrealistic.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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