private void BuildCalcBuffer(string fileName) { IRasterDataDriver drv = GeoDataDriver.GetDriverByName("MEM") as IRasterDataDriver; _outputCalcDataProvider = drv.Create(fileName, vData.Width, vData.Height, 1, CalcType, GetOptions()); _outputCalcRasterBand = _outputCalcDataProvider.GetRasterBand(1); }
public unsafe void CopyBlockToEmptyFile() { int xSize = 512; int ySize = 512; int bandCount = 20; string fname = "d:\\Ldf_Write_GeoDo.ldf"; IRasterDataDriver drv = GeoDataDriver.GetDriverByName("LDF") as IRasterDataDriver; IRasterDataProvider dstPrd = CreateEmptyFile(fname, drv, xSize, ySize, bandCount); IRasterDataProvider srcPrd = OpenLdfFile(_originalFname); UInt16[] buffer = new UInt16[xSize * ySize]; long lostTime = 0; fixed(UInt16 *ptr = buffer) { IntPtr butterPtr = new IntPtr(ptr); for (int b = 1; b <= bandCount; b++) { srcPrd.GetRasterBand(b).Read(200, 200, xSize, ySize, butterPtr, enumDataType.UInt16, xSize, ySize); Stopwatch sw = new Stopwatch(); sw.Start(); dstPrd.GetRasterBand(b).Write(0, 0, xSize, ySize, butterPtr, enumDataType.UInt16, xSize, ySize); sw.Stop(); lostTime += sw.ElapsedMilliseconds; } } srcPrd.Dispose(); dstPrd.Dispose(); Console.WriteLine("Time Only Write:" + lostTime.ToString()); }
public unsafe void ReadMvgFile_noOffset_Bigger() { IGeoDataDriver drv = GeoDataDriver.GetDriverByName("MVG"); IRasterDataProvider prd = drv.Open(_fname, enumDataProviderAccess.ReadOnly) as IRasterDataProvider; Assert.NotNull(prd); IRasterBand band = prd.GetRasterBand(1); Assert.NotNull(band); Int16[] data = new Int16[prd.Width * 2 * prd.Height]; Console.WriteLine("prd.Width = " + prd.Width); Console.WriteLine("prd.Height = " + prd.Height); Console.WriteLine("band.Width = " + band.Width); Console.WriteLine("band.Height= " + band.Height); fixed(Int16 *ptr = data) { IntPtr buffer = new IntPtr(ptr); band.Read(0, 0, prd.Width, prd.Height, buffer, enumDataType.Int16, prd.Width * 2, prd.Height); } string dstFname = @"e:\mvg";//@"C:\工作\3.13\read"; WriteBandToFile(data, dstFname + "_bigger" + "_read" + ".dat"); prd.Dispose(); drv.Dispose(); }
internal IRasterDataProvider CreateOutFile(string driver, string outfilename, int dstBandCount, Size outSize, enumDataType dataType, string[] options) { CheckAndCreateDir(Path.GetDirectoryName(outfilename)); IRasterDataDriver outdrv = GeoDataDriver.GetDriverByName(driver) as IRasterDataDriver; return(outdrv.Create(outfilename, outSize.Width, outSize.Height, dstBandCount, dataType, options) as IRasterDataProvider); }
public void GetBandData() { string fname = "d:\\NOAA18_AVHRR_CHINA_L1_20090806_N3_1000M.dat"; IRasterDataDriver drv = GeoDataDriver.GetDriverByName("GDAL") as IRasterDataDriver; IRasterDataProvider prd = drv.Open(fname, enumDataProviderAccess.ReadOnly) as IRasterDataProvider;// GeoDataDriver.Open(fname) as IRasterDataProvider; IRasterBand rb = prd.GetRasterBand(3); UInt16[] buffer = new UInt16[prd.Width * prd.Height]; unsafe { fixed(UInt16 *ptr = buffer) { IntPtr bufferPtr = new IntPtr(ptr); //prd.Read(0, 0, prd.Width, prd.Height, bufferPtr, enumDataType.UInt16, prd.Width, prd.Height, 1, new int[] { 1 }, enumInterleave.BSQ); rb.Read(0, 0, prd.Width, prd.Height, bufferPtr, enumDataType.UInt16, prd.Width, prd.Height); } } string filename = "d:\\d.dat"; FileStream fs = new FileStream(filename, FileMode.Create); BinaryWriter bw = new BinaryWriter(fs); for (int i = 0; i < buffer.Length; i++) { bw.Write(buffer[i]); } fs.Close(); }
/// <summary> /// 创建目标tif文件读取驱动 /// </summary> /// <returns></returns> private IRasterDataProvider GetOutFileProvider(IRasterDataProvider srcRaster, Size outimg, string outfilename) { string[] options = null; string driver = string.Empty; string dstwktstr = string.Empty; dstwktstr = "GEOGCS['GCS_WGS_1984',DATUM['D_WGS_1984',SPHEROID['WGS_1984',6378137,298.257223563]],PRIMEM['Greenwich',0],UNIT['Degree',0.0174532925199433]]"; dstwktstr = dstwktstr.Replace('\'', '"'); double minx = srcRaster.CoordEnvelope.MinX; double maxy = srcRaster.CoordEnvelope.MaxY; double resolutionX = srcRaster.ResolutionX; double resolutionY = srcRaster.ResolutionY; driver = "GDAL"; options = new string[] { "DRIVERNAME=GTiff", "TFW=NO", "WKT=" + dstwktstr, "GEOTRANSFORM=" + string.Format("{0},{1},{2},{3},{4},{5}", minx, resolutionX, 0, maxy, 0, -resolutionY) }; int bandCount = srcRaster.BandCount == 1 ? 1 : 3; string outdir = Path.GetDirectoryName(outfilename); if (!Directory.Exists(outdir)) { Directory.CreateDirectory(outdir); } IRasterDataDriver outdrv = GeoDataDriver.GetDriverByName(driver) as IRasterDataDriver; return(outdrv.Create(outfilename, outimg.Width, outimg.Height, bandCount, enumDataType.Byte, options) as IRasterDataProvider); }
private IRasterDataProvider CreatOutputRaster(string outputFName, IRasterDataProvider inRaster, int bandCount, Action <int, string> progressCallback) { if (inRaster == null) { return(null); } if (progressCallback != null) { progressCallback(1, "开始创建目标文件..."); } IRasterDataDriver driver = GeoDataDriver.GetDriverByName("GDAL") as IRasterDataDriver; List <string> options = new List <string>(); options.AddRange(new string[] { "DRIVERNAME=GTiff", "TFW=YES", "TILED=YES" }); if (inRaster.SpatialRef != null) { options.Add("WKT=" + inRaster.SpatialRef.ToWKTString()); } if (inRaster.CoordEnvelope != null) { options.Add("GEOTRANSFORM=" + string.Format("{0},{1},{2},{3},{4},{5}", 0, inRaster.ResolutionX, 0, inRaster.CoordEnvelope.MaxY, 0, -inRaster.ResolutionY)); } IRasterDataProvider prdWrite = driver.Create(outputFName, inRaster.Width, inRaster.Height, bandCount, enumDataType.Byte, options.ToArray()) as IRasterDataProvider; if (progressCallback != null) { progressCallback(20, "目标文件创建完成."); } return(prdWrite); }
public unsafe void ReadMvgFileNormal() { // _fname = @"C:\工作\3.13\SNW_DBLV_FY3A_VIRR_1000M_NULL_P001_200911131356.mvg"; IGeoDataDriver drv = GeoDataDriver.GetDriverByName("MVG"); IRasterDataProvider prd = drv.Open(_fname, enumDataProviderAccess.ReadOnly) as IRasterDataProvider; Assert.NotNull(prd); IRasterBand band = prd.GetRasterBand(1); Assert.NotNull(band); Int16[] data = new Int16[prd.Width * prd.Height]; Console.WriteLine("prd.Width = " + prd.Width); Console.WriteLine("prd.Height = " + prd.Height); Console.WriteLine("band.Width = " + band.Width); Console.WriteLine("band.Height= " + band.Height); fixed(Int16 *ptr = data) { IntPtr buffer = new IntPtr(ptr); band.Read(0, 0, prd.Width, prd.Height, buffer, enumDataType.Int16, prd.Width, prd.Height); } string dstFname = @"e:\mvg";//@"C:\工作\3.13\read"; WriteBandToFile(data, dstFname + "_normal" + "_read" + ".dat"); prd.Dispose(); drv.Dispose(); }
private IRasterDataProvider CreateOutRaster(string outdir, IRasterDataProvider raster, ISpatialReference dstSpatial, PrjEnvelope envelope, double resolutionX, double resolutionY, string bandNames) { IRasterDataProvider outRaster = null; if (raster.Driver.Name == "MEM") //smart 产品数据,输出也用MEM驱动,目前数据纠正这里不存在。 { string[] options = new string[] { "INTERLEAVE=BSQ", "VERSION=MEM", "SPATIALREF=" + dstSpatial.ToProj4String(), "MAPINFO={" + 1 + "," + 1 + "}:{" + envelope.MinX + "," + envelope.MaxY + "}:{" + resolutionX + "," + resolutionY + "}", string.IsNullOrWhiteSpace(bandNames)?"": "BANDNAMES=" + bandNames }; string outfilename = Path.Combine(outdir, Path.GetFileNameWithoutExtension(raster.fileName) + ".DAT"); outRaster = (raster.Driver as IRasterDataDriver).Create(outfilename, raster.Width, raster.Height, 1, enumDataType.Int16, options); } else//ldf { string[] options = new string[] { "INTERLEAVE=BSQ", "VERSION=LDF", "SPATIALREF=" + dstSpatial.ToProj4String(), "MAPINFO={" + 1 + "," + 1 + "}:{" + envelope.MinX + "," + envelope.MaxY + "}:{" + resolutionX + "," + resolutionY + "}", "DATETIME=" + raster.DataIdentify.OrbitDateTime, string.IsNullOrWhiteSpace(bandNames)?"": "BANDNAMES=" + bandNames }; string outfilename = Path.Combine(outdir, Path.GetFileNameWithoutExtension(raster.fileName) + ".LDF"); IRasterDataDriver driver = GeoDataDriver.GetDriverByName("LDF") as IRasterDataDriver; outRaster = driver.Create(outfilename, raster.Width, raster.Height, 1, enumDataType.Int16, options); } return(outRaster); }
public static IRasterDataProvider CreateVirtureData(VirtualRasterHeader vHeader, string filename, enumDataType enumDataType) { IRasterDataDriver dr = GeoDataDriver.GetDriverByName("LDF") as IRasterDataDriver; return(dr.Create(filename, vHeader.Width, vHeader.Height, 1, enumDataType, vHeader.CoordEnvelope.ToMapInfoString(new Size(vHeader.Width, vHeader.Height)))); }
public unsafe void WriteWithSample() { int xSize = 512; int ySize = 512; int bandCount = 20; int dstWith = 2000; int dstHeight = 2000; string fname = "d:\\Ldf_Write_GeoDo_Sample.ldf"; IRasterDataDriver drv = GeoDataDriver.GetDriverByName("LDF") as IRasterDataDriver; IRasterDataProvider dstPrd = CreateEmptyFile(fname, drv, dstWith, dstHeight, bandCount); IRasterDataProvider srcPrd = OpenLdfFile(_originalFname); UInt16[] buffer = new UInt16[xSize * ySize]; fixed(UInt16 *ptr = buffer) { IntPtr butterPtr = new IntPtr(ptr); for (int b = 1; b <= bandCount; b++) { srcPrd.GetRasterBand(b).Read(200, 200, xSize, ySize, butterPtr, enumDataType.UInt16, xSize, ySize); dstPrd.GetRasterBand(b).Write(0, 0, dstWith, dstHeight, butterPtr, enumDataType.UInt16, xSize, ySize); } } srcPrd.Dispose(); dstPrd.Dispose(); }
private void WriteData(float[] data, string fileName, int width, int height) { string[] options = new string[] { "INTERLEAVE=BSQ", "VERSION=LDF", "WITHHDR=TRUE", }; if (_outLdfDriver == null) { _outLdfDriver = GeoDataDriver.GetDriverByName("LDF") as IRasterDataDriver; } IRasterDataProvider cacheWriter = _outLdfDriver.Create(fileName, width, height, 1, enumDataType.Float, options) as IRasterDataProvider; { using (IRasterBand band = cacheWriter.GetRasterBand(1)) { unsafe { fixed(float *ptr = data) { IntPtr bufferPtr = new IntPtr(ptr); band.Write(0, 0, width, height, bufferPtr, enumDataType.Float, width, height); } } } } _solarZenithCacheRaster = cacheWriter; }
private IRasterBand WriteCacheFile(double[] data, string fileName, int width, int height, out IRasterDataProvider cacheWriter) { string[] options = new string[] { "INTERLEAVE=BSQ", "VERSION=LDF", "WITHHDR=TRUE", }; if (_outLdfDriver == null) { _outLdfDriver = GeoDataDriver.GetDriverByName("LDF") as IRasterDataDriver; } cacheWriter = _outLdfDriver.Create(fileName, width, height, 1, enumDataType.Double, options) as IRasterDataProvider; IRasterBand band = cacheWriter.GetRasterBand(1); { unsafe { fixed(double *ptr = data) { IntPtr bufferPtr = new IntPtr(ptr); band.Write(0, 0, width, height, bufferPtr, enumDataType.Double, width, height); } } } return(band); }
private void BuildInternalBuffer(string fileName) { IRasterDataDriver drv = GeoDataDriver.GetDriverByName("MEM") as IRasterDataDriver; _dataProvider = drv.Create(fileName, vData.Width, vData.Height, 1, vData.DataType, GetOptions()); _rasterBand = _dataProvider.GetRasterBand(1); }
public IRasterBand[] Clip(IRasterBand srcBand, BlockDef[] blockDefs, int samplePercent, string driver, Action <int, string> progressCallback, params object[] options) { if (blockDefs.Length == 0 || blockDefs == null || srcBand == null) { return(null); } IRasterBand[] targetBands = new IRasterBand[blockDefs.Length]; int blockNums = 0; foreach (BlockDef it in blockDefs) { int tBeginRow = -1, tEndRow = -1, tBeginCol = -1, tEndCol = -1; int oBeginRow = -1, oEndRow = -1, oBeginCol = -1, oEndCol = -1; CoordEnvelope oEnvelope = srcBand.CoordEnvelope; CoordEnvelope tEnvelope = it.ToEnvelope(); Size oSize = new Size(srcBand.Width, srcBand.Height); Size tSize = ClipCutHelper.GetTargetSize(it, srcBand.ResolutionX, srcBand.ResolutionY); bool isInternal = new RasterMoasicClipHelper().ComputeBeginEndRowCol(oEnvelope, oSize, tEnvelope, tSize, ref oBeginRow, ref oBeginCol, ref oEndRow, ref oEndCol, ref tBeginRow, ref tBeginCol, ref tEndRow, ref tEndCol); IRasterDataDriver rasterDriver = GeoDataDriver.GetDriverByName(driver) as IRasterDataDriver; //targetBands[blockNums] = ; blockNums++; } return(targetBands); }
public void Compute(IRasterDataProvider dataProvider, string expression, string outDriver, string outFile, Action <int, string> progressTracker) { if (dataProvider == null || string.IsNullOrWhiteSpace(expression) || string.IsNullOrWhiteSpace(outDriver) || string.IsNullOrWhiteSpace(outFile)) { throw new ArgumentNullException(); } IGeoDataDriver driver = GeoDataDriver.GetDriverByName(outDriver); if (driver == null) { throw new Exception("driver '" + outDriver + "' is not existed."); } IRasterDataProvider dstProvider = CreateDstDataProvider(driver as IRasterDataDriver, outFile, dataProvider); if (dataProvider == null) { throw new Exception("use '" + outDriver + "'create RasterDataProvider is failed."); } try { Compute(dataProvider, expression, dstProvider.GetRasterBand(1), progressTracker); } finally { dstProvider.Dispose(); driver.Dispose(); } }
public void DeleteFile() { IRasterDataDriver drv = GeoDataDriver.GetDriverByName("LDF") as IRasterDataDriver; string dstfname = "d:\\CreateCopy.ldf"; drv.Delete(dstfname); Assert.True(!File.Exists(dstfname)); }
public void CreateEmptyLdfFile() { Assert.That(_newFileName != null); IGeoDataDriver driver = GeoDataDriver.GetDriverByName("LDF"); Assert.NotNull(driver); ILdfDriver drv = driver as ILdfDriver; Assert.NotNull(drv); int width = 2048; int height = 3390; int bandCount = 10; enumDataType dataType = enumDataType.UInt16; enumInterleave interleave = enumInterleave.BSQ; string version = "LDF"; //string proj4 = "+proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6378137 +b=6378137"; string mapInfo = "{1,1}:{110,35}:{0.01,0.01}"; bool withHdr = true; ILdfDataProvider prd = drv.Create(_newFileName, width, height, bandCount, dataType, "INTERLEAVE=" + interleave.ToString(), "VERSION=" + version, //"SPATIALREF=" + proj4, "MAPINFO=" + mapInfo, "WITHHDR=" + withHdr.ToString()) as ILdfDataProvider; Assert.NotNull(prd); Assert.That(prd.Width == width && prd.Height == height); Assert.That(prd.BandCount == bandCount); Assert.That(prd.DataType == dataType); ILdfHeader header = prd.Header; Assert.NotNull(header); HdrFile hdr = header.ToHdrFile(); PrintHdrInfo(hdr); Ldf1Header ldfheader = header as Ldf1Header; Assert.NotNull(ldfheader); Assert.That(ldfheader._width == width && ldfheader._height == height); Assert.That(ldfheader.DataType == dataType); Assert.NotNull(prd.SpatialRef); for (int i = 0; i < bandCount; i++) { IRasterBand band = prd.GetRasterBand(i + 1); Assert.NotNull(band); Assert.That(band.Width == width && band.Height == height); Assert.That(band.DataType == dataType); } prd.Dispose(); drv.Dispose(); Assert.True(File.Exists(_newFileName)); FileInfo fInfo = new FileInfo(_newFileName); Assert.True(width * height * bandCount * 2 + header.HeaderSize == fInfo.Length); ISpatialReference spatialRef = prd.SpatialRef; Assert.NotNull(spatialRef); Console.Out.WriteLine(spatialRef.ToString()); }
public void ReadAngleInfo() { string fname = "d:\\0111d2.n16.1bd"; IRasterDataDriver driver = GeoDataDriver.GetDriverByName("NOAA_1BD") as IRasterDataDriver; Assert.NotNull(driver); IRasterDataProvider prd = driver.Open(fname, enumDataProviderAccess.ReadOnly) as IRasterDataProvider; D1BDDataProvider dp = prd as D1BDDataProvider; }
/// <summary> /// 0、先生成目标文件,以防止目标空间不足。 /// 1、计算查找表 /// 2、对所有波段执行投影 /// </summary> private void ProjectToLDF(IRasterDataProvider srcRaster, FY3_VIRR_PrjSettings prjSettings, ISpatialReference dstSpatialRef, Action <int, string> progressCallback) { string outFormat = prjSettings.OutFormat; string outfilename = prjSettings.OutPathAndFileName; string dstProj4 = dstSpatialRef.ToProj4String(); List <BandMap> bandMaps = prjSettings.BandMapTable; int dstBandCount = bandMaps.Count; Size srcSize = new Size(srcRaster.Width, srcRaster.Height); Size dstSize = prjSettings.OutSize; using (IRasterDataDriver drv = GeoDataDriver.GetDriverByName("LDF") as IRasterDataDriver) { PrjEnvelope dstEnvelope = prjSettings.OutEnvelope; string mapInfo = "MAPINFO={" + 1 + "," + 1 + "}:{" + dstEnvelope.MinX + "," + dstEnvelope.MaxY + "}:{" + prjSettings.OutResolutionX + "," + prjSettings.OutResolutionY + "}"; using (IRasterDataProvider prdWriter = drv.Create(outfilename, dstSize.Width, dstSize.Height, dstBandCount, enumDataType.UInt16, "INTERLEAVE=BSQ", "VERSION=LDF", "SPATIALREF=" + dstProj4, mapInfo, "WITHHDR=TRUE") as IRasterDataProvider) { //计算查找表 //ISpatialReference srcSpatialRef = srcRaster.SpatialRef; UInt16[] dstRowLookUpTable = new UInt16[dstSize.Width * dstSize.Height]; UInt16[] dstColLookUpTable = new UInt16[dstSize.Width * dstSize.Height]; _rasterProjector.ComputeIndexMapTable(_xs, _ys, srcSize, dstSize, dstEnvelope, _maxPrjEnvelope, out dstRowLookUpTable, out dstColLookUpTable, progressCallback); //执行投影 UInt16[] srcBandData = new UInt16[srcSize.Width * srcSize.Height]; UInt16[] dstBandData = new UInt16[dstSize.Width * dstSize.Height]; int progress = 0; for (int i = 0; i < dstBandCount; i++) //读取原始通道值,投影到目标区域 { if (progressCallback != null) { progress = (int)((i + 1) * 100 / dstBandCount); progressCallback(progress, string.Format("投影第{0}共{1}通道", i + 1, dstBandCount)); } BandMap bandMap = bandMaps[i]; ReadBandData(srcBandData, bandMap.File, bandMap.DatasetName, bandMap.BandIndex, srcSize); if (prjSettings.IsRadiation) { DoRadiation(srcBandData, srcSize, bandMap.DatasetName, bandMap.BandIndex, prjSettings.IsSolarZenith); } _rasterProjector.Project <UInt16>(srcBandData, srcSize, dstRowLookUpTable, dstColLookUpTable, dstSize, dstBandData, 0, progressCallback); using (IRasterBand band = prdWriter.GetRasterBand(i + 1)) { unsafe { fixed(UInt16 *ptr = dstBandData) { IntPtr bufferPtr = new IntPtr(ptr); band.Write(0, 0, band.Width, band.Height, bufferPtr, enumDataType.UInt16, band.Width, band.Height); } } } } } } }
public void OpenBSQFile_GDAL_FullSize() { IRasterDataDriver drv = GeoDataDriver.GetDriverByName("GDAL") as IRasterDataDriver; IRasterDataProvider prd = drv.Open(_fnameBSQ, enumDataProviderAccess.ReadOnly) as IRasterDataProvider;// OpenLdfFile(_fnameBSQ); Assert.Greater(prd.BandCount, 0); ReadOneBandByFullSize(prd, 1, "D:\\GDAL_LDF"); prd.Dispose(); }
private void BuildInternalBuffer(string fileName) { IRasterDataDriver drv = GeoDataDriver.GetDriverByName("LDF") as IRasterDataDriver; _outputDataProvider = drv.Create(fileName, vData.Width, vData.Height, vData.BandCount, vData.DataType, GetOptions()); _outputRasterBands = new IRasterBand[vData.BandCount]; for (int i = 0; i < vData.BandCount; i++) { _outputRasterBands[i] = _outputDataProvider.GetRasterBand(i + 1); } }
private bool InitOutFile(IRasterDataProvider rasterIn, string[] inFiles, string outDir, int defaultValue, out IRasterDataProvider[] rasterOuts) { rasterOuts = null; try { string fileExt = ""; IRasterDataDriver driver = null; string[] optionString = null; if (rasterIn.Driver.Name == "MEM")//判识结果 { optionString = new string[] { "SPATIALREF=" + rasterIn.SpatialRef == null?"":("SPATIALREF=" + rasterIn.SpatialRef.ToProj4String()), "MAPINFO={" + 1 + "," + 1 + "}:{" + rasterIn.CoordEnvelope.MinX + "," + rasterIn.CoordEnvelope.MaxY + "}:{" + rasterIn.ResolutionX + "," + rasterIn.ResolutionY + "}" }; driver = GeoDataDriver.GetDriverByName("MEM") as IRasterDataDriver; fileExt = ".DAT"; } else { optionString = new string[] { "INTERLEAVE=BSQ", "VERSION=LDF", "WITHHDR=TRUE", "SPATIALREF=" + rasterIn.SpatialRef == null?"":("SPATIALREF=" + rasterIn.SpatialRef.ToProj4String()), "MAPINFO={" + 1 + "," + 1 + "}:{" + rasterIn.CoordEnvelope.MinX + "," + rasterIn.CoordEnvelope.MaxY + "}:{" + rasterIn.ResolutionX + "," + rasterIn.ResolutionY + "}" }; driver = GeoDataDriver.GetDriverByName("LDF") as IRasterDataDriver; fileExt = ".LDF"; } string[] fileOuts = new string[inFiles.Length]; for (int i = 0; i < inFiles.Length; i++) { fileOuts[i] = Path.Combine(Path.GetDirectoryName(inFiles[0]) + "/out", Path.ChangeExtension(Path.GetFileName(inFiles[i]), fileExt)); } rasterOuts = new IRasterDataProvider[inFiles.Length]; for (int i = 0; i < inFiles.Length; i++) { IRasterDataProvider rasterOut = driver.Create(fileOuts[i], rasterIn.Width, rasterIn.Height, 1, rasterIn.DataType, optionString); if (rasterOut == null) { return(false); } rasterOuts[i] = rasterOut; double nodata = 0d; double.TryParse(defaultValue.ToString(), out nodata); rasterOut.GetRasterBand(1).Fill(nodata); } return(true); } catch { return(false); } }
public FY3_MERSIFileProjector() : base() { _name = "FY3_MERSI"; _fullname = "FY3_MERSI轨道数据投影"; _rasterProjector = new RasterProjector(); _srcSpatialRef = new SpatialReference(new GeographicCoordSystem()); _outLdfDriver = GeoDataDriver.GetDriverByName("LDF") as IRasterDataDriver; _left = 10; _right = 10; }
private IRasterDataProvider CreateDstDataProvider(IRasterDataProvider srcDataProvider, RasterCut.CutArgument args, RasterCut.BlockItem item) { string extName; CoordEnvelope evp = GetDstEnvelope(srcDataProvider, item); object[] options = GetOptions(srcDataProvider, args, item, out extName, evp); IRasterDataDriver drv = GeoDataDriver.GetDriverByName(args.Driver, args.DriverOptions) as IRasterDataDriver; string fname = GetOutFileName(args.OutFileName, item, extName); return(drv.Create(fname, item.Width, item.Height, args.BandNos.Length, srcDataProvider.DataType, options)); }
internal IRasterDataProvider CreateOutFile(string outfilename, int dstBandCount, Size outSize, enumDataType dataType, string[] options) { string dir = Path.GetDirectoryName(outfilename); if (!Directory.Exists(dir)) { Directory.CreateDirectory(dir); } IRasterDataDriver outdrv = GeoDataDriver.GetDriverByName("LDF") as IRasterDataDriver; return(outdrv.Create(outfilename, outSize.Width, outSize.Height, dstBandCount, dataType, options) as IRasterDataProvider); }
public void CreateCopy() { string fname = "E:\\DST_DBLV_FY3A_VIRR_1000M_DXX_P001_200911131352.MVG"; IRasterDataDriver drv = GeoDataDriver.GetDriverByName("MVG") as IRasterDataDriver; string dstName = "E:\\Copy.MVG"; IRasterDataProvider srcprd = drv.Open(fname, enumDataProviderAccess.ReadOnly) as IRasterDataProvider; IRasterDataProvider dstprd = drv.CreateCopy(dstName, srcprd); Assert.True(File.Exists(dstName)); dstprd.Dispose(); srcprd.Dispose(); }
public void ProcessVectorToRaster(Feature[] features, string shpPrimaryField, enumDataType dataType, double resolution, CoordEnvelope envelope, string rasterFileName) { //创建目标文件 if (string.IsNullOrEmpty(rasterFileName)) { return; } if (envelope == null) { return; } int height = (int)Math.Ceiling((envelope.MaxY - envelope.MinY) / resolution); int width = (int)Math.Ceiling((envelope.MaxX - envelope.MinX) / resolution); IRasterDataProvider dataPrd = null; try { string extension = Path.GetExtension(rasterFileName).ToUpper(); switch (extension) { case ".LDF": { IRasterDataDriver driver = GeoDataDriver.GetDriverByName("LDF") as IRasterDataDriver; string mapInfo = envelope.ToMapInfoString(new Size(width, height)); dataPrd = driver.Create(rasterFileName, width, height, 1, dataType, mapInfo); break; } case ".DAT": { IRasterDataDriver driver = GeoDataDriver.GetDriverByName("MEM") as IRasterDataDriver; string mapInfo = envelope.ToMapInfoString(new Size(width, height)); dataPrd = driver.Create(rasterFileName, width, height, 1, dataType, mapInfo); break; } default: return; } if (features == null || features.Length < 1) { return; } ProcessVectorToRaster(features, shpPrimaryField, dataPrd); } finally { if (dataPrd != null) { dataPrd.Dispose(); } } }
public void CreateCopy() { string fname = @"D:\\FY3A_Mersi_2010_06_24_10_00_1000M_L1B_PRJ_Whole.LDF"; IRasterDataDriver drv = GeoDataDriver.GetDriverByName("LDF") as IRasterDataDriver; string dstfname = "d:\\CreateCopy.ldf"; IRasterDataProvider srcprd = drv.Open(fname, enumDataProviderAccess.ReadOnly) as IRasterDataProvider; IRasterDataProvider dstprd = drv.CreateCopy(dstfname, srcprd); Assert.True(File.Exists(dstfname)); dstprd.Dispose(); srcprd.Dispose(); }
public FY3C_MERSIFileProjector() : base() { _name = "FY3C_MERSI"; _fullname = "FY3C_MERSI轨道数据投影"; _rasterProjector = new RasterProjector(); _srcSpatialRef = new SpatialReference(new GeographicCoordSystem()); _outLdfDriver = GeoDataDriver.GetDriverByName("LDF") as IRasterDataDriver; _left = 10; _right = 10; _supportExtBandNames = new string[] { "DEM", "LandCover", "LandSeaMask" }; }