Of course it is possible that an address point may be closer to a road that it is not addressed off of. An ArcINFO- Kelly Bigley
AML script can be used to loop through each street name. For each name it creates a subset of the streets and
address points with that street name. It performs a NEAR command on those subset coverages and transfers the
unique street coverage COVER-ID to the address points. Then it appends the resulting point coverages into one.
The resulting coverage is basically the original address coverage with a few additional attributes, including the
COVER-ID of the street centerline and the X and Y coordinate along the closest arc.
Solved! Go to Solution.
If [HOUSE_NUMBER] = Round( [HOUSE_NUMBER] / 2, 0) * 2 Then Output = "EVEN_HOUSE" Else Output = "ODD_HOUSE" End If
If [Distancec] > 0 Then Output = "LEFT_SIDE" Else Output = "RIGHT_SIDE" End If
If [OBJECTID] = Round( [OBJECTID] / 2 , 0) * 2 Then Output = [OBJECTID] + 1 Else Output = [OBJECTID] End If
My theory for the workflow would be as follows
- Define the two feature classes (street centerline & address points)
- Define the field names I will be referencing for street name (STR_NAME in both)
- Create a search cursor that cycles through each address point record, and identifying its street name (Main, Oak, Broadway, etc)
- Output the street name from the address point
- Run a definition query for the centerline where STR_NAME = the output from address point street name
- Run the NEAR function for Address point to Centerline with this definition in effect(creating the appropriate fields)
- Clear the centerline definition query
- Next row in the Address Points
repeat
Am I on the right track? I am learning the code and formatting so will update as help is needed.
The relationship between points (address) and lines (network) is "many-to-1", so you need:
1. Using "Spatial Join" function (also called Near - in old ArcInfo version) to join line class to point class (point as target layer), the output joined point layer should have the line ID field;
2.Open the joined the point layer's attribute table, go to the ID field (from line layer), using "Field Summarize" function to get the Min and Max values for the Address number field (if the Address field data type is Text, convert it to Intege first), this summarized output should be one standalone table;
3.Using "Common Field" (line ID) to join that summarized standalone table back to the original line feature class, export it as one joined feature class;
4.In the joined line feature class, the Min field should be the start address number and the Max field should be the end address number - you can merge both fields to one new field (call it as Address Range) to fit your application.
Thank you, I did not think of using a join then summarize. This may be a simpler answer than what I anticipated. Thank you and I'll give it a try.
Langdon
Thank you, I did not think of using a join then summarize. This may be a simpler answer than what I anticipated. Thank you and I'll give it a try.
Langdon
For those line segs without joined address numbers, you can:
1. Extract those segs and export them as one feature class - class A, and export the another part segs (with address number) as the another feature class - class B;
2. Convert the class B to the point feature class - class C, then join (Intesect Spatial Join) the Class C to the class A - joined point class D;
3. Then join the class D table back to the Class A by using common field (line ID) and the output as Class E;
4. Open the Class E table, you can transfer the Min & Max number from joined fields (you need to know which one is Min & Max due to double Min & Max values joined - the larger Min value from both Min values is Max value for this seg, and less Max value from bothe Max values is Min value for this seg.
After above process, you may couldn't assign address for all non-address segs (ig. two adjacent non-address lines), you may need to repeat above process.
Determining positions along the lines relative to the ends of the lines is what Linear Referencing can much more easily analyze than a simple Spatial Join or Near tool match. It also is the only method that can deal with ordering your chains of segments that need to match up the ranges where their ends meet in a logical, sortable manner.
Linear Referencing is the only method that is capable of ordering adjoining road segments and lists of intersections along a given road according to the way you would actually drive a road from one end to the other. It is therefore ideal for this kind of problem.