Address point role with Units

1449
7
07-30-2019 10:38 AM
JoeBorgione
MVP Emeritus

ArcGIS Pro 2.4, Create locator.

In this post, Bryan Lynn‌ describes a problem locating point addresses with units.  He experienced it in an Oracle enterprise geodatabase; today I discovered the same problem using a file geodata base.  Here are the field mapping parameters I use :

fieldMapping = "'PointAddress.HOUSE_NUMBER AddPntsProtected.ADDR_HN';"\
                "'PointAddress.STREET_PREFIX_DIR AddPntsProtected.ADDR_PD';"\
                "'PointAddress.STREET_NAME AddPntsProtected.ADDR_SN';"\
                "'PointAddress.STREET_SUFFIX_TYPE AddPntsProtected.ADDR_ST';"\
                "'PointAddress.STREET_SUFFIX_DIR AddPntsProtected.ADDR_SD';"\
                "'PointAddress.SUB_ADDRESS_UNIT AddPntsProtected.UNIT_DESIG';"\
                "'StreetAddress.STREET_NAME_JOIN_ID Centerlines.JOINID';"\
                "'StreetAddress.HOUSE_NUMBER_FROM_LEFT Centerlines.FROMADDR_L';"\
                "'StreetAddress.HOUSE_NUMBER_TO_LEFT Centerlines.TOADDR_L';"\
                "'StreetAddress.HOUSE_NUMBER_FROM_RIGHT Centerlines.FROMADDR_R';"\
                "'StreetAddress.HOUSE_NUMBER_TO_RIGHT Centerlines.TOADDR_R';"\
                "'StreetAddress.STREET_PREFIX_DIR Centerlines.PREDIR';"\
                "'StreetAddress.STREET_NAME Centerlines.NAME';"\
                "'StreetAddress.STREET_SUFFIX_TYPE Centerlines.POSTTYPE';"\
                "'StreetAddress.STREET_SUFFIX_DIR Centerlines.POSTDIR';"\
                "'POI.PLACE_JOIN_ID Parcels.parcel_id';"\
                "'POI.PLACE_NAME Parcels.parcel_id'"   

Notice in line 6 the field UNIT_DESIG is used.

If I use the unit a given address this way, it ignores it:

Where as if I use  # in front of the unit designator, I'll get the unit as the secondary hit (B):

Is this expected behavior?  We do carry a field called 'FullAddress' that carries the unit with # but I'm not referencing that field at all in my parameters (Notice it's # (space) Z1):

That should just about do it....
0 Kudos
7 Replies
EricAnderson17
Occasional Contributor

Hi Joe,

You will need to include a unit type (#, Apt, Suite, Bldg) before the actual unit value in order to return a successful subaddress candidate in the Locate pane. If a unit type is not included, the subaddress will not be returned as a candidate. From my experience, these unit types are somewhat interchangeable and if in your reference data the unit type was designated as "Suite", you would still be able to return a candidate with "#", and vise versa. 

The issue reported by Bryan in the other post (no subaddress candidate returned) was still reproduced even when a unit type was included with the input address when the reference data was sourced from an enterprise geodatabase. We were unable to reproduce this when sourced from a file geodatabase, but again, as long as a unit type was included with the unit value (e.g. 606 Main St #100). 

Hope this helps!

Eric

0 Kudos
JoeBorgione
MVP Emeritus

Thanks Eric-   I think I get it.  

Why though when I include the #Z1, does my address come up as the 'B' choice and not the 'A' choice?  In the case of the traditional composite, with the address points as the first locator at the 'top' of the composite list, that address would have hit at 100% and game over.

Eventually I'd like to publish this for public consumption, and it would be cool if someone ( a tax-paying voter) could just type in the street address and have the units suggested.  Enhancement perhaps?

That should just about do it....
0 Kudos
EricAnderson17
Occasional Contributor

Hi Joe,

I'd be happy to get something like this logged. I tested with the Create Address Locator tool (US Address - Single House Subaddress style) and can confirm that just searching for the base address will return subaddress candidates as well:

Therefore, I can definitely see about getting something logged so the new Create Locator tool functionality is more in line with the older Create Address Locator tool. 

Of course I'd recommend you post something on our ArcGIS Ideas page as well, so others can view it and promote it. If you decide to do this, please let me know so I can link it with our internal enhancement.

Best regards,

Eric

0 Kudos
JoeBorgione
MVP Emeritus

Here you go:  https://community.esri.com/ideas/17064-provide-units-in-suggested-addresses

(vote early and vote often...)

That should just about do it....
0 Kudos
EricAnderson17
Occasional Contributor

Thank you Joe,

I have logged this under the following enhancement. If you'd like to be attached to it so you can track its status at anytime from My Esri, please go ahead and submit a Support case referencing the ENH number:

ENH-000124149: Allow locators built with the Create Locator tool and a Point Address role to return candidates and suggestions for subaddresses when the base address is inputted

Best,

Eric

0 Kudos
JoeBorgione
MVP Emeritus

Awesome!  Thanks Eric!  

That should just about do it....
0 Kudos
ShanaBritt
Esri Regular Contributor

Joe:

In your example above are you using a single locator or a composite locator? You can get suggestions from the classic locators that are created with the Create Address Locator tool, but they aren't validated against the house number or street name. The logic behind the subaddress results between the classic locators and the new locators is different and they are designed differently. If the locator mentioned above is a composite, I suggest that you combine all of the features, with and without subaddress units, into a single feature class and build the locator using the PointAddress role. Make sure the base address is part of the feature class so that if you search for a subaddress unit and it's not found you can return the base address. 

If you create a multirole of PointAddress and StreetAddress, if there is a street segment id that exists in both the point and street data, they should be used to join the roles together using the 'Street Join ID' field from the locator role. This will keep from getting multiple candidates for the same location and if the base address didn't exist in the point data, searching for the base address of the subaddresses will return a match from the StreetAddress locator instead of no result from the PointAddress locator.