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 using the file: C:\Program Files\ArcGIS\Desktop10.0\Locators\US One Address.lot

To do address resolution on a parcel / polygon layer. I'm trying to understand why the file doesn't contain city, state or zip code fields. It only contains:

{ HouseNum, PreDir, PreType, StreetName, StreetType, SufDir }.  

MWrenn suggested I try the locator named "US One Address with Zone" and map city to zone. This technique works, but the results omit state and zip code. How can I get city, state, and zip code as a "US One Address" locator?

ArcEngine 10, C#, VS2010

Also posted here: http://forums.arcgis.com/threads/25632-Why-doesn-t-US-One-Address-locator-style-have-city-state-or-zip-code-fields?p=84515


Edit: Sean made the point that

"Having an address and ZIP code is sufficient to geocode the address"

which I don't take issue with, but maybe I didn't properly explain why I want City, State, Zip...

If the address is not found in the search and address candidates are found, I open a window which allows the user to select which address they want. Unsurprisingly, the client wants a regular looking address with house number street name, city, state, zip.

Here is how I fetch addresses:

IArray resultsArray = addressCandidates.FindAddressCandidates(addressProperties);
IFields candidateFields = addressCandidates.CandidateFields;

for (int candidateIndex = 0; candidateIndex < resultsArray.Count; candidateIndex++)
{
ClosestAddressResults thisResult = new ClosestAddressResults(); 
candidatePropertySet = resultsArray.get_Element(candidateIndex) as IPropertySet2;

List<string> dataAvailableToDisplay = new List<string>(); 
for (int fieldIndex = 0; fieldIndex < candidateFields.FieldCount; fieldIndex++)
{
  addressField = candidateFields.get_Field(fieldIndex);
  dataAvailableToDisplay.add(addressField.AliasName + " " + candidatePropertySet.GetProperty(addressField.Name)); 
}

The list looks like this:

Shape System.__ComObject
Score 66
HouseNum 104
PreDir 
PreType 
StreetName 1ST
StreetType ST
SufDir 
Zone 56441
Match_addr 104 1ST ST, 56441

In this case I mapped Zip to Zone. If I had mapped City to Zone, I would get the city name back. Because I am allowing the user to select an address in a window I want to display the addresses with all the data, but since only Zone comes back, I'm having a difficult time figuring out how to get it.

Right now my workaround is may City to Zone. Then for each address match, get the IPoint, for each IPoint, run it through a find closest address function, with Zone mapped to Zip, grab the Zip code, and concatenate the results. And of course I could do this for state too. The problem with my workaround even though technically it works, is that its pretty slow. So any ideas whatsoever are appreciated.

share|improve this question
    
retagged w/ arcgis & arcengine –  RyanDalton Feb 4 '11 at 0:43
add comment

4 Answers

I've had a similar problem, and I just used US one address with zone, and used zip code as a zone. Maybe that will work for you, but I'd be interested to know why there is not an address locator with one address, city, state, or if one could be created.

You might also use the US ranges and set each from/to field to the same house number field and see if that works. I don't have a dataset in front of me to try it out.

share|improve this answer
    
Thanks for the tip -- I'm looking at it -- and still confused... Zipcode and City both map to the same field - Zone. So what if you have both? It can only search one I guess? –  patrick Feb 4 '11 at 15:32
add comment

Use the US Address—Dual Ranges address locator style. It looks like you were using an alternate name table.

share|improve this answer
    
Isn't dual ranges for streets? I am geocoding with a polygon layer. Also for some reason I don't have that locator in my directory –  patrick Mar 11 '11 at 16:02
add comment

If you have a mix of different address types, you might consider making a composite locator where each contained locator interprets Zone differently.

share|improve this answer
    
Do you know any links / online examples on how to do this programmatically -- I found this - help.arcgis.com/en/sdk/10.0/arcobjects_net/conceptualhelp/… -- but its not working for me. –  patrick Mar 17 '11 at 19:54
add comment

In order for a locator to be accurate, the address must be unique within a specified area. Addresses in the U.S. are not unique to a city or state. You can have more than one '100 Pine St' in a state, county or even city. The USPS does have a rule that addresses must be unique to a ZIP code.

Having an address and ZIP code is sufficient to geocode the address. City and state are useless for the reasons given above.

The One Address locator is for when you know that all of your addresses are unique to the data upon which the locator is built or you just don't care to restrict the search to anything more.

The purpose of the locator is to derive geometry (points) from attributes (address). When you run the locator, all of the original data is preserved. If your address data is missing city and or state you need to derive that separately by joining the geocoded results (the points) to the needed table/geography (city, state).

Keep in mind that, in the U.S., the city in the address is not necessarily the city in which the delivery point exists. Instead it is associated with the post office that serves that ZIP code. It can be problematic to derive the city portion from ZIP, you can have more than one 'city' name associated with a ZIP code/post office. The USPS charges for the information that associates city, state and ZIP.

Deriving a ZIP code is even harder. ZIP codes represent carrier routes and are not necessarily polygons. The USPS does not share ZIP geography freely. You can try using Census ZIP Code Tabulation Areas (ZCTA) which are derived from their address list. They are not 100% accurate and don't include point ZIP codes. The latest available is from the 2000 Census data. No release date has been provided for 2010 ZCTA data.

share|improve this answer
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.