[GRASS-user] open rasters at r.example

Glynn Clements glynn at gclements.plus.com
Mon Jan 11 18:08:35 EST 2010


Luis Lisboa wrote:

> I want to develop a few functions that I probably will need in a few months.
> So I decided to learn with r.example.
> 
> One of my first doubts is regarding functions name. For instance if I want
> to open a old file I use:
> G_open_cell_old
> But if I want to open a new file I use
>  G_open_raster_new
> 
> My question is why I use in one case "cell" and in the other case "raster"
> since they both refer to the same type of data (RASTER)? Because it exists
> a G_open_cell_new() and it's not being used.

Historical reasons.

When you open an existing map, GRASS knows what type the map is
(integer or FP). When you open a new map, you have to specify whether
you want integer or FP.

Originally, GRASS only supported integer (CELL) rasters, with zero
often used as a "null" value. When FP and null support was added,
G_open_cell_old() was extended to handle FP rasters and integer
rasters with a null bitmap, as well as the old integer format (with
zero as null). For creating new maps, G_open_raster_new() was added,
which allows you to choose integer or FP, while the old
G_open_cell_new() was retained.

The same issue applies to e.g. G_get_map_row() (integer only, zero is
null) versus G_get_raster_row() etc (integer or FP, with distinct null
values).

> Another question is regarding the functions: open(path, 0), refered by lots
> of functions from gis/open.c (e.g. G__open). I cannot find this function and
> fdopen(return fdopen(fd, "w").
> Where can I find these functions?

open() and fdopen() are POSIX functions, provided by the OS's standard
C library (libc on Unix, MSVCRT on Windows).

-- 
Glynn Clements <glynn at gclements.plus.com>


More information about the grass-user mailing list