[GRASS5] G3D-api error
N.J. Hardebol
harj at geo.vu.nl
Fri Sep 5 06:48:06 EDT 2003
thank you for your comments - it turns out that I'm still a newby to grass
api and c/c++ programming..
I'm sorry... still some other questions:
Q1: Am I mailing to the appropriate mailinglist? Is the developers list
soley for dev. of grass code or also for questions on the usage of grass
api?
************************
Q2: Some new problems arises:
for (ix=0 ; ix <nx .....)
for (iy ; iy < ny ......)
for (iz ; iz < nz......)
TileIndex = G3d_tile2tileIndex (g3d_map, ix, iy, iz);
G3d_writeTile (g3d_map, TileIndex, data, G3D_DOUBLE) offers error run out
of TileIndex for TileIndex = 3312, which means TileIndex > nTiles.
My 3d raster should have the dimension nx: 128 ny: 64 nz: 201 - and if
possible in future bigger...
So earlier in the code I declared the dimensions:
g3d_map = (G3D_Map *) G3d_openCellNew ("comp_G3D_Grid", G3D_DOUBLE,
G3D_USE_CACHE_DEFAULT, region );
G3d_setTileDimension (nx, ny, 201);
int na, nb, nc;
G3d_getNofTilesMap (g3d_map, &na, &nb, &nc);
cout << na << " " << nb << " " << nc << endl; // - returns 16 8 25
G3d_getTileDimensionsMap (g3d_map, &na, &nb, &nc);
cout << na << " " << nb << " " << nc << endl; // - returns 8 8 8 -
?as defined in default.c?
G3d_getTileDimension ( &na, &nb, &nc);
cout << na << " " << nb << " " << nc << endl; // - returns 128 64
201 - as dimensions should be!!!
data = G3d_allocTilesType (g3d_map, 1, G3D_DOUBLE);
with function g3d_map->nTiles (if I'm rigth) I could check nTiles -
returned nTiles: 3200. = 16x8x25 as returned by G3d_getNofTilesMap
(g3d_map, &na, &nb, &nc);
So error above becomes apparent, but why 128x64x201 = 1646592 instead of
3200 - why not set with G3d_setTileDimension (nx, ny, 201).
The diffence between the following functions is not clear to me - may due
to some ignorance an error arises:
G3d_getNofTilesMap(): returns dimension of tile-cube to tile region of map.
G3d_getTileDimensionsMap(): returns tile dimension used for map.
G3d_getTileDimension (): .....
************************
Q3: I've no experience with the visualisation of g3d rasters within grass.
What are the possibilites for easy visualisation.
I've used vis5d+ for some visualisations. Am I dependend on
r3.mkdspf/r3.showdspf or r3.out.v5d - using vis5d+.
Does sg3d / SG4D offer nice alternatives? - I don't get them compiled since
don't get Ygl not compiled.
Is G3D part of recent development? grass.itc.it/roadmap.thml grass5.0.3 G3D
activated?
thanking in advance,
Nico
-----Oorspronkelijk bericht-----
Van: grass5-admin at grass.itc.it [mailto:grass5-admin at grass.itc.it]Namens
Glynn Clements
Verzonden: woensdag 3 september 2003 6:28
Aan: harj at geo.vu.nl
CC: grass5 at grass.itc.it
Onderwerp: Re: [GRASS5] G3D-api error
N.J. Hardebol wrote:
> I'm writing a geophysical routine and I'd like to store a 3D temperature
> field as G3D raster.
> In the past I encountered some problems to find all the includes and lib -
> this is properly solved.
> I'm using Grass5.0.2 under Suse Linux 8.2
>
> but,
>
> I'm not succeeding in writing my data to a g3d file.
> I'm using the following functions (and some more..):
> G3d_openCellNew (char *name, int type, int cache, G3D_Region *region);
that
> returns a void* which is a pointer to the newly created g3d-raster - Am I
> right?
>
> G3d_putValue (void *map, int x, int y, int z, char *value, int type);
where
> void *map revers to the opened g3d-raster
>
> my g++ compiler tells me that *map should be of type G3D_Map instead of
> void*.
>
> checking the grass5.0.2/src/include/G3d.h confirms this with the following
> function declaration:
> int G3d_putValue(G3D_Map *, int, int, int, char *, int);
>
> What am I doing wrong? - Or do some inconsistencies exist in the g3d-api?
GRASS (including G3D) is written in (and written for) C, not C++. In
C, it's legal to implictly cast between void* and other pointers. In
C++, you have to use an explicit cast, e.g.
map = (G3D_Map *) G3d_openCellNew(...);
--
Glynn Clements <glynn.clements at virgin.net>
_______________________________________________
grass5 mailing list
grass5 at grass.itc.it
http://grass.itc.it/mailman/listinfo/grass5
More information about the grass-dev
mailing list