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