Class: CacheableKdtree::LatitudeLongitudeRegion

Inherits:
Object
  • Object
show all
Defined in:
lib/cacheable_kdtree/latitude_longitude_region.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(lat1, long1, lat2, long2) ⇒ LatitudeLongitudeRegion

Returns a new instance of LatitudeLongitudeRegion.



3
4
5
6
# File 'lib/cacheable_kdtree/latitude_longitude_region.rb', line 3

def initialize(lat1, long1, lat2, long2)
  @min_latitude, @max_latitude = [lat1, lat2].minmax
  @min_longitude, @max_longitude = [long1, long2].minmax
end

Instance Attribute Details

#max_latitudeObject

Returns the value of attribute max_latitude.



2
3
4
# File 'lib/cacheable_kdtree/latitude_longitude_region.rb', line 2

def max_latitude
  @max_latitude
end

#max_longitudeObject

Returns the value of attribute max_longitude.



2
3
4
# File 'lib/cacheable_kdtree/latitude_longitude_region.rb', line 2

def max_longitude
  @max_longitude
end

#min_latitudeObject

Returns the value of attribute min_latitude.



2
3
4
# File 'lib/cacheable_kdtree/latitude_longitude_region.rb', line 2

def min_latitude
  @min_latitude
end

#min_longitudeObject

Returns the value of attribute min_longitude.



2
3
4
# File 'lib/cacheable_kdtree/latitude_longitude_region.rb', line 2

def min_longitude
  @min_longitude
end

Class Method Details

.regions_intersect?(region1, region2) ⇒ Boolean

Returns:

  • (Boolean)


28
29
30
31
# File 'lib/cacheable_kdtree/latitude_longitude_region.rb', line 28

def self.regions_intersect?(region1, region2)
  region1.min_latitude <= region2.max_latitude && region1.max_latitude >= region2.min_latitude &&
    region1.min_longitude <= region2.max_longitude && region1.max_longitude >= region2.min_longitude
end

Instance Method Details

#merge_point(lat, long) ⇒ Object



8
9
10
11
12
# File 'lib/cacheable_kdtree/latitude_longitude_region.rb', line 8

def merge_point(lat, long)
  new_min_lat, new_max_lat = [lat, @min_latitude, @max_latitude].minmax
  new_min_long, new_max_long = [long, @min_longitude, @max_longitude].minmax
  self.class.new(new_min_lat, new_min_long, new_max_lat, new_max_long)
end

#merge_region(region) ⇒ Object



14
15
16
17
18
# File 'lib/cacheable_kdtree/latitude_longitude_region.rb', line 14

def merge_region(region)
  new_min_lat, new_max_lat = [region.min_latitude, region.max_latitude, @min_latitude, @max_latitude].minmax
  new_min_long, new_max_long = [region.min_longitude, region.max_longitude, @min_longitude, @max_longitude].minmax
  self.class.new(new_min_lat, new_min_long, new_max_lat, new_max_long)
end

#point_in_region?(latitude, longitude) ⇒ Boolean

Returns:

  • (Boolean)


20
21
22
# File 'lib/cacheable_kdtree/latitude_longitude_region.rb', line 20

def point_in_region?(latitude, longitude)
  latitude.between?(min_latitude, max_latitude) && longitude.between?(min_longitude, max_longitude)
end

#to_sObject



24
25
26
# File 'lib/cacheable_kdtree/latitude_longitude_region.rb', line 24

def to_s
  "min lat/long: (#{min_latitude}, #{min_longitude}) max lat/long (#{max_latitude}, #{max_longitude})"
end