123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- /*!
- \file lib/imagery/iclass_bands.c
- \brief Imagery library - functions for wx.iclass
- Computation based on training areas for supervised classification.
- Based on i.class module (GRASS 6).
- Reading bands cell category values.
- Copyright (C) 1999-2007, 2011 by the GRASS Development Team
- This program is free software under the GNU General Public License
- (>=v2). Read the file COPYING that comes with GRASS for details.
- \author David Satnik, Central Washington University (original author)
- \author Markus Neteler <neteler itc.it> (i.class module)
- \author Bernhard Reiter <bernhard intevation.de> (i.class module)
- \author Brad Douglas <rez touchofmadness.com>(i.class module)
- \author Glynn Clements <glynn gclements.plus.com> (i.class module)
- \author Hamish Bowman <hamish_b yahoo.com> (i.class module)
- \author Jan-Oliver Wagner <jan intevation.de> (i.class module)
- \author Anna Kratochvilova <kratochanna gmail.com> (rewriting for wx.iclass)
- \author Vaclav Petras <wenzeslaus gmail.com> (rewriting for wx.iclass)
- */
- #include <grass/imagery.h>
- #include <grass/raster.h>
- #include "iclass_local_proto.h"
- /*!
- \brief Open and allocate space for the group band files.
- \param refer pointer to band files structure
- \param[out] band_buffer buffer to read one row of each band
- \param[out] band_fd band files descriptors
- */
- void open_band_files(struct Ref *refer, CELL *** band_buffer, int **band_fd)
- {
- int n, nbands;
- char *name, *mapset;
- G_debug(3, "open_band_files()");
- /* allocate row buffers and open raster maps */
- nbands = refer->nfiles;
- *band_buffer = (CELL **) G_malloc(nbands * sizeof(CELL *));
- *band_fd = (int *)G_malloc(nbands * sizeof(int));
- for (n = 0; n < nbands; n++) {
- (*band_buffer)[n] = Rast_allocate_c_buf();
- name = refer->file[n].name;
- mapset = refer->file[n].mapset;
- (*band_fd)[n] = Rast_open_old(name, mapset);
- }
- }
- /*!
- \brief Close and free space for the group band files.
- \param refer pointer to band files structure
- \param band_buffer buffer to read one row of each band
- \param band_fd band files descriptors
- */
- void close_band_files(struct Ref *refer, CELL ** band_buffer, int *band_fd)
- {
- int n, nbands;
- G_debug(3, "close_band_files()");
- nbands = refer->nfiles;
- for (n = 0; n < nbands; n++) {
- G_free(band_buffer[n]);
- Rast_close(band_fd[n]);
- }
- G_free(band_buffer);
- G_free(band_fd);
- }
- /*!
- \brief Read one row of each band.
- \param band_buffer buffer to read one row of each band
- \param band_fd band files descriptors
- \param nbands number of band files
- \param row data row
- */
- void read_band_row(CELL ** band_buffer, int *band_fd, int nbands, int row)
- {
- int i;
- G_debug(5, "read_band_row(): row = %d", row);
- for (i = 0; i < nbands; i++)
- Rast_get_c_row_nomask(band_fd[i], band_buffer[i], row);
- }
|