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 lSimpsonsDiversityIndex(string filename, string epsg, int fieldIndex) { try { C_LandscapePercent_V diversity = new C_LandscapePercent_V(filename, epsg, fieldIndex); double _simpsonsDiversityIndexTemp = 0; for (int i = 0; i < diversity.CategoryNames.Count; i++) { _simpsonsDiversityIndexTemp += Math.Pow(((double)diversity.LandscapePercent[i] / 100), 2); } _simpsonsDiversityIndex = 1 - _simpsonsDiversityIndexTemp; } 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; } }