class Terraformer::MultiLineString
Public Class Methods
new(*args)
click to toggle source
Calls superclass method
Terraformer::Geometry::new
# File lib/terraformer/multi_line_string.rb, line 5 def initialize *args case when LineString === args[0] self.coordinates = args.map &:coordinates else super *args end # must be an array of arrays of coordinates unless Array === coordinates && Array === coordinates[0] && Terraformer::Coordinate === coordinates[0][0] raise ArgumentError.new 'invalid coordinates for Terraformer::MultiLineString' end end
Public Instance Methods
==(obj)
click to toggle source
Calls superclass method
Terraformer::Geometry#==
# File lib/terraformer/multi_line_string.rb, line 30 def == obj super obj do |o| lses = line_strings.sort {|a,b| a.first_coordinate <=> b.first_coordinate } olses = o.line_strings.sort {|a,b| a.first_coordinate <=> b.first_coordinate } lses == olses end end
contains?(obj)
click to toggle source
# File lib/terraformer/multi_line_string.rb, line 38 def contains? obj case obj when Point line_strings.any? {|ls| ls.contains? obj} when MultiPoint obj.points.all? {|p| line_strings.any? {|ls| ls.contains? p}} when LineString line_strings.any? {|ls| ls == obj or ls.coordinates.slice_exists? obj.coordinates} when MultiLineString obj.line_strings.all? do |ols| line_strings.any? do |ls| ls == ols or ls.coordinates.slice_exists? ols.coordinates end end else raise ArgumentError.new "unsupported type: #{obj.type rescue obj.class}" end end
first_coordinate()
click to toggle source
# File lib/terraformer/multi_line_string.rb, line 22 def first_coordinate coordinates[0][0] end
line_strings()
click to toggle source
# File lib/terraformer/multi_line_string.rb, line 26 def line_strings coordinates.map {|ls| LineString.new ls} end
within?(obj)
click to toggle source
# File lib/terraformer/multi_line_string.rb, line 57 def within? obj case obj when MultiLineString obj.contains? self when Polygon obj.contains? self when MultiPolygon obj.contains? self else raise ArgumentError.new "unsupported type: #{obj.type rescue obj.class}" end end