34#include "iclass_local_proto.h"
36#define extrema(x, y, z) (((x < y) && (z < y)) || ((x > y) && (z > y)))
37#define non_extrema(x, y, z) (((x < y) && (y < z)) || ((x > y) && (y > z)))
63 G_debug(3,
"iclass_vector2perimeters():layer = %s, category = %d",
73 for (i = 1; i <=
nareas; i++) {
92 for (i = 1; i <=
nareas; i++) {
138 G_debug(5,
"free_perimeters()");
140 for (i = 0; i <
perimeters->nperimeters; i++) {
163 int i, first, prev, skip, next;
169 G_debug(5,
"iclass_make_perimeter()");
175 for (i = 0; i <
count; i++) {
176 G_debug(5,
"iclass_make_perimeter(): points: x: %f y: %f", points->
x[i],
200 for (i = 0; i <
count; prev = i++) {
232 if ((next = i + 1) >=
count)
237 }
while (i != first);
369 G_debug(5,
"perimeter_add_point(): x: %d, y: %d",
x,
y);
void G_free(void *)
Free allocated memory.
void G_warning(const char *,...) __attribute__((format(printf
int G_debug(int, const char *,...) __attribute__((format(printf
void Vect_destroy_line_struct(struct line_pnts *)
Frees all memory associated with a line_pnts structure, including the structure itself.
plus_t Vect_get_num_areas(struct Map_info *)
Get number of areas in vector map.
int Vect_area_alive(struct Map_info *, int)
Check if area is alive or dead (topological level required)
int Vect_get_field_number(struct Map_info *, const char *)
Get field number of given field.
int Vect_get_area_points(struct Map_info *, int, struct line_pnts *)
Returns polygon array of points (outer ring) of given area.
int Vect_get_area_cat(struct Map_info *, int, int)
Find FIRST category of given field and area.
struct line_pnts * Vect_new_line_struct(void)
Creates and initializes a line_pnts structure.
void perimeter_add_point(IClass_perimeter *perimeter, int x, int y)
Adds point to perimeter.
int vector2perimeters(struct Map_info *Map, const char *layer_name, int category, IClass_perimeter_list *perimeters, struct Cell_head *band_region)
Creates perimeters from vector areas of given category.
int edge2perimeter(IClass_perimeter *perimeter, int x0, int y0, int x1, int y1)
Converts edge to cells.
void free_perimeters(IClass_perimeter_list *perimeters)
Frees all perimeters in list of perimeters.
int make_perimeter(struct line_pnts *points, IClass_perimeter *perimeter, struct Cell_head *band_region)
Creates one perimeter from vector area.
#define non_extrema(x, y, z)
int edge_order(const void *aa, const void *bb)
Determines points order during sorting.
2D/3D raster map header (used also for region)
Feature geometry info - coordinates.
double * y
Array of Y coordinates.
double * x
Array of X coordinates.
int n_points
Number of points.