public CommonEcoIndex(SCLASSAREA _zoneClassArea, List <string> _comIndexName) { zoneClassArea = _zoneClassArea; comIndexName = _comIndexName; comEcoIndexResult = new List <double>(); comEcoIndexName = new List <string>(); }
public SpecialEcoIndex(SCLASSAREA _zoneClassArea, List <string> _speIndexName) { zoneClassArea = _zoneClassArea; speIndexName = _speIndexName; speEcoIndexResult = new List <double>(); speEcoIndexName = new List <string>(); }
public override bool CalculateIndex(ProgressBar progress) { try { progress.Maximum = baseData.zoneValue.Count; progress.Value = 0; zoneArea = new ZoneClassArea(baseData); for (int i = 0; i < baseData.zoneValue.Count; i++) { List <double> temp = new List <double>(); int[] oidlist = baseData.patchIDArray[i]; using (ComReleaser comReleaser = new ComReleaser()) { SCLASSAREA ClassArea = new SCLASSAREA(); //定义分区结构体; //获取每个分区的要素集; IGeoDatabaseBridge geodatabaseBridge = new GeoDatabaseHelperClass(); IFeatureCursor featureCursor = geodatabaseBridge.GetFeatures(baseData.zoneLCA_FC, ref oidlist, true); ClassArea = zoneArea.StatisticClassArea(featureCursor); ClassArea.TotalArea = baseData.zoneArea[i]; //普通生态环境评价指标计算; if (indexNameList[0].Count > 0) { dt_Popualtion = MainForm.dt_Population; if (dt_Popualtion != null) { for (int j = 0; j < dt_Popualtion.Rows.Count; j++) { if (baseData.zoneValue[i].ToString() == dt_Popualtion.Rows[j][0].ToString()) { population = Convert.ToDouble(dt_Popualtion.Rows[j][1].ToString()); } } } commonIndex = new CommonEcoIndex(ClassArea, indexNameList[0]); commonIndex.ComEcoIndexCal(); temp.AddRange(commonIndex.comEcoIndexResult); } //生态功能区生态环境评价指标计算; if (indexNameList[1].Count > 0) { specialIndex = new SpecialEcoIndex(ClassArea, indexNameList[1]); specialIndex.SpecialEcoIndexCal(); temp.AddRange(specialIndex.speEcoIndexResult); } //自然保护区生态环境评价指标计算; if (indexNameList[2].Count > 0) { natureIndex = new NatureEcoIndex(ClassArea, indexNameList[2]); natureIndex.NatureEcoIndexCal(); temp.AddRange(natureIndex.natEcoIndexResult); } progress.Value++; } indexCalResult.Add(temp); } } catch (System.Exception ex) { return(false); } return(true); }