|
@@ -9,12 +9,11 @@
|
|
|
*
|
|
|
* PURPOSE: Import OGR vectors
|
|
|
*
|
|
|
- * COPYRIGHT: (C) 2003 by the GRASS Development Team
|
|
|
+ * COPYRIGHT: (C) 2003, 2011 by the GRASS Development Team
|
|
|
*
|
|
|
- * This program is free software under the
|
|
|
- * GNU General Public License (>=v2).
|
|
|
- * Read the file COPYING that comes with GRASS
|
|
|
- * for details.
|
|
|
+ * This program is free software under the GNU General
|
|
|
+ * Public License (>=v2). Read the file COPYING that
|
|
|
+ * comes with GRASS for details.
|
|
|
*
|
|
|
* TODO: - make fixed field length of OFTIntegerList dynamic
|
|
|
* - several other TODOs below
|
|
@@ -55,7 +54,7 @@ int main(int argc, char *argv[])
|
|
|
struct Option *snap, *type, *outloc, *cnames;
|
|
|
} param;
|
|
|
struct _flag {
|
|
|
- struct Flag *list, *no_clean, *z, *notab,
|
|
|
+ struct Flag *list, *tlist, *no_clean, *z, *notab,
|
|
|
*region;
|
|
|
struct Flag *over, *extend, *formats, *tolower, *no_import;
|
|
|
} flag;
|
|
@@ -93,6 +92,8 @@ int main(int argc, char *argv[])
|
|
|
OGRGeometryH Ogr_geometry, Ogr_oRing, poSpatialFilter;
|
|
|
OGRSpatialReferenceH Ogr_projection;
|
|
|
OGREnvelope oExt;
|
|
|
+ OGRwkbGeometryType Ogr_geom_type;
|
|
|
+
|
|
|
int OFTIntegerListlength;
|
|
|
|
|
|
char *output;
|
|
@@ -209,11 +210,17 @@ int main(int argc, char *argv[])
|
|
|
|
|
|
flag.list = G_define_flag();
|
|
|
flag.list->key = 'l';
|
|
|
- flag.list->description =
|
|
|
- _("List available layers in data source and exit");
|
|
|
+ flag.list->description = _("List available OGR layers in data source and exit");
|
|
|
flag.list->suppress_required = YES;
|
|
|
flag.list->guisection = _("Print");
|
|
|
|
|
|
+ flag.tlist = G_define_flag();
|
|
|
+ flag.tlist->key = 't';
|
|
|
+ flag.tlist->description = _("List available OGR layers including feature types "
|
|
|
+ "in data source and exit");
|
|
|
+ flag.tlist->suppress_required = YES;
|
|
|
+ flag.tlist->guisection = _("Print");
|
|
|
+
|
|
|
flag.formats = G_define_flag();
|
|
|
flag.formats->key = 'f';
|
|
|
flag.formats->description = _("List supported formats and exit");
|
|
@@ -326,21 +333,25 @@ int main(int argc, char *argv[])
|
|
|
available_layer_names =
|
|
|
(char **)G_malloc(navailable_layers * sizeof(char *));
|
|
|
|
|
|
- if (flag.list->answer)
|
|
|
- G_message(_("Data source contains %d layers:"),
|
|
|
- navailable_layers);
|
|
|
-
|
|
|
+ if (flag.list->answer || flag.tlist->answer)
|
|
|
+ G_message(_("Data source <%s> (format '%s') contains %d layers:"),
|
|
|
+ param.dsn->answer,
|
|
|
+ OGR_Dr_GetName(OGR_DS_GetDriver(Ogr_ds)), navailable_layers);
|
|
|
for (i = 0; i < navailable_layers; i++) {
|
|
|
Ogr_layer = OGR_DS_GetLayer(Ogr_ds, i);
|
|
|
Ogr_featuredefn = OGR_L_GetLayerDefn(Ogr_layer);
|
|
|
+ Ogr_geom_type = OGR_FD_GetGeomType(Ogr_featuredefn);
|
|
|
+
|
|
|
available_layer_names[i] =
|
|
|
G_store((char *)OGR_FD_GetName(Ogr_featuredefn));
|
|
|
|
|
|
- if (flag.list->answer) {
|
|
|
+ if (flag.tlist->answer)
|
|
|
+ fprintf(stdout, "%s (%s)\n", available_layer_names[i],
|
|
|
+ OGRGeometryTypeToName(Ogr_geom_type));
|
|
|
+ else if (flag.list->answer)
|
|
|
fprintf(stdout, "%s\n", available_layer_names[i]);
|
|
|
- }
|
|
|
}
|
|
|
- if (flag.list->answer) {
|
|
|
+ if (flag.list->answer || flag.tlist->answer) {
|
|
|
fflush(stdout);
|
|
|
exit(EXIT_SUCCESS);
|
|
|
}
|