コード例 #1
0
 public void DiadromousIndicatorTest()
 {
     foreach (var test in _testSets)
     {
         var indicator = new ConnectivityIndicator {
             Reaches = GetReaches(test)
         };
         using (new Measure("DciD"))
             Assert.AreEqual(indicator.DciD, (Int32)Math.Round(test.DciD * 100, 0));
     }
 }
コード例 #2
0
        private void OnDeserialized(StreamingContext context = default(StreamingContext))
        {
            Attributes        = Attributes ?? new Attributes();
            Assets            = Assets ?? new ModelAssets();
            Governance        = Governance ?? InitializeGovernance.Create();
            EcosystemServices = EcosystemServices ?? InitializeEcosystemServices.Create();
            EcosystemVitality = EcosystemVitality ?? InitializeEcosystemVitality.Create();

            #region Backward Compatibility
#pragma warning disable 612
            var bc = EcosystemVitality.FetchIndicator <Indicator>("Basin Condition");
            PotadromousIndicator p = null;
            DiadromousIndicator  d = null;
            foreach (var indicator in bc.Children)
            {
                switch (indicator)
                {
                case PotadromousIndicator potadromousIndicator:
                    p = potadromousIndicator;
                    break;

                case DiadromousIndicator diadromousIndicator:
                    d = diadromousIndicator;
                    break;
                }
            }
#pragma warning restore 612
            if (p != null || d != null)
            {
                bc.Children.Remove(p);
                bc.Children.Remove(d);
                var ci = new ConnectivityIndicator {
                    Reaches = p?.Reaches
                };
                bc.Children.Add(ci);
                foreach (var child in bc.Children)
                {
                    child.Weight = 1.0 / bc.Children.Count;
                }
            }

            // bank modification and land cover indicators
            var cm = bc.FetchIndicator <BankModificationIndicator>();
            if (cm == null)
            {
                bc.Children.Add(new BankModificationIndicator());
            }
            var lc = bc.FetchIndicator <LandCoverIndicator>();
            if (lc == null)
            {
                bc.Children.Add(new LandCoverIndicator());
            }

            // old conservation areas manual indicator
            var mca = EcosystemServices.FetchIndicator <ManualIndicator>("Conservation Areas");
            if (mca != null)
            {
                var cai = new ConservationAreaIndicator();
                // preserve old data
                if (mca.Value != null || mca.UserOverride != null)
                {
                    cai.UserOverride    = mca.Value ?? mca.UserOverride;
                    cai.OverrideComment = mca.OverrideComment ?? "User's manual input.";
                }
                cai.Weight = mca.Weight ?? 0.5;
                var culture = EcosystemServices.FetchIndicator <Indicator>("Cultural");
                culture.Children.Remove(mca);
                culture.Children.Add(cai);
            }
            #endregion Backward Compatibility
        }