Exemplo n.º 1
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;
            }
        }
Exemplo n.º 2
0
        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;
            }
        }