.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{ . if \nF \{ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "Boost::Geometry::Utils 3pm" .TH Boost::Geometry::Utils 3pm "2014-08-15" "perl v5.20.0" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" Boost::Geometry::Utils \- Bindings for the Boost Geometry library .SH "VERSION" .IX Header "VERSION" version 0.07 .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 1 \& use Boost::Geometry::Utils qw(polygon linestring polygon_linestring_intersection); \& \& my $square = [ # ccw \& [10, 10], \& [20, 10], \& [20, 20], \& [10, 20], \& ]; \& my $hole_in_square = [ # cw \& [14, 14], \& [14, 16], \& [16, 16], \& [16, 14], \& ]; \& my $polygon = polygon($square, $hole_in_square); \& my $linestring = linestring([ [5, 15], [30, 15] ]); \& \& my $intersection = polygon_linestring_intersection($polygon, $linestring); \& \& # $intersection is: \& # [ \& # [ [10, 15], [14, 15] ], \& # [ [16, 15], [20, 15] ], \& # ] .Ve .SH "ABSTRACT" .IX Header "ABSTRACT" This module provides bindings to perform some geometric operations using the Boost Geometry library. It does not aim at providing full bindings for such library, and that's why I left the \fIBoost::Geometry\fR namespace free. I'm unsure about the optimal architectural for providing full bindings, but I'm interested in such a project \*(-- so, if you have ideas please get in touch with me. .PP \&\fBWarning:\fR the \s-1API\s0 could change in the future. .SH "METHODS" .IX Header "METHODS" .SS "polygon_linestring_intersection" .IX Subsection "polygon_linestring_intersection" Performs an intersection between the supplied polygon and linestring, and returns an arrayref of linestrings (represented as arrayrefs of points). Note that such an intersection is also called \fIclipping\fR. .SS "polygon_multi_linestring_intersection" .IX Subsection "polygon_multi_linestring_intersection" Same as \fIpolygon_linestring_intersection\fR but it accepts a multilinestring object to perform multiple clippings in a single batch. .SS "multi_polygon_multi_linestring_intersection" .IX Subsection "multi_polygon_multi_linestring_intersection" Same as \fIpolygon_multi_linestring_intersection\fR but it accepts a multipolygon object to perform multiple clippings in a single batch. .SS "multi_linestring_multi_polygon_difference" .IX Subsection "multi_linestring_multi_polygon_difference" Performs a difference between the supplied multilinestring and the supplied multipolygon. It returns a multilinestring object. .SS "polygon_to_wkt" .IX Subsection "polygon_to_wkt" Converts one or more arrayref(s) of points to a \s-1WKT\s0 representation of a polygon (with holes). .SS "linestring_to_wkt" .IX Subsection "linestring_to_wkt" Converts an arrayref of points to a \s-1WKT\s0 representation of a multilinestring. .SS "wkt_to_multilinestring" .IX Subsection "wkt_to_multilinestring" Parses a \s-1MULTILINESTRING\s0 back to a Perl data structure. .SS "linestring_simplify" .IX Subsection "linestring_simplify" Accepts an arrayref of points representing a linestring and a numeric tolerance and returns an arrayref of points representing the simplified linestring. .SS "multi_linestring_simplify" .IX Subsection "multi_linestring_simplify" Accepts an arrayref of arrayrefs of points representing a multilinestring and a numeric tolerance and returns an arrayref of arrayrefs of points representing the simplified linestrings. .SS "point_covered_by_polygon" .IX Subsection "point_covered_by_polygon" Accepts a point and an arrayref of points representing a polygon and returns true or false according to the 'cover_by' strategy. .SS "point_covered_by_multi_polygon" .IX Subsection "point_covered_by_multi_polygon" Same as above but accepts a multipolygon arrayref. .SS "point_within_polygon" .IX Subsection "point_within_polygon" Accepts a point and an arrayref of points representing a polygon and returns true or false according to the 'within' strategy. .SS "point_within_multi_polygon" .IX Subsection "point_within_multi_polygon" Same as above but accepts a multipolygon arrayref. .SS "linestring_length" .IX Subsection "linestring_length" Returns length of a linestring. .SS "polygon_centroid" .IX Subsection "polygon_centroid" Returns the centroid point of a given polygon. .SS "linestring_centroid" .IX Subsection "linestring_centroid" Returns the centroid point of a given linestring. .SS "multi_linestring_centroid" .IX Subsection "multi_linestring_centroid" Returns the centroid point of a given multi_linestring. .SS "correct_polygon" .IX Subsection "correct_polygon" Corrects the orientation(s) of the given polygon. .SS "correct_multi_polygon" .IX Subsection "correct_multi_polygon" Corrects the orientation(s) of the given multi_polygon. .SS "polygon_area" .IX Subsection "polygon_area" Returns the area of the given polygon. .SH "ACKNOWLEDGEMENTS" .IX Header "ACKNOWLEDGEMENTS" Thanks to mauke and mst (Matt S. Trout (cpan:MSTROUT) ) for their valuable help in getting this to compile under Windows (MinGW) too. Thanks to Mark Hindness for his work on data types conversion. .SH "AUTHOR" .IX Header "AUTHOR" Alessandro Ranellucci .SH "COPYRIGHT AND LICENSE" .IX Header "COPYRIGHT AND LICENSE" This software is copyright (c) 2013 by Alessandro Ranellucci. .PP This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.