internal AbstractWarpDataset CreateOutFile(string driver, string outfilename, int dstBandCount, Size outSize, DataType dataType, string[] options) { CheckAndCreateDir(Path.GetDirectoryName(outfilename)); string[] _options = new string[] { "header_offset=128" }; var ds = DatasetFactory.CreateRasterDataset(outfilename, outSize.Width, outSize.Height, dstBandCount, dataType, "ENVI", null); if (ds == null) { throw new ArgumentException("请检查输出文件路径"); } return(new WarpDataset(ds, outfilename)); }
protected AbstractWarpDataset CreateOutFile(AbstractWarpDataset srcRaster, FilePrjSettings prjSettings, SpatialReference dstSpatial, DataType dataType) { float resolutionX = prjSettings.OutResolutionX; float resolutionY = prjSettings.OutResolutionY; Size outSize = prjSettings.OutEnvelope.GetSize(resolutionX, resolutionY); int bandCount = prjSettings.OutBandNos.Length; string filename = prjSettings.OutPathAndFileName; CheckAndCreateDir(Path.GetDirectoryName(filename)); Envelope env = new Envelope() { MaxX = prjSettings.OutEnvelope.MaxX, MinX = prjSettings.OutEnvelope.MinX, MaxY = prjSettings.OutEnvelope.MaxY, MinY = prjSettings.OutEnvelope.MinY, }; string[] _options = new string[] { "header_offset=128" }; double[] geoTrans = new double[] { env.MinX, Convert.ToDouble(resolutionX.ToString("f6")), 0, env.MaxY, 0, -Convert.ToDouble(resolutionY.ToString("f6")) }; var ds = DatasetFactory.CreateRasterDataset(filename, outSize.Width, outSize.Height, bandCount, DataType.GDT_UInt16, "ENVI", null); ds.SetGeoTransform(geoTrans); if (ds == null) { throw new ArgumentException("请检查输出文件路径"); } ds.SetProjection(dstSpatial.ExportToWkt()); Enumerable.Range(0, bandCount).ToList().ForEach(t => ds.GetRasterBand(t).SetNoDataValue(NODATA_VALUE)); return(new WarpDataset(ds, filename)); }