How to load a raster dataset to the raster field in a feature class
Loading a raster dataset to the raster field in a feature class
-
Get a workspace for editing.
-
Find the raster field index.
-
Create a raster value object with an input raster dataset.
-
Set the raster value to the raster field.
-
Stop editing and save.
[C#]
static void LoadToRasterAttribute(IFeatureClass featureClass, IRasterDataset rasterDataset, int OID) { /*Parameters: featureClass—The feature class with raster attribute. rasterDataset—The raster dataset to be loaded to the raster attribute. OID—The ObjectID of the feature to be edited. */ //Get workspace for editing. IDataset dataset = (IDataset)featureClass; IWorkspaceEdit workspaceEdit = (IWorkspaceEdit)dataset.Workspace; workspaceEdit.StartEditing(false); workspaceEdit.StartEditOperation(); IFeature feature = featureClass.GetFeature(OID); //Find raster field index. int iRasterField = 0; for (int i = 0; i < feature.Fields.FieldCount; i++) { if (feature.Fields.get_Field(i).Type == esriFieldType.esriFieldTypeRaster) { iRasterField = i; i = 1000; } } //Create raster value with input raster dataset. IRasterValue rasterValue = new RasterValueClass(); rasterValue.RasterDataset = rasterDataset; //Set raster value to the raster field. feature.set_Value(iRasterField, rasterValue); feature.Store(); //Stop editing and save edits. workspaceEdit.StopEditOperation(); workspaceEdit.StopEditing(true); }
[VB.NET]
Public Sub LoadToRasterAttribute(ByVal featureClass As IFeatureClass, ByVal rasterDataset As IRasterDataset, ByVal OID As Integer) ' Parameters: ' featureClass—The feature class with raster attribute. ' rasterDataset—The raster dataset to be loaded to the raster attribute. ' OID—The ObjectID of the feature to be edited. 'Get workspace for editing. Dim dataset As IDataset = CType(featureClass, IDataset) Dim workspaceEdit As IWorkspaceEdit = CType(dataset.Workspace, IWorkspaceEdit) workspaceEdit.StartEditing(False) workspaceEdit.StartEditOperation() Dim feature As IFeature = featureClass.GetFeature(OID) 'Find raster field index. Dim iRasterField As Integer = 0 Dim i As Integer For i = 0 To feature.Fields.FieldCount - 1 Step i + 1 If feature.Fields.get_Field(i).Type = esriFieldType.esriFieldTypeRaster Then iRasterField = i i = 1000 End If Next 'Create raster value with input raster dataset. Dim rasterValue As IRasterValue = New RasterValueClass() rasterValue.RasterDataset = rasterDataset 'Set raster value to the raster field. feature.set_Value(iRasterField, rasterValue) feature.Store() 'Stop editing and save edits. workspaceEdit.StopEditOperation() workspaceEdit.StopEditing(True) End Sub
To use the code in this topic, reference the following assemblies in your Visual Studio project. In the code files, you will need using (C#) or Imports (VB .NET) directives for the corresponding namespaces (given in parenthesis below if different from the assembly name):
Development licensing | Deployment licensing |
---|---|
ArcGIS for Desktop Basic | ArcGIS for Desktop Basic |
ArcGIS for Desktop Standard | ArcGIS for Desktop Standard |
ArcGIS for Desktop Advanced | ArcGIS for Desktop Advanced |
Engine Developer Kit | Engine |