Example #1
0
        public List <double> SpecialEcoIndexCal()
        {
            if (speIndexName.Count <= 0)
            {
                return(speEcoIndexResult);
            }
            specialIndexFla = new IndexFormula(zoneClassArea);
            double LD_Weight     = 0;
            double CD_Weight     = 0;
            double LCD_Weight    = 0;
            double SYSD_Weight   = 0;
            double GDJSYD_Weight = 0;

            double[] SYHY_Weight = new double[4];

            string strGNQ = string.Empty;

            #region 生态功能区生态环境状况评价指标计算系数
            string str = speIndexName[0].Substring(0, speIndexName[0].IndexOf("_"));
            if (str == "防风固沙生态功能区")
            {
                LCD_Weight    = 105.4407423028;
                SYSD_Weight   = 824.4023083265;
                GDJSYD_Weight = 165.0437365902;
            }
            else if (str == "水土保持生态功能区")
            {
                LCD_Weight    = 104.5696957022;
                SYSD_Weight   = 1418.4397163121;
                GDJSYD_Weight = 150.6477854776;
            }
            else if (str == "水源涵养生态功能区")
            {
                LD_Weight     = 104.4277360067;
                CD_Weight     = 120.5836247438;
                SYSD_Weight   = 321.4400514304;
                GDJSYD_Weight = 102.7221366204;
                SYHY_Weight   = new double[] { 526.7925984400, 0.45, 0.35, 0.20 };
            }
            else if (str == "生物多样性维护生态功能区")
            {
                LD_Weight     = 113.3915409910;
                CD_Weight     = 130.9414691633;
                SYSD_Weight   = 329.9241174530;
                GDJSYD_Weight = 116.2115049390;
            }
            #endregion

            #region 指标计算

            for (int j = 0; j < speIndexName.Count; j++)
            {
                str = speIndexName[j].Substring(speIndexName[j].IndexOf("_") + 1);
                #region 根据所选指标调用公式
                switch (str)
                {
                case "林地覆盖率":
                    speEcoIndexResult.Add(specialIndexFla.ForestAreaRatio(LD_Weight));
                    break;

                case "草地覆盖率":
                    speEcoIndexResult.Add(specialIndexFla.GrassAreaRatio(CD_Weight));
                    break;

                case "耕地和建设用地面积比":
                    speEcoIndexResult.Add(specialIndexFla.FarmConstructionAreaRatio(GDJSYD_Weight));
                    break;

                case "水域湿地面积比":
                    speEcoIndexResult.Add(specialIndexFla.WaterAreaRatio(SYSD_Weight));
                    break;

                case "林草地覆盖率":
                    speEcoIndexResult.Add(specialIndexFla.ForestGrassAreaRatio(LCD_Weight));
                    break;

                case "水源涵养指数":
                    speEcoIndexResult.Add(specialIndexFla.SYHYIndex(SYHY_Weight));
                    break;

                case "受保护区域面积比":
                    speEcoIndexResult.Add(specialIndexFla.ProtectAreaRatio());
                    break;

                default:
                    break;
                }
                #endregion
            }
            #endregion
            return(speEcoIndexResult);
        }
Example #2
0
        public List <double> ComEcoIndexCal()
        {
            #region 基础生态环境状况评价指标计算系数
            double[] ComSJZLI = new double[] { 511.2642131067, 0.35, 0.21, 0.28, 0.11, 0.04, 0.01 };
            double[] ComSYHYI = new double[] { 1, 1, 1, 1 };
            #endregion
            if (comIndexName.Count <= 0)
            {
                return(comEcoIndexResult);
            }
            comIndexFla = new IndexFormula(zoneClassArea);
            for (int i = 0; i < comIndexName.Count; i++)
            {
                #region 根据所选指标调用公式
                switch (comIndexName[i].ToString())
                {
                case "生境质量指数":
                    comEcoIndexResult.Add(comIndexFla.SJZLIndex(ComSJZLI));
                    break;

                case "林地覆盖率":
                    comEcoIndexResult.Add(comIndexFla.ForestAreaRatio(1));
                    break;

                case "草地覆盖率":
                    comEcoIndexResult.Add(comIndexFla.GrassAreaRatio(1));
                    break;

                case "耕地面积比":
                    comEcoIndexResult.Add(comIndexFla.FarmAreaRatio(1));
                    break;

                case "不透水地表面积比":
                    comEcoIndexResult.Add(comIndexFla.HardenSurfaceRatio(1));
                    break;

                case "耕地和建设用地面积比":
                    comEcoIndexResult.Add(comIndexFla.FarmConstructionAreaRatio(1));
                    break;

                case "水域湿地面积比":
                    comEcoIndexResult.Add(comIndexFla.WaterAreaRatio(1));
                    break;

                case "荒漠与自然裸露地表面积比":
                    comEcoIndexResult.Add(comIndexFla.DesertAreaRatio(1));
                    break;

                case "水源涵养指数":
                    comEcoIndexResult.Add(comIndexFla.SYHYIndex(ComSYHYI));
                    break;

                case "受保护区域面积比":
                    comEcoIndexResult.Add(comIndexFla.ProtectAreaRatio());
                    break;

                case "行、蓄、滞洪区域面积比":
                    comEcoIndexResult.Add(comIndexFla.FloodAreaRatio());
                    break;

                case "固沙草地、护坡灌草面积比":
                    comEcoIndexResult.Add(comIndexFla.SandFixationAreaRatio());
                    break;

                case "人均林地":
                    double pcf = 0;
                    if (PatchEcosystem.population != 0)
                    {
                        pcf = zoneClassArea.ForestArea / PatchEcosystem.population;
                    }
                    comEcoIndexResult.Add(pcf);
                    break;

                case "人均耕地":
                    double pca = 0;
                    if (PatchEcosystem.population != 0)
                    {
                        pca = zoneClassArea.FarmArea / PatchEcosystem.population;
                    }
                    comEcoIndexResult.Add(pca);
                    break;

                case "人均休闲用地":
                    double pcl = 0;
                    if (PatchEcosystem.population != 0)
                    {
                        pcl = zoneClassArea.ProtectArea / PatchEcosystem.population;
                    }
                    comEcoIndexResult.Add(pcl);
                    break;

                default:
                    break;
                }
                #endregion
            }
            return(comEcoIndexResult);
        }