GRASS GIS 8 Programmer's Manual
8.5.0dev(2024)-36359e2344
|
Vector library - update topo for areas (lower level functions) More...
Go to the source code of this file.
Functions | |
int | dig_build_area_with_line (struct Plus_head *plus, plus_t first_line, int side, plus_t **lines) |
Build topo for area from lines. More... | |
int | dig_add_area (struct Plus_head *plus, int n_lines, plus_t *lines, struct bound_box *box) |
Allocate space for new area and create boundary info from array. More... | |
int | dig_area_add_isle (struct Plus_head *plus, int area, int isle) |
Add isle to area if does not exist yet. More... | |
int | dig_area_del_isle (struct Plus_head *plus, int area, int isle) |
Delete isle from area. More... | |
int | dig_del_area (struct Plus_head *plus, int area) |
Delete area from Plus_head structure. More... | |
int | dig_angle_next_line (struct Plus_head *plus, plus_t current_line, int side, int type, float *angle) |
Find line number of next angle to follow a line. More... | |
int | dig_node_angle_check (struct Plus_head *plus, plus_t line, int type) |
Check if angles of adjacent lines differ. More... | |
int | dig_add_isle (struct Plus_head *plus, int n_lines, plus_t *lines, struct bound_box *box) |
Allocate space for new island and create boundary info from array. More... | |
int | dig_del_isle (struct Plus_head *plus, int isle) |
Delete island from Plus_head structure. More... | |
Vector library - update topo for areas (lower level functions)
Lower level functions for reading/writing/manipulating vectors.
This program is free software under the GNU General Public License (>=v2). Read the file COPYING that comes with GRASS for details.
Definition in file plus_area.c.
Allocate space for new area and create boundary info from array.
Then for each line in area, update line (right,left) info.
Neither islands nor centroids are filled.
[in] | plus | pointer to Plus_head structure |
[in] | n_lines | number of lines |
[in] | lines | array of lines, negative for reverse direction |
[in] | box | bounding box |
Definition at line 187 of file plus_area.c.
Referenced by Vect_build_line_area().
Allocate space for new island and create boundary info from array.
The order of input lines is expected to be counter clockwise. Then for each line in isle, update line (right,left) info.
Area number the island is within is not filled.
[in] | plus | pointer to Plus_head structure |
[in] | n_lines | number of lines |
[in] | lines | array of lines, negative for reverse direction |
[in] | box | bounding box |
Definition at line 703 of file plus_area.c.
Referenced by Vect_build_line_area().
int dig_angle_next_line | ( | struct Plus_head * | plus, |
plus_t | current_line, | ||
int | side, | ||
int | type, | ||
float * | angle | ||
) |
Find line number of next angle to follow a line.
Assume that lines are sorted in increasing angle order and angles of points and degenerated lines are set to -9 (ignored).
[in] | plus | pointer to Plus_head structure |
[in] | current_line | current line id, negative if request for end node |
[in] | side | side GV_RIGHT or GV_LEFT |
[in] | type | line type (GV_LINE, GV_BOUNDARY or both) |
[out] | angle |
Definition at line 474 of file plus_area.c.
int dig_area_add_isle | ( | struct Plus_head * | plus, |
int | area, | ||
int | isle | ||
) |
Add isle to area if does not exist yet.
[in] | plus | pointer to Plus_head structure |
[in] | area | area id |
[in] | isle | isle id |
Definition at line 265 of file plus_area.c.
References G_debug().
Referenced by Vect_attach_isle().
int dig_area_del_isle | ( | struct Plus_head * | plus, |
int | area, | ||
int | isle | ||
) |
Delete isle from area.
[in] | plus | pointer to Plus_head structure |
[in] | area | area id |
[in] | isle | isle id |
Definition at line 314 of file plus_area.c.
References _, Plus_head::Area, G_debug(), G_fatal_error(), P_area::isles, P_area::n_isles, and NULL.
Referenced by Vect_attach_isles().
int dig_build_area_with_line | ( | struct Plus_head * | plus, |
plus_t | first_line, | ||
int | side, | ||
plus_t ** | lines | ||
) |
Build topo for area from lines.
Area is built in clockwise order. Take a given line and start off to the RIGHT/LEFT and try to complete an area.
Possible Scenarios:
After we find an area then we call point_in_area() to see if the specified point is w/in the area
Old returns -1: error 0: no area (1: point in area) -2: island !!
[in] | plus | pointer to Plus_head structure |
[in] | first_line | line id of first line |
[in] | side | side of line to build area on (GV_LEFT | GV_RIGHT) |
[in] | lines | pointer to array of lines |
Definition at line 50 of file plus_area.c.
Referenced by Vect_build_line_area().
int dig_del_area | ( | struct Plus_head * | plus, |
int | area | ||
) |
Delete area from Plus_head structure.
This function deletes area from the topo structure and resets references to this area in boundaries, isles (within), and the centroid (if any) to 0. Possible new area is not created by this function, so that old boundaries participating in this area are left without area information even if form new area. Not enabled now: If area is inside other area, area info for islands within deleted area is reset to that area outside. (currently area info of isles is set to 0)
[in] | plus | pointer to Plus_head structure |
[in] | area | area id |
Definition at line 365 of file plus_area.c.
int dig_del_isle | ( | struct Plus_head * | plus, |
int | isle | ||
) |
Delete island from Plus_head structure.
Reset references to it in lines and area outside.
[in] | plus | pointer to Plus_head structure |
[in] | isle | isle id |
Definition at line 781 of file plus_area.c.
Check if angles of adjacent lines differ.
Negative line number for end point. Assume that lines are sorted in increasing angle order and angles of points and degenerated lines are set to 9 (ignored).
[in] | plus | pointer to Plus_head structure |
[in] | line | current line id, negative if request for node 2 |
[in] | type | line type (GV_LINE, GV_BOUNDARY or both) |
Definition at line 622 of file plus_area.c.