Exemplo n.º 1
0
        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);
                }
            }
        }
Exemplo n.º 2
0
        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);
        }