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 [ADDRESS_ODD_RIGHT_Full.ASC_DESC] = "Ascending" AND [CL_ENDS_LINES.MIN_MEAS] < [ADDRESS_ODD_RIGHT_Full.MIN_MIN_MEAS] Then Raw = ([CL_ENDS_LINES.MIN_MEAS] - [ADDRESS_ODD_RIGHT_Full.MIN_MIN_MEAS]) / [ADDRESS_ODD_RIGHT_Full.HOUSE_INTERVAL] + [ADDRESS_ODD_RIGHT_Full.MIN_FROM_HOUSE_NUMBER] Output = Round(([CL_ENDS_LINES.MIN_MEAS] - [ADDRESS_ODD_RIGHT_Full.MIN_MIN_MEAS]) / [ADDRESS_ODD_RIGHT_Full.HOUSE_INTERVAL]/2, 0) * 2 + [ADDRESS_ODD_RIGHT_Full.MIN_FROM_HOUSE_NUMBER] If Output < Raw Then Output = Output + 2 ElseIf [ADDRESS_ODD_RIGHT_Full.ASC_DESC] = "Ascending" AND [CL_ENDS_LINES.MIN_MEAS] > [ADDRESS_ODD_RIGHT_Full.MAX_MAX_MEAS] Then Raw = ([CL_ENDS_LINES.MIN_MEAS] - [ADDRESS_ODD_RIGHT_Full.MAX_MAX_MEAS]) / [ADDRESS_ODD_RIGHT_Full.HOUSE_INTERVAL] + [ADDRESS_ODD_RIGHT_Full.MAX_TO_HOUSE_NUMBER] Output = Round(([CL_ENDS_LINES.MIN_MEAS] - [ADDRESS_ODD_RIGHT_Full.MAX_MAX_MEAS]) / [ADDRESS_ODD_RIGHT_Full.HOUSE_INTERVAL]/2, 0) * 2 + [ADDRESS_ODD_RIGHT_Full.MAX_TO_HOUSE_NUMBER] If Output < Raw Then Output = Output + 2 ElseIf [ADDRESS_ODD_RIGHT_Full.ASC_DESC] = "Descending" AND [CL_ENDS_LINES.MIN_MEAS] < [ADDRESS_ODD_RIGHT_Full.MIN_MIN_MEAS] Then Raw = ([CL_ENDS_LINES.MIN_MEAS] - [ADDRESS_ODD_RIGHT_Full.MIN_MIN_MEAS]) / [ADDRESS_ODD_RIGHT_Full.HOUSE_INTERVAL] + [ADDRESS_ODD_RIGHT_Full.MAX_FROM_HOUSE_NUMBER] Output = Round(([CL_ENDS_LINES.MIN_MEAS] - [ADDRESS_ODD_RIGHT_Full.MIN_MIN_MEAS]) / [ADDRESS_ODD_RIGHT_Full.HOUSE_INTERVAL]/2, 0) * 2 + [ADDRESS_ODD_RIGHT_Full.MAX_FROM_HOUSE_NUMBER] If Output > Raw Then Output = Output - 2 ElseIf [ADDRESS_ODD_RIGHT_Full.ASC_DESC] = "Descending" AND [CL_ENDS_LINES.MIN_MEAS] > [ADDRESS_ODD_RIGHT_Full.MAX_MAX_MEAS] Then Raw = ([CL_ENDS_LINES.MIN_MEAS] - [ADDRESS_ODD_RIGHT_Full.MAX_MAX_MEAS]) / [ADDRESS_ODD_RIGHT_Full.HOUSE_INTERVAL] + [ADDRESS_ODD_RIGHT_Full.MIN_TO_HOUSE_NUMBER] Output = Round(([CL_ENDS_LINES.MIN_MEAS] - [ADDRESS_ODD_RIGHT_Full.MAX_MAX_MEAS]) / [ADDRESS_ODD_RIGHT_Full.HOUSE_INTERVAL]/2, 0) * 2 + [ADDRESS_ODD_RIGHT_Full.MIN_TO_HOUSE_NUMBER] If Output > Raw Then Output = Output - 2 Else Output = "" End If
If [ADDRESS_ODD_RIGHT_Full.ASC_DESC] = "Ascending" AND [CL_ENDS_LINES.MAX_MEAS] < [ADDRESS_ODD_RIGHT_Full.MIN_MIN_MEAS] Then Raw = ([CL_ENDS_LINES.MAX_MEAS] - [ADDRESS_ODD_RIGHT_Full.MIN_MIN_MEAS]) / [ADDRESS_ODD_RIGHT_Full.HOUSE_INTERVAL] + [ADDRESS_ODD_RIGHT_Full.MIN_FROM_HOUSE_NUMBER] Output = Round(([CL_ENDS_LINES.MAX_MEAS] - [ADDRESS_ODD_RIGHT_Full.MIN_MIN_MEAS]) / [ADDRESS_ODD_RIGHT_Full.HOUSE_INTERVAL]/2, 0) * 2 + [ADDRESS_ODD_RIGHT_Full.MIN_FROM_HOUSE_NUMBER] If Output > Raw Then Output = Output - 2 ElseIf [ADDRESS_ODD_RIGHT_Full.ASC_DESC] = "Ascending" AND [CL_ENDS_LINES.MAX_MEAS] > [ADDRESS_ODD_RIGHT_Full.MAX_MAX_MEAS] Then Raw = ([CL_ENDS_LINES.MAX_MEAS] - [ADDRESS_ODD_RIGHT_Full.MAX_MAX_MEAS]) / [ADDRESS_ODD_RIGHT_Full.HOUSE_INTERVAL] + [ADDRESS_ODD_RIGHT_Full.MAX_TO_HOUSE_NUMBER] Output = Round(([CL_ENDS_LINES.MAX_MEAS] - [ADDRESS_ODD_RIGHT_Full.MAX_MAX_MEAS]) / [ADDRESS_ODD_RIGHT_Full.HOUSE_INTERVAL]/2, 0) * 2 + [ADDRESS_ODD_RIGHT_Full.MAX_TO_HOUSE_NUMBER] If Output > Raw Then Output = Output - 2 ElseIf [ADDRESS_ODD_RIGHT_Full.ASC_DESC] = "Descending" AND [CL_ENDS_LINES.MAX_MEAS] < [ADDRESS_ODD_RIGHT_Full.MIN_MIN_MEAS] Then Raw = ([CL_ENDS_LINES.MAX_MEAS] - [ADDRESS_ODD_RIGHT_Full.MIN_MIN_MEAS]) / [ADDRESS_ODD_RIGHT_Full.HOUSE_INTERVAL] + [ADDRESS_ODD_RIGHT_Full.MAX_FROM_HOUSE_NUMBER] Output = Round(([CL_ENDS_LINES.MAX_MEAS] - [ADDRESS_ODD_RIGHT_Full.MIN_MIN_MEAS]) / [ADDRESS_ODD_RIGHT_Full.HOUSE_INTERVAL]/2, 0) * 2 + [ADDRESS_ODD_RIGHT_Full.MAX_FROM_HOUSE_NUMBER] If Output < Raw Then Output = Output + 2 ElseIf [ADDRESS_ODD_RIGHT_Full.ASC_DESC] = "Descending" AND [CL_ENDS_LINES.MAX_MEAS] > [ADDRESS_ODD_RIGHT_Full.MAX_MAX_MEAS] Then Raw = ([CL_ENDS_LINES.MAX_MEAS] - [ADDRESS_ODD_RIGHT_Full.MAX_MAX_MEAS]) / [ADDRESS_ODD_RIGHT_Full.HOUSE_INTERVAL] + [ADDRESS_ODD_RIGHT_Full.MIN_TO_HOUSE_NUMBER] Output = Round(([CL_ENDS_LINES.MAX_MEAS] - [ADDRESS_ODD_RIGHT_Full.MAX_MAX_MEAS]) / [ADDRESS_ODD_RIGHT_Full.HOUSE_INTERVAL]/2, 0) * 2 + [ADDRESS_ODD_RIGHT_Full.MIN_TO_HOUSE_NUMBER] If Output < Raw Then Output = Output + 2 Else Output = "" End If
Min_Meas = [CL_ENDS_LINES.MIN_MEAS] Asc_Desc = [ADDRESS_ODD_RIGHT_Full.ASC_DESC] Min_Min_Meas = [ADDRESS_ODD_RIGHT_Full.MIN_MIN_MEAS] Max_Max_Meas = [ADDRESS_ODD_RIGHT_Full.MAX_MAX_MEAS] House_Interval = [ADDRESS_ODD_RIGHT_Full.HOUSE_INTERVAL] Min_From_House_Number = [ADDRESS_ODD_RIGHT_Full.MIN_FROM_HOUSE_NUMBER] Max_To_House_Number = [ADDRESS_ODD_RIGHT_Full.MAX_TO_HOUSE_NUMBER] Max_From_House_Number = [ADDRESS_ODD_RIGHT_Full.MAX_FROM_HOUSE_NUMBER] Min_To_House_Number = [ADDRESS_ODD_RIGHT_Full.MIN_TO_HOUSE_NUMBER] If Asc_Desc = "Ascending" AND Min_Meas < Min_Min_Meas Then Raw = (Min_Meas - Min_Min_Meas) / House_Interval + Min_From_House_Number Output = Round((Min_Meas - Min_Min_Meas) / House_Interval/2, 0) * 2 + Min_From_House_Number If Output < Raw Then Output = Output + 2 ElseIf Asc_Desc = "Ascending" AND Min_Meas > Max_Max_Meas Then Raw = (Min_Meas - Max_Max_Meas) / House_Interval + Max_To_House_Number Output = Round((Min_Meas - Max_Max_Meas) / House_Interval/2, 0) * 2 + Max_To_House_Number If Output < Raw Then Output = Output + 2 ElseIf Asc_Desc = "Descending" AND Min_Meas < Min_Min_Meas Then Raw = (Min_Meas - Min_Min_Meas) / House_Interval + Max_From_House_Number Output = Round((Min_Meas - Min_Min_Meas) / House_Interval/2, 0) * 2 + Max_From_House_Number If Output > Raw Then Output = Output - 2 ElseIf Asc_Desc = "Descending" AND Min_Meas > Max_Max_Meas Then Raw = (Min_Meas - Max_Max_Meas) / House_Interval + Min_To_House_Number Output = Round((Min_Meas - Max_Max_Meas) / House_Interval/2, 0) * 2 + Min_To_House_Number If Output > Raw Then Output = Output - 2 Else Output = "" End If
Max_Meas = [CL_ENDS_LINES.MAX_MEAS] Asc_Desc = [ADDRESS_ODD_RIGHT_Full.ASC_DESC] Min_Min_Meas = [ADDRESS_ODD_RIGHT_Full.MIN_MIN_MEAS] Max_Max_Meas = [ADDRESS_ODD_RIGHT_Full.MAX_MAX_MEAS] House_Interval = [ADDRESS_ODD_RIGHT_Full.HOUSE_IINTERVAL] Min_From_House_Number = [ADDRESS_ODD_RIGHT_Full.MIN_FROM_HOUSE_NUMBER] Max_To_House_Number = [ADDRESS_ODD_RIGHT_Full.MAX_TO_HOUSE_NUMBER] Max_From_House_Number = [ADDRESS_ODD_RIGHT_Full.MAX_FROM_HOUSE_NUMBER] Min_To_House_Number = [ADDRESS_ODD_RIGHT_Full.MIN_TO_HOUSE_NUMBER] If Asc_Desc = "Ascending" AND Max_Meas < Min_Min_Meas Then Raw = (Max_Meas - Min_Min_Meas) / House_Interval + Min_From_House_Number Output = Round((Max_Meas - Min_Min_Meas) / House_Interval/2, 0) * 2 + Min_From_House_Number If Output > Raw Then Output = Output - 2 ElseIf Asc_Desc = "Ascending" AND Max_Meas > Max_Max_Meas Then Raw = (Max_Meas - Max_Max_Meas) / House_Interval + Max_To_House_Number Output = Round((Max_Meas - Max_Max_Meas) / House_Interval/2, 0) * 2 + Max_To_House_Number If Output > Raw Then Output = Output - 2 ElseIf Asc_Desc = "Descending" AND Max_Meas < Min_Min_Meas Then Raw = (Max_Meas - Min_Min_Meas) / House_Interval + Max_From_House_Number Output = Round((Max_Meas - Min_Min_Meas) / House_Interval/2, 0) * 2 + Max_From_House_Number If Output < Raw Then Output = Output + 2 ElseIf Asc_Desc = "Descending" AND Max_Meas > Max_Max_Meas Then Raw = (Max_Meas - Max_Max_Meas) / House_Interval + Min_To_House_Number Output = Round((Max_Meas - Max_Max_Meas) / House_Interval/2, 0) * 2 + Min_To_House_Number If Output < Raw Then Output = Output + 2 Else Output = "" End If