class GeoRuby::SimpleFeatures::Envelope
Contains the bounding box of a geometry
Attributes
lower_corner[RW]
srid[RW]
upper_corner[RW]
with_z[RW]
zoom[RW]
Public Class Methods
from_coordinates(points, srid = DEFAULT_SRID, with_z = false)
click to toggle source
Creates a new envelope. Accept a sequence of point coordinates as argument : ((x,y),(x,y))
# File lib/geo_ruby/simple_features/envelope.rb, line 167 def self.from_coordinates(points, srid = DEFAULT_SRID, with_z = false) e = Envelope.new(srid, with_z) e.lower_corner, e.upper_corner = points.collect { |point_coords| Point.from_coordinates(point_coords, srid, with_z) } e end
from_points(points, srid = DEFAULT_SRID, with_z = false)
click to toggle source
Creates a new envelope. Accept an array of 2 points as argument
# File lib/geo_ruby/simple_features/envelope.rb, line 159 def self.from_points(points, srid = DEFAULT_SRID, with_z = false) fail 'Not an array' unless points.class == Array e = Envelope.new(srid, with_z) e.lower_corner, e.upper_corner = points e end
new(srid = DEFAULT_SRID, with_z = false)
click to toggle source
Creates a enw Envelope
with lower_corner
as the first element of the corners array and upper_corner
as the second element
# File lib/geo_ruby/simple_features/envelope.rb, line 10 def initialize(srid = DEFAULT_SRID, with_z = false) @srid = srid @with_z = with_z end
Public Instance Methods
==(other_envelope)
click to toggle source
Tests the equality of line strings
# File lib/geo_ruby/simple_features/envelope.rb, line 72 def ==(other_envelope) if other_envelope.class != self.class false else upper_corner == other_envelope.upper_corner && lower_corner == other_envelope.lower_corner end end
as_georss(options = {})
click to toggle source
georss serialization: Dialect can be passed as option :dialect
and set to :simple
(default) :w3cgeo
or :gml
. Options <tt>:featuretypetag
# File lib/geo_ruby/simple_features/envelope.rb, line 83 def as_georss(options = {}) dialect = options[:dialect] || :simple case (dialect) when :simple geom_attr = '' if options[:featuretypetag] geom_attr += " featuretypetag=\"#{options[:featuretypetag]}\"" end if options[:relationshiptag] geom_attr += " relationshiptag=\"#{options[:relationshiptag]}\"" end geom_attr += " floor=\"#{options[:floor]}\"" if options[:floor] geom_attr += " radius=\"#{options[:radius]}\"" if options[:radius] geom_attr += " elev=\"#{options[:elev]}\"" if options[:elev] georss_simple_representation(options.merge(geom_attr: geom_attr)) when :w3cgeo georss_w3cgeo_representation(options) when :gml georss_gml_representation(options) end end
as_kml(options = {})
click to toggle source
Sends back a latlonaltbox
# File lib/geo_ruby/simple_features/envelope.rb, line 133 def as_kml(options = {}) geom_data = '' geom_data = "<altitudeMode>#{options[:altitude_mode]}</altitudeMode>\n" if options[:altitude_mode] allow_z = with_z && (!options[:altitude_mode].nil?) && options[:atitude_mode] != 'clampToGround' kml_representation(options.merge(geom_data: geom_data, allow_z: allow_z)) end
center()
click to toggle source
Sends back the center of the envelope
# File lib/geo_ruby/simple_features/envelope.rb, line 53 def center Point.from_x_y((lower_corner.x + upper_corner.x) / 2, (lower_corner.y + upper_corner.y) / 2, srid) end
extend(envelope)
click to toggle source
Merges the argument with the current evelope and sends back a new envelope without changing the current one
# File lib/geo_ruby/simple_features/envelope.rb, line 26 def extend(envelope) e = Envelope.from_points([Point.from_x_y(lower_corner.x, lower_corner.y), Point.from_x_y(upper_corner.x, upper_corner.y)], srid, with_z) e.extend!(envelope) e end
extend!(envelope)
click to toggle source
Merges the argument with the current evelope
# File lib/geo_ruby/simple_features/envelope.rb, line 16 def extend!(envelope) lower_corner.x = [lower_corner.x, envelope.lower_corner.x].min lower_corner.y = [lower_corner.y, envelope.lower_corner.y].min upper_corner.x = [upper_corner.x, envelope.upper_corner.x].max upper_corner.y = [upper_corner.y, envelope.upper_corner.y].max self end