GRASS GIS 7 Programmer's Manual  7.5.svn(2017)-r71933
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
vector/Vlib/copy.c File Reference

Vector library - Copy vector features and attribute tables linked to the map. More...

#include <grass/vector.h>
#include <grass/glocale.h>
#include "local_proto.h"
Include dependency graph for vector/Vlib/copy.c:

Go to the source code of this file.

Macros

#define TOPO_NONE   -1
 Copy topological elements. More...
 
#define TOPO_NATIVE   1
 
#define TOPO_POSTGIS   2
 

Functions

int Vect_copy_map_lines (struct Map_info *In, struct Map_info *Out)
 Copy all alive vector features from input vector map to output vector map. More...
 
int Vect_copy_map_lines_field (struct Map_info *In, int field, struct Map_info *Out)
 Copy all alive vector features from given layer from input vector map to output vector map. More...
 
int Vect__copy_areas (const struct Map_info *In, int field, struct Map_info *Out)
 Copy areas as polygons (OGR/PostGIS simple features access only) More...
 
int Vect_copy_tables (const struct Map_info *In, struct Map_info *Out, int field)
 Copy attribute tables linked to vector map. More...
 
int Vect_copy_table (const struct Map_info *In, struct Map_info *Out, int field_in, int field_out, const char *field_name, int type)
 Copy attribute table linked to vector map based on type. More...
 
int Vect_copy_table_by_cat_list (const struct Map_info *In, struct Map_info *Out, int field_in, int field_out, const char *field_name, int type, const struct cat_list *cat_list)
 Copy attribute table linked to vector map based on category list. More...
 
int Vect_copy_table_by_cats (const struct Map_info *In, struct Map_info *Out, int field_in, int field_out, const char *field_name, int type, int *cats, int ncats)
 Copy attribute table linked to vector map based on category numbers. More...
 

Detailed Description

Vector library - Copy vector features and attribute tables linked to the map.

Higher level functions for reading/writing/manipulating vectors.

(C) 2001-2009, 2012-2013 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
Original author CERL, probably Dave Gerdes or Mike Higgins.
Update to GRASS 5.7 Radim Blazek and David D. Gray.
Update to GRASS 7 by Martin Landa <landa.martin gmail.com> (OGR/PostGIS topology support)

Definition in file vector/Vlib/copy.c.

Macro Definition Documentation

#define TOPO_NATIVE   1

Definition at line 31 of file vector/Vlib/copy.c.

Referenced by Vect_copy_map_lines_field().

#define TOPO_NONE   -1

Copy topological elements.

  • simple features (None)
  • native topo (GRASS)
  • PostGIS Topo

Definition at line 30 of file vector/Vlib/copy.c.

Referenced by Vect_copy_map_lines_field().

#define TOPO_POSTGIS   2

Definition at line 32 of file vector/Vlib/copy.c.

Referenced by Vect_copy_map_lines_field().

Function Documentation

int Vect__copy_areas ( const struct Map_info In,
int  field,
struct Map_info Out 
)

Copy areas as polygons (OGR/PostGIS simple features access only)

Parameters
Ininput vector map
fieldlayer number (-1 for all layers)
Outoutput vector map
Returns
0 on success
1 on error

Definition at line 486 of file vector/Vlib/copy.c.

References _, cat, G_debug(), G_important_message(), G_message(), G_percent(), G_warning(), V2__write_area_sfa(), Vect_cat_set(), Vect_destroy_cats_struct(), Vect_destroy_line_struct(), Vect_get_area_cat(), Vect_get_area_centroid(), Vect_get_area_isle(), Vect_get_area_num_isles(), Vect_get_area_points(), Vect_get_isle_points(), Vect_get_num_areas(), Vect_new_cats_struct(), Vect_new_line_struct(), and Vect_reset_cats().

Referenced by Vect_copy_map_lines_field().

int Vect_copy_map_lines ( struct Map_info In,
struct Map_info Out 
)

Copy all alive vector features from input vector map to output vector map.

Parameters
Ininput vector map
[out]Outoutput vector map
Returns
0 on success
1 on error

Definition at line 57 of file vector/Vlib/copy.c.

References Vect_copy_map_lines_field().

int Vect_copy_map_lines_field ( struct Map_info In,
int  field,
struct Map_info Out 
)

Copy all alive vector features from given layer from input vector map to output vector map.

Note: Try to copy on level 2 otherwise level 1 is used.

Parameters
Ininput vector map
fieldlayer number (-1 for all layers)
[out]Outoutput vector map
Returns
0 on success
1 on error

Definition at line 75 of file vector/Vlib/copy.c.

References _, Map_info::fInfo, Map_info::format, G_fatal_error(), G_warning(), GV_FORMAT_NATIVE, GV_FORMAT_POSTGIS, GV_LINES, GV_POINTS, NULL, Format_info::pg, TOPO_NATIVE, TOPO_NONE, TOPO_POSTGIS, Format_info_pg::toposchema_name, Vect__copy_areas(), Vect_get_finfo_geometry_type(), Vect_get_finfo_layer_name(), Vect_get_full_name(), Vect_level(), Vect_read_next_line(), Vect_rewind(), Vect_set_constraint_type(), and Vect_write_line().

Referenced by Vect_close(), and Vect_copy_map_lines().

int Vect_copy_table ( const struct Map_info In,
struct Map_info Out,
int  field_in,
int  field_out,
const char *  field_name,
int  type 
)

Copy attribute table linked to vector map based on type.

Parameters
Ininput vector map
[out]Outoutput vector map
field_ininput layer number
field_outoutput layer number
field_namelayer name (can be NULL)
typehow many tables are linked to map: GV_1TABLE / GV_MTABLE
Returns
0 on success
-1 on error

Definition at line 652 of file vector/Vlib/copy.c.

References NULL, and Vect_copy_table_by_cats().

Referenced by Vect_copy_table_by_cat_list(), and Vect_copy_tables().

int Vect_copy_table_by_cat_list ( const struct Map_info In,
struct Map_info Out,
int  field_in,
int  field_out,
const char *  field_name,
int  type,
const struct cat_list cat_list 
)

Copy attribute table linked to vector map based on category list.

If cat_list is NULL, then Vect_copy_table() is called.

Parameters
Ininput vector map
[out]Outoutput vector map
field_ininput layer number
field_outoutput layer number
field_namelayer name (can be NULL)
typehow many tables are linked to map: GV_1TABLE / GV_MTABLE
cat_listpointer to cat_list struct (can be NULL)
Returns
0 on success
-1 on error

Definition at line 676 of file vector/Vlib/copy.c.

References G_free(), Vect_cat_list_to_array(), Vect_copy_table(), and Vect_copy_table_by_cats().

int Vect_copy_table_by_cats ( const struct Map_info In,
struct Map_info Out,
int  field_in,
int  field_out,
const char *  field_name,
int  type,
int cats,
int  ncats 
)

Copy attribute table linked to vector map based on category numbers.

Parameters
Ininput vector map
[out]Outoutput vector map
field_ininput layer number
field_outoutput layer number
field_namelayer name (can be NULL)
typehow many tables are linked to map: GV_1TABLE / GV_MTABLE
catspointer to array of cats or NULL
ncatsnumber of cats in 'cats'
Returns
0 on success
-1 on error

Definition at line 716 of file vector/Vlib/copy.c.

References _, field_info::database, db_close_database_shutdown_driver(), db_copy_table_by_ints(), db_create_index2(), DB_FAILED, db_grant_on_table(), DB_GROUP, DB_OK, DB_PRIV_SELECT, DB_PUBLIC, db_start_driver_open_database(), driver, field_info::driver, G_debug(), G_warning(), field_info::key, name, field_info::name, Map_info::name, NULL, field_info::number, field_info::table, Vect_default_field_info(), Vect_get_field(), Vect_map_add_dblink(), and Vect_subst_var().

Referenced by Vect_copy_table(), and Vect_copy_table_by_cat_list().

int Vect_copy_tables ( const struct Map_info In,
struct Map_info Out,
int  field 
)

Copy attribute tables linked to vector map.

Copy all attribute tables linked to the vector map if field is 0, or selected attribute table defined by given field if field > 0.

Notice, that if input vector map has no tables defined, it will copy nothing and return 0 (success).

Parameters
Ininput vector map
[out]Outoutput vector map
fieldlayer number (0 for all tables linked to the vector map)
Returns
0 on success
-1 on error

Definition at line 603 of file vector/Vlib/copy.c.

References _, Map_info::dblnk, dblinks::field, G_debug(), G_warning(), GV_1TABLE, GV_MTABLE, field_info::name, NULL, field_info::number, field_info::table, Vect_copy_table(), Vect_get_dblink(), Vect_get_full_name(), Vect_get_name(), and Vect_get_num_dblinks().

Referenced by Vect_copy().