コード例 #1
0
ファイル: MvgDataProvider.cs プロジェクト: configare/hispeed
        public void ToLdfFile(string ldfFileName)
        {
            ILdfDriver          ldfDrv    = null;
            IRasterDataProvider ldfPrd    = null;
            IRasterBand         ldfBand   = null;
            IRasterBand         mvgBand   = null;
            Ldf1Header          ldfHeader = null;

            try
            {
                ldfDrv = GeoDataDriver.GetDriverByName("LDF") as ILdfDriver;
                if (ldfDrv == null)
                {
                    return;
                }
                ldfPrd = ldfDrv.Create(ldfFileName, _width, _height, 1, enumDataType.Int16);
                if (ldfPrd == null)
                {
                    return;
                }
                ldfBand = ldfPrd.GetRasterBand(1);
                if (ldfBand == null)
                {
                    return;
                }

                ldfHeader = MvgHeaderConvertor.MvgHeaderToLdfHeader(_header);
                if (ldfHeader == null)
                {
                    return;
                }

                //read data by block ,write ldf provider
                mvgBand = GetRasterBand(1);
                if (mvgBand == null)
                {
                    return;
                }
                WriteDataFromMvgToLdf(ldfBand, mvgBand);
            }
            finally
            {
                Disposed(ldfDrv, ldfPrd, ldfBand, null, null, mvgBand);
            }
        }
コード例 #2
0
ファイル: MvgDataProvider.cs プロジェクト: configare/hispeed
        /// <summary>
        /// ldf文件另存为mvg文件
        /// </summary>
        /// <param name="ldfName">ldf文件名</param>
        /// <param name="mvgName">mvg文件名</param>
        /// <param name="bandNo">需要获取的波段号</param>
        /// <param name="options">

        /*
         *  VALUECOUNT = 2         //default:0
         *  VALUES = "{0,1}"       //
         *  VALUENAMES             //
         *  SPATIALREF=Proj4                  //default:wgs-84
         *  MAPINFO={X,Y}:{Col,Row}:{ResolutionX,ResolutionY} //default:null
         *  WITHHDR=[TRUE|FALSE]      //default:true
         */
        /// </param>
        public static void FromLDF(string ldfFileName, string mvgFileName, int bandNo, params object[] options)
        {
            IGeoDataDriver      ldfDrv  = null;
            IRasterDataProvider ldfPrd  = null;
            IRasterBand         ldfBand = null;
            IMvgDriver          mvgDrv  = null;
            IMvgDataProvider    mvgPrd  = null;
            IRasterBand         mvgBand = null;

            try
            {
                ldfDrv = GeoDataDriver.GetDriverByName("LDF");
                if (ldfDrv == null)
                {
                    return;
                }
                ldfPrd = ldfDrv.Open(ldfFileName, enumDataProviderAccess.ReadOnly) as IRasterDataProvider;
                if (ldfPrd == null)
                {
                    return;
                }
                Ldf1Header ldfHeader = (ldfPrd as ILdfDataProvider).Header as Ldf1Header;
                if (ldfHeader == null || (ldfHeader.DataType != enumDataType.Int16 && ldfHeader.DataType != enumDataType.UInt16))
                {
                    throw new NotSupportedException("只支持Int16和UInt16数据格式的LDF文件转换!");
                }
                ldfBand = ldfPrd.GetRasterBand(bandNo);
                if (ldfBand == null)
                {
                    return;
                }

                //创建MVG文件
                mvgDrv = GeoDataDriver.GetDriverByName("MVG") as IMvgDriver;
                if (mvgDrv == null)
                {
                    return;
                }
                mvgPrd = mvgDrv.Create(mvgFileName, ldfBand.Width, ldfBand.Height, 1, enumDataType.Int16, options) as IMvgDataProvider;
                if (mvgPrd == null)
                {
                    return;
                }
                MvgHeaderConvertor.FillMvgHeader(ldfHeader, mvgPrd.Header);
                //重新生成hdr头文件
                string hdrFileName = HdrFile.GetHdrFileName(mvgFileName);
                HdrFile.SaveTo(hdrFileName, mvgPrd.Header.ToHdrFile());

                //读数据并写入MVG文件中
                mvgBand = mvgPrd.GetRasterBand(1);
                if (mvgBand == null)
                {
                    return;
                }
                WriteDataFromLdfToMvg(ldfHeader, ldfBand, mvgBand);
            }
            finally
            {
                if (mvgPrd != null)
                {
                    (mvgPrd as MvgDataProvider).Disposed(ldfDrv, ldfPrd, ldfBand, mvgDrv, mvgPrd, mvgBand);
                }
            }
        }