G_get_map_row() If the map is floating-point, quantize the floating-point values to integer using the quantization rules established for the map when the map was opened for reading. NULL values are converted to zeros. (This routine is deprecated) G_put_map_row() Zero values are converted to NULLs. Write a row of the NULL value bit map. (This routine is deprecated) ------------------------------------------------------------ G_get_map_row() G_get_raster_row() MAP w/NULLs NULL and 0 -> 0 NULL->NULL, 0->0 MAP w/o NULLs NULL and 0 -> 0 NULL and 0 -> NULL ------------------------------------------------------------ w/NULLS means with NULL bit map w/o NULLS means without NULL bit map New routines: G_get_f/d_raster_row (int fd, FCELL fcell, int row) Read a row from the raster map open on fd into the float array fcell performing type conversions as necessary based on the actual storage type of the map. Masking, resampling into the current region. NULL-values are always embedded in fcell (never converted to a value). G_put_f_raster_row (int fd, FCELL *fcell) Write the next row of the raster map open on fd from the float array fcell, performing type conversion to the actual storage type of the resultant map. Keep track of the range of floating-point values. Also writes the NULL-value bitmap from the NULL-values embedded in the fcell array. G_get_raster_row (int fd, CELL buf, int row) Reads a row from NULL value bitmap file for the raster map open for read on fd. If there is no bitmap file, then this routine simulates the read as follows: non-zero values in the raster map correspond to non-NULL; zero values correspond to NULL. (as opposed to the deprecated function G_get_map_row() which converts NULL values to zero.) G_put_raster_row (int fd, CELL buf) Writes a row of raster data and a row of the null-value bitmap, only treating NULL as NULL. (As opposed to the deprecated function G_put_map_row() which treats zero values also as NULL.) G_insert_[d/f_]null_values (cell, flags, count) CELL *cell; char *flags; int count; For each of the count flags which is true(!=0), set the corresponding cell to the NULL value. Held 13 messages in /usr/spool/mail/olga amber olga> mail shapiro Subject: G_put_map_row() updating range file. The way put_row is implemented right now, the updating of range happens after writing the row by calling G_update_range(range,row,ncols) Since you want all 0's to go to NULL, it is really hard to implement, because I can't modify the row buffer. So I have 2 options: 1. make a new update_range() low level function which takes ignore_zeros flag as argument. 2. to call update with each cell idividually and check for 0's what should I do? pen_cell_new_random() should cause the NULL-value bit map to NOT be created. Yes, give an error - unless you think you can implement random writing of the NULL bit map. | |so I should give an error when G_put_map_row_random() is called |for floating or double maps? |Right now I convert it to float or double and do the random writes |which I implemented for float and double. |Olga |