private void pNumCoreAreas(string filename, string epsg, int fieldIndex, double depthOfEdge)
        {
            try
            {
                SchemaDB_Reader namesCollection = new SchemaDB_Reader(filename, fieldIndex);
                _patchNames = namesCollection.FieldValues;


                GeometryCoreReader g = new GeometryCoreReader(filename, epsg, depthOfEdge);

                //el num de core areas no cambia
                _numCoreAreas = g.NumCoreAreas;


                _pNumCoreAreas_V.Columns.Add("PatchName", typeof(string));
                _pNumCoreAreas_V.Columns.Add("PatchNumCoreAreas", typeof(int));

                for (int i = 0; i < _patchNames.Count; i++)
                {
                    _pNumCoreAreas_V.Rows.Add(_patchNames[i], _numCoreAreas[i]);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Beispiel #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;
            }
        }
Beispiel #3
0
        private void patchMetrics(string filename, string epsg, int fieldIndex, double depthOfEdge)
        {
            try
            {

                SchemaDB_Reader namesCollection = new SchemaDB_Reader(filename, fieldIndex);
                _patchNames = namesCollection.FieldValues;


                GeometryCoreReader g = new GeometryCoreReader(filename, epsg, depthOfEdge);

                //obtenemos las coreAreas divididas por 10.000 (en ha.)
                for (int i = 0; i < g.Areas.Count; i++)
                {
                    _coreAreas.Add((double)g.CoreAreas[i]); // 10000);
                }

                //el num de core areas no cambia
                _numCoreAreas = g.NumCoreAreas;

                //el siguiente indice se calcula en porcentajes, por lo que las unidades deben
                //ser las mismas.
                for (int i = 0; i < g.Areas.Count; i++)
                {
                    _coreAreaIndex.Add(((double)g.CoreAreas[i] / (double)g.Areas[i]) * 100);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Beispiel #4
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;
            }
        }
Beispiel #5
0
        private void patchMetrics(string filename, string epsg, int fieldIndex)
        {
            try
            {
                //obtenemos todos los índices de cada shape
                GeometryReader  geometryCollection = new GeometryReader(filename, epsg);
                SchemaDB_Reader namesCollection    = new SchemaDB_Reader(filename, fieldIndex);


                _patchNames = namesCollection.FieldValues;
                _patchAreas = geometryCollection.Areas;


                _pArea_V.Columns.Add("PatchName", typeof(string));
                _pArea_V.Columns.Add("PatchArea", typeof(double));

                for (int i = 0; i < _patchNames.Count; i++)
                {
                    _pArea_V.Rows.Add(_patchNames[i], _patchAreas[i]);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Beispiel #6
0
        private void pFractalDimension(string filename, string epsg, int fieldIndex)
        {
            try
            {
                //obtenemos todos los índices de cada shape
                GeometryReader  geometryCollection = new GeometryReader(filename, epsg);
                SchemaDB_Reader namesCollection    = new SchemaDB_Reader(filename, fieldIndex);
                _patchNames = namesCollection.FieldValues;



                for (int i = 0; i < geometryCollection.Areas.Count; i++)
                {
                    _patchesFractalDimension.Add(2 * Math.Log((double)geometryCollection.Perimeters[i]) / Math.Log((double)geometryCollection.Areas[i]));
                }


                _pFractalDimension_V.Columns.Add("PatchName", typeof(string));
                _pFractalDimension_V.Columns.Add("PatchFractalDimension", typeof(double));

                for (int i = 0; i < _patchNames.Count; i++)
                {
                    _pFractalDimension_V.Rows.Add(_patchNames[i], _patchesFractalDimension[i]);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Beispiel #7
0
        private void pPerimeterAreaRatio(string filename, string epsg, int fieldIndex)
        {
            try
            {
                GeometryReader  geometryCollection = new GeometryReader(filename, epsg);
                SchemaDB_Reader namesCollection    = new SchemaDB_Reader(filename, fieldIndex);
                _patchNames = namesCollection.FieldValues;



                for (int i = 0; i < geometryCollection.Areas.Count; i++)
                {
                    _patchesPerimeterAreaRatio.Add((double)geometryCollection.Perimeters[i] / (double)geometryCollection.Areas[i]);
                }


                _pPerimeterAreaRatio_V.Columns.Add("PatchName", typeof(string));
                _pPerimeterAreaRatio_V.Columns.Add("PatchPerimeterAreaRatio", typeof(double));

                for (int i = 0; i < _patchNames.Count; i++)
                {
                    _pPerimeterAreaRatio_V.Rows.Add(_patchNames[i], _patchesPerimeterAreaRatio[i]);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Beispiel #8
0
        private void pCoreAreaIndex(string filename, string epsg, int fieldIndex, double depthOfEdge)
        {
            try
            {
                SchemaDB_Reader namesCollection = new SchemaDB_Reader(filename, fieldIndex);
                _patchNames = namesCollection.FieldValues;


                GeometryCoreReader g = new GeometryCoreReader(filename, epsg, depthOfEdge);


                //el siguiente indice se calcula en porcentajes, por lo que las unidades deben
                //ser las mismas.
                for (int i = 0; i < g.Areas.Count; i++)
                {
                    _coreAreaIndex.Add(((double)g.CoreAreas[i] / (double)g.Areas[i]) * 100);
                }


                _pCoreAreaIndex_V.Columns.Add("PatchName", typeof(string));
                _pCoreAreaIndex_V.Columns.Add("PatchCoreAreaIndex", typeof(double));

                for (int i = 0; i < _patchNames.Count; i++)
                {
                    _pCoreAreaIndex_V.Rows.Add(_patchNames[i], _coreAreaIndex[i]);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Beispiel #9
0
        private void patchMetrics(string filename, string epsg, int fieldIndex, double depthOfEdge)
        {
            try
            {
                SchemaDB_Reader namesCollection = new SchemaDB_Reader(filename, fieldIndex);
                _patchNames = namesCollection.FieldValues;


                GeometryCoreReader g = new GeometryCoreReader(filename, epsg, depthOfEdge);

                //obtenemos las coreAreas divididas por 10.000 (en ha.)
                for (int i = 0; i < g.Areas.Count; i++)
                {
                    _coreAreas.Add((double)g.CoreAreas[i]); // 10000);
                }


                _pCoreArea_V.Columns.Add("PatchName", typeof(string));
                _pCoreArea_V.Columns.Add("PatchCoreArea", typeof(double));

                for (int i = 0; i < _patchNames.Count; i++)
                {
                    _pCoreArea_V.Rows.Add(_patchNames[i], _coreAreas[i]);
                }
            }
            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 patchMetrics(string filename, string epsg, int fieldIndex)
        {
            try
            {
                //obtenemos todos los índices de cada shape
                GeometryReader  geometryCollection = new GeometryReader(filename, epsg);
                SchemaDB_Reader namesCollection    = new SchemaDB_Reader(filename, fieldIndex);


                _patchNames      = namesCollection.FieldValues;
                _patchAreas      = geometryCollection.Areas;
                _patchPerimeters = geometryCollection.Perimeters;
            }
            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;
            }
        }
Beispiel #14
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 patchMetrics(string filename, string epsg, int fieldIndex)
        {
            try
            {
                //obtenemos todos los índices de cada shape
                GeometryReader  geometryCollection = new GeometryReader(filename, epsg);
                SchemaDB_Reader namesCollection    = new SchemaDB_Reader(filename, fieldIndex);
                _patchNames = namesCollection.FieldValues;



                for (int i = 0; i < geometryCollection.Areas.Count; i++)
                {
                    _patchesPerimeterAreaRatio.Add((double)geometryCollection.Perimeters[i] / (double)geometryCollection.Areas[i]);
                    _patchesFractalDimension.Add(2 * Math.Log((double)geometryCollection.Perimeters[i]) / Math.Log((double)geometryCollection.Areas[i]));
                }
            }
            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;
            }
        }
Beispiel #17
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;
            }
        }