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