[GRASS-SVN] r71597 - grass/trunk/vector/v.out.ogr
svn_grass at osgeo.org
svn_grass at osgeo.org
Wed Oct 25 14:32:54 PDT 2017
Author: neteler
Date: 2017-10-25 14:32:54 -0700 (Wed, 25 Oct 2017)
New Revision: 71597
Modified:
grass/trunk/vector/v.out.ogr/args.c
grass/trunk/vector/v.out.ogr/list.c
grass/trunk/vector/v.out.ogr/local_proto.h
grass/trunk/vector/v.out.ogr/main.c
grass/trunk/vector/v.out.ogr/v.out.ogr.html
Log:
v.out.ogr: Set OGC GeoPackage as default export format (see #3428); contributed by jachym and mmetz
Modified: grass/trunk/vector/v.out.ogr/args.c
===================================================================
--- grass/trunk/vector/v.out.ogr/args.c 2017-10-25 19:03:46 UTC (rev 71596)
+++ grass/trunk/vector/v.out.ogr/args.c 2017-10-25 21:32:54 UTC (rev 71597)
@@ -32,8 +32,8 @@
options->format->type = TYPE_STRING;
options->format->required = YES;
options->format->multiple = NO;
- options->format->answer = "ESRI_Shapefile";
options->format->options = OGR_list_write_drivers();
+ options->format->answer = default_driver();
options->format->description = _("Data format to write");
options->layer = G_define_option();
Modified: grass/trunk/vector/v.out.ogr/list.c
===================================================================
--- grass/trunk/vector/v.out.ogr/list.c 2017-10-25 19:03:46 UTC (rev 71596)
+++ grass/trunk/vector/v.out.ogr/list.c 2017-10-25 21:32:54 UTC (rev 71597)
@@ -9,7 +9,11 @@
{
int i, count;
size_t len;
+#if GDAL_VERSION_NUM >= 2000000
+ GDALDriverH hDriver;
+#else
OGRSFDriverH Ogr_driver;
+#endif
char buf[2000];
char **list, *ret;
@@ -17,7 +21,33 @@
list = NULL;
count = len = 0;
- /* Open OGR DSN */
+#if GDAL_VERSION_NUM >= 2000000
+ /* get GDAL driver names */
+ GDALAllRegister();
+ G_debug(2, "driver count = %d", GDALGetDriverCount());
+ for (i = 0; i < GDALGetDriverCount(); i++) {
+ hDriver = GDALGetDriver(i);
+ /* only fetch read/write drivers */
+ if (!GDALGetMetadataItem(hDriver, GDAL_DCAP_VECTOR, NULL))
+ continue;
+
+ if (!GDALGetMetadataItem(hDriver, GDAL_DCAP_CREATE, NULL) &&
+ !GDALGetMetadataItem(hDriver, GDAL_DCAP_CREATECOPY, NULL))
+ continue;
+
+ G_debug(2, "driver %d/%d : %s", i, GDALGetDriverCount(),
+ GDALGetDriverShortName(hDriver));
+
+ list = G_realloc(list, (count + 1) * sizeof(char *));
+
+ /* chg white space to underscore in GDAL driver names */
+ sprintf(buf, "%s", GDALGetDriverShortName(hDriver));
+ G_strchg(buf, ' ', '_');
+ list[count++] = G_store(buf);
+ len += strlen(buf) + 1; /* + ',' */
+ }
+#else
+ /* get OGR driver names */
OGRRegisterAll();
G_debug(2, "driver count = %d", OGRGetDriverCount());
for (i = 0; i < OGRGetDriverCount(); i++) {
@@ -37,6 +67,7 @@
list[count++] = G_store(buf);
len += strlen(buf) + 1; /* + ',' */
}
+#endif
qsort(list, count, sizeof(char *), cmp);
@@ -65,6 +96,19 @@
return (strcmp(*(char **)a, *(char **)b));
}
+char *default_driver(void)
+{
+#if GDAL_VERSION_NUM >= 2000000
+ if (GDALGetDriverByName("GPKG")) {
+#else
+ if (OGRGetDriverByName("GPKG")) {
+#endif
+ return G_store("GPKG");
+ }
+
+ return G_store("ESRI_Shapefile");
+}
+
void list_formats(void)
{
int iDriver;
Modified: grass/trunk/vector/v.out.ogr/local_proto.h
===================================================================
--- grass/trunk/vector/v.out.ogr/local_proto.h 2017-10-25 19:03:46 UTC (rev 71596)
+++ grass/trunk/vector/v.out.ogr/local_proto.h 2017-10-25 21:32:54 UTC (rev 71597)
@@ -35,6 +35,7 @@
/* list.c */
char *OGR_list_write_drivers();
void list_formats(void);
+char *default_driver(void);
/* create.c */
void create_ogr_layer(const char *, const char *, const char *,
Modified: grass/trunk/vector/v.out.ogr/main.c
===================================================================
--- grass/trunk/vector/v.out.ogr/main.c 2017-10-25 19:03:46 UTC (rev 71596)
+++ grass/trunk/vector/v.out.ogr/main.c 2017-10-25 21:32:54 UTC (rev 71597)
@@ -85,7 +85,7 @@
module->label =
_("Exports a vector map layer to any of the supported OGR vector formats.");
- module->description = _("By default a vector map layer is exported to Esri Shapefile format.");
+ module->description = _("By default a vector map layer is exported to OGC GeoPackage format.");
module->overwrite = TRUE;
/* parse & read options */
Modified: grass/trunk/vector/v.out.ogr/v.out.ogr.html
===================================================================
--- grass/trunk/vector/v.out.ogr/v.out.ogr.html 2017-10-25 19:03:46 UTC (rev 71596)
+++ grass/trunk/vector/v.out.ogr/v.out.ogr.html 2017-10-25 21:32:54 UTC (rev 71597)
@@ -2,7 +2,7 @@
<em>v.out.ogr</em> converts GRASS vector map layer to any of the
supported <a href="http://www.gdal.org/">OGR</a> vector formats
-(like a Esri Shapefile, SpatiaLite or GML).
+(including OGC GeoPackage, ESRI Shapefile, SpatiaLite or GML).
<p>
OGR (Simple Features Library) is part of the
@@ -13,6 +13,7 @@
The OGR library supports many various formats including:
<ul>
+ <li><a href="http://www.gdal.org/drv_geopackage.html">OGC GeoPackage</a></li>
<li><a href="http://www.gdal.org/drv_shapefile.html">ESRI Shapefile</a></li>
<li><a href="http://www.gdal.org/drv_pg.html">PostGIS</a></li>
<li><a href="http://www.gdal.org/drv_sqlite.html">SpatiaLite</a></li>
@@ -62,12 +63,35 @@
<h2>EXAMPLES</h2>
+<h3>Export to OGC GeoPackage</h3>
+
+Export lines from a GRASS vector map to OGC GeoPackage format:
+
+<div class="code"><pre>
+v.out.ogr input=roadsmajor type=line output=roadsmajor.gpkg
+</pre></div>
+
+<p>
+Export areas from GRASS vector map to OGC GeoPackage format, converting
+islands (holes) to filled polygons:
+
+<div class="code"><pre>
+v.out.ogr -c input=areas_islands type=area output=areas_islands.gpkg
+</pre></div>
+
+<p>
+Export mixed geometry type GRASS vector map to OGC GeoPackage format:
+
+<div class="code"><pre>
+v.out.ogr input=generic_vector output=mixed_geometry.gpkg
+</pre></div>
+
<h3>Export to ESRI Shapefile</h3>
Export lines from GRASS vector map to Shapefile format:
<div class="code"><pre>
-v.out.ogr input=lines type=line output=lines.shp
+v.out.ogr input=roadsmajor type=line format=ESRI_Shapefile output=lines.shp
</pre></div>
<p>
@@ -75,34 +99,34 @@
islands (holes) to filled polygons:
<div class="code"><pre>
-v.out.ogr -c input=areas_islands type=area output=areas_islands.shp
+v.out.ogr -c input=areas_islands type=area format=ESRI_Shapefile output=areas_islands.shp
</pre></div>
<p>
Export 3D lines from GRASS vector map to Shapefile format:
<div class="code"><pre>
-v.out.ogr input=lines_3d type=line output=lines_3d.shp lco="SHPT=ARCZ"
+v.out.ogr input=lines_3d type=line format=ESRI_Shapefile output=lines_3d.shp lco="SHPT=ARCZ"
</pre></div>
<p>
Export 3D points (e.g., Lidar points) from GRASS vector map to Shapefile format
<div class="code"><pre>
-v.out.ogr points_3d type=point output=points_3d.shp lco="SHPT=POINTZ"
+v.out.ogr points_3d type=point format=ESRI_Shapefile output=points_3d.shp lco="SHPT=POINTZ"
</pre></div>
<p>
Export 3D faces from GRASS vector map to Shapefile format:
<div class="code"><pre>
-v.out.ogr input=objects_3d type=face output=faces_3d.shp lco="SHPT=POLYGONZ"
+v.out.ogr input=objects_3d type=face format=ESRI_Shapefile output=faces_3d.shp lco="SHPT=POLYGONZ"
</pre></div>
<p>
Export 3D faces from GRASS vector map to Shapefile format, automatic 3D setting:
<div class="code"><pre>
-v.out.ogr input=objects_3d type=face output=faces_3d.shp"
+v.out.ogr input=objects_3d type=face format=ESRI_Shapefile output=faces_3d.shp"
</pre></div>
<h3>Export to GML</h3>
More information about the grass-commit
mailing list