GRASS 8 Programmer's Manual 8.6.0dev(2026)-ddeab64dbf
Loading...
Searching...
No Matches
close_ogr.c
Go to the documentation of this file.
1/*!
2 \file lib/vector/Vlib/close_ogr.c
3
4 \brief Vector library - Close map (OGR)
5
6 Higher level functions for reading/writing/manipulating vectors.
7
8 (C) 2001-2009, 2012 by the GRASS Development Team
9
10 This program is free software under the GNU General Public License
11 (>=v2). Read the file COPYING that comes with GRASS for details.
12
13 \author Original author CERL, probably Dave Gerdes or Mike Higgins.
14 \author Update to GRASS 5.7 Radim Blazek and Piero Cavalieri.
15 */
16
17#include <stdlib.h>
18#include <grass/vector.h>
19#include <grass/glocale.h>
20
21#include <ogr_api.h>
22
23#include "local_proto.h"
24
25/*!
26 \brief Close vector map (OGR dsn & layer) on level 1
27
28 \param Map pointer to Map_info structure
29
30 \return 0 on success
31 \return non-zero on error
32 */
34{
36
37 G_debug(3, "V1_close_ogr() name = %s mapset = %s", Map->name, Map->mapset);
38
39 if (!VECT_OPEN(Map))
40 return -1;
41
42 ogr_info = &(Map->fInfo.ogr);
43 if (Map->format != GV_FORMAT_OGR_DIRECT &&
44 (Map->mode == GV_MODE_WRITE || Map->mode == GV_MODE_RW)) {
45 /* write header */
47 if (G_find_file2("", "OGR", G_mapset())) {
48 /* write frmt file for created PG-link */
50 }
51 }
52
53 if (ogr_info->feature_cache)
54 OGR_F_Destroy(ogr_info->feature_cache);
55
56 /* destroy OGR datasource */
58
59 Vect__free_cache(&(ogr_info->cache));
60
61 /* close DB connection (for atgtributes) */
62 if (ogr_info->dbdriver) {
64 }
65
66 G_free(ogr_info->driver_name);
67 G_free(ogr_info->dsn);
68 G_free(ogr_info->layer_name);
69 if (ogr_info->layer_options)
70 G_free_tokens(ogr_info->layer_options);
71
72 return 0;
73}
74
75/*!
76 \brief Close vector map on topological level (write out fidx file)
77
78 \param Map pointer to Map_info structure
79
80 \return 0 on success
81 \return non-zero on error
82 */
84{
86
87 G_debug(3, "V2_close_ogr() name = %s mapset = %s", Map->name, Map->mapset);
88
89 if (!VECT_OPEN(Map))
90 return -1;
91
92 ogr_info = &(Map->fInfo.ogr);
93
94 /* write fidx for maps in the current mapset */
95 if (Vect_save_fidx(Map, &(ogr_info->offset)) != 1)
96 G_warning(_("Unable to save feature index file for vector map <%s>"),
97 Map->name);
98
99 Vect__free_offset(&(ogr_info->offset));
100
101 return 0;
102}
AMI_err name(char **stream_name)
Definition ami_stream.h:426
int V1_close_ogr(struct Map_info *Map)
Close vector map (OGR dsn & layer) on level 1.
Definition close_ogr.c:33
int V2_close_ogr(struct Map_info *Map)
Close vector map on topological level (write out fidx file)
Definition close_ogr.c:83
int db_close_database_shutdown_driver(dbDriver *)
Close driver/database connection.
Definition db.c:61
void G_free(void *)
Free allocated memory.
Definition gis/alloc.c:147
void G_warning(const char *,...) __attribute__((format(printf
const char * G_find_file2(const char *, const char *, const char *)
Searches for a file from the mapset search list or in a specified mapset. (look but don't touch)
Definition find_file.c:234
void G_free_tokens(char **)
Free memory allocated to tokens.
Definition gis/token.c:197
int G_debug(int, const char *,...) __attribute__((format(printf
const char * G_mapset(void)
Get current mapset name.
Definition gis/mapset.c:33
int Vect_save_frmt(struct Map_info *)
Save format definition file for vector map.
int Vect_save_fidx(struct Map_info *, struct Format_info_offset *)
Save feature index file for vector map.
Definition build_ogr.c:109
int Vect__write_head(struct Map_info *)
Writes head information to text file (GV_HEAD_ELEMENT)
#define VECT_OPEN(Map)
Check if vector map is open.
#define GV_MODE_WRITE
Write vector map open mode.
#define GV_FORMAT_OGR_DIRECT
OGR format (direct access)
Definition dig_defines.h:87
#define GV_MODE_RW
Read-write vector map open mode.
#define _(str)
Definition glocale.h:10
Non-native format info (OGR)
Vector map info.
void Vect__free_offset(struct Format_info_offset *offset)
void Vect__free_cache(struct Format_info_cache *cache)