|
@@ -6,17 +6,20 @@
|
|
|
* GRASS 6 update: Radim Blazek <radim.blazek gmail.com>
|
|
|
* Glynn Clements <glynn gclements.plus.com>,
|
|
|
* Jachym Cepicky <jachym les-ejk.cz>, Markus Neteler <neteler itc.it>
|
|
|
+ * OGR support by Martin Landa <landa.martin gmail.com>
|
|
|
* PURPOSE:
|
|
|
- * COPYRIGHT: (C) 1999-2007 by the GRASS Development Team
|
|
|
+ * COPYRIGHT: (C) 1999-2009 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.
|
|
|
*
|
|
|
*****************************************************************************/
|
|
|
+
|
|
|
#include <stdio.h>
|
|
|
#include <stdlib.h>
|
|
|
#include <string.h>
|
|
|
+
|
|
|
#include <grass/gis.h>
|
|
|
#include <grass/vector.h>
|
|
|
#include <grass/dbmi.h>
|
|
@@ -70,21 +73,21 @@ int main(int argc, char *argv[])
|
|
|
|
|
|
in_opt = G_define_standard_option(G_OPT_V_INPUT);
|
|
|
|
|
|
- out_opt = G_define_standard_option(G_OPT_V_OUTPUT);
|
|
|
+ field_opt = G_define_standard_option(G_OPT_V_FIELD);
|
|
|
+ field_opt->guisection = _("Selection");
|
|
|
|
|
|
type_opt = G_define_standard_option(G_OPT_V_TYPE);
|
|
|
type_opt->options = "point,line,boundary,centroid";
|
|
|
type_opt->answer = "point,line,boundary,centroid";
|
|
|
type_opt->guisection = _("Selection");
|
|
|
|
|
|
- field_opt = G_define_standard_option(G_OPT_V_FIELD);
|
|
|
- field_opt->guisection = _("Selection");
|
|
|
-
|
|
|
+ out_opt = G_define_standard_option(G_OPT_V_OUTPUT);
|
|
|
+
|
|
|
col_opt = G_define_standard_option(G_OPT_DB_COLUMN);
|
|
|
col_opt->label =
|
|
|
_("The name of the column whose values are to be used as new categories");
|
|
|
col_opt->description = _("The source for the new key column must be type integer or string");
|
|
|
-
|
|
|
+
|
|
|
rules_opt = G_define_standard_option(G_OPT_F_INPUT);
|
|
|
rules_opt->key = "rules";
|
|
|
rules_opt->required = NO;
|
|
@@ -95,18 +98,19 @@ int main(int argc, char *argv[])
|
|
|
|
|
|
|
|
|
type = Vect_option_to_types(type_opt);
|
|
|
- field = atoi(field_opt->answer);
|
|
|
|
|
|
if ((!(rules_opt->answer) && !(col_opt->answer)) ||
|
|
|
(rules_opt->answer && col_opt->answer)) {
|
|
|
- G_fatal_error(_("Either 'rules' or 'col' must be specified"));
|
|
|
+ G_fatal_error(_("Either '%s' or '%s' must be specified"),
|
|
|
+ rules_opt->key, col_opt->key);
|
|
|
}
|
|
|
|
|
|
Vect_check_input_output_name(in_opt->answer, out_opt->answer,
|
|
|
GV_FATAL_EXIT);
|
|
|
|
|
|
Vect_set_open_level(2);
|
|
|
- Vect_open_old(&In, in_opt->answer, "");
|
|
|
+ Vect_open_old2(&In, in_opt->answer, "", field_opt->answer);
|
|
|
+ field = Vect_get_field_number(&In, field_opt->answer);
|
|
|
|
|
|
Vect_open_new(&Out, out_opt->answer, Vect_is_3d(&In));
|
|
|
Vect_copy_head_data(&In, &Out);
|
|
@@ -118,8 +122,8 @@ int main(int argc, char *argv[])
|
|
|
|
|
|
Fi = Vect_get_field(&In, field);
|
|
|
if (Fi == NULL)
|
|
|
- G_fatal_error(_("Database connection not defined for layer %d"),
|
|
|
- field);
|
|
|
+ G_fatal_error(_("Database connection not defined for layer %s"),
|
|
|
+ field_opt->answer);
|
|
|
|
|
|
Driver = db_start_driver_open_database(Fi->driver, Fi->database);
|
|
|
if (Driver == NULL)
|