The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Geo::Geos::Geometry - Basic implementation of Geometry

SYNOPSIS

    use Geo::Geos::Coordinate;
    use Geo::Geos::Dimension;
    use Geo::Geos::Geometry;
    use Geo::Geos::GeometryFactory;

    my $gf = Geo::Geos::GeometryFactory::create();

    my $c1 = Geo::Geos::Coordinate->new(1,2);
    my $c2 = Geo::Geos::Coordinate->new(5,2);
    my $c3 = Geo::Geos::Coordinate->new(5,0);
    my $c4 = Geo::Geos::Coordinate->new(1,0);

    my $g0 = $gf->createLinearRing([$c1, $c2, $c3, $c4, $c1], 2);   # => isa 'Geo::Geos::Geometry'
    my $g1 = $gf->createPolygon($g0);                               # => isa 'Geo::Geos::Geometry'

    $g1->isSimple;                  # => success
    $g1->getNumPoints;              # => 5;
    $g1->getDimension;              # => TYPE_A
    $g1->getCoordinateDimension;    # => 2
    $g1->getCoordinate;             # => isa 'Geo::Geos::Coordinate'

    $g1->setSRID(5);
    $g1->getSRID;       # => 5

    $g1->getArea;    # => 8;
    $g1->getLength;  # => 12;
    $g1->clone;      # => isa 'Geo::Geos::Geometry'

    $g1->distance($g0);                 # => 0
    $g1->isWithinDistance($g1, 0.1);    # => success

    $g1->getGeometryType;   # => is 'Polygon'
    $g1->getGeometryTypeId; # => is TYPE_GEOS_POLYGON

    $g1->getBoundary;           # => isa 'Geo::Geos::Geometry'
    $g1->getBoundaryDimension;  # => 1

    $g1->equalsExact($g1);      # => success
    $g1->equalsExact($g1, 1.2); # => success
    $g1->compareTo($g1);        # => 0

    $g1->getNumGeometries;              # => 1;
    $g1->getGeometryN(0);               # => isa 'Geo::Geos::Geometry'
    my $r = ref($g1->getCoordinates);   # => 'ARRAY'
    $g1->getCoordinate;                 # => isa 'Geo::Geos::Coordinate'

    $g1->getPrecisionModel->isFloating;     # => success

    $g1->getCentroid->getGeometryType;      # => 'Point'
    $g1->getInteriorPoint->getGeometryType; # => 'Point'

    # operations
    $g1->symDifference($g1);    # => isa 'Geo::Geos::Geometry'
    $g1->difference($g1);       # => isa 'Geo::Geos::Geometry'
    $g1->Union($g1);            # => isa 'Geo::Geos::Geometry'
    $g1->intersection($g1);     # => isa 'Geo::Geos::Geometry'

    $g1->convexHull;    # => isa 'Geo::Geos::Geometry'

    $g1->buffer(1);                     # => isa 'Geo::Geos::Geometry'
    $g1->buffer(1, 2);                  # => isa 'Geo::Geos::Geometry'
    $g1->buffer(1, 3, TYPE_CAP_FLAT);   # => isa 'Geo::Geos::Geometry'

    $g1->toText;    # => like qr/POLYGON/
    $g1->toString;  # => like qr/POLYGON/

    # relations
    $g1->covers($g1);       # => success
    $g1->coveredBy($g1);    # => success
    $g1->equals($g1);       # => success
    $g1->overlaps($g1);     # => ''
    $g1->contains($g1);     # => success
    $g1->within($g1);       # => success
    $g1->crosses($g1);      # => ''
    $g1->intersects($g1);   # => success
    $g1->touches($g1);      # => ''
    $g1->disjoint($g1);     # => ''

    $g1->getEnvelope;       # => isa 'Geo::Geos::Geometry'
    $g1->isRectangle;       # => success
    $g1->isValid;           # => success
    $g1->isEmpty;           # => ''
    $g1->isSimple;          # => success

    $g1->relate($g1);       # => isa 'Geo::Geos::IntersectionMatrix'
    $g1->normalize;

SEE ALSO (C++ classes docs)

GEOS C++ Library

geos::geom::Geometry

EXPORTS CONSTANTS

TYPE_GEOS_POINT
TYPE_GEOS_LINESTRING
TYPE_GEOS_LINEARRING
TYPE_GEOS_POLYGON
TYPE_GEOS_MULTIPOINT
TYPE_GEOS_MULTILINESTRING
TYPE_GEOS_MULTIPOLYGON
TYPE_GEOS_GEOMETRYCOLLECTION
TYPE_CAP_ROUND
TYPE_CAP_FLAT
TYPE_CAP_SQUARE

SEE ALSO

Geo::Geos::Coordinate

Geo::Geos::Dimension

Geo::Geos::Envelope

Geo::Geos::GeometryFactory

Geo::Geos::GeometryCollection

Geo::Geos::LinearRing

Geo::Geos::LineString

Geo::Geos::MultiLineString

Geo::Geos::MultiPoint

Geo::Geos::MultiPolygon

Geo::Geos::Point

Geo::Geos::Polygon

Geo::Geos::Prep::Geometry

AUTHOR

Ivan Baidakou <i.baydakov@crazypanda.ru>, Crazy Panda, CP Decision LTD

LICENSE

You may distribute this code under the same terms as Perl itself.