Dim GP As New ESRI.ArcGIS.Geoprocessor.Geoprocessor Friend Function DissolveDataset(ByVal InputName As Object, ByVal DissolveField As String, ByVal StatsFields As String, ByVal OutputName As String) As ESRI.ArcGIS.Geodatabase.IFeatureClass Dim DissolveDS As New ESRI.ArcGIS.DataManagementTools.Dissolve Dim Result As ESRI.ArcGIS.Geoprocessing.IGeoProcessorResult2 Try DissolveDS.in_features = InputName DissolveDS.dissolve_field = DissolveField DissolveDS.statistics_fields = StatsFields DissolveDS.out_feature_class = OutputName Result = RunTool(DissolveDS, Nothing) If Result Is Nothing Then System.Windows.Forms.MessageBox.Show("Could not dissolve dataset") Return Nothing End If Return ReturnFeatureClassfromResult(Result) Catch ex As Exception System.Windows.Forms.MessageBox.Show(ex.ToString, "Dissolve error") Return Nothing End Try End Function Friend Function ReturnFeatureClassfromResult(ByVal result As ESRI.ArcGIS.Geoprocessing.IGeoProcessorResult2) As ESRI.ArcGIS.Geodatabase.IFeatureClass Dim GPVal As ESRI.ArcGIS.Geodatabase.IGPValue Dim InMemFC As String Dim GPUtil As ESRI.ArcGIS.Geoprocessing.IGPUtilities3 = New ESRI.ArcGIS.Geoprocessing.GPUtilities Dim pOutputFC As ESRI.ArcGIS.Geodatabase.IFeatureClass Try GPVal = result.GetOutput(0) InMemFC = GPVal.GetAsText() pOutputFC = GPUtil.OpenFeatureClassFromString(InMemFC) Return pOutputFC Catch ex As Exception System.Windows.Forms.MessageBox.Show(ex.ToString, "Return FeatureClass error") Return Nothing End Try End Function Private Sub ReturnMessages(ByVal pResult As ESRI.ArcGIS.Geoprocessing.IGeoProcessorResult2, ByVal Title As String) Dim ErrorMessage As String If pResult.MessageCount > 0 Then For Count As Integer = 0 To pResult.MessageCount - 1 ErrorMessage += pResult.GetMessage(Count) Next End If System.Windows.Forms.MessageBox.Show(ErrorMessage, Title) End Sub Friend Function RunTool(ByVal Process As ESRI.ArcGIS.Geoprocessor.IGPProcess, ByVal TC As ESRI.ArcGIS.esriSystem.ITrackCancel2) As ESRI.ArcGIS.Geoprocessing.IGeoProcessorResult2 Dim Result As ESRI.ArcGIS.Geoprocessing.IGeoProcessorResult2 Try Result = CType(GP.Execute(Process, Nothing), ESRI.ArcGIS.Geoprocessing.IGeoProcessorResult2) If Result.Status <> ESRI.ArcGIS.esriSystem.esriJobStatus.esriJobSucceeded Then ReturnMessages(Result, "Geoprocessing Error") GP.ClearMessages() Catch ex As Exception ReturnMessages(Result, "Fail") System.Windows.Forms.MessageBox.Show(ex.ToString, "Run Geoprocessor") End Try Return Result End Function
Přihlášení členové mohou přispívat, sledovat aktualizace a další. Jste tu noví? Zaregistrujte si bezplatný účet.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.