Home arrow GIS Data & Resources arrow Scripts and Code arrow Visual Basic / VBA arrow Apply ZipCode Polygon Attributes to Streets
Apply ZipCode Polygon Attributes to Streets PDF Print E-mail

Written by AGRC Administrator,

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)
       
    pZoneSource = pZoneFLayer.FeatureClass.FindField("ZIP5")
   
    pLineTargetLeft = pLineFLayer.FeatureClass.FindField("ZIP_LEFT")
    pLineTargetRight = pLineFLayer.FeatureClass.FindField("ZIP_RGHT")
    
    
    
    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
    
        Set pZoneFeature = pZoneFCursor.NextFeature
    Loop
    
    
End Sub


Users' Comments  
 

No comment posted

Add your comment

25, Oct. 2006
Last Updated ( 27, Sep. 2007 )
 
< Prev   Next >

AGRC Contacts | UGIC Contacts

feed image feed image

Utah GIS Portal © 2009 AGRC

Optimized for