Geo::Geos::Noding::NodedSegmentString - Represents a list of contiguous line segments, and supports noding the segments.
use Geo::Geos::Algorithm::LineIntersector; use Geo::Geos::Coordinate; use Geo::Geos::Noding::NodedSegmentString; use Geo::Geos::PrecisionModel; my $c1 = Geo::Geos::Coordinate->new(1,2); my $c2 = Geo::Geos::Coordinate->new(5,2); my $c3 = Geo::Geos::Coordinate->new(7,1); my $c4 = Geo::Geos::Coordinate->new(9,1.5); my $seq = [$c1, $c2, $c3]; my $ss = Geo::Geos::Noding::NodedSegmentString->new($seq); # => isa 'Geo::Geos::Noding::NodedSegmentString' Geo::Geos::Noding::NodedSegmentString->new($seq); # => isa 'Geo::Geos::Noding::SegmentString' $ss->isClosed; # => '' $ss->size; # => 3 $ss->getCoordinate(0); # => Geo::Geos::Coordinate->new(1,2) my $c = $ss->getCoordinates->[0]; # => Geo::Geos::Coordinate->new(1,2) $ss->toString; # => like qr/\QLINESTRING(1 2, 5 2, 7 1)\E/ $ss->getSegmentOctant(0); # => 0 $ss->addIntersectionNode($c4, 2); # => isa 'Geo::Geos::Noding::SegmentNode' my $ss2 = Geo::Geos::Noding::NodedSegmentString->new([$c1, $c2, $c3]); my $segmentIndex = 1; my $c6 = Geo::Geos::Coordinate->new(11,2); $ss2->addIntersection($c6, $segmentIndex); $ss2->toString; # => like qr/Nodes: 1/ my $pm = Geo::Geos::PrecisionModel->new; my $li1 = Geo::Geos::Algorithm::LineIntersector->new($pm); my $geomIndex = 1; my $intIndex = 1; $ss2->addIntersection($li1, $segmentIndex, $geomIndex, $intIndex); $ss2->toString; # => like qr/Nodes: 2/ my $c_1 = Geo::Geos::Coordinate->new(10,1); my $c_2 = Geo::Geos::Coordinate->new(12,1); my $c_3 = Geo::Geos::Coordinate->new(11,0); my $c_4 = Geo::Geos::Coordinate->new(11,2); my $li2 = Geo::Geos::Algorithm::LineIntersector->new($pm); $li2->computeIntersection($c_1, $c_2, $c_3, $c_4); $ss2->addIntersections($li2, 1, 4); $ss2->toString; # => like qr/Nodes: 3/
GEOS C++ Library
geos::noding::NodedSegmentString
Geo::Geos
Geo::Geos::Algorithm::LineIntersector
Geo::Geos::Noding::SegmentString
Geo::Geos::Noding::SegmentNode
Ivan Baidakou <i.baydakov@crazypanda.ru>, Crazy Panda, CP Decision LTD
You may distribute this code under the same terms as Perl itself.
To install Geo::Geos, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Geo::Geos
CPAN shell
perl -MCPAN -e shell install Geo::Geos
For more information on module installation, please visit the detailed CPAN module installation guide.