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 cCoreArea(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 ArrayList collectionCoreAreasArraylist = new ArrayList(); Patch_CoreAreaMetrics_V coreAreas = new Patch_CoreAreaMetrics_V(filename, epsg, fieldIndex, depthOfEdge); for (int i = 0; i < categories.Count; i++) { double categoryCoreArea = 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]]; } //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);//10000); } _cCoreArea_V.Columns.Add("CategoryName", typeof(string)); _cCoreArea_V.Columns.Add("CategoryArea", typeof(double)); for (int i = 0; i < _categoryNames.Count; i++) { _cCoreArea_V.Rows.Add(_categoryNames[i], _coreAreaPerCategory[i]); } } catch (Exception ex) { throw ex; } }