[GRASS-dev] Vlib: add attributes to new vector

Florian Kindl Florian.Kindl at uibk.ac.at
Thu Jul 6 09:44:32 EDT 2006


***
(sorry for cross-posting - I sent this to grassusers by mistake)
***

Hello list!

I started to write a vector module for GRASS GIS.
It reads an existing vector set (lines) and writes a new one.
The output set should contain the attributes of the input set plus 2 new 
attributes which are calculated by my module.

How do I append these new attribute columns to my output data?
When I use
Vect_copy_tables ( &In, &Out, 0 ); can I, afterwards,  add colums to the table 
of &Out?

Or do I have to add another table like this:

==code==
     Fi = Vect_default_field_info ( &Out, 1, NULL, GV_1TABLE );
     Vect_map_add_dblink ( &Out, 1, NULL, Fi->table, "cat", Fi->database, 
Fi->driver);

     driver = db_start_driver_open_database ( Fi->driver, Fi->database );
     if ( driver == NULL )
     G_fatal_error ( "Cannot open database %s by driver %s", Fi->database, 
Fi->driver );

     sprintf ( buf, "create table %s ( cat integer, bsnid integer, sorder 
integer )", Fi->table );

     db_set_string ( &sql, buf );
     G_debug ( 2, db_get_string ( &sql ) );

     if (db_execute_immediate (driver, &sql) != DB_OK ) {
         db_close_database_shutdown_driver ( driver );
     G_fatal_error ( "Cannot create table: %s", db_get_string ( &sql )  );
     }
==/code==

(these lines work if there is no table yet - it fails if one already exists)


And finally, can someone explain the concept of dblink,tables,fields, layers 
concisely? I don't get it yet from the documents on the GRASS 6 vector 
architecture...

Thanks for your help,
Flo.

-- 
Florian Kindl
Institute ofr Geograpy
University of Innsbruck

















More information about the grass-dev mailing list