Пример #1
0
        private bool GetUniqueValues(string inFile)
        {
            IRasterLayer            pRasterLayer      = null;
            IUniqueValues           pUniqueValues     = null;
            IRasterCalcUniqueValues pCalcUniqueValues = null;

            try
            {
                pRasterLayer = new RasterLayerClass();
                pRasterLayer.CreateFromFilePath(inFile);
                if (!(1 == pRasterLayer.BandCount))
                {
                    XtraMessageBox.Show("文件类型不正确,请选择分类结果文件!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                    return(false);
                }
                pUniqueValues     = new UniqueValuesClass();
                pCalcUniqueValues = new RasterCalcUniqueValuesClass();
                pCalcUniqueValues.AddFromRaster(pRasterLayer.Raster, 0, pUniqueValues);
                if (_dt.Rows.Count > 0)
                {
                    _dt.Rows.Clear();
                }
                for (int i = 0; i < pUniqueValues.Count; i++)
                {
                    DataRow row = _dt.NewRow();
                    row[0] = pUniqueValues.get_UniqueValue(i);
                    _dt.Rows.Add(row);
                }
                return(true);
            }
            catch (Exception ex)
            {
                XtraMessageBox.Show("读取唯一值失败!\r\n" + ex.Message, "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                Log.WriteLog(typeof(frmRecode), ex);
                return(false);
            }
            finally
            {
                if (pCalcUniqueValues != null)
                {
                    Marshal.ReleaseComObject(pCalcUniqueValues);
                }
                if (pUniqueValues != null)
                {
                    Marshal.ReleaseComObject(pUniqueValues);
                }
                if (pRasterLayer != null)
                {
                    Marshal.ReleaseComObject(pRasterLayer);
                }
            }
        }
Пример #2
0
        /// <summary>
        /// Gets the class value from raster.
        /// </summary>
        /// <param name="inFile">The in file.</param>
        /// <returns>List&lt;System.String&gt;.</returns>
        /// <exception cref="System.Exception">文件类型不正确,请选择分类结果文件!</exception>
        public static List <string> GetClassFromRaster(string inFile)
        {
            IRasterLayer            pRasterLayer      = null;
            IUniqueValues           pUniqueValues     = null;
            IRasterCalcUniqueValues pCalcUniqueValues = null;
            List <string>           classNames        = null;

            try
            {
                pRasterLayer = new RasterLayerClass();
                pRasterLayer.CreateFromFilePath(inFile);
                if (!(1 == pRasterLayer.BandCount))
                {
                    throw new Exception("文件类型不正确,请选择分类结果文件!");
                }
                pUniqueValues     = new UniqueValuesClass();
                pCalcUniqueValues = new RasterCalcUniqueValuesClass();
                pCalcUniqueValues.AddFromRaster(pRasterLayer.Raster, 0, pUniqueValues);
                classNames = new List <string>();
                for (int i = 0; i < pUniqueValues.Count; i++)
                {
                    classNames.Add(pUniqueValues.get_UniqueValue(i).ToString());
                }
                return(classNames);
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (pCalcUniqueValues != null)
                {
                    Marshal.ReleaseComObject(pCalcUniqueValues);
                }
                if (pUniqueValues != null)
                {
                    Marshal.ReleaseComObject(pUniqueValues);
                }
                if (pRasterLayer != null)
                {
                    Marshal.ReleaseComObject(pRasterLayer);
                }
            }
        }