1 /// <summary>
2 /// Create a raster GeoDataset grid from a FeatureClass.
3 /// </summary>
4 /// <param name="feaureClass">An IFeatureClass interface that will have a raster (grid) created from it.</param>
5 /// <param name="string_RasterWorkspace">A System.String that is the workspace location for the grid coverage. Example: "C:\workspace"</param>
6 /// <param name="int32_NumberOfCells">A System.Int32 that is the number of cells in the X direction that you want the raster to have. This defines the resolution of the raster. Example: 10000.X方向上单元格数量,这决定栅格数据的分辨率</param>
7 /// <returns>A GeoDataset that is a raster of the input FeatureClass</returns>
8 /// <remarks></remarks>
9 public ESRI.ArcGIS.Geodatabase.IGeoDataset CreateGridFromFeatureClass(ESRI.ArcGIS.Geodatabase.IFeatureClass feaureClass, System.String string_RasterWorkspace, System.Int32 int32_NumberOfCells)
10 {
11 //显示转换,把IFeatureClass转为IGeoDataset
12 ESRI.ArcGIS.Geodatabase.IGeoDataset geoDataset = (ESRI.ArcGIS.Geodatabase.IGeoDataset)feaureClass; // Explicit Cast
13 //获取空间参考
14 ESRI.ArcGIS.Geometry.ISpatialReference spatialReference = geoDataset.SpatialReference;
15 //创建栅格转换操作
16 // Create a RasterMaker operator
17 ESRI.ArcGIS.GeoAnalyst.IConversionOp conversionOp = new ESRI.ArcGIS.GeoAnalyst.RasterConversionOpClass();
18 //从目标文件夹创建栅格工作空间
19 ESRI.ArcGIS.Geodatabase.IWorkspaceFactory workspaceFactory = new ESRI.ArcGIS.DataSourcesRaster.RasterWorkspaceFactoryClass();
20 // set output workspace
21 ESRI.ArcGIS.Geodatabase.IWorkspace workspace = workspaceFactory.OpenFromFile(string_RasterWorkspace, 0);
22 //显示转换,创建栅格分析环境,设置输出工作空间为上面设置的栅格工作空间
23 // Create analysis environment
24 ESRI.ArcGIS.GeoAnalyst.IRasterAnalysisEnvironment rasterAnalysisEnvironment = (ESRI.ArcGIS.GeoAnalyst.IRasterAnalysisEnvironment)conversionOp; // Explicit Cast
25 rasterAnalysisEnvironment.OutWorkspace = workspace;
26 //获取输入的范围Extent
27 ESRI.ArcGIS.Geometry.IEnvelope envelope = new ESRI.ArcGIS.Geometry.EnvelopeClass();
28 envelope = geoDataset.Extent;
29 //根据图形边界,X轴方向单元格数量设置单元格尺寸大小
30 // Set cell size
31 System.Double double_xMin = envelope.XMin;
32 System.Double double_xMax = envelope.XMax;
33 System.Double double_difference = double_xMax - double_xMin;
34 System.Double double_cellSize = double_difference / int32_NumberOfCells;
35 object object_cellSize = (System.Object)double_cellSize;
36 rasterAnalysisEnvironment.SetCellSize(ESRI.ArcGIS.GeoAnalyst.esriRasterEnvSettingEnum.esriRasterEnvValue, ref object_cellSize);
37
38 //设置输出范围
39 // Set output extent
40 object object_Envelope = (System.Object)envelope; // Explict Cast
41 object object_Missing = System.Type.Missing;
42 rasterAnalysisEnvironment.SetExtent(ESRI.ArcGIS.GeoAnalyst.esriRasterEnvSettingEnum.esriRasterEnvValue, ref object_Envelope, ref object_Missing);
43 //设置输出空间参考与输入一致
44 // Set output spatial reference
45 rasterAnalysisEnvironment.OutSpatialReference = spatialReference;
46 //以下是执行空间操作
47 // Perform spatial operation
48 ESRI.ArcGIS.Geodatabase.IRasterDataset rasterDataset = new ESRI.ArcGIS.DataSourcesRaster.RasterDatasetClass();
49 //创建输出栅格文件的名称,用下划线替代空格
50 // Create the new raster name that meets the coverage naming convention
51 System.String string_RasterName = feaureClass.AliasName;
52 if (string_RasterName.Length > 13)
53 {
54 string_RasterName = string_RasterName.Substring(0, 13);
55 }
56 string_RasterName = string_RasterName.Replace(" ", "_");
57
58 rasterDataset = conversionOp.ToRasterDataset(geoDataset, "GRID", workspace, string_RasterName);
59
60 ESRI.ArcGIS.Geodatabase.IGeoDataset geoDataset_output = (ESRI.ArcGIS.Geodatabase.IGeoDataset)rasterDataset;
61
62 return geoDataset_output;
63 }
源:http://help.arcgis.com/en/sdk/10.0/arcobjects_net/componenthelp/index.html#//00490000000z000000