Geo-Geos
view release on metacpan or search on metacpan
using namespace geos::geom::prep;
using namespace geos::algorithm;
using namespace geos::noding;
using namespace geos::noding::snapround;
using namespace geos::io;
using namespace geos::index::chain;
using namespace geos::index;
using namespace geos::precision;
using namespace geos::operation::buffer;
using namespace geos::operation::distance;
using namespace geos::operation::overlay;
using namespace geos::operation::valid;
using namespace geos::operation::relate;
using namespace geos::operation::linemerge;
using namespace geos::triangulate;
using namespace xs;
using namespace Geo::Geos;
using namespace panda;
struct IntersectionFinderAdder_payload {
using vector_t = std::vector<::geos::geom::Coordinate>;
lib/Geo/Geos/Operation.pod view on Meta::CPAN
use Geo::Geos::Coordinate;
use Geo::Geos::Geometry qw/TYPE_CAP_ROUND/;
use Geo::Geos::GeometryFactory;
# imports constants:
# TYPE_OP_INTERSECTION, TYPE_OP_UNION, TYPE_OP_DIFFERENCE, TYPE_OP_SYMDIFFERENCE,
# TYPE_BOUNDARY_NODE_RULE_MOD2, TYPE_BOUNDARY_ENDPOINT, TYPE_BOUNDARY_MULTIVALENT_ENDPOINT
# TYPE_BOUNDARY_MONOVALENT_ENDPOINT, TYPE_BOUNDARY_OGCSFS
use Geo::Geos::Operation;
use Geo::Geos::Operation qw/buffer distance nearestPoints closestPoints overlayOp relate
isValid mergeLines isSequenced sequence/;
my $gf = Geo::Geos::GeometryFactory::create();
my $c1 = Geo::Geos::Coordinate->new(1,2);
my $c2 = Geo::Geos::Coordinate->new(5,2);
my $in = $gf->createMultiPoint([$c1, $c2], 2);
my $distance = 1.0;
my $quadrantSegments = 1;
my $capStyle = TYPE_CAP_ROUND;
lib/Geo/Geos/Operation.pod view on Meta::CPAN
my $g0 = $gf->createMultiPoint([$c11, $c12], 2);
my $c21 = Geo::Geos::Coordinate->new(1,3);
my $c22 = Geo::Geos::Coordinate->new(5,3);
my $g1 = $gf->createMultiPoint([$c21, $c21], 2);
distance($g0, $g1); # => 1
nearestPoints($g0, $g1); # => is_deeply [Geo::Geos::Coordinate->new(1,2), Geo::Geos::Coordinate->new(1,3)]
closestPoints($g0, $g1); # => is_deeply [Geo::Geos::Coordinate->new(1,2), Geo::Geos::Coordinate->new(1,3)]
# overlay
overlayOp($g0, $g1, TYPE_OP_INTERSECTION); # => isa 'Geo::Geos::Geometry'
# valid
isValid($g0); # => successs
# relate
relate($g0, $g1); # => isa 'Geo::Geos::IntersectionMatrix'
relate($g0, $g1, TYPE_BOUNDARY_OGCSFS); # => isa 'Geo::Geos::IntersectionMatrix'
# merge lines
my $c_11 = Geo::Geos::Coordinate->new(1,2);
lib/Geo/Geos/Operation.pod view on Meta::CPAN
=head1 SEE ALSO (C++ classes docs)
L<GEOS C++ Library|https://trac.osgeo.org/geos>
geos::algorithm::BoundaryNodeRule
geos::operation::buffer::BufferOp
geos::operation::distance::DistanceOp
geos::operation::overlay::OverlayOp
geos::operation::valid::IsValidOp
geos::operation::relate::RelateOp
geos::operation::linemerge::LineMerger
geos::operation::linemerge::LineSequencer
=head1 EXPORTS CONSTANTS
src/xs/geos/operation.h view on Meta::CPAN
#pragma once
#include "geos/operation/buffer/BufferOp.h"
#include "geos/operation/buffer/BufferParameters.h"
#include "geos/operation/distance/DistanceOp.h"
#include "geos/operation/overlay/OverlayOp.h"
#include "geos/operation/valid/IsValidOp.h"
#include "geos/algorithm/BoundaryNodeRule.h"
#include "geos/operation/relate/RelateOp.h"
#include "geos/operation/linemerge/LineMerger.h"
#include "geos/operation/linemerge/LineSequencer.h"
t/62-Operation-Overlay.t view on Meta::CPAN
use 5.012;
use warnings;
use Test::More;
use Test::Warnings;
use Geo::Geos::Coordinate;
use Geo::Geos::Geometry;
use Geo::Geos::GeometryFactory;
use Geo::Geos::Operation;
use Geo::Geos::Operation qw/overlayOp/;
my $gf = Geo::Geos::GeometryFactory::create();
subtest "OverlayOp::overlayOp" => sub {
my $c11 = Geo::Geos::Coordinate->new(1,2);
my $c12 = Geo::Geos::Coordinate->new(5,2);
my $g0 = $gf->createMultiPoint([$c11, $c12], 2);
my $c21 = Geo::Geos::Coordinate->new(1,3);
my $c22 = Geo::Geos::Coordinate->new(5,3);
my $g1 = $gf->createMultiPoint([$c21, $c21], 2);
my $g = overlayOp($g0, $g1, TYPE_OP_INTERSECTION);
ok $g;
like( $g->toString, qr/GEOMETRYCOLLECTION EMPTY/);
};
done_testing;
xsi/operation.xsi view on Meta::CPAN
Array closestPoints(Geometry& g0, Geometry& g1) {
Array r;
auto seq = DistanceOp::closestPoints(&g0, &g1);
if(seq) {
auto seq_ptr = std::unique_ptr<CoordinateSequence>(seq);
r = Helper::convert_copy(seq);
}
RETVAL = r;
}
Sv overlayOp(Geometry& g0, Geometry& g1, int opCode) {
if (opCode > 4) throw "wrong opCode";
OverlayOp::OpCode code = static_cast<OverlayOp::OpCode>(opCode);
Geometry* g = OverlayOp::overlayOp(&g0, &g1, code);
RETVAL = Helper::uplift(g);
}
bool isValid(Object obj) {
if (obj.stash().name() == "Geo::Geos::Coordinate") {
auto& c = xs::in<Coordinate&>(obj);
RETVAL = IsValidOp::isValid(c);
}
else {
auto& g = xs::in<Geometry&>(obj);
( run in 1.115 second using v1.01-cache-2.11-cpan-49f99fa48dc )