示例#1
0
        private void lPatchRichnessDensity(string filename, string epsg, int fieldIndex)
        {
            try
            {
                //Obtenemos un arraylist con toda la colección de registros del campo
                ArrayList       fieldRows = new ArrayList();
                SchemaDB_Reader collect   = new SchemaDB_Reader(filename, fieldIndex);
                fieldRows = collect.FieldValues;

                //obtenemos un arraylist con las categorias encontradas en el campo
                ArrayList       categories = new ArrayList();
                SchemaDB_Reader categ      = new SchemaDB_Reader();
                categories = categ.categories((ArrayList)fieldRows.Clone());

                _numLandscapeCategories = categories.Count;


                L_Area_V totalArea = new L_Area_V(filename, epsg);
                //landscape area is already in hectares
                _patchRichnessDensity = ((_numLandscapeCategories / totalArea.LandscapeArea)) * 100;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
示例#2
0
        private void lShannonsDiversityIndex(string filename, string epsg, int fieldIndex)
        {
            try
            {
                //Obtenemos un arraylist con toda la colección de registros del campo
                ArrayList       fieldRows = new ArrayList();
                SchemaDB_Reader collect   = new SchemaDB_Reader(filename, fieldIndex);
                fieldRows = collect.FieldValues;

                //obtenemos un arraylist con las categorias encontradas en el campo
                ArrayList       categories = new ArrayList();
                SchemaDB_Reader categ      = new SchemaDB_Reader();
                categories = categ.categories((ArrayList)fieldRows.Clone());


                C_LandscapePercent_V diversity = new C_LandscapePercent_V(filename, epsg, fieldIndex);


                double _shannonsDiversityIndexTemp = 0;

                for (int i = 0; i < diversity.CategoryNames.Count; i++)
                {
                    _shannonsDiversityIndexTemp += ((double)diversity.LandscapePercent[i] / 100) * Math.Log(((double)diversity.LandscapePercent[i] / 100));
                }

                _shannonsDiversityIndex = _shannonsDiversityIndexTemp * -1;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        private void cNumDisjunctCoreArea(string filename, string epsg, int fieldIndex, double depthOfEdge)
        {
            try
            {
                //Obtenemos un arraylist con toda la colección de registros del campo
                ArrayList       fieldRows = new ArrayList();
                SchemaDB_Reader collect   = new SchemaDB_Reader(filename, fieldIndex);
                fieldRows = collect.FieldValues;

                //obtenemos un arraylist con las categorias encontradas en el campo
                ArrayList categories = new ArrayList();

                SchemaDB_Reader categ = new SchemaDB_Reader();
                categories = categ.categories((ArrayList)fieldRows.Clone());

                _categoryNames = categories;


                //obtenemos el num de core areas de cada shape
                P_NumCoreAreas_V numCoreAreas = new P_NumCoreAreas_V(filename, epsg, fieldIndex, depthOfEdge);


                for (int i = 0; i < categories.Count; i++)
                {
                    int numDisjunctCoreAreas = 0;

                    ArrayList categoryMembers = new ArrayList();
                    //cada iteración "i" obtenemos los miembros de una nueva categoria
                    SchemaDB_Reader members = new SchemaDB_Reader();
                    categoryMembers = members.categoryMembers(fieldRows, (string)categories[i]);


                    //en cada iteración j obtenemos el num de core areas de esa categoria
                    for (int j = 0; j < categoryMembers.Count; j++)
                    {
                        numDisjunctCoreAreas += (int)numCoreAreas.NumCoreAreas[(int)categoryMembers[j]];
                    }

                    //añadimos la core-área de la categoría "i" al arraylist _coreAreasCategorias
                    //y volvemos a pones a 0 la variable de area de caregoria, para calcular
                    //una nueva categoria "i"

                    _numDisjunctCoreAreasPerCategory.Add(numDisjunctCoreAreas);
                }


                _cNumDisjunctCoreArea_V.Columns.Add("CategoryName", typeof(string));
                _cNumDisjunctCoreArea_V.Columns.Add("CategoryNumDisjunctCoreArea", typeof(int));

                for (int i = 0; i < _categoryNames.Count; i++)
                {
                    _cNumDisjunctCoreArea_V.Rows.Add(_categoryNames[i], _numDisjunctCoreAreasPerCategory[i]);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        private void cNumPatches(string filename, string epsg, int fieldIndex)
        {
            try
            {
                //Obtenemos un arraylist con toda la colección de registros del campo
                ArrayList       fieldRows = new ArrayList();
                SchemaDB_Reader colection = new SchemaDB_Reader(filename, fieldIndex);
                fieldRows = colection.FieldValues;

                //obtenemos un arraylist con las categorias encontradas en el campo
                ArrayList       categories = new ArrayList();
                SchemaDB_Reader categ      = new SchemaDB_Reader();
                categories = categ.categories((ArrayList)fieldRows.Clone());


                _categoryNames = categories;


                for (int i = 0; i < categories.Count; i++)
                {
                    //cada iteración "i" obtenemos los miembros de una nueva categoria
                    SchemaDB_Reader members         = new SchemaDB_Reader();
                    ArrayList       categoryMembers = new ArrayList();

                    categoryMembers = members.categoryMembers(fieldRows, (string)categories[i]);


                    _numPatchesPerCategory.Add(categoryMembers.Count);
                }


                _cNumPatchesPerCategory_V.Columns.Add("CategoryName", typeof(string));
                _cNumPatchesPerCategory_V.Columns.Add("NumPatchesPerCategory", typeof(int));

                for (int i = 0; i < _categoryNames.Count; i++)
                {
                    _cNumPatchesPerCategory_V.Rows.Add(_categoryNames[i], _numPatchesPerCategory[i]);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        private void landscapeMetrics(string filename, string epsg, int fieldIndex)
        {
            try
            {
                //Obtenemos un arraylist con toda la colección de registros del campo
                ArrayList       fieldRows = new ArrayList();
                SchemaDB_Reader collect   = new SchemaDB_Reader(filename, fieldIndex);
                fieldRows = collect.FieldValues;

                //obtenemos un arraylist con las categorias encontradas en el campo
                ArrayList       categories = new ArrayList();
                SchemaDB_Reader categ      = new SchemaDB_Reader();
                categories = categ.categories((ArrayList)fieldRows.Clone());

                _numLandscapeCategories = categories.Count;


                L_Area_V totalArea = new L_Area_V(filename, epsg);
                _patchRichnessDensity = ((_numLandscapeCategories / totalArea.LandscapeArea)) * 100;


                C_LandscapePercent_V diversity = new C_LandscapePercent_V(filename, epsg, fieldIndex);

                double _simpsonsDiversityIndexTemp = 0;
                double _shannonsDiversityIndexTemp = 0;

                for (int i = 0; i < diversity.CategoryNames.Count; i++)
                {
                    _shannonsDiversityIndexTemp += ((double)diversity.LandscapePercent[i] / 100) * Math.Log(((double)diversity.LandscapePercent[i] / 100));
                    _simpsonsDiversityIndexTemp += Math.Pow(((double)diversity.LandscapePercent[i] / 100), 2);
                }
                _shannonsDiversityIndex         = _shannonsDiversityIndexTemp * -1;
                _simpsonsDiversityIndex         = 1 - _simpsonsDiversityIndexTemp;
                _modifiedSimpsonsDiversityIndex = -Math.Log(_simpsonsDiversityIndexTemp);
                _shannonsEvennessIndex          = _shannonsDiversityIndex / Math.Log(_numLandscapeCategories);
                _simpsonsEvennessIndex          = _simpsonsDiversityIndex / (1 - (1 / (double)_numLandscapeCategories));
                _modifiedSimpsonsEvennessIndex  = _modifiedSimpsonsDiversityIndex / Math.Log(_numLandscapeCategories);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
示例#6
0
        private void lNumCategories(string filename, string epsg, int fieldIndex)
        {
            try
            {
                //Obtenemos un arraylist con toda la colección de registros del campo
                ArrayList       fieldRows = new ArrayList();
                SchemaDB_Reader collect   = new SchemaDB_Reader(filename, fieldIndex);
                fieldRows = collect.FieldValues;

                //obtenemos un arraylist con las categorias encontradas en el campo
                ArrayList       categories = new ArrayList();
                SchemaDB_Reader categ      = new SchemaDB_Reader();
                categories = categ.categories((ArrayList)fieldRows.Clone());

                _numLandscapeCategories = categories.Count;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        private void categoryMetrics(string filename, string epsg, int fieldIndex)
        {
            try
            {
                //Obtenemos un arraylist con toda la colección de registros del campo
                ArrayList       fieldRows = new ArrayList();
                SchemaDB_Reader colection = new SchemaDB_Reader(filename, fieldIndex);
                fieldRows = colection.FieldValues;

                //obtenemos un arraylist con las categorias encontradas en el campo
                ArrayList       categories = new ArrayList();
                SchemaDB_Reader categ      = new SchemaDB_Reader();
                categories = categ.categories((ArrayList)fieldRows.Clone());


                _categoryNames = categories;

                //obtenemos todas las áreas de cada shape
                ArrayList      areasCollectionArraylist = new ArrayList();
                GeometryReader geometryCollection       = new GeometryReader(filename, epsg);



                for (int i = 0; i < categories.Count; i++)
                {
                    double categoryArea = 0;

                    //cada iteración "i" obtenemos los miembros de una nueva categoria
                    SchemaDB_Reader members         = new SchemaDB_Reader();
                    ArrayList       categoryMembers = new ArrayList();

                    categoryMembers = members.categoryMembers(fieldRows, (string)categories[i]);


                    //en cada iteración j obtenemos el área total de esa categoria
                    for (int j = 0; j < categoryMembers.Count; j++)
                    {
                        categoryArea += (double)geometryCollection.Areas[(int)categoryMembers[j]];
                    }

                    //añadimos el área de la categoría "i" al arraylist _areasCategorias
                    //y volvemos a pones a 0 la variable de area de caregoria, para calcular
                    //una nueva categoria "i"


                    _totalAreasPerCategory.Add(categoryArea);
                }


                for (int i = 0; i < _totalAreasPerCategory.Count; i++)
                {
                    totalArea += (double)_totalAreasPerCategory[i];
                }



                for (int i = 0; i < _totalAreasPerCategory.Count; i++)
                {
                    _landscapePercentPerCategory.Add(((double)_totalAreasPerCategory[i] / totalArea) * 100);
                }

                _cLandscapePercent_V.Columns.Add("CategoryName", typeof(string));
                _cLandscapePercent_V.Columns.Add("LandscapePercent", typeof(double));

                for (int i = 0; i < _categoryNames.Count; i++)
                {
                    _cLandscapePercent_V.Rows.Add(_categoryNames[i], _landscapePercentPerCategory[i]);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
示例#8
0
        private void CategoryMetrics(string filename, string epsg, int fieldIndex, double depthOfEdge)
        {
            try
            {
                //Obtenemos un arraylist con toda la colección de registros del campo
                ArrayList       fieldRows = new ArrayList();
                SchemaDB_Reader collect   = new SchemaDB_Reader(filename, fieldIndex);
                fieldRows = collect.FieldValues;

                //obtenemos un arraylist con las categorias encontradas en el campo
                ArrayList categories = new ArrayList();

                SchemaDB_Reader categ = new SchemaDB_Reader();
                categories = categ.categories((ArrayList)fieldRows.Clone());

                _categoryNames = categories;


                //obtenemos todas las core-áreas de cada shape
                Patch_CoreAreaMetrics_V coreAreas = new Patch_CoreAreaMetrics_V(filename, epsg, fieldIndex, depthOfEdge);



                for (int i = 0; i < categories.Count; i++)
                {
                    double categoryCoreArea     = 0;
                    int    numDisjunctCoreAreas = 0;

                    ArrayList categoryMembers = new ArrayList();
                    //cada iteración "i" obtenemos los miembros de una nueva categoria
                    SchemaDB_Reader members = new SchemaDB_Reader();
                    categoryMembers = members.categoryMembers(fieldRows, (string)categories[i]);


                    //en cada iteración j obtenemos el área total de esa categoria
                    for (int j = 0; j < categoryMembers.Count; j++)
                    {
                        categoryCoreArea     += (double)coreAreas.CoreAreas[(int)categoryMembers[j]];
                        numDisjunctCoreAreas += (int)coreAreas.NumCoreAreas[(int)categoryMembers[j]];
                    }

                    //añadimos la core-área de la categoría "i" al arraylist _coreAreasCategorias
                    //y volvemos a pones a 0 la variable de area de caregoria, para calcular
                    //una nueva categoria "i"

                    _coreAreaPerCategory.Add(categoryCoreArea);
                    _numDisjunctCoreAreasPerCategory.Add(numDisjunctCoreAreas);
                }

                ArrayList _pAreas = new ArrayList();
                P_Area_V  areas   = new P_Area_V(filename, epsg, fieldIndex);
                _pAreas = areas.PatchAreas;



                for (int i = 0; i < _pAreas.Count; i++)
                {
                    totalArea += (double)_pAreas[i];
                }



                for (int i = 0; i < _coreAreaPerCategory.Count; i++)
                {
                    _coreAreaPercentOfLandscape.Add(((double)_coreAreaPerCategory[i] / totalArea) * 100);
                    _disjunctCoreAreaDensityPerCategory.Add((((int)_numDisjunctCoreAreasPerCategory[i] / totalArea) * 10000) * 100);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        private void categoryMetrics(string filename, string epsg, int fieldIndex)
        {
            try
            {
                //Obtenemos un arraylist con toda la colección de registros del campo
                ArrayList       fieldRows = new ArrayList();
                SchemaDB_Reader colection = new SchemaDB_Reader(filename, fieldIndex);
                fieldRows = colection.FieldValues;

                //obtenemos un arraylist con las categorias encontradas en el campo
                ArrayList       categories = new ArrayList();
                SchemaDB_Reader categ      = new SchemaDB_Reader();
                categories = categ.categories((ArrayList)fieldRows.Clone());


                _categoryNames = categories;

                //obtenemos todas las áreas de cada shape
                GeometryReader geometryCollection = new GeometryReader(filename, epsg);



                for (int i = 0; i < categories.Count; i++)
                {
                    double categoryArea     = 0;
                    double categoryEdge     = 0;
                    double largestPatchSize = 0;

                    //cada iteración "i" obtenemos los miembros de una nueva categoria
                    SchemaDB_Reader members         = new SchemaDB_Reader();
                    ArrayList       categoryMembers = new ArrayList();

                    categoryMembers = members.categoryMembers(fieldRows, (string)categories[i]);


                    _numPatchesPerCategory.Add(categoryMembers.Count);


                    //en cada iteración j obtenemos el área total de esa categoria
                    for (int j = 0; j < categoryMembers.Count; j++)
                    {
                        categoryArea += (double)geometryCollection.Areas[(int)categoryMembers[j]];
                        categoryEdge += (double)geometryCollection.Perimeters[(int)categoryMembers[j]];


                        if ((double)geometryCollection.Areas[(int)categoryMembers[j]] > largestPatchSize)
                        {
                            largestPatchSize = (double)geometryCollection.Areas[(int)categoryMembers[j]];
                        }
                    }

                    //añadimos el área de la categoría "i" al arraylist _areasCategorias
                    //y volvemos a pones a 0 la variable de area de caregoria, para calcular
                    //una nueva categoria "i"


                    _totalAreasPerCategory.Add(categoryArea);
                    _totalPerimetersPerCategory.Add(categoryEdge);
                    _largestPatchSizePerCategory.Add(largestPatchSize);
                }


                for (int i = 0; i < _totalAreasPerCategory.Count; i++)
                {
                    totalArea += (double)_totalAreasPerCategory[i];
                }

                //Calculo del mayor perimetro y la mayor area en todo el paisaje
                //double maxEdgeTmp = 0;
                //for (int i = 0; i < geometryCollection.Perimeters.Count; i++)
                //{
                //    if ((double)geometryCollection.Perimeters[i] > maxEdgeTmp)
                //    {
                //        maxEdgeTmp = (double)geometryCollection.Perimeters[i];
                //    }
                //   _maxPerimeterPerCategory.Add(maxEdgeTmp);
                //}

                //Calculo del menor perimetro en todo el paisaje

                //for (int i = 0; i < geometryCollection.Perimeters.Count; i++)
                //{
                //    double minEdgeTmp = (double)_maxPerimeterPerCategory[i];
                //    if ((double)geometryCollection.Perimeters[i] < minEdgeTmp)
                //    {
                //        minEdgeTmp = (double)geometryCollection.Perimeters[i];
                //    }
                //    _minPerimeterPerCategory.Add(minEdgeTmp);
                //}



                for (int i = 0; i < _totalAreasPerCategory.Count; i++)
                {
                    _landscapePercentPerCategory.Add(((double)_totalAreasPerCategory[i] / totalArea) * 100);
                    _patchDensPerCategory.Add((((int)_numPatchesPerCategory[i] / totalArea) * 10000) * 100);
                    _edgeDensPerCategory.Add(((double)_totalPerimetersPerCategory[i] / totalArea) * 10000);
                    //_landscapeShapeIndexPerCategory.Add((double)_totalPerimetersPerCategory[i]/(double)_minPerimeterPerCategory[i]);
                    _largestPatchIndexPerCategory.Add(((double)_largestPatchSizePerCategory[i] / totalArea) * 100);
                    _meanPatchSizePerCategory.Add(((double)_totalAreasPerCategory[i] / (int)_numPatchesPerCategory[i]) / 10000);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }