- NAME
- VERSION
- SYNOPSIS
- ABSTRACT
- METHODS
- polygon_linestring_intersection
- polygon_multi_linestring_intersection
- multi_polygon_multi_linestring_intersection
- multi_linestring_multi_polygon_difference
- polygon_to_wkt
- linestring_to_wkt
- wkt_to_multilinestring
- linestring_simplify
- multi_linestring_simplify
- point_covered_by_polygon
- point_covered_by_multi_polygon
- point_within_polygon
- point_within_multi_polygon
- linestring_length
- polygon_centroid
- linestring_centroid
- multi_linestring_centroid
- correct_polygon
- correct_multi_polygon
- polygon_area

- ACKNOWLEDGEMENTS
- AUTHOR
- COPYRIGHT AND LICENSE

# NAME

Boost::Geometry::Utils - Bindings for the Boost Geometry library

# VERSION

version 0.07

# SYNOPSIS

```
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] ],
# ]
```

# 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 *Boost::Geometry* 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.

**Warning:** the API could change in the future.

# METHODS

## 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 *clipping*.

## polygon_multi_linestring_intersection

Same as *polygon_linestring_intersection* but it accepts a multilinestring object to perform multiple clippings in a single batch.

## multi_polygon_multi_linestring_intersection

Same as *polygon_multi_linestring_intersection* but it accepts a multipolygon object to perform multiple clippings in a single batch.

## multi_linestring_multi_polygon_difference

Performs a difference between the supplied multilinestring and the supplied multipolygon. It returns a multilinestring object.

## polygon_to_wkt

Converts one or more arrayref(s) of points to a WKT representation of a polygon (with holes).

## linestring_to_wkt

Converts an arrayref of points to a WKT representation of a multilinestring.

## wkt_to_multilinestring

Parses a MULTILINESTRING back to a Perl data structure.

## linestring_simplify

Accepts an arrayref of points representing a linestring and a numeric tolerance and returns an arrayref of points representing the simplified linestring.

## 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.

## 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.

## point_covered_by_multi_polygon

Same as above but accepts a multipolygon arrayref.

## point_within_polygon

Accepts a point and an arrayref of points representing a polygon and returns true or false according to the 'within' strategy.

## point_within_multi_polygon

Same as above but accepts a multipolygon arrayref.

## linestring_length

Returns length of a linestring.

## polygon_centroid

Returns the centroid point of a given polygon.

## linestring_centroid

Returns the centroid point of a given linestring.

## multi_linestring_centroid

Returns the centroid point of a given multi_linestring.

## correct_polygon

Corrects the orientation(s) of the given polygon.

## correct_multi_polygon

Corrects the orientation(s) of the given multi_polygon.

## polygon_area

Returns the area of the given polygon.

# ACKNOWLEDGEMENTS

Thanks to mauke and mst (Matt S. Trout (cpan:MSTROUT) <mst@shadowcat.co.uk>) for their valuable help in getting this to compile under Windows (MinGW) too. Thanks to Mark Hindness for his work on data types conversion.

# AUTHOR

Alessandro Ranellucci <aar@cpan.org>

# COPYRIGHT AND LICENSE

This software is copyright (c) 2013 by Alessandro Ranellucci.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.