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