SphericalEarth
Value members
Concrete methods
Create an indexed sequence of entries that are specified by a circular area on the Earth and a value.
Create an indexed sequence of entries that are specified by a circular area on the Earth 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 Earth, so we split that entries on two by the date change meridian.
- 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 Earth surface, if the value of distance is greater than a half of the circumference then the whole Earth will be bounded
- lat
a latitude coordinate of the given center point
- lon
a latitude coordinate of the given center point
- value
a value to store in the r-tree
- Returns
a newly created entry
Inherited 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
- Inherited from
- Spherical
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
- Inherited from
- Spherical
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
- Inherited from
- Spherical
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
- Inherited from
- Spherical
Implicits
Implicits
An instance of the DistanceCalculator
type class which use a spherical model of the Earth to calculate distances
that are represented in kilometers.
An instance of the DistanceCalculator
type class which use a spherical model of the Earth to calculate distances
that are represented in kilometers.
It is use 6371.0088 as a value of the mean radius in kilometers, see: https://en.wikipedia.org/wiki/Earth_radius#Mean_radius It allows to get +0.2% accuracy on poles, -0.1% on the equator, and less than ±0.05% on medium latitudes.
If your indexed entries and requests are located in some area that is less than half-sphere than you can use mean radius between min and max radiuses in used range of latitudes to get much better accuracy.
Use the EllipsoidalEarth.radius
function to calculate it for different latitudes.
Precision of 32-bit float number allows to locate points and calculate distances with an error ±0.5 meters.