GRASS 8 Programmer's Manual 8.6.0dev(2026)-4bb960b182
Loading...
Searching...
No Matches
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 "pg_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.
 
#define TOPO_NATIVE   1
 
#define TOPO_POSTGIS   2
 
#define NOPG_UNUSED
 

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.
 
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.
 
int Vect__copy_areas (struct Map_info *In, int field, struct Map_info *Out)
 Copy areas as polygons (OGR/PostGIS simple features access only)
 
int Vect_copy_tables (struct Map_info *In, struct Map_info *Out, int field)
 Copy attribute tables linked to vector map.
 
int Vect_copy_table (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.
 
int Vect_copy_table_by_cat_list (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.
 
int Vect_copy_table_by_cats (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.
 

Detailed Description

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

Higher level functions for reading/writing/manipulating vectors.

SPDX-FileCopyrightText: 2001-2009, 2012-2013 GRASS Development Team SPDX-License-Identifier: GPL-2.0-or-later

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

◆ NOPG_UNUSED

#define NOPG_UNUSED

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

◆ TOPO_NATIVE

#define TOPO_NATIVE   1

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

◆ TOPO_NONE

#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.

◆ TOPO_POSTGIS

#define TOPO_POSTGIS   2

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

Function Documentation

◆ Vect__copy_areas()

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

◆ Vect_copy_map_lines()

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 61 of file vector/Vlib/copy.c.

References Vect_copy_map_lines_field().

◆ 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 79 of file vector/Vlib/copy.c.

References _, Map_info::fInfo, Map_info::format, G_fatal_error(), G_free(), G_warning(), GV_FORMAT_NATIVE, GV_FORMAT_POSTGIS, GV_LINES, GV_POINTS, NULL, TOPO_NATIVE, TOPO_NONE, TOPO_POSTGIS, 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().

◆ Vect_copy_table()

int Vect_copy_table ( 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 684 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().

◆ Vect_copy_table_by_cat_list()

int Vect_copy_table_by_cat_list ( 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 708 of file vector/Vlib/copy.c.

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

◆ Vect_copy_table_by_cats()

int Vect_copy_table_by_cats ( 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 748 of file vector/Vlib/copy.c.

References _, 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(), G_debug(), G_warning(), field_info::key, AMI_STREAM< T >::name(), Map_info::name, name, NULL, Vect_default_field_info(), Vect_destroy_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().

◆ Vect_copy_tables()

int Vect_copy_tables ( 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 630 of file vector/Vlib/copy.c.

References _, Map_info::dblnk, G_debug(), G_free(), G_warning(), GV_1TABLE, GV_MTABLE, AMI_STREAM< T >::name(), NULL, Vect_copy_table(), Vect_destroy_field_info(), Vect_get_dblink(), Vect_get_full_name(), Vect_get_name(), and Vect_get_num_dblinks().

Referenced by Vect_copy().