1. 程式人生 > >C#+ArcEngine:向量點轉柵格-1(VS2010窗體+程式碼)

C#+ArcEngine:向量點轉柵格-1(VS2010窗體+程式碼)

        /// <summary>
        /// 向量點轉柵格
        /// </summary>
        /// <param name="xjFeatureLayer">向量圖層</param>
        /// <param name="RasterPath">柵格絕對路徑</param>
        /// <param name="CellSize">柵格邊長</param>
        /// <param name="SecletctedField">所選欄位(高程等)</param>
        /// <returns>返回柵格圖層</returns>
        private ILayer xjShpPointToRaster(IFeatureLayer xjFeatureLayer, string RasterPath, double CellSize, string SecletctedField)
        {
            IFeatureClass xjFeatureClass = xjFeatureLayer.FeatureClass;
            IFeatureClassDescriptor xjFeatureClassDescriptor = new FeatureClassDescriptorClass();//using ESRI.ArcGIS.GeoAnalyst;
            xjFeatureClassDescriptor.Create(xjFeatureClass, null, SecletctedField);
            IGeoDataset xjGeoDataset = xjFeatureClassDescriptor as IGeoDataset;

            IWorkspaceFactory xjwsf = new RasterWorkspaceFactoryClass();//using ESRI.ArcGIS.DataSourcesRaster;
            string xjRasterFolder = System.IO.Path.GetDirectoryName(RasterPath);
            IWorkspace xjws = xjwsf.OpenFromFile(xjRasterFolder, 0);
            IConversionOp xjConversionOp = new RasterConversionOpClass();
            IRasterAnalysisEnvironment xjRasteren = xjConversionOp as IRasterAnalysisEnvironment;

            object xjCellSize = CellSize as object;
            xjRasteren.SetCellSize(esriRasterEnvSettingEnum.esriRasterEnvValue, ref xjCellSize);

            string xjFileName = System.IO.Path.GetFileName(RasterPath);
            IRasterDataset xjdaset2 = xjConversionOp.ToRasterDataset(xjGeoDataset, "TIFF", xjws, xjFileName);

            IRasterLayer xjRasterLayer = new RasterLayerClass();
            xjRasterLayer.CreateFromDataset(xjdaset2);
            ILayer xjLayer = xjRasterLayer;
            xjRasterLayer.Name = xjFileName;

            return xjLayer;

        }



VS2010+ArcEngine10.1具體窗體+程式碼見:點選開啟連結