Преглед на файлове

vlib: check GRASS_VECTOR_PGFILE (defined by v.out.postgis) when opening/creating vector map

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@52570 15284696-431f-4ddb-bdfa-cd5b030d7da7
Martin Landa преди 12 години
родител
ревизия
22fecc6eef
променени са 2 файла, в които са добавени 9 реда и са изтрити 5 реда
  1. 4 2
      lib/vector/Vlib/close.c
  2. 5 3
      lib/vector/Vlib/open.c

+ 4 - 2
lib/vector/Vlib/close.c

@@ -81,7 +81,8 @@ int Vect_close(struct Map_info *Map)
        write mode on level 2 */
     if (strcmp(Map->mapset, G_mapset()) == 0 &&
 	Map->support_updated &&
-	Map->plus.built == GV_BUILD_ALL) {
+	Map->plus.built == GV_BUILD_ALL &&
+        getenv("GRASS_VECTOR_PGFILE") == NULL) {  /* GRASS_VECTOR_PGFILE defined by v.out.postgis */
 
         unlink_file(Map, GV_TOPO_ELEMENT); /* topo */
 
@@ -119,7 +120,8 @@ int Vect_close(struct Map_info *Map)
 	/* NOTE: also close sidx for GV_FORMAT_OGR if not direct OGR access */
 	if (Map->format != GV_FORMAT_OGR_DIRECT &&
 	    Map->plus.Spidx_built == TRUE &&
-	    Map->plus.built == GV_BUILD_ALL)
+	    Map->plus.built == GV_BUILD_ALL &&
+            getenv("GRASS_VECTOR_PGFILE") == NULL) /* GRASS_VECTOR_PGFILE defined by v.out.postgis */
 	    fclose(Map->plus.spidx_fp.file);
     }
 

+ 5 - 3
lib/vector/Vlib/open.c

@@ -737,7 +737,8 @@ int Vect_open_new(struct Map_info *Map, const char *name, int with_z)
     else
         Map->format = GV_FORMAT_NATIVE;
 
-    if (Map->format != GV_FORMAT_OGR_DIRECT) {
+    if (Map->format != GV_FORMAT_OGR_DIRECT &&
+        getenv("GRASS_VECTOR_PGFILE") == NULL) { /* GRASS_VECTOR_PGFILE defined by v.out.postgis */
         G_debug(2, " using non-direct format");
 
         /* check if map already exists */
@@ -776,7 +777,8 @@ int Vect_open_new(struct Map_info *Map, const char *name, int with_z)
     Map->plus.spidx_with_z = Map->plus.with_z = Map->head.with_z = (with_z != 0);
 
     if ((*Open_new_array[Map->format][1]) (Map, name, with_z) < 0) {
-        Vect_delete(name); /* clean up */
+        if (getenv("GRASS_VECTOR_PGFILE") == NULL)  /* GRASS_VECTOR_PGFILE defined by v.out.postgis */
+            Vect_delete(name); /* clean up */
         return -1;
     }
 
@@ -1143,7 +1145,7 @@ int map_format(struct Map_info *Map)
         ogr_info->layer_name = G_store(Map->name);
     }
     
-    def_file = getenv("GRASS_VECTOR_PGFILE");
+    def_file = getenv("GRASS_VECTOR_PGFILE");  /* GRASS_VECTOR_PGFILE defined by v.out.postgis */
     if (G_find_file2("", def_file ? def_file : "PG", G_mapset())) {
         /* PostGIS */
         if (Map->fInfo.ogr.driver_name) {