Spherical

trait Spherical
class Object
trait Matchable
class Any

Value members

Concrete methods

Creates an instance of the DistanceCalculator type class which use the haversine formula to determine the great-circle distance between a point and a rounding box of R-tree on a sphere with specified radius given their longitudes and latitudes.

Creates an instance of the DistanceCalculator type class which use the haversine formula to determine the great-circle distance between a point and a rounding box of R-tree on a sphere with specified radius given their longitudes and latitudes.

To simplify creation of entries and queries X-axis is used for latitudes an and Y-axis for longitudes.

Calculations was borrowed from the geoflatbush project of Vladimir Agafonkin: https://github.com/mourner/geoflatbush/blob/master/index.mjs

def entries[A](lat: Float, lon: Float, distance: Float, value: A, radius: Double): IndexedSeq[RTreeEntry[A]]

Create an indexed sequence of entries that are specified by a circular area on the sphere and a value.

Create an indexed sequence of entries that are specified by a circular area on the sphere and a value.

Sequence of entries required for case when the circle is crossed by the anti-meridian because the RTree which use bounding box form longitudes and latitudes for indexing doesn't support wrapping of longitudes over the sphere, so we split that entries on two by the date change meridian.

Used formula with description is here: http://janmatuschek.de/LatitudeLongitudeBoundingCoordinates#Longitude

Type Params
A

a type of the value being put in the r-tree

Value Params
distance

a distance, from the center point to borders of the circular area on the sphere surface, if the value of distance is greater than a half of the circumference then a whole sphere will be bounded

lat

a latitude coordinate of the given center point

lon

a latitude coordinate of the given center point

radius

a value of radius to calculate

value

a value to store in the r-tree

Returns

a newly created entry

def entry[A](lat: Float, lon: Float, value: A): RTreeEntry[A]

Create an entry specified by a point with spherical coordinates and a value.

Create an entry specified by a point with spherical coordinates and a value.

Type Params
A

a type of the value being put in the r-tree

Value Params
lat

a latitude coordinate of the given point

lon

a latitude coordinate of the given point

value

a value to store in the r-tree

Returns

a newly created entry

def entry[A](minLat: Float, minLon: Float, maxLat: Float, maxLon: Float, value: A): RTreeEntry[A]

Create an entry specified by a rectangle with spherical coordinates and a value.

Create an entry specified by a rectangle with spherical coordinates and a value.

Type Params
A

a type of the value being put in the r-tree

Value Params
maxLat

a latitude coordinate of the right top corner

maxLon

a latitude coordinate of the right top corner

minLat

a latitude coordinate of the left bottom corner

minLon

a latitude coordinate of the left bottom corner

value

a value to store in the r-tree

Returns

a newly created entry