Read/Write polygon and contour information from/to a text file.
read.polyfile(filename, nohole = TRUE)
write.polyfile(poly, filename = "GPCpoly.txt")
If nohole
is TRUE
(the default) read.polyfile
returns an object of class "gpc.poly.nohole"
. This object has
the hole flag set to FALSE
for all contours. If nohole
is
FALSE
, then an object of class "gpc.poly"
is
returned.
write.polyfile
does not return anything useful.
the name of the file (a character string) from/to which data should be read/written.
Is this a polygon without holes?
an object of class "gpc.poly"
Roger D. Peng
The text file representation of a polygon is of the following format:
<number of contours>
<number of points in first contour>
x1 y1
x2 y2
...
<number of points in second contour>
x1 y1
x2 y2
...
For example, a data file for a polygon with 2 contours (a four-sided object and a triangle) might look like:
2
4
1.0 1.0
1.0 2.0
3.4 3.21
10 11.2
3
21.0 11.2
22.3 99.2
4.5 5.4
The vertices of the polygon can be ordered either clockwise or counter-clockwise.
If a polygon has contours which are holes, then the format is slightly different. Basically, a flag is set to indicate that a particular contour is a hole. The format is
<number of contours>
<number of points in first contour>
<hole flag>
x1 y1
x2 y2
...
<number of points in second contour>
<hole flag>
x1 y1
x2 y2
...
The hole flag is either 1 to indicate a hole, or 0 for a regular contour. For example, a four-sided polygon with a triangular hole would be written as:
2
3
1
4.0 4.0
6.0 5.0
5.0 6.0
4
0
2.0 1.0
8.0 2.0
7.0 9.0
1.0 7.0
gpc.poly-class
, gpc.poly.nohole-class