Example #1
0
        public bool AddRasterDatesetToMD(IMosaicDataset pMosaicDataset, IRasterDataset pRasteDataset, IRasterType pRasterType)
        {
            try
            {
                IRasterDatasetCrawler pRasterDatasetCrawler = new RasterDatasetCrawlerClass();

                pRasterDatasetCrawler.RasterDataset = pRasteDataset;

                IDataset pDataset = pRasteDataset as IDataset;

                ESRI.ArcGIS.esriSystem.IName pName = pDataset.FullName;

                pRasterDatasetCrawler.DatasetName = pName;

                IMosaicDatasetOperation pMosaicDatasetOperation = (IMosaicDatasetOperation)pMosaicDataset;

                IAddRastersParameters AddRastersArgs = new AddRastersParametersClass();

                AddRastersArgs.Crawler = pRasterDatasetCrawler as IDataSourceCrawler;

                AddRastersArgs.RasterType = pRasterType;

                pMosaicDatasetOperation.AddRasters(AddRastersArgs, null);

                return true;
            }
            catch (System.Exception ex)
            {
                return false;
            }
        }
Example #2
0
 public static bool CreateSignaturefile(IRasterDataset pRasterDataset, int classCount, string gsgPath)
 {
     IGeoDataset pGeo = pRasterDataset as IGeoDataset;
     IMultivariateOp pMultivarateOp = new RasterMultivariateOpClass();
     // string gsgPath = "e:\\222.gsg";
     pMultivarateOp.IsoCluster(pGeo, gsgPath, classCount);
     return true;
 }
Example #3
0
        private void btnSave_Click(object sender, EventArgs e)
        {
            string rstNm   = cmbRaster.Text;
            string wksNm   = txtWorkspace.Text;
            string outNm   = txtOutName.Text;
            string outType = cmbType.Text;
            int    blSize  = System.Convert.ToInt32(nudBS.Value);

            if (outWks == null || wksNm == "" || wksNm == null || rstNm == "" || rstNm == null || outNm == "" || outNm == null)
            {
                MessageBox.Show("Raster, Workspace, or Output Name are not specified!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            object noDataVl = null;

            if (rsUtil.isNumeric(txtNoDataVl.Text) && txtNoDataVl.Visible)
            {
                noDataVl = System.Convert.ToDouble(txtNoDataVl.Text);
            }
            rasterUtil.rasterType rType = (rasterUtil.rasterType)Enum.Parse(typeof(rasterUtil.rasterType), outType);
            this.Visible = false;
            esriUtil.Forms.RunningProcess.frmRunningProcessDialog rp = new RunningProcess.frmRunningProcessDialog(false);
            rp.addMessage("Saving raster");
            rp.addMessage("This may take a while...");
            rp.stepPGBar(20);
            rp.Show();
            rp.Refresh();

            DateTime dt1 = DateTime.Now;

            try
            {
                IRaster        rs     = rstDic[rstNm];
                IRasterDataset rsDset = rsUtil.saveRasterToDatasetM(rs, outNm, outWks, rType, noDataVl, blSize, blSize);
                DateTime       dt2    = DateTime.Now;
                IRasterLayer   rsLyr  = new RasterLayerClass();
                rsLyr.CreateFromDataset(rsDset);
                rsLyr.Name    = outNm;
                rsLyr.Visible = false;
                mp.AddLayer((ILayer)rsLyr);
                TimeSpan ts      = dt2.Subtract(dt1);
                string   prcTime = "Time to complete process:\n" + ts.Days.ToString() + " Days " + ts.Hours.ToString() + " Hours " + ts.Minutes.ToString() + " Minutes " + ts.Seconds.ToString() + " Seconds ";
                rp.addMessage(prcTime);
                this.DialogResult = DialogResult.OK;
            }
            catch (Exception ex)
            {
                rp.addMessage(ex.ToString());
            }
            finally
            {
                rp.stepPGBar(100);
                rp.enableClose();
                this.Close();
            }
        }
Example #4
0
        private void OpenRaster(string rasterFileName)
        {
            //文件名处理

            string ws = System.IO.Path.GetDirectoryName(rasterFileName);

            string fbs = System.IO.Path.GetFileName(rasterFileName);

            //创建工作空间

            IWorkspaceFactory pWork = new RasterWorkspaceFactoryClass();

            //打开工作空间路径,工作空间的参数是目录,不是具体的文件名

            IRasterWorkspace pRasterWS = (IRasterWorkspace)pWork.OpenFromFile(ws, 0);

            //打开工作空间下的文件,

            IRasterDataset pRasterDataset = pRasterWS.OpenRasterDataset(fbs);


            IRasterLayer pRasterLayer = new RasterLayerClass();

            pRasterLayer.CreateFromDataset(pRasterDataset);

            //添加到图层控制中
            IRaster pRaster = pRasterLayer.Raster;

            IGeoDataset           pGeodataset = pRaster as IGeoDataset;
            IRasterBandCollection pRsBandCol  = pGeodataset as IRasterBandCollection;
            int bandCount;

            bandCount = pRsBandCol.Count;
            if (bandCount == 1)
            {
                IRasterBand pRasterBand1 = pRsBandCol.Item(0);
                pRasterBand1.ComputeStatsAndHist();
            }
            if (bandCount > 1)
            {
                IRasterBand pRasterBand1 = pRsBandCol.Item(0);
                pRasterBand1.ComputeStatsAndHist();
                IRasterBand pRasterBand2 = pRsBandCol.Item(1);
                pRasterBand2.ComputeStatsAndHist();
                IRasterBand pRasterBand3 = pRsBandCol.Item(2);
                pRasterBand3.ComputeStatsAndHist();
            }
            IRasterDataset pRasterDataset2 = pRasterWS.OpenRasterDataset(fbs);
            IRasterLayer   pRasterLayer2   = new RasterLayerClass();

            pRasterLayer2.CreateFromDataset(pRasterDataset2);

            //添加到图层控制中

            pMap.AddLayer(pRasterLayer2 as ILayer);
        }
Example #5
0
 /// <summary>
 /// 创建影像金字塔
 /// </summary>
 public static void CreateRasterPyramid(this IRasterDataset rasterDataset)
 {
     if (rasterDataset is IRasterPyramid3 rasterPyrmid)
     {
         if (!rasterPyrmid.Present)
         {
             rasterPyrmid.Create();//创建金字塔
         }
     }
 }
Example #6
0
        public IRawPixels GetRawPixels(IRasterDataset pRDS, int band)
        {
            IRawPixels            pRP;
            IRasterBandCollection pBandCollection = pRDS as IRasterBandCollection;

            IRasterBand pRasterBand = pBandCollection.Item(band);

            pRP = pRasterBand as IRawPixels;
            return(pRP);
        }
Example #7
0
        /// <summary>
        /// 创建RasterDataset文件   张琪    20110614
        /// </summary>
        /// <param name="sDir">保存路径</param>
        /// <param name="sName">文件名</param>
        /// <param name="sFormat"></param>
        /// <param name="pOrigin">点</param>
        /// <param name="nCol"></param>
        /// <param name="nRow"></param>
        /// <param name="cellsizeX"></param>
        /// <param name="cellsizeY"></param>
        /// <param name="ePixelType"></param>
        /// <param name="pSR"></param>
        /// <param name="bPerm"></param>
        /// <returns></returns>
        public IRasterDataset CreateRasterSurf(String sDir, String sName, String sFormat, ESRI.ArcGIS.Geometry.IPoint pOrigin, int nCol, int nRow, Double cellsizeX, Double cellsizeY, rstPixelType ePixelType, ISpatialReference2 pSR, bool bPerm)
        {
            IWorkspaceFactory prWksFac          = new RasterWorkspaceFactoryClass();
            IWorkspace        pWorkspace        = prWksFac.OpenFromFile(sDir, 0);
            IRasterWorkspace2 pRasterWorkspace2 = pWorkspace as IRasterWorkspace2;
            int            numbands             = 1;
            IRasterDataset pRasterDataset       = pRasterWorkspace2.CreateRasterDataset(sName, sFormat, pOrigin, nCol, nRow, cellsizeX, cellsizeY, numbands, ePixelType, pSR, bPerm);

            return(pRasterDataset);
        }
Example #8
0
        public IRasterDataset OpenFileRasterDataset(string pFolderName, string pDatasetName)
        {
            IWorkspaceFactory pWorkspaceFactory = new RasterWorkspaceFactoryClass();
            IRasterWorkspace  pRasterWorkspace  = (IRasterWorkspace)pWorkspaceFactory.OpenFromFile(pFolderName, 0);


            IRasterDataset pRasterDataset = pRasterWorkspace.OpenRasterDataset(pDatasetName);

            return(pRasterDataset);
        }
Example #9
0
        public static IRasterRenderer CreateSlopePrecentRiseColorRamp(Raster gRaster)
        {
            try
            {
                // Open file raster dataset and ensure that statistics and histograms are present (absence of histograms will cause Renderer.Update() to crash)
                IRasterDataset rasterDataset = ArcMapUtilities.GetRasterDataset(gRaster);
                ESRI.ArcGIS.DataSourcesRaster.IRasterBandCollection pRastBands     = (ESRI.ArcGIS.DataSourcesRaster.IRasterBandCollection)rasterDataset;
                ESRI.ArcGIS.DataSourcesRaster.IEnumRasterBand       enumRasterBand = (ESRI.ArcGIS.DataSourcesRaster.IEnumRasterBand)pRastBands.Bands;
                rasterDataset.PrecalculateStats(0);
                ESRI.ArcGIS.DataSourcesRaster.IRasterBand pRastBand = enumRasterBand.Next();
                pRastBand.ComputeStatsAndHist();

                IRasterClassifyColorRampRenderer classifyRenderer = new RasterClassifyColorRampRendererClass();
                IRasterRenderer rasterRenderer = (IRasterRenderer)classifyRenderer;
                IRaster         raster         = rasterDataset.CreateDefaultRaster();

                rasterRenderer.Raster       = raster;
                classifyRenderer.ClassCount = 10;
                rasterRenderer.Update();
                classifyRenderer.Break[0] = 0;
                classifyRenderer.Label[0] = "0 to 3.5%";
                classifyRenderer.Break[1] = 3.5;
                classifyRenderer.Label[1] = "3.5% to 8.75%";
                classifyRenderer.Break[2] = 8.75;
                classifyRenderer.Label[2] = "8.75% to 15%";
                classifyRenderer.Break[3] = 15;
                classifyRenderer.Label[3] = "15% to 25%";
                classifyRenderer.Break[4] = 25;
                classifyRenderer.Label[4] = "25% to 45%";
                classifyRenderer.Break[5] = 45;
                classifyRenderer.Label[5] = "45% to 70%";
                classifyRenderer.Break[6] = 70;
                classifyRenderer.Label[6] = "70% to 100%";
                classifyRenderer.Break[7] = 100;
                classifyRenderer.Label[7] = "100% to 175%";
                classifyRenderer.Break[8] = 175;
                classifyRenderer.Label[8] = "175% to 565%";
                classifyRenderer.Break[9] = 565;
                classifyRenderer.Label[9] = "> 565%";
                List <RgbColor> lColors    = CreateSlopeColorRamp();
                IFillSymbol     fillSymbol = new SimpleFillSymbolClass();
                for (int i = 0; i < classifyRenderer.ClassCount; i++)
                {
                    fillSymbol.Color           = lColors[i];
                    classifyRenderer.Symbol[i] = (ISymbol)fillSymbol;
                }

                return(rasterRenderer);
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(ex.Message);
                return(null);
            }
        }
Example #10
0
        private void button2_Click(object sender, EventArgs e)
        {
            if (this.listBox1.SelectedItems == null)
            {
                MessageBox.Show("请选择图幅名!");
                return;
            }

            string sqlText = "";

            for (int i = 0; i < this.listBox1.SelectedItems.Count; i++)
            {
                sqlText = "select name,DATASTRUCTURE from sheetmetadata where NAME='" + listBox1.SelectedItems[i] + "'";
                m_oraCmd.CommandText = sqlText;
                OracleDataReader dr = m_oraCmd.ExecuteReader();
                if (!dr.HasRows)
                {
                    MessageBox.Show("图幅不存在!");
                    return;
                }
                while (dr.Read())
                {
                    // this.listBox1.Items.Add(dr.GetValue(0).ToString());
                    if (dr.GetValue(1).ToString() == "矢量")
                    {
                        IFeatureLayer feaLyr;
                        feaLyr = m_gdata.AddFeatureClassToMap(dr.GetValue(0).ToString());
                        this.m_mapControl.Map.AddLayer(feaLyr);
                    }
                    if (dr.GetValue(1).ToString() == "影像")
                    {
                        IRasterWorkspaceEx rasterWS      = m_workSpace as IRasterWorkspaceEx;
                        IRasterCatalog     rasterCatalog = rasterWS.OpenRasterCatalog("COASTALGIS." + dr.GetValue(1).ToString());
                        ITable             table         = rasterCatalog as ITable;
                        ICursor            cursor        = table.Search(null, false);
                        IRow           row      = cursor.NextRow();
                        IRasterDataset rasterDS = null;
                        while (row != null)
                        {
                            IRasterCatalogItem rasterCatalogItem = row as IRasterCatalogItem;

                            if (dr.GetValue(0).ToString() == row.get_Value(cursor.FindField("NAME")).ToString())
                            {
                                rasterDS = rasterCatalogItem.RasterDataset;
                                break;
                            }
                            row = cursor.NextRow();
                        }
                        IRasterLayer rasterLayer = new RasterLayerClass();
                        rasterLayer.CreateFromDataset(rasterDS);
                        this.m_mapControl.Map.AddLayer(rasterLayer);
                    }
                }
            }
        }
        protected override void OnClick()
        {
            String path     = @"c:\temp";
            String fileName = "testRasterFileCreated_NoDataEquals15.tif";

            IRasterDataset rasterDataset = CreateRasterDataset(path, fileName);

            setNoDataValueForASpecificBand(rasterDataset);

            ArcMap.Application.CurrentTool = null;
        }
Example #12
0
        /// <summary>
        /// Opens the raster file.
        /// </summary>
        /// <param name="sPath">The s path.</param>
        /// <param name="sName">Name of the s.</param>
        /// <returns>IRasterDataset.</returns>
        public static IRasterDataset OpenRasterFile(string sPath, string sName)
        {
            IRasterDataset result;

            if (!System.IO.Directory.Exists(sPath))
            {
                result = null;
            }
            else
            {
                IWorkspace workspace = EngineAPI.OpenWorkspace(sPath, DataType.raster);
                if (workspace == null)
                {
                    result = null;
                }
                else
                {
                    IEnumDatasetName enumDatasetName = workspace.get_DatasetNames(esriDatasetType.esriDTRasterDataset);
                    try
                    {
                        enumDatasetName.Reset();
                        IDatasetName datasetName;
                        while ((datasetName = enumDatasetName.Next()) != null)
                        {
                            if (string.Equals(datasetName.Name, sName, System.StringComparison.OrdinalIgnoreCase))
                            {
                                break;
                            }
                        }
                        if (datasetName == null)
                        {
                            result = null;
                        }
                        else
                        {
                            IRasterDataset rasterDataset = (datasetName as IName).Open() as IRasterDataset;
                            result = rasterDataset;
                        }
                    }
                    finally
                    {
                        if (enumDatasetName != null)
                        {
                            System.Runtime.InteropServices.Marshal.ReleaseComObject(enumDatasetName);
                        }
                        if (workspace != null)
                        {
                            System.Runtime.InteropServices.Marshal.ReleaseComObject(workspace);
                        }
                    }
                }
            }
            return(result);
        }
        async private Task <bool> ImportFiles(string[] data, bool refreshList, Dictionary <string, Guid> providers)
        {
            IRasterClass rc = await _exObject.GetInstanceAsync() as IRasterClass;

            if (rc == null)
            {
                return(false);
            }

            IRasterDataset rDS = rc.Dataset as IRasterDataset;

            if (rDS == null || rDS.Database == null)
            {
                return(false);
            }

            FDBImageDataset operations = new FDBImageDataset(rDS.Database as IImageDB, rDS.DatasetName);

            // refreshList = false wenn ganzen Verzeichnis durchsucht wird...
            // dann sollen auch keine Fehler verursacht werden wenn ein bild nicht gereferenziert ist,
            // in diesem fall bild einfach ignorieren
            operations.handleNonGeorefAsError = refreshList;

            ImageImportProgressReporter reporter = new ImageImportProgressReporter(operations, data.Length);

            ImportArguments args = new ImportArguments(operations, rDS, data, providers);

            FormTaskProgress progress = new FormTaskProgress();

            progress.Text = "Import Images: " + rDS.DatasetName;
            progress.Mode = ProgressMode.ProgressDisk;
            progress.ShowProgressDialog(reporter, Import(args));

            if (refreshList)
            {
                await RefreshList();
            }

            if (!reporter.CancelTracker.Continue)
            {
                MessageBox.Show("Cancel...");
                return(false);
            }

            if (operations.lastErrorMessage != String.Empty)
            {
                MessageBox.Show("ERROR: " + operations.lastErrorMessage);
                return(false);
            }

            await rDS.RefreshClasses();

            return(true);
        }
        /// <summary>
        /// 建立栅格图层属性表
        /// </summary>
        /// <param name="rasterDataset">栅格数据集</param>
        public static void BuildRasterAttributeTable(IRasterDataset rasterDataset)
        {
            //建立默认属性表
            IRasterDatasetEdit2 rasterDatasetEdit = (IRasterDatasetEdit2)rasterDataset;

            if (rasterDatasetEdit == null)
            {
                return;
            }
            rasterDatasetEdit.BuildAttributeTable();
        }
Example #15
0
        //执行山体阴影操作
        public void Init()
        {
            //遍历子节点读取参数
            foreach (XmlNode xnl1 in m_xmlnode.ChildNodes)
            {
                if (xnl1 is XmlComment)
                {
                    continue;
                }

                XmlElement xe = (XmlElement)xnl1;
                //找到Azimuth节点,读取其参数
                if (xe.Name == "Azimuth")
                {
                    m_azimuth = double.Parse(xe.InnerText);
                }
                //找到ZFactor节点,读取其参数
                if (xe.Name == "ZFactor")
                {
                    m_zfactor = double.Parse(xe.InnerText);
                }
            }
            //山体阴影的实现
            try
            {
                //将m_raster转为IRaster接口实行栅格相关操作
                IRaster2 raster2 = m_raster as IRaster2;
                //使用IHillshadeFunctionArguments接口进行山体阴影操作
                IHillshadeFunctionArguments hillshadeFunctionArugments = (IHillshadeFunctionArguments) new HillshadeFunctionArguments();
                //设置生成山体阴影所需要的参数Azimuth和ZFactor的值
                hillshadeFunctionArugments.Azimuth = m_azimuth;
                hillshadeFunctionArugments.ZFactor = m_zfactor;
                //设置数据源为该raster
                hillshadeFunctionArugments.DEM = raster2;
                //创建一个IRasterFunction
                IRasterFunction rasterFunction = new HillshadeFunction();
                //创建IFunctionRasterDataset以调用Init方法执行函数
                IFunctionRasterDataset functionRasterDataset = new FunctionRasterDataset();
                //设置IFunctionRasterDataset的相关参数
                IFunctionRasterDatasetName functionRasterDatasetName = (IFunctionRasterDatasetName) new FunctionRasterDatasetNameClass();
                functionRasterDatasetName.FullName = @"D:\RDB";
                functionRasterDataset.FullName     = (IName)functionRasterDatasetName;
                //调用Init执行
                functionRasterDataset.Init(rasterFunction, hillshadeFunctionArugments);
                //所得结果转为IRasterDataset
                IRasterDataset rasData = functionRasterDataset as IRasterDataset;
                //修改m_raster
                m_raster = rasData.CreateDefaultRaster();
            }
            catch (System.Exception ex)//捕获异常,输出异常信息
            {
                MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Example #16
0
        // 从地理数据库中加载栅格数据
        private void AddRasterFromGDB(string rastername)
        {
            FileGDBWorkspaceFactory pWorkspaceFactory = new FileGDBWorkspaceFactoryClass();
            IWorkspace         pWorkspace             = pWorkspaceFactory.OpenFromFile(DATADIR + "Database.gdb", 0);
            IRasterWorkspaceEx pRasterWorkspace       = pWorkspace as IRasterWorkspaceEx;
            IRasterDataset     pRasterDataset         = pRasterWorkspace.OpenRasterDataset(rastername);
            IRasterLayer       pRasterLayer           = new RasterLayerClass();

            pRasterLayer.CreateFromDataset(pRasterDataset);
            m_pMapC2.AddLayer(pRasterLayer);
        }
Example #17
0
        private void btnSure_Click(object sender, EventArgs e)
        {
            SysCommon.CProgress vProgress = new SysCommon.CProgress("进度条");
            try
            {
                if (txtSave.Text == "" || comboBoxFortraster.Text == "" || comboBoxToraster.Text == "")
                {
                    MessageBox.Show("参数未设置完全!", "提示");
                    return;
                }

                vProgress.EnableCancel    = false;//设置进度条
                vProgress.ShowDescription = true;
                vProgress.FakeProgress    = true;
                vProgress.TopMost         = true;
                vProgress.ShowProgress();
                vProgress.SetProgress("正在进行填挖方分析");
                double Z       = Convert.ToDouble(txtZFactor.Text.ToString());
                string SavName = System.IO.Path.GetDirectoryName(txtSave.Text);

                ClsGPTool pClsGPTool = new ClsGPTool();
                pClsGPTool.CutFillGP(fortraster_Path, toraster_Path, txtSave.Text, Z);//进行填挖方分析
                vProgress.Close();
                if (MessageBox.Show("填挖方分析成功,是否加载分析结果", "提示!", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
                {
                    if (this.WriteLog)
                    {
                        Plugin.LogTable.Writelog("填挖方分析,填挖前表面集:" + comboBoxFortraster.Text + ",填挖后表面集:" + comboBoxToraster.Text);
                        Plugin.LogTable.Writelog("输出栅格路径为:" + txtSave.Text);
                    }
                    vProgress.ShowProgress();
                    vProgress.SetProgress("正在进行加载结果数据");
                    IWorkspaceFactory pWorkspaceFactory = new RasterWorkspaceFactoryClass();                                            // 张琪  20110627
                    IRasterWorkspace  pRasterWorkspace  = pWorkspaceFactory.OpenFromFile(SavName, 0) as IRasterWorkspace;
                    IRasterDataset    pRasterDataset    = pRasterWorkspace.OpenRasterDataset(System.IO.Path.GetFileName(txtSave.Text)); //包含扩展名的表面数据集
                    IRasterLayer      pRasterLayer      = new RasterLayerClass();
                    pRasterLayer.CreateFromDataset(pRasterDataset);
                    ILayer pLayer = pRasterLayer as ILayer;
                    m_pCurrentSceneControl.Scene.AddLayer(pLayer, true);
                    m_pCurrentSceneControl.SceneGraph.RefreshViewers();
                    vProgress.Close();
                }


                this.Close();
            }
            catch
            {
                vProgress.Close();
                this.Close();
                MessageBox.Show("很抱歉,操作失败!", "提示!");
                return;
            }
        }
        //获取所有波段的最大像元数的函数
        private int GetMaxBandCount()
        {
            int[] max = new int[m_selband.Length];
            for (int i = 0; i < m_selband.Length; i++)
            {
                //遍历地计算和获取每个波段的直方图信息
                IRaster2              raster2     = m_rstlayer.Raster as IRaster2;
                IRasterDataset        rstDataset  = raster2.RasterDataset;
                IRasterBandCollection rstBandColl = rstDataset as IRasterBandCollection;
                IRasterBand           rasterBand  = rstBandColl.Item(i);

                //计算该波段的histogram(tips:类似于计算statistics)
                bool hasStat = false;
                rasterBand.HasStatistics(out hasStat);
                if (null == rasterBand.Statistics || !hasStat || rasterBand.Histogram == null)
                {
                    rasterBand.ComputeStatsAndHist();
                }
                //计算过直方图和统计,但是计算失败,仍然为null
                if (null == rasterBand.Statistics || rasterBand.Histogram == null)
                {
                    max[i] = 0;
                    continue;
                }

                //获取每个像元值的统计个数
                double[] histo = rasterBand.Histogram.Counts as double[];

                //计算最大像元数
                int maxCount = (int)histo[0];
                for (int j = 0; j < histo.Length; j++)
                {
                    if (maxCount < histo[j])
                    {
                        maxCount = (int)histo[j];
                    }
                }
                //记录下该波段的最大像元数
                max[i] = maxCount;
            }

            //计算所有波段的最大像元数
            int maxst = max[0];

            for (int k = 0; k < max.Length; k++)
            {
                if (maxst < max[k])
                {
                    maxst = (int)max[k];
                }
            }
            //返回所有波段的最大像元数
            return(maxst);
        }
        /// <summary>
        /// 根据坐标返回影像对应的像元值
        /// </summary>
        /// <param name="point"></param>
        /// <param name="pRasterDataset"></param>
        /// <returns></returns>
        public string  GetCellValueByCoordinate(IPoint point, IRasterDataset pRasterDataset)
        {
            GetCellValue getCellValue = new GetCellValue();

            getCellValue.in_raster      = pRasterDataset;
            getCellValue.location_point = string.Format("{0} {1}", point.X, point.Y);
            //结果
            Runtool(this._gp, getCellValue);
            string result = getCellValue.out_string;

            return(result);
        }
Example #20
0
        public static IRaster ClassifyMethod(IRasterDataset pRasterDataset, int classCount, string gsgPath)
        {
            IGeoDataset pGeoDatasetResult=null;

            if (CreateSignaturefile(pRasterDataset, classCount, gsgPath))
            {
                IGeoDataset pGeo = pRasterDataset as IGeoDataset;
                IMultivariateOp pMultivarateOp = new RasterMultivariateOpClass();
                 pGeoDatasetResult = pMultivarateOp.MLClassify(pGeo, gsgPath, false, esriGeoAnalysisAPrioriEnum.esriGeoAnalysisAPrioriEqual, Type.Missing, Type.Missing);
            }
            return (IRaster)pGeoDatasetResult;
        }
Example #21
0
        /// <summary>
        /// 执行栅格转矢量
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void RtoF_backgroundWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            BackgroundWorker worker = sender as BackgroundWorker;

            //设置CancellationPending可以退出任务线程
            if (worker.CancellationPending == true)
            {
                e.Cancel = true;
            }
            else
            {
                try
                {
                    FileInfo inputfinfo = new FileInfo(rastertofeature_input.Text);
                    FileInfo outputinfo = new FileInfo(rastertofeature_output.Text);

                    IWorkspaceFactory workspaceFactory = new ShapefileWorkspaceFactoryClass();
                    IWorkspace        workspace        = workspaceFactory.OpenFromFile(outputinfo.DirectoryName, 0);//创建输出工作空间


                    IWorkspaceFactory workspacefactory = new RasterWorkspaceFactoryClass();
                    IRasterWorkspace  rasterworkspace  = workspacefactory.OpenFromFile(inputfinfo.DirectoryName, 0) as IRasterWorkspace;
                    IRasterDataset    rasterdataset    = rasterworkspace.OpenRasterDataset(inputfinfo.Name);
                    IGeoDataset       geodataset       = rasterdataset as IGeoDataset;

                    watch = new Stopwatch();
                    watch.Start();

                    //执行转换
                    IConversionOp conversionOp     = new RasterConversionOpClass();
                    IGeoDataset   geodatasetresult = null;
                    if (rastertofeature_geometry.Text == "POINT")
                    {
                        geodatasetresult = conversionOp.ToFeatureData(geodataset, esriGeometryType.esriGeometryPoint, workspace, outputinfo.Name);
                    }
                    else
                    {
                        if (rastertofeature_geometry.Text == "POLYLINE")
                        {
                            geodatasetresult = conversionOp.ToFeatureData(geodataset, esriGeometryType.esriGeometryPolyline, workspace, outputinfo.Name);
                        }
                        else
                        {
                            geodatasetresult = conversionOp.ToFeatureData(geodataset, esriGeometryType.esriGeometryPolygon, workspace, outputinfo.Name);
                        }
                    }
                }
                catch (Exception erro)
                {
                    MessageBox.Show(erro.Message, "错误");
                }
            }
        }
        /// <summary>
        /// 是否存在金字塔
        /// </summary>
        /// <param name="rasterFilePath">栅格文件路径</param>
        /// <returns></returns>
        public static bool IsExistRasterPyramid(string rasterFilePath)
        {
            IRasterDataset pRasterDataset = GetRasterDataset(rasterFilePath);
            //影像金字塔判断与创建
            IRasterPyramid3 pRasPyrmid = pRasterDataset as IRasterPyramid3;

            if (pRasPyrmid == null)
            {
                return(false);
            }
            return(pRasPyrmid.Present);
        }
Example #23
0
        private void button2_Click(object sender, EventArgs e)
        {
            //打开矢量文件
            OpenFileDialog openfiledialog = new OpenFileDialog();

            openfiledialog.CheckFileExists = true;
            openfiledialog.Title           = "打开文件";
            openfiledialog.Filter          = "文件(*.*)|*.bmp;*.tif;*jpg;*.img|(*.bmp)|*.bmp|(*.tif)|*.tif|(*.jpg)|*.jpg|(*.img)|*.img|(*.shp)|*.shp";
            openfiledialog.ShowDialog();

            String fullpath = openfiledialog.FileName;

            if (fullpath == "")
            {
                return;
            }
            String path = System.IO.Path.GetDirectoryName(fullpath);
            //获取文件名
            String filename = System.IO.Path.GetFileName(fullpath);
            //文件名之前的路径名
            int    index        = fullpath.LastIndexOf("\\");
            string filePathName = fullpath.Substring(0, index);
            //获取后缀名
            string aLastName = fullpath.Substring(fullpath.LastIndexOf(".") + 1, (fullpath.Length - fullpath.LastIndexOf(".") - 1));

            if (aLastName == "shp")
            {
                axMapControl1.AddShapeFile(filePathName, filename);
                axMapControl1.ActiveView.Refresh();
            }
            else
            {
                //打开栅格文件
                IWorkspaceFactory pWorkspacefactory = new RasterWorkspaceFactory();                 //创建工作空间工厂
                IWorkspace        pWorkspace        = pWorkspacefactory.OpenFromFile(path, 0);      //打开工作空间
                IRasterWorkspace  pRasterworkspace  = pWorkspace as IRasterWorkspace;               //创建栅格工作空间
                IRasterDataset    pRasterdataset    = pRasterworkspace.OpenRasterDataset(filename); //创建Dataset
                //影像金字塔的判断与创建
                IRasterPyramid3 pRaspyrmid = pRasterdataset as IRasterPyramid3;
                if (pRaspyrmid != null)
                {
                    if (!(pRaspyrmid.Present))
                    {
                        pRaspyrmid.Create();
                    }
                }
                IRaster      pRaster      = pRasterdataset.CreateDefaultRaster();
                IRasterLayer pRasterlayer = new RasterLayerClass();
                pRasterlayer.CreateFromRaster(pRaster);
                ILayer pLayer = pRasterlayer as ILayer;
                axMapControl1.AddLayer(pLayer, 0);
            }
        }
Example #24
0
        /// <summary>
        /// Calultes std using spatial analyst focal statistics for each raster band within a specified neighborhood (square). Naming convention is std_bandNumber
        /// </summary>
        /// <param name="inputRstPath">can be a IRaster IRasterDataset or string path to a raster</param>
        /// <param name="numCellsWide"> number of cells wide</param>
        /// <returns>a string of all geoprocessing messages</returns>
        public string calcBandSpatialVariation(object inputRstPath, int numCellsWide)
        {
            StringBuilder sb = new StringBuilder();

            try
            {
                gp.OverwriteOutput = true;
                IRasterDataset rsDset = null;
                string         rsPath = null;
                if (inputRstPath is string)
                {
                    rsPath = inputRstPath.ToString();
                    string bnd = "";
                    rsDset = rsUtil.openRasterDataset(rsPath, out bnd);
                }
                else if (inputRstPath is IRasterDataset)
                {
                    rsDset = (IRasterDataset)inputRstPath;
                    IDataset dSet = (IDataset)rsDset;
                    rsPath = dSet.Workspace.PathName + "\\" + dSet.BrowseName;
                }
                else if (inputRstPath is IRaster2)
                {
                    rsDset = ((IRaster2)inputRstPath).RasterDataset;
                    IDataset dSet = (IDataset)rsDset;
                    rsPath = dSet.Workspace.PathName + "\\" + dSet.BrowseName;
                }
                else
                {
                    string x = "Not a string, RasterDataset, or Raster";
                    Console.WriteLine(x);
                    return(x);
                }
                IRasterBandCollection rsBndColl = (IRasterBandCollection)rsDset;
                int bndCnt = rsBndColl.Count;
                for (int cnt = 0; cnt < bndCnt; cnt++)
                {
                    IRaster           rst        = rsUtil.returnRaster(rsUtil.getBand(inputRstPath, cnt));
                    string            outRstPath = System.IO.Path.GetDirectoryName(rsPath) + "\\std_" + (cnt + 1).ToString();
                    IGPSANeighborhood nbr        = new GPSANeighborhoodClass();
                    double            cells      = System.Convert.ToDouble(numCellsWide);
                    nbr.SetRectangle(cells, cells, esriGeoAnalysisUnitsEnum.esriUnitsCells);
                    IGeoProcessorResult rslt = focalRaster(rst, nbr, statType.STD, "std_" + cnt.ToString());
                    sb.Append(getMessages(rslt));
                }
            }
            catch (Exception e)
            {
                sb.Append(e.ToString());
                Console.WriteLine(e.ToString());
            }
            return(sb.ToString());
        }
        private void btnQuery_Click(object sender, EventArgs e)
        {
            string year  = cbxYear.SelectedItem.ToString();
            string month = cbxMonth.SelectedItem.ToString();

            IWorkspaceFactory pFileGDBWorkspaceFactory;

            pFileGDBWorkspaceFactory = new FileGDBWorkspaceFactory();
            IWorkspace   pWorkspace   = pFileGDBWorkspaceFactory.OpenFromFile(rasterPath, 0);
            IEnumDataset pEnumDataset = pWorkspace.get_Datasets(ESRI.ArcGIS.Geodatabase.esriDatasetType.esriDTAny);

            pEnumDataset.Reset();
            IDataset  pDataset        = pEnumDataset.Next();
            DataTable SpatialRefTable = new DataTable();

            SpatialRefTable.Columns.Add(new DataColumn("影像名称", typeof(string)));
            SpatialRefTable.Columns.Add(new DataColumn("影像拍摄时间", typeof(string)));

            //判断数据集是否有数据
            while (pDataset != null)
            {
                if (pDataset is IRasterDataset) //栅格数据集
                {
                    IRasterWorkspaceEx pRasterWorkspace = (IRasterWorkspaceEx)pWorkspace;
                    IRasterDataset     pRasterDataset   = pRasterWorkspace.OpenRasterDataset(pDataset.Name);
                    //影像金字塔判断与创建
                    ISpatialReference pSpatialRef = (pRasterDataset as IGeoDataset).SpatialReference;
                    string            spatialref  = pSpatialRef.Name.ToString();
                    string            rastername  = pDataset.Name.ToString();
                    string[]          strArray    = rastername.Split('_');

                    DataRow dr = SpatialRefTable.NewRow();
                    dr["影像名称"]   = pDataset.Name.ToString();
                    dr["影像拍摄时间"] = strArray[1].Substring(0, 8);
                    IRasterLayer pRasterLayer = new RasterLayer();
                    pRasterLayer.CreateFromDataset(pRasterDataset);
                    if (strArray[1].Substring(0, 6) == year + month)
                    {
                        SpatialRefTable.Rows.Add(dr);
                    }
                }
                pDataset = pEnumDataset.Next();
            }
            // ExportExcel(SpatialRefTable);
            //弹出显示框
            FormQueryShowResult timeQuery = new FormQueryShowResult();

            timeQuery.Text = "时间查询";
            timeQuery.dgvQueryResult.DataSource       = SpatialRefTable;
            timeQuery.dgvQueryResult.Columns[1].Width = 200;
            timeQuery.Show();
        }
Example #26
0
        public static IRasterRenderer CreateGrainSizeStatisticColorRamp(GCDConsoleLib.Raster gRaster, UnitsNet.Units.LengthUnit eUnits)
        {
            try
            {
                // Open file raster dataset and ensure that statistics and histograms are present (absence of histograms will cause Renderer.Update() to crash)
                IRasterDataset rasterDataset = ArcMapUtilities.GetRasterDataset(gRaster);
                ESRI.ArcGIS.DataSourcesRaster.IRasterBandCollection pRastBands     = (ESRI.ArcGIS.DataSourcesRaster.IRasterBandCollection)rasterDataset;
                ESRI.ArcGIS.DataSourcesRaster.IEnumRasterBand       enumRasterBand = (ESRI.ArcGIS.DataSourcesRaster.IEnumRasterBand)pRastBands.Bands;
                rasterDataset.PrecalculateStats(0);
                ESRI.ArcGIS.DataSourcesRaster.IRasterBand pRastBand = enumRasterBand.Next();
                pRastBand.ComputeStatsAndHist();

                IRasterClassifyColorRampRenderer classifyRenderer = new RasterClassifyColorRampRendererClass();
                IRasterRenderer rasterRenderer = (IRasterRenderer)classifyRenderer;
                IRaster         raster         = rasterDataset.CreateDefaultRaster();

                rasterRenderer.Raster       = raster;
                classifyRenderer.ClassCount = 5;
                rasterRenderer.Update();
                classifyRenderer.Break[0] = 0;
                classifyRenderer.Label[0] = "Fines, Sand (0 to 2 mm)";
                classifyRenderer.Break[1] = UnitsNet.Length.From(2, UnitsNet.Units.LengthUnit.Millimeter).As(eUnits);
                classifyRenderer.Label[1] = "Fine Gravel (2 mm to 16 mm)";
                classifyRenderer.Break[2] = UnitsNet.Length.From(16, UnitsNet.Units.LengthUnit.Millimeter).As(eUnits);
                classifyRenderer.Label[2] = "Coarse Gravel (16 mm to 64 mm)";
                classifyRenderer.Break[3] = UnitsNet.Length.From(64, UnitsNet.Units.LengthUnit.Millimeter).As(eUnits);
                classifyRenderer.Label[3] = "Cobbles (64 mm to 256 mm)";
                classifyRenderer.Break[4] = UnitsNet.Length.From(256, UnitsNet.Units.LengthUnit.Millimeter).As(eUnits);
                classifyRenderer.Label[4] = "Boulders (> 256 mm)";

                List <RgbColor> lColors = new List <RgbColor>();
                lColors.Add(CreateRGBColor(194, 82, 60));
                lColors.Add(CreateRGBColor(240, 180, 17));
                lColors.Add(CreateRGBColor(123, 237, 0));
                lColors.Add(CreateRGBColor(27, 168, 124));
                lColors.Add(CreateRGBColor(11, 44, 122));

                IFillSymbol fillSymbol = new SimpleFillSymbol();
                for (int i = 0; i < classifyRenderer.ClassCount; i++)
                {
                    fillSymbol.Color           = lColors[i];
                    classifyRenderer.Symbol[i] = (ISymbol)fillSymbol;
                }

                return(rasterRenderer);
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(ex.Message);
                return(null);
            }
        }
Example #27
0
        public void ToRasterCatalog(IList ilist_0, IFeatureClass ifeatureClass_0)
        {
            IFeatureCursor featureCursor  = ifeatureClass_0.Insert(false);
            IRasterCatalog ifeatureClass0 = ifeatureClass_0 as IRasterCatalog;

            for (int i = 0; i < ilist_0.Count; i++)
            {
                IRasterDataset rasterDataset = (ilist_0[i] as IName).Open() as IRasterDataset;
                IFeatureBuffer featureBuffer = ifeatureClass_0.CreateFeatureBuffer();
                featureBuffer.Value[ifeatureClass0.RasterFieldIndex] = this.createRasterValue(rasterDataset);
                featureCursor.InsertFeature(featureBuffer);
            }
        }
Example #28
0
        public IRaster2 MapXY2RowCol(double x, double y, string rasname)
        {
            string         filepath    = @"D:\study\ao\MortonCode\slopedata";
            IRasterDataset rasds       = OpenRaterDS(filepath, rasname);
            IRaster2       ras         = rasds.CreateDefaultRaster() as IRaster2;
            IRasterLayer   rasterlayer = new RasterLayerClass();

            rasterlayer.CreateFromDataset(rasds);
            bitsize = rasterlayer.RowCount;
            col     = ras.ToPixelColumn(x);
            row     = ras.ToPixelRow(y);
            return(ras);
        }
Example #29
0
        public static IRasterValue createRasterValue(IRasterDataset irasterDataset_0)
        {
            IRasterStorageDef def = new RasterStorageDef
            {
                CompressionType     = esriRasterCompressionType.esriRasterCompressionLZ77,
                PyramidResampleType = rstResamplingTypes.RSP_BilinearInterpolation,
                PyramidLevel        = -1
            };

            return(new RasterValue {
                RasterDataset = irasterDataset_0, RasterStorageDef = def
            });
        }
        /// <summary>
        /// 获取高程信息ITable
        /// </summary>
        /// <param name="strFolderPath">DEM文件夹</param>
        /// <param name="strFileName">DEM文件名称</param>
        /// <param name="myIFeatureClass">过滤面状数据集</param>
        /// <returns>高程信息ITable</returns>
        public ITable CalculateValueFromFile(string strFolderPath, string strFileName, IFeatureClass myIFeatureClass)
        {
            IWorkspaceFactory myIWorkspaceFactory       = new RasterWorkspaceFactory();
            IWorkspace        myIWorkspace              = myIWorkspaceFactory.OpenFromFile(strFolderPath, 0);
            IRasterWorkspace  myIRasterWorkspace        = myIWorkspace as IRasterWorkspace;
            IRasterDataset    myIRasterDataset          = myIRasterWorkspace.OpenRasterDataset(strFileName);//创建影像数据集
            IGeoDataset       rasterIGeoDataset         = myIRasterDataset as IGeoDataset;
            IGeoDataset       myIFeatureClassGeoDataset = myIFeatureClass as IGeoDataset;
            IZonalOp          myIZonalOp = new RasterZonalOpClass();
            ITable            myITable   = myIZonalOp.ZonalStatisticsAsTable(myIFeatureClassGeoDataset, rasterIGeoDataset, true);

            return(myITable);
        }
Example #31
0
        /// <summary>
        /// Runs the Calculate Statistics tool from ArcMap.
        /// </summary>
        /// <param name="pRDS"></param>
        private void CalcStats(IRasterDataset pRDS)
        {
            IGeoProcessorResult result = null;

            ESRI.ArcGIS.Geoprocessor.Geoprocessor gp = new ESRI.ArcGIS.Geoprocessor.Geoprocessor();
            gp.OverwriteOutput = true;
            gp.AddOutputsToMap = false;

            ESRI.ArcGIS.DataManagementTools.CalculateStatistics statTool = new ESRI.ArcGIS.DataManagementTools.CalculateStatistics();
            statTool.in_raster_dataset = pRDS;

            result = (IGeoProcessorResult)gp.Execute(statTool, null);
        }
Example #32
0
        /// <summary>
        /// Creates a random raster given a template raster (defined extent and cell size)
        /// </summary>
        /// <param name="templateRasterPath">full path location of the template raster</param>
        /// <param name="outRasterPath">the full path location of the output random raster</param>
        /// <returns>geoprocessing messages</returns>
        public string createRandomRaster(string templateRasterPath, string outRasterPath)
        {
            ESRI.ArcGIS.SpatialAnalystTools.CreateRandomRaster cRndRst = new CreateRandomRaster();
            string         bnd     = "";
            IRasterDataset rDset   = rsUtil.openRasterDataset(templateRasterPath, out bnd);
            IRaster        rst     = rsUtil.createRaster(rDset);
            IRasterProps   rstProp = (IRasterProps)rst;
            IPnt           pnt     = rstProp.MeanCellSize();

            cRndRst.cell_size  = pnt.X;
            cRndRst.out_raster = outRasterPath;
            return(getMessages(gpExecute(cRndRst)));
        }
Example #33
0
        public IRasterBand GetBand(IRasterLayer rasterlayer)
        {
            string                fullpath    = rasterlayer.FilePath;
            string                filePath    = System.IO.Path.GetDirectoryName(fullpath);
            string                fileName    = System.IO.Path.GetFileName(fullpath);
            IWorkspaceFactory     wsf         = new RasterWorkspaceFactoryClass();
            IWorkspace            ws          = wsf.OpenFromFile(filePath, 0);
            IRasterWorkspace      rasterws    = ws as IRasterWorkspace;
            IRasterDataset        rastdataset = rasterws.OpenRasterDataset(fileName);
            IRasterBandCollection bandcoll    = rastdataset as IRasterBandCollection;

            return(bandcoll.Item(0));
        }
Example #34
0
        /// <summary>
        /// 波段计算和金字塔构建
        /// </summary>
        /// <param name="pRasterDataset"></param>
        public static void CalculateStatsAndPyramids(IRasterDataset pRasterDataset)
        {
            IRasterBandCollection pBandColl=(IRasterBandCollection)pRasterDataset;
            //波段统计
            for (int i=0;i<pBandColl.Count;i++)
            {

                IRasterBand pRasterBand=pBandColl.Item(i);
                pRasterBand.ComputeStatsAndHist();
                //IRasterStatistics pRasterStatistics= pRasterBand.Statistics;
                //double Maximum=pRasterStatistics.Maximum;
                //IRasterHistogram pRasterHistogram=pRasterBand.Histogram;

            }
            IRasterPyramid pRasterPyramids=(IRasterPyramid)pRasterDataset;
            if (pRasterPyramids.Present==false)
            {
                pRasterPyramids.Create();
            }
        }
Example #35
0
 /// <summary>
 /// 获取该栅格图像的相关数据
 /// <remarks>
 /// <list type="bullet">
 /// <item>
 /// <term>
 /// 初始化_pDataset
 /// </term>
 /// <item>
 /// 获取栅格的Height和Width
 /// </item>
 /// </item>
 /// </list>
 /// </remarks>
 /// </summary>
 /// <returns></returns>
 private void Open()
 {
     //Open
     IWorkspaceFactory pRFactory = new RasterWorkspaceFactoryClass();
     IRasterWorkspace2 rasterWorkspace = pRFactory.OpenFromFile(_rasterWorkSapce, 0) as IRasterWorkspace2;
     if (rasterWorkspace == null)
         throw new ArgumentException("栅格文件无法打开");
     _pDataset= rasterWorkspace.OpenRasterDataset(_rasterName);
     //set height and width
     
     IRasterProps pRasterProps = (IRasterProps)GetRaster();
     RasterInfo = new RasterInformation()
     {
         Width = pRasterProps.Width,
         Height = pRasterProps.Height,
         XCellSize = pRasterProps.MeanCellSize().X,
         YCellSize = pRasterProps.MeanCellSize().Y,
         OriginPoint = new PointClass() { X = pRasterProps.Extent.XMin,  Y = pRasterProps.Extent.YMin },
         SpatialReference = ((IGeoDataset) _pDataset).SpatialReference
     };
    
 }
Example #36
0
        //������ţ�Raster-08
        //��������createRasterValue
        //�������ܣ���RasterDataset�洢Ϊijһ����¼���Ա�����RasterCatalog�д洢
        //������pRasterDs����Ҫ�洢��RasterDataset
        //��ע��ͨ���ú������԰�����RasterStorageDef������ѹ�����������Ľ�����
        public IRasterValue createRasterValue(IRasterDataset pRasterDs)
        {
            IRasterValue pRasterVal;
            IRasterStorageDef pRasStoreDef;

            // ++  storage parameter
            pRasStoreDef = new RasterStorageDef();

            //createRasterStorageDef
            pRasStoreDef.CompressionType = esriRasterCompressionType.esriRasterCompressionJPEG2000; //esriRasterSdeCompressionTypeEnum.esriRasterSdeCompressionTypeJPEG2000;
            pRasStoreDef.PyramidResampleType = rstResamplingTypes.RSP_CubicConvolution;

            //���PyramidLevel=-1����ȫ��������
            pRasStoreDef.PyramidLevel = -1;
            // ++  raster value to raster field

            pRasterVal = new RasterValueClass();
            pRasterVal.RasterDataset = pRasterDs;
            pRasterVal.RasterStorageDef = pRasStoreDef;

            return (pRasterVal);

            // ++ cleanup
            //�����⣬�Ѿ�return�������Ƿ����ã�
            //pRasterVal = null;
            //pRasStoreDef = null;
        }
Example #37
0
        public static IRasterRenderer StretchRender(IRasterDataset pRasterDataset)
        {
            try
            {
                //Define the from and to colors for the color ramp
                IRgbColor pFromColor=new RgbColorClass();
                pFromColor.Red=255;
                pFromColor.Green=0;
                pFromColor.Blue=0;
                IRgbColor pToColor=new RgbColorClass();
                pToColor.Red=0;
                pToColor.Green=255;
                pToColor.Blue=0;

                IAlgorithmicColorRamp pRamp=new AlgorithmicColorRampClass();
                pRamp.Size=10;
                pRamp.FromColor=pFromColor;
                pRamp.ToColor=pToColor;
                bool createColorRamp;
                pRamp.CreateRamp(out createColorRamp);
                //create a stretch renderer
                IRasterStretchColorRampRenderer pStrechRenderer=new RasterStretchColorRampRendererClass();
                IRasterRenderer pRasterRenderer=(IRasterRenderer)pStrechRenderer;
                //set the renderer properties
                IRaster pRaster =pRasterDataset.CreateDefaultRaster();
                pRasterRenderer.Raster=pRaster;
                pRasterRenderer.Update();
                //
                pStrechRenderer.BandIndex=0;
                pStrechRenderer.ColorRamp=pRamp;
                IRasterStretch  pStretchType=(IRasterStretch)pRasterRenderer;
                pStretchType.StretchType=esriRasterStretchTypesEnum.esriRasterStretch_StandardDeviations;
                pStretchType.StandardDeviationsParam=2;
                return pRasterRenderer;

            }
            catch (System.Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(ex.Message);
                return null;
            }
        }
Example #38
0
 public bool CreateRaster(IRasterDataset pRDs, IRasterWorkspaceEx pWorkSpace)
 {
     IRasterProps pRasterProps = (IRasterProps)pRDs.CreateDefaultRaster();
     IRasterStorageDef pRasterStorageDef = new RasterStorageDefClass();
     pRasterStorageDef.CompressionType = esriRasterCompressionType.esriRasterCompressionJPEG2000;
     pRasterStorageDef.CompressionQuality = 50;
     pRasterStorageDef.PyramidLevel = 2;
     pRasterStorageDef.PyramidResampleType = rstResamplingTypes.RSP_BilinearInterpolation;
     pRasterStorageDef.TileHeight = 128;
     pRasterStorageDef.TileWidth = 128;
     IRasterDef pRasterDef = new RasterDefClass();
     pRasterDef.Description = "RasterDataset";
     pRasterDef.SpatialReference = pRasterProps.SpatialReference;
     IGeometryDef pGeoDef = new GeometryDefClass();
     IGeometryDefEdit pGeoDefEdit = pGeoDef as IGeometryDefEdit;
     pGeoDefEdit.GeometryType_2 = esriGeometryType.esriGeometryPolygon;
     pGeoDefEdit.AvgNumPoints_2 = 4;
     pGeoDefEdit.GridCount_2 = 1;
     pGeoDefEdit.set_GridSize(0, 1000);
     pGeoDefEdit.SpatialReference_2 = pRasterProps.SpatialReference;
     IRasterDataset pRasterDataset = pWorkSpace.CreateRasterDataset("zzy", 3, rstPixelType.PT_UCHAR, pRasterStorageDef, "", pRasterDef, pGeoDef);
     pRasterDataset = pRDs;
     return true;
 }
        public static bool AddWatermarkToRD(IRasterDataset RasterDataset, string OutputFolder, string OutputName,
            string watermarkImagePath, double blendPercentage, esriWatermarkLocation watermarklocation)
        {
            try
            {
                // Create Watermark Function
                IRasterFunction rasterFunction = new CustomFunction.WatermarkFunction();
                // Create the Watermark Function Arguments object
                IWatermarkFunctionArguments rasterFunctionArguments =
                    new WatermarkFunctionArguments();
                // Set the WatermarkImagePath
                rasterFunctionArguments.WatermarkImagePath = watermarkImagePath;
                // the blending percentage,
                rasterFunctionArguments.BlendPercentage = blendPercentage;
                // and the watermark location.
                rasterFunctionArguments.WatermarkLocation = watermarklocation;
                // Set the Raster Dataset as the input raster
                rasterFunctionArguments.Raster = RasterDataset;

                // Create Function Dataset
                IFunctionRasterDataset functionRasterDataset = new FunctionRasterDataset();
                // Create a Function Raster Dataset Name object
                IFunctionRasterDatasetName functionRasterDatasetName =
                    (IFunctionRasterDatasetName)new FunctionRasterDatasetName();
                // Set the path for the output Function Raster Dataset
                functionRasterDatasetName.FullName = System.IO.Path.Combine(OutputFolder, OutputName);
                functionRasterDataset.FullName = (IName)functionRasterDatasetName;
                // Initialize the Function Raster Dataset with the function and 
                // its arguments object
                functionRasterDataset.Init(rasterFunction, rasterFunctionArguments);

                // Save as Function Raster Dataset as an .afr file
                ITemporaryDataset myTempDset = (ITemporaryDataset)functionRasterDataset;
                myTempDset.MakePermanent();

                Console.WriteLine("Generated " + OutputName + ".");
                Console.WriteLine("Success.");
                return true;
            }
            catch (Exception exc)
            {
                Console.WriteLine("Exception Caught while adding watermark to Raster Dataset: " + exc.Message);
                Console.WriteLine("Failed.");
                return false;
            }
        }
        public static bool AddNDVICustomToRD(IRasterDataset RasterDataset, string OutputFolder, string OutputName,
            string bandIndices)
        {
            try
            {
                // Create NDVI Custom Function
                IRasterFunction rasterFunction = new CustomFunction.NDVICustomFunction();
                // Create the NDVI Custom Function Arguments object
                INDVICustomFunctionArguments rasterFunctionArguments = new NDVICustomFunctionArguments();
                // Set the Band Indices
                rasterFunctionArguments.BandIndices = bandIndices;

                // Set the RasterDataset as the input raster
                rasterFunctionArguments.Raster = RasterDataset;

                // Create Function Dataset
                IFunctionRasterDataset functionRasterDataset = new FunctionRasterDataset();
                // Create a Function Raster Dataset Name object
                IFunctionRasterDatasetName functionRasterDatasetName =
                    (IFunctionRasterDatasetName)new FunctionRasterDatasetName();
                // Set the path for the output Function Raster Dataset
                functionRasterDatasetName.FullName = System.IO.Path.Combine(OutputFolder, OutputName);
                functionRasterDataset.FullName = (IName)functionRasterDatasetName;
                // Initialize the Function Raster Dataset with the function and 
                // its arguments object
                functionRasterDataset.Init(rasterFunction, rasterFunctionArguments);

                // Save as Function Raster Dataset as an .afr file
                ITemporaryDataset myTempDset = (ITemporaryDataset)functionRasterDataset;
                myTempDset.MakePermanent();

                Console.WriteLine("Generated " + OutputName + ".");
                Console.WriteLine("Success.");
                return true;
            }
            catch (Exception exc)
            {
                Console.WriteLine("Exception Caught while adding NDVI Custom Function to Raster Dataset: " + exc.Message);
                Console.WriteLine("Failed.");
                return false;
            }
        }
 public IRaster convertFeatureClassToRaster(IFeatureClass featureClass, rasterUtil.rasterType rasterType, IWorkspace outWorkSpace, string outName, double cellSize, IRasterDataset snapRaster)
 {
     return convertFeatureClassToRaster(featureClass, rasterType, outWorkSpace, outName, cellSize, snapRaster, null);
 }
 public IRaster calcStatsAndHist(IRasterDataset rsDset)
 {
     IRaster rs = returnRaster(rsDset);
     rs = calcStatsAndHist(rs);
     return rs;
 }
 public void appendVatToRasterDataset(ITable inTable, IRasterDataset rsDset)
 {
     IRasterDatasetEdit3 rsDsetE3 = (IRasterDatasetEdit3)rsDset;
     rsDsetE3.AlterAttributeTable(inTable);
 }
 public IRaster convertFeatureClassToRaster(IFeatureClass featureClass, rasterUtil.rasterType rasterType, IWorkspace outWorkSpace, string outName, double cellSize, IRasterDataset snapRaster, IEnvelope extent)
 {
     ESRI.ArcGIS.GeoAnalyst.IConversionOp convOp = new ESRI.ArcGIS.GeoAnalyst.RasterConversionOpClass();
     ESRI.ArcGIS.GeoAnalyst.IRasterAnalysisEnvironment rasterAnalysisEnvironment = (ESRI.ArcGIS.GeoAnalyst.IRasterAnalysisEnvironment)convOp;
     rasterAnalysisEnvironment.OutSpatialReference = ((IGeoDataset)featureClass).SpatialReference;
     rasterAnalysisEnvironment.OutWorkspace = outWorkSpace;
     object cellS = cellSize;
     object ext = ((IGeoDataset)featureClass).Extent;
     object snap = Type.Missing;
     if(snapRaster!=null)
     {
         snap = snapRaster;
     }
     if (extent != null)
     {
         ext = extent;
     }
     rasterAnalysisEnvironment.SetCellSize(ESRI.ArcGIS.GeoAnalyst.esriRasterEnvSettingEnum.esriRasterEnvValue, ref cellS);
     rasterAnalysisEnvironment.SetExtent(ESRI.ArcGIS.GeoAnalyst.esriRasterEnvSettingEnum.esriRasterEnvValue, ref ext,ref snap);
     string fmt = rasterType.ToString();
     if (fmt == "IMAGINE")
     {
         fmt = "IMAGINE image";
         if (!outName.ToLower().EndsWith(".img")) outName = outName + ".img";
     }
     IRasterDataset geoDset = convOp.ToRasterDataset((IGeoDataset)featureClass, fmt, outWorkSpace, outName);
     IGeoDatasetSchemaEdit2 geoSch = (IGeoDatasetSchemaEdit2)geoDset;
     if (geoSch.CanAlterSpatialReference) geoSch.AlterSpatialReference(rasterAnalysisEnvironment.OutSpatialReference);
     return returnRaster(geoDset);
 }
        /// <summary>
        /// Parse the RPC parameters file associated with the image and create an RPCXform
        /// to bea applied to the inputDataset as a geomtric function.
        /// </summary>
        /// <param name="rpcPath">Path to the rpc parameters file.</param>
        /// <param name="inputDataset">Input dataset to apply the xform on.</param>
        /// <returns>Function raster dataset created.</returns>
        private IFunctionRasterDataset ApplyRPC(string rpcPath, IRasterDataset inputDataset)
        {
            IFunctionRasterDataset opFrd = null;
            try
            {
                // Open the RPC file and create Geometric transform
                IGeodataXform finalXForm = null;
                IRPCXform rpcXForm = GetRPCXForm(rpcPath);

                IFunctionRasterDataset idFrd = null;
                if (!(inputDataset is IFunctionRasterDataset))
                {
                    IRasterFunction identityFunction = new IdentityFunctionClass();
                    idFrd = new FunctionRasterDatasetClass();
                    idFrd.Init(identityFunction, inputDataset);
                }
                else
                    idFrd = (IFunctionRasterDataset)inputDataset;

                IRasterInfo datasetRasterInfo = idFrd.RasterInfo;
                IEnvelope datasetExtent = datasetRasterInfo.Extent;
                ISpatialReference datasetSrs = ((IGeoDataset)idFrd).SpatialReference;

                long dRows = datasetRasterInfo.Height;
                long dCols = datasetRasterInfo.Width;
                IEnvelope pixelExtent = new EnvelopeClass();
                pixelExtent.PutCoords(-0.5, 0.5 - dRows, -0.5 + dCols, 0.5);

                bool noAffineNeeded = ((IClone)pixelExtent).IsEqual((IClone)datasetExtent);
                if (!noAffineNeeded)
                {
                    // Tranform ground space to pixel space.
                    IAffineTransformation2D affineXform = new AffineTransformation2DClass();
                    affineXform.DefineFromEnvelopes(datasetExtent, pixelExtent);
                    IGeometricXform geoXform = new GeometricXformClass();
                    geoXform.Transformation = affineXform;
                    finalXForm = geoXform;
                }

                // Transform from pixel space back to ground space to set as the forward transform.
                IEnvelope groundExtent = ((IGeoDataset)idFrd).Extent;
                groundExtent.Project(datasetSrs);
                IAffineTransformation2D affineXform2 = new AffineTransformation2DClass();
                affineXform2.DefineFromEnvelopes(pixelExtent, groundExtent);
                IGeometricXform forwardXForm = new GeometricXformClass();
                forwardXForm.Transformation = affineXform2;
                rpcXForm.ForwardXform = forwardXForm;

                // Create the composite transform that changes ground values to pixel space
                // then applies the rpc transform which will transform them back to ground space.
                ICompositeXform compositeXForm = new CompositeXformClass();
                compositeXForm.Add(finalXForm);
                compositeXForm.Add(rpcXForm);
                finalXForm = (IGeodataXform)compositeXForm;

                // Then apply the transform on the raster using the geometric function.
                if (finalXForm != null)
                {
                    IRasterFunction geometricFunction = new GeometricFunctionClass();
                    IGeometricFunctionArguments geometricFunctionArgs = null;
                    // Get the geomtric function arguments if supplied by the user (in the UI).
                    if (myRasterTypeOperation != null &&
                        ((IRasterTypeProperties)myRasterTypeOperation).OrthorectificationParameters != null)
                        geometricFunctionArgs =
                        ((IRasterTypeProperties)myRasterTypeOperation).OrthorectificationParameters;
                    else
                        geometricFunctionArgs = new GeometricFunctionArgumentsClass();
                    // Append the xform to the existing ones from the image.
                    geometricFunctionArgs.AppendGeodataXform = true;
                    geometricFunctionArgs.GeodataXform = finalXForm;
                    geometricFunctionArgs.Raster = inputDataset;
                    opFrd = new FunctionRasterDatasetClass();
                    opFrd.Init(geometricFunction, geometricFunctionArgs);
                }
                return opFrd;
            }
            catch (Exception exc)
            {
                string error = exc.Message;
                return opFrd;
            }
        }
Example #46
0
        //RasterDataset to RasterCatalog
        public void RasDSToCatalog(IRasterDataset pRasterDs, IFeatureClass pCatalog)
        {
            //IRasterCatalogItem pCatalogFeature;

            IFeatureCursor pCursor;
            IFeatureBuffer pRow;

            pCursor = pCatalog.Insert(false);
            IRasterCatalog pCat = pCatalog as IRasterCatalog;

            IDataset pDs;

            // loop through all the datasets and load
            if (pRasterDs != null)
            {
                pDs = pRasterDs as IDataset;
                pRow = pCatalog.CreateFeatureBuffer();
                pRow.set_Value(pCat.RasterFieldIndex, createRasterValue(pRasterDs));
                /*try
                {
                    pCursor.InsertFeature(pRow);
                }
                catch
                {

                }*/
                pCursor.InsertFeature(pRow);
            }
            //pCursor.Flush();
            pRasterDs = null;
        }
Example #47
0
        public IRasterValue createRasterValue(IRasterDataset pRasterDs, IRasterStorageDef pRasStoreDef)
        {
            IRasterValue pRasterVal;

            pRasterVal = new RasterValueClass();
            pRasterVal.RasterDataset = pRasterDs;
            pRasterVal.RasterStorageDef = pRasStoreDef;

            return (pRasterVal);

            // ++ cleanup
            //�����⣬�Ѿ�return�������Ƿ����ã�
            //pRasterVal = null;
            //pRasStoreDef = null;
        }
Example #48
0
        //#######################���º��������ʹ��########################
        //**************************Load Raster Begin****************************
        //������ţ�RasterLoad-01
        //��������DirToMosaic
        //�������ܣ����ļ����е�Raster�ļ��ϲ����µ�Raster�ļ���ȥ
        //������sDir��դ���ļ���
        //      pDataset�����ϲ���RasterDataset
        //��ע��pDataset����ʹGeodataset�еIJ�����������������ú�������
        public void DirToMosaic(string sDir, IRasterDataset pDataset)
        {
            //load all raster datasets in the input directory to the raster dataset
            //the geodatabase raster dataset has to exist,
            //if not create it first with proper storage parameters.
            IWorkspaceFactory pWsFact = new RasterWorkspaceFactoryClass(); ;
            IWorkspace pFileWs = pWsFact.OpenFromFile(sDir, 0);

            IRasterDatasetEdit pSDEDs = pDataset as IRasterDatasetEdit;

            IRasterDataset2 pRasterDs;

            // load raster datasets from the dir
            IEnumDataset pEunmDatasets = pFileWs.get_Datasets(esriDatasetType.esriDTRasterDataset);
            pEunmDatasets.Reset();

            pRasterDs = pEunmDatasets.Next() as IRasterDataset2;
            while (!(pRasterDs == null))
            {
                //!!!pRasterDs.CompleteName;
                pSDEDs.Mosaic(pRasterDs.CreateFullRaster(), 0.5);
                //!!!ע��IRasterDataset2::CreateFullRaster()�������Լ�ʵ�ִ�RasterDataset��Raster��ת��
                pRasterDs = pEunmDatasets.Next() as IRasterDataset2;
            }

            //cleanup

            pEunmDatasets = null;
            pRasterDs = null;
            pWsFact = null;
            pSDEDs = null;
            pFileWs = null;
        }
Example #49
0
        //�����ţ�
        //��������LoadRasterToCatalogDatabase
        //�������ܣ�Raster����Database
        //������pWorkspace�����ݿ⣬pWorkspace������Access ����SDE
        //        strCata��Catalog����
        //        pRasterDs����Ҫ����Rasterdataset
        //��ע��insert a raster dataset with given path and file name to an existing raster catalog
        public void LoadRasterToCatalogDatabase(IWorkspace pWorkspace, string strCata, IRasterDataset pRasterDs,string name)
        {
            //QI IRasterWorkspaceEx to IWorkspace
            IRasterWorkspaceEx pRasWKS = pWorkspace as IRasterWorkspaceEx;

            //Open raster catalog
            //IRasterCatalog�൱��һ��FeatureClass����������е�ÿһ����¼���Դ��Raster
            IRasterCatalog pInCatalog = pRasWKS.OpenRasterCatalog(strCata);
            // get raster field index
            int iRaster = pInCatalog.RasterFieldIndex;

            // QI IFeatureClass for inserting
            IFeatureClass pFeatureClass = pInCatalog as IFeatureClass;

            // get insert cursor
            IFeatureCursor pCursor = pFeatureClass.Insert(false);

            // create raster value from raster dataset with default storagedef
            IRasterValue pRasterValue = new RasterValueClass();
            pRasterValue.RasterDataset = pRasterDs;
            pRasterValue.RasterStorageDef = new RasterStorageDefClass();

            pRasterValue.RasterDatasetName.NameString = name;
            //������������µ�RasterStorageDef

            // insert the rastervalue  ' it will update name, metadata and geometry field
            IFeatureBuffer pRow = pFeatureClass.CreateFeatureBuffer();
            pRow.set_Value(iRaster, pRasterValue);
            pCursor.InsertFeature(pRow);
        }
Example #50
0
        /// <summary>
        /// 栅格分块
        /// </summary>
        /// <param name="pRasterDataset"></param>
        /// <param name="pOutputWorkspace"></param>
        /// <param name="pWidth"></param>
        /// <param name="pHeight"></param>
        public static void CreateTilesFromRasterDataset(IRasterDataset pRasterDataset, IWorkspace pOutputWorkspace, int pWidth, int pHeight)
        {
            IRasterProps pRasterProps = (IRasterProps)pRasterDataset.CreateDefaultRaster();// cast IRaster to IRasterProps
            double xTileSize = pRasterProps.MeanCellSize().X * pWidth;
            double yTileSize = pRasterProps.MeanCellSize().Y * pHeight;

            int xTileCount = (int)Math.Ceiling((double)pRasterProps.Width / pWidth);
            int yTileCount = (int)Math.Ceiling((double)pRasterProps.Height / pHeight);

            IEnvelope pExtent = pRasterProps.Extent;
            IEnvelope pTileExtent = new EnvelopeClass();
            ISaveAs pSaveAs = null;

            for (int i = 0; i < xTileCount; i++)
            {
            for (int j = 0; j < yTileCount; j++)
            {
            pRasterProps = (IRasterProps)pRasterDataset.CreateDefaultRaster();

            pTileExtent.XMin = pExtent.XMin + i * xTileSize;
            pTileExtent.XMax = pTileExtent.XMin + xTileSize;
            pTileExtent.YMin = pExtent.YMin + j * yTileSize;
            pTileExtent.YMax = pTileExtent.YMin + yTileSize;

            pRasterProps.Height = pHeight;
            pRasterProps.Width = pWidth;

            pRasterProps.Extent = pTileExtent;
            pSaveAs = (ISaveAs)pRasterProps;
            pSaveAs.SaveAs("tile_" + i + "_" + j + ".tif", pOutputWorkspace, "TIFF");

            }
            }
        }
Example #51
0
        public void ExportRaster(IRasterDataset rasterDataset, string path, string sFormat, string sName)
        {
            IWorkspaceFactory wsF = new RasterWorkspaceFactoryClass();
            IWorkspace ws = wsF.OpenFromFile(path,0);

            ISaveAs saveAs = rasterDataset as ISaveAs;
            saveAs.SaveAs(sName, ws, sFormat);
        }
        /// <summary>
        /// Creates an in Memory Raster given a raster dataset
        /// </summary>
        /// <param name="rsDset">IRasterDataset</param>
        /// <returns>IRaster</returns>
        public IRaster createRaster(IRasterDataset rsDset)
        {
            if (rsDset == null)
            {
                return null;
            }
            else
            {
                string cNm = rsDset.Format.ToLower();
                if (cNm.EndsWith("hdf4") || cNm.EndsWith("ntif"))
                {

                    IRasterBandCollection rsBc = new RasterClass();
                    IRasterDatasetJukebox rsDsetJu = (IRasterDatasetJukebox)rsDset;
                    List<IRaster> rsLst = new List<IRaster>();
                    int subCnt = rsDsetJu.SubdatasetCount;
                    for (int i = 0; i < subCnt; i++)
                    {
                        rsDsetJu.Subdataset = i;
                        IRasterDataset3 subDset = (IRasterDataset3)rsDsetJu;

                        rsLst.Add(subDset.CreateFullRaster());

                    }
                    IFunctionRasterDataset fDset = compositeBandFunction(rsLst.ToArray());
                    return createRaster(fDset);

                }
                else
                {
                    IRasterDataset3 rDset3 = (IRasterDataset3)rsDset;
                    return rDset3.CreateFullRaster();
                }
            }
        }
Example #53
0
 public void ImportRas(IRasterDataset rasDS,string name)
 {
     IRasterDataset rasdsSDE = this.CreateRasterDataset(ref rasDS, name, ref this.m_workSpace, new UnknownCoordinateSystemClass());
     if (rasdsSDE != null)
     {
         this.MosaicRasterToGDBRaster(rasDS, (IRasterDatasetEdit)rasdsSDE);
     }
 }
 /// <summary>
 /// Open Raster Dataset
 /// </summary>
 /// <param name="path">path of the dataset</param>
 /// <param name="rasterDSName">name of the dataset</param>        
 private static void OpenRasterDataset(String path, String rasterDSName)
 {
     //this is why the utility user needs access to data source. image service configurations varies among data sources.
     IWorkspaceFactory workspaceFactory = null;
     IWorkspace workspace = null;
     IRasterWorkspaceEx rasterWorkspaceEx = null;
     Type factoryType = null;
     try
     {
         switch (path.Substring(path.Length - 4, 4).ToLower()) // a path can never be shorter than 4 characters, isn't it? c:\a
         {
             case ".gdb":
                 factoryType = Type.GetTypeFromProgID("esriDataSourcesGDB.FileGDBWorkspaceFactory");
                 workspaceFactory = Activator.CreateInstance(factoryType) as IWorkspaceFactory;
                 workspace = workspaceFactory.OpenFromFile(path, 1);
                 rasterWorkspaceEx = (IRasterWorkspaceEx)workspace;
                 rasterDataset = rasterWorkspaceEx.OpenRasterDataset(rasterDSName);
                 break;
             case ".sde":
                 factoryType = Type.GetTypeFromProgID("esriDataSourcesGDB.SdeWorkspaceFactory");
                 workspaceFactory = Activator.CreateInstance(factoryType) as IWorkspaceFactory;
                 workspace = workspaceFactory.OpenFromFile(path, 1);
                 rasterWorkspaceEx = (IRasterWorkspaceEx)workspace;
                 rasterDataset = rasterWorkspaceEx.OpenRasterDataset(rasterDSName);
                 break;
             default:
                 factoryType = Type.GetTypeFromProgID("esriDataSourcesRaster.RasterWorkspaceFactory");
                 workspaceFactory = Activator.CreateInstance(factoryType) as IWorkspaceFactory;
                 workspace = workspaceFactory.OpenFromFile(path, 1);
                 IRasterWorkspace rasterWorkspace = (IRasterWorkspace)workspace;
                 rasterDataset = rasterWorkspace.OpenRasterDataset(rasterDSName);
                 break;
         }
     }
     catch (Exception)
     {
         throw new ArgumentException("Failed to open source data");
     }
 }
Example #55
0
        private IRasterDataset CreateRasterDataset(ref IRasterDataset pRasterDataset, string name, ref IWorkspace pWorkspace, ISpatialReference pSpatialReference)
        {
            IRasterWorkspaceEx pRasterWorkspaceEx = (IRasterWorkspaceEx)pWorkspace;
            IRasterDataset newRasterDataset = null;
            IRaster pRaster = pRasterDataset.CreateDefaultRaster();
            IRasterBandCollection pRasterBandCollection = (IRasterBandCollection)pRaster;
            int numbands = pRasterBandCollection.Count;
            IRasterProps pRasterProps = (IRasterProps)pRaster;
            rstPixelType pPixelType = pRasterProps.PixelType;
            IRasterStorageDef pRasterStorageDef = null;

            if (pRasterStorageDef == null)
            {
                pRasterStorageDef = new RasterStorageDefClass();
                pRasterStorageDef.CompressionType = esriRasterCompressionType.esriRasterCompressionLZ77;
                pRasterStorageDef.PyramidLevel = 2;
                pRasterStorageDef.PyramidResampleType = rstResamplingTypes.RSP_BilinearInterpolation;
                pRasterStorageDef.TileHeight = 128;
                pRasterStorageDef.TileWidth = 128;
            }

            IRasterDef pRasterDef = new RasterDefClass();
            pRasterDef.SpatialReference = pSpatialReference;
            pRasterDef.IsRasterDataset = true;
            pRasterDef.Description = "rasterdataset";
            try
            {
                newRasterDataset = pRasterWorkspaceEx.CreateRasterDataset(name, numbands, pPixelType, pRasterStorageDef, "", pRasterDef, this.createGeometryDef(pSpatialReference));
                return newRasterDataset;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                return null;
            }
        }
Example #56
0
        private void MosaicRasterToGDBRaster(IRasterDataset pRasterFile, IRasterDatasetEdit pGDBRasterDs)
        {
            try
            {
                IRaster pRaster;
                IRasterDataset2 pRasterDs = pRasterFile as IRasterDataset2;
                //IDataset pDs;

                pRaster = pRasterDs.CreateFullRaster();//CreateFullRaster()方法只有IRasterDataset2有
                pGDBRasterDs.Mosaic(pRaster, 0.5); //no resample

                pRasterDs = null;
                pRaster = null;
                //pDs = null;
            }
            catch (Exception e)
            {
                if (e is StackOverflowException ||
                    e is OutOfMemoryException)
                    throw;
            }
        }
Example #57
0
        public void RasDSToCatalogWithTime(IRasterDataset pRasterDs, IFeatureClass pCatalog, string DataField, string strData, IRasterStorageDef pRasStoreDef)
        {
            //IRasterCatalogItem pCatalogFeature;

            IFeatureCursor pCursor;
            IFeatureBuffer pRow;

            pCursor = pCatalog.Insert(false);
            IRasterCatalog pCat = pCatalog as IRasterCatalog;

            IDataset pDs;

            // loop through all the datasets and load
            if (pRasterDs != null)
            {
                pDs = pRasterDs as IDataset;
                pRow = pCatalog.CreateFeatureBuffer();
                pRow.set_Value(pCat.RasterFieldIndex, createRasterValue(pRasterDs, pRasStoreDef));
                pRow.set_Value(pCatalog.FindField(DataField), Convert.ToDateTime(strData));
                pCursor.InsertFeature(pRow);
            }

            pRasterDs = null;
        }
 public static void setNoDataValueForASpecificBand(IRasterDataset rasterDataset)
 {
     IRasterBandCollection rasterBandCollection = (IRasterBandCollection)rasterDataset;
     IRasterBand rasterBand = rasterBandCollection.Item(0);
     IRasterProps rasterProps = (IRasterProps)rasterBand;
     rasterProps.NoDataValue = 15;
 }
 public void calcSatatsAndHistFast(IRasterDataset rsDset, int skipFactor = 1)
 {
 }