浏览代码

r.in.gdal/r.out.gdal/r.external/r.external.out: Starting with GDAL 2.0, vector drivers can also be returned (fix -f flag)
(merge https://trac.osgeo.org/grass/changeset/60479, 60481-84 from trunk)


git-svn-id: https://svn.osgeo.org/grass/grass/branches/releasebranch_7_0@60485 15284696-431f-4ddb-bdfa-cd5b030d7da7

Martin Landa 11 年之前
父节点
当前提交
cd8d9358dd
共有 4 个文件被更改,包括 44 次插入2 次删除
  1. 21 0
      raster/r.external.out/main.c
  2. 7 0
      raster/r.external/list.c
  3. 8 1
      raster/r.in.gdal/main.c
  4. 8 1
      raster/r.out.gdal/main.c

+ 21 - 0
raster/r.external.out/main.c

@@ -40,6 +40,13 @@ static void list_formats(void)
 	GDALDriverH hDriver = GDALGetDriver(iDr);
 	const char *pszRWFlag;
 
+#ifdef GDAL_DCAP_RASTER
+            /* Starting with GDAL 2.0, vector drivers can also be returned */
+            /* Only keep raster drivers */
+            if (!GDALGetMetadataItem(hDriver, GDAL_DCAP_RASTER, NULL))
+                continue;
+#endif
+
 	if (GDALGetMetadataItem(hDriver, GDAL_DCAP_CREATE, NULL))
 	    pszRWFlag = "rw+";
 	else if (GDALGetMetadataItem(hDriver, GDAL_DCAP_CREATECOPY, NULL))
@@ -63,6 +70,13 @@ static char *format_list(void)
     for (i = 0; i < GDALGetDriverCount(); i++) {
 	GDALDriverH driver = GDALGetDriver(i);
 
+#ifdef GDAL_DCAP_RASTER
+            /* Starting with GDAL 2.0, vector drivers can also be returned */
+            /* Only keep raster drivers */
+            if (!GDALGetMetadataItem(driver, GDAL_DCAP_RASTER, NULL))
+                continue;
+#endif
+
 	if (!GDALGetMetadataItem(driver, GDAL_DCAP_CREATE, NULL) &&
 	    !GDALGetMetadataItem(driver, GDAL_DCAP_CREATECOPY, NULL))
 	    continue;
@@ -77,6 +91,13 @@ static char *format_list(void)
 	GDALDriverH driver = GDALGetDriver(i);
 	const char *name;
 
+#ifdef GDAL_DCAP_RASTER
+            /* Starting with GDAL 2.0, vector drivers can also be returned */
+            /* Only keep raster drivers */
+            if (!GDALGetMetadataItem(driver, GDAL_DCAP_RASTER, NULL))
+                continue;
+#endif
+
 	if (!GDALGetMetadataItem(driver, GDAL_DCAP_CREATE, NULL) &&
 	    !GDALGetMetadataItem(driver, GDAL_DCAP_CREATECOPY, NULL))
 	    continue;

+ 7 - 0
raster/r.external/list.c

@@ -24,6 +24,13 @@ void list_formats(void)
 	GDALDriverH hDriver = GDALGetDriver(iDr);
 	const char *pszRWFlag;
 
+#ifdef GDAL_DCAP_RASTER
+            /* Starting with GDAL 2.0, vector drivers can also be returned */
+            /* Only keep raster drivers */
+            if (!GDALGetMetadataItem(hDriver, GDAL_DCAP_RASTER, NULL))
+                continue;
+#endif
+
 	if (GDALGetMetadataItem(hDriver, GDAL_DCAP_CREATE, NULL))
 	    pszRWFlag = "rw+";
 	else if (GDALGetMetadataItem(hDriver, GDAL_DCAP_CREATECOPY, NULL))

+ 8 - 1
raster/r.in.gdal/main.c

@@ -216,11 +216,18 @@ int main(int argc, char *argv[])
     if (flag_f->answer) {
 	int iDr;
 
-	G_message(_("Available GDAL Drivers:"));
+	G_message(_("Supported formats:"));
 	for (iDr = 0; iDr < GDALGetDriverCount(); iDr++) {
 	    GDALDriverH hDriver = GDALGetDriver(iDr);
 	    const char *pszRWFlag;
 
+#ifdef GDAL_DCAP_RASTER
+            /* Starting with GDAL 2.0, vector drivers can also be returned */
+            /* Only keep raster drivers */
+            if (!GDALGetMetadataItem(hDriver, GDAL_DCAP_RASTER, NULL))
+                continue;
+#endif
+
 	    if (GDALGetMetadataItem(hDriver, GDAL_DCAP_CREATE, NULL))
 		pszRWFlag = "rw+";
 	    else if (GDALGetMetadataItem(hDriver, GDAL_DCAP_CREATECOPY, NULL))

+ 8 - 1
raster/r.out.gdal/main.c

@@ -54,12 +54,19 @@ void supported_formats(const char **formats)
 	GDALDriverH hDriver = GDALGetDriver(iDr);
 	const char *pszRWFlag;
 
+#ifdef GDAL_DCAP_RASTER
+            /* Starting with GDAL 2.0, vector drivers can also be returned */
+            /* Only keep raster drivers */
+            if (!GDALGetMetadataItem(hDriver, GDAL_DCAP_RASTER, NULL))
+                continue;
+#endif
+
 	if (GDALGetMetadataItem(hDriver, GDAL_DCAP_CREATE, NULL))
 	    pszRWFlag = "rw+";
 	else if (GDALGetMetadataItem(hDriver, GDAL_DCAP_CREATECOPY, NULL))
 	    pszRWFlag = "rw";
 	else
-	    pszRWFlag = "ro";
+          continue;
 
 	if (*formats)
 	    fprintf(stdout, "  %s (%s): %s\n",