This script can be used in ArcMap to transfer a Zip Code Polygon Attribute (5 digit zip code) to street centerlines that are compeletely contained within a zip code polygon.
Public Sub CenterlineZipCodeLookUp() 'in ArcMap, assigns zip codes to lines based on containment in zip5 polygons '10/25/06 AGRC BJG
Dim pMXD As IMxDocument Dim pMap As IMap Dim pZoneFLayer As IFeatureLayer Dim pLineFLayer As IFeatureLayer Dim pLineTargetLeft As Integer 'Field Index Dim pZoneSource As Integer 'Field Index Dim pLineTargetRight As Integer 'Field Index
Set pMXD = ThisDocument Set pMap = pMXD.FocusMap
'**** SET LAYER AND FIELD INDEX NUMBERS HERE Set pZoneFLayer = pMap.Layer(1) 'Zip Code Polygon Layer (second layer in TOC Set pLineFLayer = pMap.Layer(0) 'Street Centerline Layer (topmost layer in TOC)
Dim pZoneFCursor As IFeatureCursor Dim pLineFCursor As IFeatureCursor Dim pZoneFeature As IFeature Dim pLineFeature As IFeature Dim pSpatialFilter As ISpatialFilter Dim dCount As Long Dim zoneLeft As Long Dim zoneRight As Long
Set pZoneFCursor = pZoneFLayer.Search(Nothing, False) Set pZoneFeature = pZoneFCursor.NextFeature Do Until pZoneFeature Is Nothing zoneLeft = pZoneFeature.Value(pZoneSource) zoneRight = zoneLeft Set pSpatialFilter = New SpatialFilter Set pSpatialFilter.Geometry = pZoneFeature.Shape pSpatialFilter.SpatialRel = esriSpatialRelContains
'use this line if you don't want to overwrite existing zipcode values 'pSpatialFilter.WhereClause = "(ZIP_LEFT IS NULL or ZIP_LEFT = 0) and (ZIP_RGHT IS NULL or ZIP_RGHT = 0)"
Set pLineFCursor = pLineFLayer.FeatureClass.Update(pSpatialFilter, False) Set pLineFeature = pLineFCursor.NextFeature Debug.Print zoneLeft Do Until pLineFeature Is Nothing pLineFeature.Value(pLineTargetLeft) = zoneLeft pLineFeature.Value(pLineTargetRight) = zoneRight pLineFCursor.UpdateFeature pLineFeature Set pLineFeature = pLineFCursor.NextFeature dCount = dCount + 1 If dCount < 100 Or dCount / 1000 = Int(dCount / 1000) Then Debug.Print " " & dCount End If Loop