Friend Function CreateFeatureClass(ByVal FCLocation As String, ByVal FCName As String, ByVal pSR As ESRI.ArcGIS.Geometry.ISpatialReference3, ByVal GeometryType As String) As ESRI.ArcGIS.Geodatabase.IFeatureClass Dim CreateFClass As New ESRI.ArcGIS.DataManagementTools.CreateFeatureclass Dim Result As ESRI.ArcGIS.Geoprocessing.IGeoProcessorResult2 Try Using releaser As New ESRI.ArcGIS.ADF.ComReleaser releaser.ManageLifetime(CreateFClass) CreateFClass.out_path = FCLocation CreateFClass.out_name = FCName CreateFClass.spatial_reference = pSR CreateFClass.geometry_type = GeometryType Result = RunTool(CreateFClass, Nothing, True) If Result Is Nothing Then Return Nothing Return ReturnObjectfromResult(Result, "Feature Class") End Using Catch ex As Exception System.Windows.Forms.MessageBox.Show(ex.ToString & vbNewLine & ex.StackTrace.ToString, "Create Feature Class") Return Nothing End Try End Function Friend Function RunTool(ByVal Process As ESRI.ArcGIS.Geoprocessor.IGPProcess, ByVal TC As ESRI.ArcGIS.esriSystem.ITrackCancel2, Optional ByVal AddOutput As Boolean = False) As ESRI.ArcGIS.Geoprocessing.IGeoProcessorResult2 Dim Result As ESRI.ArcGIS.Geoprocessing.IGeoProcessorResult2 Try System.Windows.Forms.Cursor.Current = Windows.Forms.Cursors.WaitCursor Dim GP As New ESRI.ArcGIS.Geoprocessor.Geoprocessor GP.AddOutputsToMap = AddOutput GP.OverwriteOutput = True 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 Private Sub ReturnMessages(ByVal pResult As ESRI.ArcGIS.Geoprocessing.IGeoProcessorResult2, ByVal Title As String) If pResult Is Nothing Then Exit Sub 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 ReturnObjectfromResult(ByVal result As ESRI.ArcGIS.Geoprocessing.IGeoProcessorResult2, ByVal Type As String) As Object Dim GPVal As ESRI.ArcGIS.Geodatabase.IGPValue Dim InMemFC As String Dim GPUtil As ESRI.ArcGIS.Geoprocessing.IGPUtilities3 = New ESRI.ArcGIS.Geoprocessing.GPUtilities Try GPVal = result.GetOutput(0) InMemFC = GPVal.GetAsText() Select Case Type Case "Feature Class" Return GPUtil.OpenFeatureClassFromString(InMemFC) Case "Table" Return GPUtil.OpenTableFromString(InMemFC) Case "Feature Layer" Return GPUtil.OpenFeatureLayerFromString(InMemFC) Case Else Return Nothing End Select Catch ex As Exception System.Windows.Forms.MessageBox.Show(ex.ToString, "ReturnObjectfromResult error") Return Nothing End Try End Function
Geoprocessor GP = new Geoprocessor(); MakeFeatureLayer makeFeatureLayer = new MakeFeatureLayer(); makeFeatureLayer.in_features = @C:\temp.gdb\in_feature_class; makeFeatureLayer.out_layer = "out_feature_layer_name"; GP.Execute(makeFeatureLayer, null); SelectLayerByLocation selectLayerByLocation = new SelectLayerByLocation(); selectLayerByLocation.in_layer = "out_feature_layer_name"; IGeoProcessorResult resultSelection = GP.Execute(selectLayerByLocation, null) as IGeoProcessorResult; IGPUtilities gpUtils = new GPUtilitiesClass(); IFeatureLayer myFeatureLayer = gpUtils.DecodeLayer(resultSelection.GetOutput(0)) as IFeatureLayer;
Signed in members can post, follow updates, and more. New here? Register a free account.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.