#include #include #include "gis.h" #include "Vect.h" int main (int argc, char **argv) { struct Option *opt_map; struct Map_info map; char *mapset; int i, j, k, att; int isle_area; P_AREA *area; P_LINE *line; P_ISLE *isle; opt_map = G_define_option(); opt_map->key = "map"; opt_map->required = YES; opt_map->gisprompt = "dig,old,vector"; G_gisinit(argv[0]); if (G_parser (argc, argv)) exit (EXIT_FAILURE); if (NULL == (mapset = G_find_file2 ("dig", opt_map->answer, ""))) G_fatal_error ("Vector map [%s] not found!", opt_map->answer); if (V2_open_old (&map, opt_map->answer, mapset)) G_fatal_error ("Couldn't open vector map at level 2!"); for (i = 1; i <= map.n_areas; i++) { fprintf (stdout, "Area %d {\n", i); att = V2_area_att (&map, i); fprintf (stdout, " dig_att = %d\n", att); V2_get_area (&map, i, &area); fprintf (stdout, " lines {\n"); for (j = 0; j < area->n_lines; j++) { line = &(map.Line[abs(area->lines[j])]); fprintf (stdout, " line %d, left %d, right %d\n", area->lines[j], line->left, line->right); } fprintf (stdout, " }\n"); for (j = 0; j < area->n_isles; j++) { fprintf (stdout, " Island %d {\n", area->isles[j]); isle = &(map.Isle[area->isles[j]]); fprintf (stdout, " Lines {\n"); for (k = 0; k < isle->n_lines; k++) { line = &(map.Line[abs(isle->lines[k])]); fprintf (stdout, " Line %d, LeftArea %d, RightArea %d\n", isle->lines[k], line->left, line->right); } if (i == abs(line->left)) isle_area = abs(line->right); else if (i == abs(line->right)) isle_area = abs(line->left); else isle_area = -1; fprintf (stdout, " } = Area %d\n }\n", isle_area ); } fprintf (stdout, "}\n"); } return 0; }