xapian-core  1.4.27
Public Member Functions | List of all members
Xapian::LatLongMetric Class Referenceabstract

Base class for calculating distances between two lat/long coordinates. More...

#include <geospatial.h>

+ Inheritance diagram for Xapian::LatLongMetric:

Public Member Functions

virtual ~LatLongMetric ()
 Destructor. More...
 
virtual double pointwise_distance (const LatLongCoord &a, const LatLongCoord &b) const =0
 Return the distance between two coordinates, in metres. More...
 
double operator() (const LatLongCoords &a, const LatLongCoords &b) const
 Return the distance between two coordinate lists, in metres. More...
 
double operator() (const LatLongCoords &a, const std::string &b) const
 Return the distance between two coordinate lists, in metres. More...
 
double operator() (const LatLongCoords &a, const char *b_ptr, size_t b_len) const
 Return the distance between two coordinate lists, in metres. More...
 
virtual LatLongMetricclone () const =0
 Clone the metric. More...
 
virtual std::string name () const =0
 Return the full name of the metric. More...
 
virtual std::string serialise () const =0
 Serialise object parameters into a string. More...
 
virtual LatLongMetricunserialise (const std::string &serialised) const =0
 Create object given string serialisation returned by serialise(). More...
 

Detailed Description

Base class for calculating distances between two lat/long coordinates.

Experimental - see https://xapian.org/docs/deprecation#experimental-features

Definition at line 303 of file geospatial.h.

Constructor & Destructor Documentation

◆ ~LatLongMetric()

LatLongMetric::~LatLongMetric ( )
virtual

Destructor.

Definition at line 38 of file latlong_metrics.cc.

Member Function Documentation

◆ clone()

virtual LatLongMetric* Xapian::LatLongMetric::clone ( ) const
pure virtual

Clone the metric.

Implemented in Xapian::GreatCircleMetric.

Referenced by Xapian::LatLongDistancePostingSource::clone().

◆ name()

virtual std::string Xapian::LatLongMetric::name ( ) const
pure virtual

Return the full name of the metric.

This is used when serialising and unserialising metrics; for example, for performing remote searches.

If the subclass is in a C++ namespace, the namespace should be included in the name, using "::" as a separator. For example, for a LatLongMetric subclass called "FooLatLongMetric" in the "Xapian" namespace the result of this call should be "Xapian::FooLatLongMetric".

Implemented in Xapian::GreatCircleMetric.

Referenced by Xapian::Registry::Internal::add_defaults(), Xapian::Registry::register_lat_long_metric(), and Xapian::LatLongDistancePostingSource::serialise().

◆ operator()() [1/3]

double LatLongMetric::operator() ( const LatLongCoords a,
const LatLongCoords b 
) const

Return the distance between two coordinate lists, in metres.

The distance between the coordinate lists is defined to be the minimum pairwise distance between coordinates in the lists.

Exceptions
InvalidArgumentErroreither of the lists is empty.
Parameters
aThe first coordinate list.
bThe second coordinate list.

Definition at line 43 of file latlong_metrics.cc.

References Xapian::LatLongCoords::begin(), Xapian::LatLongCoords::empty(), and Xapian::LatLongCoords::end().

◆ operator()() [2/3]

double Xapian::LatLongMetric::operator() ( const LatLongCoords a,
const std::string &  b 
) const
inline

Return the distance between two coordinate lists, in metres.

One of the coordinate lists is supplied in serialised form.

The distance between the coordinate lists is defined to be the minimum pairwise distance between coordinates in the lists.

Exceptions
InvalidArgumentErroreither of the lists is empty.
Parameters
aThe first coordinate list.
bThe second coordinate list, in serialised form.

Definition at line 337 of file geospatial.h.

References name, and Xapian::LatLongCoords::size().

◆ operator()() [3/3]

double LatLongMetric::operator() ( const LatLongCoords a,
const char *  b_ptr,
size_t  b_len 
) const

Return the distance between two coordinate lists, in metres.

One of the coordinate lists is supplied in serialised form.

The distance between the coordinate lists is defined to be the minimum pairwise distance between coordinates in the lists.

Exceptions
InvalidArgumentErroreither of the lists is empty.
Parameters
aThe first coordinate list.
b_ptrThe start of the serialised form of the second coordinate list.
b_lenThe length of the serialised form of the second coordinate list.

Definition at line 72 of file latlong_metrics.cc.

References Xapian::LatLongCoords::begin(), Xapian::LatLongCoords::empty(), Xapian::LatLongCoords::end(), and Xapian::LatLongCoord::unserialise().

◆ pointwise_distance()

virtual double Xapian::LatLongMetric::pointwise_distance ( const LatLongCoord a,
const LatLongCoord b 
) const
pure virtual

Return the distance between two coordinates, in metres.

Implemented in Xapian::GreatCircleMetric.

◆ serialise()

virtual std::string Xapian::LatLongMetric::serialise ( ) const
pure virtual

Serialise object parameters into a string.

The serialised parameters should represent the configuration of the metric.

Implemented in Xapian::GreatCircleMetric.

Referenced by Xapian::LatLongDistancePostingSource::serialise().

◆ unserialise()

virtual LatLongMetric* Xapian::LatLongMetric::unserialise ( const std::string &  serialised) const
pure virtual

Create object given string serialisation returned by serialise().

Parameters
serialisedA serialised instance of this LatLongMetric subclass.

Implemented in Xapian::GreatCircleMetric.

Referenced by DEFINE_TESTCASE(), and Xapian::LatLongDistancePostingSource::unserialise_with_registry().


The documentation for this class was generated from the following files: