Quantcast
Channel: Forums - ArcObjects SDKs
Viewing all articles
Browse latest Browse all 1374

Help with ArcObjects for VBA Application

$
0
0
I have inherited a VBA application that we use to notify land owners of changes in zoning near their properties. I did not write the original application and I have not done much programming in VBA. I am currently working on replacing this application with a python add-in, but a change in state law is forcing me to update the VBA application because of time constraints. The new state law requires that with any zoning cases municipalities must notify school districts of any changes in zoning that occur within the district boundaries. I have create a polygon feature class of the school districts with the mailing addresses for each district. Users can choose to select one or more parcels or zoning case polygons or choose to select a polygon shapefile to designate the area being rezoned. The application then converts these polygons to a graphic element and then creates a graphical buffer around first graphic. These graphics are then use select the parcels that intersect the combined graphics, select the corresponding records in a related tax roll table and export the results into a dbf file. I want to use a spatial filter to select any school district polygons that intersect the shapefile polygons or the original selection before the graphics are created. Then store the selected records in a global selectionset and insert the records into the final dbf. I have tried to create a procedure to do this, but it keeps crashing on me. Here is what I have so far:
Code:

Public Sub SelectSchoolDistrict()
 Dim pMxApp As IMxApplication
  Dim pMap As IMap
  Dim pMxDoc As IMxDocument
  Dim pActiveView As IActiveView
  Dim pEnumFeature As IEnumFeature
  Dim pFeature As IFeature
  Set pMxApp = Application
  Set pMxDoc = Application.Document
  Set pActiveView = pMxDoc.FocusMap
  Set pMap = pMxDoc.FocusMap
   
  Dim pFeatureCursor As IFeatureCursor
  Dim pFeatureSelection As IFeatureSelection
  Dim pSelectionSet As ISelectionSet
 
  Set pFeatureSelection = pMxDoc.FocusMap.Layer(1) 'FeatureSelection
  Set pSelectionSet = pFeatureSelection.SelectionSet
   
  m_SetSelectableLayer ("School District")
 
  If ThisDocument.g_Model = 2 Then
    Dim pISDLayer As IFeatureLayer
    Dim pSearchLayer As ILayer
       
    Dim ISDcount As Integer
    For ISDcount = 0 To pMxDoc.FocusMap.LayerCount - 1
        Set pSearchLayer = pMxDoc.FocusMap.Layer(ISDcount)
        If pSearchLayer.Name = "School Districts" Then
            Set pISDLayer = pSearchLayer
            Exit For
        End If
    Next
   
    Dim pISDfSel As IFeatureSelection
    Set pISDfSel = pISDLayer
   
    Dim pEnumParcelIDs As IEnumIDs
    Set pEnumParcelIDs = pSelectionSet.IDs
   
    Dim pGeoCollParcel As IGeometryCollection
    Set pGeoCollParcel = New GeometryBag
   
    Dim count As Long
    For count = 1 To pSelectionSet.count
        pGeoCollParcel.AddGeometry pISDLayer.FeatureClass.GetFeature(pEnumParcelIDs.Next).Shape
    Next count
   
    Dim pISDSpatialFilter As ISpatialFilter
    Set pISDSpatialFilter = New SpatialFilter
   
    With pISDSpatialFilter
        Set .Geometry = pGeoCollParcel
        .GeometryField = "Shape"
        .SpatialRel = esriSpatialRelContains
    End With
   
    pISDfSel.SelectFeatures pISDSpatialFilter, esriSelectionResultNew, False
   
    Set gISDSelectionSet = pISDfSel.SelectionSet
         
       
  End If
 
'End Section to add ISD addresses
 
End Sub

I would appreciate any help or advise that anyone can offer.

Viewing all articles
Browse latest Browse all 1374

Trending Articles