예제 #1
0
 public CommonEcoIndex(SCLASSAREA _zoneClassArea, List <string> _comIndexName)
 {
     zoneClassArea     = _zoneClassArea;
     comIndexName      = _comIndexName;
     comEcoIndexResult = new List <double>();
     comEcoIndexName   = new List <string>();
 }
예제 #2
0
 public SpecialEcoIndex(SCLASSAREA _zoneClassArea, List <string> _speIndexName)
 {
     zoneClassArea     = _zoneClassArea;
     speIndexName      = _speIndexName;
     speEcoIndexResult = new List <double>();
     speEcoIndexName   = new List <string>();
 }
예제 #3
0
        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);
        }