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); }
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); }