GeoProcessing中通过GP.GetMessage(2)捕捉异常
2008-02-25 22:47 flyingfish 阅读(1045) 评论(0) 收藏 举报
Sub MappingFields()
On Error GoTo EH:
'//initialize license
Dim aoi As IAoInitialize
Set aoi = New AoInitialize
aoi.Initialize esriLicenseProductCodeArcInfo
  
Dim GP As IGeoProcessor
Set GP = New GeoProcessor
GP.OverwriteOutput = True
Dim strTableA As String
strTableA = "C:"Temp"VBTests"FieldMapping"citiblocks.gdb"census"
  
Dim pDataElement As IDataElement
Dim pDETableA As IDETable
  
Dim pGPU As IGPUtilities
Set pGPU = New GPUtilities
  
Set pDataElement = pGPU.MakeDataElement(strTableA, Nothing, Nothing)
Set pDETableA = pDataElement
  
Dim pArray As IArray
Set pArray = New esriSystem.Array
pArray.Add pDETableA
  
Dim pFieldMapping As IGPFieldMapping
Set pFieldMapping = New GPFieldMapping
'** initialize the field mapping
pFieldMapping.Initialize pArray, Nothing
  
'** create a new output field
Dim TrackIDField As IFieldEdit
Set TrackIDField = New Field
TrackIDField.Name = "TRACTID"
TrackIDField.Type = esriFieldType.esriFieldTypeString
TrackIDField.Length = 20
'** create a new FieldMap
Dim TrackID As IGPFieldMap
Set TrackID = New GPFieldMap
Set TrackID.OutputField = TrackIDField
   
'** find field map STFID containing the input field STFID
Dim FieldMap_Index As Long, Field_Index As Long
FieldMap_Index = pFieldMapping.FindFieldMap("STFID")
  
Dim STFID_FieldMap As IGPFieldMap
Set STFID_FieldMap = pFieldMapping.GetFieldMap(FieldMap_Index)
  
Field_Index = STFID_FieldMap.FindInputField(pDETableA, "STFID")
  
Dim inputField As IField
Set inputField = STFID_FieldMap.GetField(Field_Index)
  
TrackID.AddInputField pDETableA, inputField, 5, 10 'starPos, endPos
'** add the new field map to the field mapping
pFieldMapping.AddFieldMap TrackID
  
'** execute Table to Table tool using the FieldMapping
Dim pParameters As IVariantArray
Set pParameters = New varArray
pParameters.Add (strTableA)
pParameters.Add ("C:"Temp"VBTests"FieldMapping"citiblocks.gdb")
pParameters.Add "census3"
pParameters.Add ""
pParameters.Add pFieldMapping
GP.Execute "TableToTable_conversion", pParameters, Nothing
Debug.Print GP.GetMessages(0)
Exit Sub
EH:
Debug.Print GP.GetMessages(2)
End Sub
 
On Error GoTo EH:
'//initialize license
Dim aoi As IAoInitialize
Set aoi = New AoInitialize
aoi.Initialize esriLicenseProductCodeArcInfo
Dim GP As IGeoProcessor
Set GP = New GeoProcessor
GP.OverwriteOutput = True
Dim strTableA As String
strTableA = "C:"Temp"VBTests"FieldMapping"citiblocks.gdb"census"
Dim pDataElement As IDataElement
Dim pDETableA As IDETable
Dim pGPU As IGPUtilities
Set pGPU = New GPUtilities
Set pDataElement = pGPU.MakeDataElement(strTableA, Nothing, Nothing)
Set pDETableA = pDataElement
Dim pArray As IArray
Set pArray = New esriSystem.Array
pArray.Add pDETableA
Dim pFieldMapping As IGPFieldMapping
Set pFieldMapping = New GPFieldMapping
'** initialize the field mapping
pFieldMapping.Initialize pArray, Nothing
'** create a new output field
Dim TrackIDField As IFieldEdit
Set TrackIDField = New Field
TrackIDField.Name = "TRACTID"
TrackIDField.Type = esriFieldType.esriFieldTypeString
TrackIDField.Length = 20
'** create a new FieldMap
Dim TrackID As IGPFieldMap
Set TrackID = New GPFieldMap
Set TrackID.OutputField = TrackIDField
'** find field map STFID containing the input field STFID
Dim FieldMap_Index As Long, Field_Index As Long
FieldMap_Index = pFieldMapping.FindFieldMap("STFID")
Dim STFID_FieldMap As IGPFieldMap
Set STFID_FieldMap = pFieldMapping.GetFieldMap(FieldMap_Index)
Field_Index = STFID_FieldMap.FindInputField(pDETableA, "STFID")
Dim inputField As IField
Set inputField = STFID_FieldMap.GetField(Field_Index)
TrackID.AddInputField pDETableA, inputField, 5, 10 'starPos, endPos
'** add the new field map to the field mapping
pFieldMapping.AddFieldMap TrackID
'** execute Table to Table tool using the FieldMapping
Dim pParameters As IVariantArray
Set pParameters = New varArray
pParameters.Add (strTableA)
pParameters.Add ("C:"Temp"VBTests"FieldMapping"citiblocks.gdb")
pParameters.Add "census3"
pParameters.Add ""
pParameters.Add pFieldMapping
GP.Execute "TableToTable_conversion", pParameters, Nothing
Debug.Print GP.GetMessages(0)
Exit Sub
EH:
Debug.Print GP.GetMessages(2)
End Sub
 
                    
                     
                    
                 
                    
                 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号