private IExtractResult TFRQAlgorithm(Action <int, string> progressTracker) { IRasterOperator <Int16> roper = new RasterOperator <Int16>(); IInterestedRaster <Int16> timeResult = null; string[] files = GetStringArray("SelectedPrimaryFiles"); if (files == null || files.Length == 0) { return(null); } RasterIdentify identify = new RasterIdentify(files); identify.SubProductIdentify = _subProductDef.Identify; int maxNum = 0; timeResult = roper.Times(files, identify, progressTracker, (dstValue, srcValue) => { dstValue += srcValue; if (maxNum < dstValue) { maxNum = dstValue; } return(dstValue); }); if (timeResult == null || maxNum == 0) { return(null); } double zoom = (double)_argumentProvider.GetArg("Zoom"); return(CalcTreq(timeResult, identify, maxNum, zoom)); }
private IExtractResult TFREAlgorithm(Action <int, string> progressTracker) { IRasterOperator <Int16> roper = new RasterOperator <Int16>(); IInterestedRaster <Int16> timeResult = null; string[] files = GetStringArray("SelectedPrimaryFiles"); if (files == null || files.Length == 0) { return(null); } RasterIdentify identify = new RasterIdentify(files); identify.SubProductIdentify = _subProductDef.Identify; timeResult = roper.Times(files, identify, progressTracker, (dstValue, srcValue) => { return((Int16)(dstValue + srcValue)); }); if (timeResult == null) { return(null); } timeResult.Dispose(); string workFilename = identify.ToWksFullFileName(".dat"); File.Copy(timeResult.FileName, workFilename, true); return(new FileExtractResult("FLD", workFilename, true)); }
private void button2_Click(object sender, EventArgs e) { string fname1 = "F:\\FIR_NDVI_FY3A_MERSI_250M_20120610164136_20120611164136.dat"; string fname2 = "F:\\FIR_NDVI_FY3A_MERSI_250M_20120610164136_20120611164136 - 副本.dat"; IRasterOperator <float> oper = new RasterOperator <float>(); oper.Times(new string[] { fname1, fname2 }, new RasterIdentify(), (v1, v2) => { return(v1 + v2); }); }
public static IExtractResult ComputeMinFile(string[] fnames, RasterIdentify rasterIdentify) { IRasterOperator <float> rasterOperator = new RasterOperator <float>(); IInterestedRaster <float> resultRaster = rasterOperator.Times(fnames, rasterIdentify, (value, valuei) => { if (valuei < value) { value = valuei; } return(value); } ); return(resultRaster); }
/// <summary> /// 当期区域像素点频次统计(基于判识二值数据进行计算) /// </summary> /// <param name="productIdentify">产品标识</param> /// <param name="subProIdentify">子产品标识</param> /// <param name="invaild">无效值</param> public static void TimesStatAnalysisByPixel(string productIdentify, string subProIdentify, Int16 invaild) { IRasterOperator <Int16> roper = new RasterOperator <Int16>(); RasterIdentify identify = GetIdentify(productIdentify, subProIdentify); IInterestedRaster <Int16> timeResult = null; string[] files = GetFiles(); //频次统计 timeResult = roper.Times(files, identify, (dstValue, srcValue) => { if (srcValue != invaild) { return((Int16)(dstValue++)); } else { return(dstValue); } }); if (timeResult == null) { return; } }
public override IExtractResult Make(Action <int, string> progressTracker) { if (_argumentProvider == null || _argumentProvider.GetArg("AlgorithmName") == null) { return(null); } if (_argumentProvider.GetArg("AlgorithmName").ToString() == "FLLS") { string[] files = GetStringArray("SelectedPrimaryFiles"); if (files == null || files.Count() == 0) { return(null); } foreach (string file in files) { if (!File.Exists(file)) { return(null); } } IRasterOperator <Int16> roper = new RasterOperator <Int16>(); IInterestedRaster <Int16> timeResult = null; DataIdentify di = GetDataIdentify(); timeResult = roper.Times(files, CreatRasterIndetifyId(files, "FLD", "FLLS", di, null, null), (dstValue, srcValue) => { //泛滥水体值==4 if (srcValue == 4) { return(++dstValue); } else { return(dstValue); } }); if (timeResult != null && !string.IsNullOrEmpty(timeResult.FileName) && File.Exists(timeResult.FileName)) { //发生[1,5)次 StatResultItem[] lowResults = null; //发生[5,10)次 StatResultItem[] midResults = null; //发生十次及十次以上 StatResultItem[] highResults = null; IStatAnalysisEngine <Int16> exe = new StatAnalysisEngine <Int16>(); using (IRasterDataProvider prd = timeResult.HostDataProvider) { lowResults = exe.StatArea(prd, "省级行政区+土地利用类型", (srcValue) => { if (srcValue >= 1 && srcValue < 5) { return(true); } else { return(false); } }); if (files.Count() >= 5) { midResults = exe.StatArea(prd, "省级行政区+土地利用类型", (srcValue) => { if (srcValue >= 5 && srcValue < 10) { return(true); } else { return(false); } }); } if (files.Count() >= 10) { highResults = exe.StatArea(prd, "省级行政区+土地利用类型", (srcValue) => { if (srcValue >= 10) { return(true); } else { return(false); } }); } } List <StatResultItem> resultList = new List <StatResultItem>(); if (lowResults != null && lowResults.Count() > 0) { foreach (StatResultItem item in lowResults) { item.Name += "_1-5次"; } resultList.AddRange(lowResults); } if (midResults != null && midResults.Count() > 0) { foreach (StatResultItem item in midResults) { item.Name += "_5-10次"; } resultList.AddRange(midResults); } if (highResults != null && highResults.Count() > 0) { foreach (StatResultItem item in midResults) { item.Name += "_10次以上"; } resultList.AddRange(highResults); } FileExtractResult fileResult = null; if (resultList != null && resultList.Count() > 0) { string filename = StatResultToFile(files, resultList.ToArray(), "FLD", "FLLS", "水情泛滥历时面积", null); fileResult = new FileExtractResult("FLLS", filename); } timeResult.Dispose(); File.Delete(timeResult.FileName); return(fileResult); } return(null); } return(null); }
private string GetSNWDegree(string[] files) { double pixelArea = 0; IInterestedRaster <Int16> timeResult = null; IRasterOperator <Int16> roper = new RasterOperator <Int16>(); DataIdentify di = GetDataIdentify(); string outFileIdentify = GetStringArgument("OutFileIdentify"); string extinfo = GetStringArgument("extinfo"); timeResult = roper.Times(files, CreatRasterIndetifyId(files, "SNW", outFileIdentify, di, null, extinfo), (dstValue, srcValue) => { if (srcValue == 0) { return(dstValue); } else { return(++dstValue); } }); IRasterDataProvider dataProvider = timeResult.HostDataProvider; if (dataProvider != null) { ArgumentProvider ap = new ArgumentProvider(dataProvider, null); RasterPixelsVisitor <Int16> visitor = new RasterPixelsVisitor <Int16>(ap); IPixelFeatureMapper <double> memresult = new MemPixelFeatureMapper <double>("0SDC", 1000, new Size(dataProvider.Width, dataProvider.Height), dataProvider.CoordEnvelope, dataProvider.SpatialRef); IInterestedRaster <double> iir = null; try { visitor.VisitPixel(new int[] { 1 }, (index, values) => { if (values[0] == 0) { memresult.Put(index, 0); } else { pixelArea = RasterOperator <Int16> .ComputePixelArea(index / dataProvider.Width, dataProvider.CoordEnvelope.MaxY, dataProvider.ResolutionY); memresult.Put(index, pixelArea * values[0]); } }); RasterIdentify id = new RasterIdentify(); id.ThemeIdentify = "CMA"; id.ProductIdentify = "SNW"; id.SubProductIdentify = "0SDC"; id.GenerateDateTime = DateTime.Now; iir = new InterestedRaster <double>(id, new Size(dataProvider.Width, dataProvider.Height), dataProvider.CoordEnvelope.Clone()); iir.Put(memresult); return(iir.FileName); } finally { if (iir != null) { iir.Dispose(); } if (visitor != null) { visitor.Dispose(); } if (timeResult != null) { timeResult.Dispose(); } if (File.Exists(timeResult.FileName)) { File.Delete(timeResult.FileName); } } } return(null); }