private void SetBandArgs(IMonitoringSubProduct subProduct) { if (!subProduct.Definition.IsNeedCurrentRaster) { return; } DataIdentify id = GetCurrentRasterIdentify(); if (id == null) { return; } if (!subProduct.ArgumentProvider.BandArgsIsSetted) { MonitoringThemeFactory.SetBandArgs(subProduct, id.Satellite, id.Sensor); } else { AlgorithmDef alg = subProduct.ArgumentProvider.CurrentAlgorithmDef; if (!alg.Satellites.Contains(id.Satellite) || !alg.Sensors.Contains(id.Sensor)) { MonitoringThemeFactory.SetBandArgs(subProduct, id.Satellite, id.Sensor); } } }
private IMonitoringSubProduct CreateMonitoringSubProduct(string rstFileName, string productIdentify, string subProductIdentify) { MonitoringSession session = new MonitoringSession(_session); IMonitoringProduct monitorProduct = session.ChangeActiveProduct(productIdentify); IMonitoringSubProduct subprd = session.ChangeActiveSubProduct(subProductIdentify); RasterIdentify rstIdentify = new RasterIdentify(rstFileName); ExtractAlgorithmIdentify id = new ExtractAlgorithmIdentify(); id.Satellite = rstIdentify.Satellite; id.Sensor = rstIdentify.Sensor; AlgorithmDef alg = subprd.Definition.GetAlgorithmDefByAlgorithmIdentify(id); if (alg == null) { PrintInfo("没有匹配的算法:" + "卫星" + rstIdentify.Satellite + ",传感器" + rstIdentify.Sensor); return(null); } subprd.ResetArgumentProvider(alg.Identify); subprd.ArgumentProvider.SetArg("AlgorithmName", alg.Identify); if (alg.Bands != null && alg.Bands.Length > 0) { MonitoringThemeFactory.SetBandArgs(subprd, rstIdentify.Satellite, rstIdentify.Sensor); foreach (BandDef band in alg.Bands) { if (subprd.ArgumentProvider.GetArg(band.Identify).ToString() == "-1") { PrintInfo("从波段映射表获取\"" + band.Identify + "\"的波段序号失败,生成过程终止!"); return(null); } } } TryHandleCustomArguments(subprd.ArgumentProvider, alg); return(subprd); }