module Arel::GISPredications
Public Instance Methods
intersects(value)
click to toggle source
# File lib/arel/gis_predications.rb, line 4 def intersects(value) Arel::Nodes::Intersects.new(self, geometry(value)) end
within(value)
click to toggle source
# File lib/arel/gis_predications.rb, line 8 def within(value) Arel::Nodes::Within.new(self, geometry(value)) end
Private Instance Methods
geometry(value)
click to toggle source
# File lib/arel/gis_predications.rb, line 14 def geometry(value) case value in Arel::Nodes::Node then value in RGeo::Geos::CAPIGeometryMethods then Arel::Nodes::Geometry.new(value) in ::String factory = RGeo::Geos.factory(:srid => 4326) result = if value[0,1] == "\x00" || value[0,1] == "\x01" || value[0,4] =~ /[0-9a-fA-F]{4}/ RGeo::WKRep::WKBParser.new(factory, support_ewkb: true, default_srid: 4326).parse(value) else RGeo::WKRep::WKTParser.new(factory, support_ewkt: true, default_srid: 4326).parse(value) end Arel::Nodes::Geometry.new(result) in Hash Arel::Nodes::Geometry.new(RGeo::GeoJSON.decode(value)) end end