类 CRSSTDistance

继承关系

基类

类文档

class CRSSTDistance : public gwm::Distance

计算时空距离的类,由空间距离和时间距离组成

公有类型

typedef arma::vec (*CalculatorType)(const std::unique_ptr<Distance>&, const std::unique_ptr<OneDimDistance>&, arma::uword, double, double)

距离计算的输入参数类型:空间距离,时间距离,计算序号,λ,余弦值的角度(默认为π/2)

公有方法

inline CRSSTDistance()

Construct.

inline explicit CRSSTDistance(const Distance &spatialDistance, const OneDimDistance &temporalDistance, double lambda)
inline explicit CRSSTDistance(const Distance &spatialDistance, const OneDimDistance &temporalDistance, double lambda, double angle)
inline explicit CRSSTDistance(Distance &&spatialDistance, OneDimDistance &&temporalDistance, double lambda)
inline explicit CRSSTDistance(Distance &&spatialDistance, OneDimDistance &&temporalDistance, double lambda, double angle)
inline explicit CRSSTDistance(const std::unique_ptr<Distance> &spatialDistance, const std::unique_ptr<OneDimDistance> &temporalDistance, double lambda)
inline explicit CRSSTDistance(const std::unique_ptr<Distance> &spatialDistance, const std::unique_ptr<OneDimDistance> &temporalDistance, double lambda, double angle)
inline explicit CRSSTDistance(std::unique_ptr<Distance> &&spatialDistance, std::unique_ptr<OneDimDistance> &&temporalDistance, double lambda)
inline explicit CRSSTDistance(std::unique_ptr<Distance> &&spatialDistance, std::unique_ptr<OneDimDistance> &&temporalDistance, double lambda, double angle)
inline CRSSTDistance(const CRSSTDistance &distance)

Copy construct.

参数:

distance -- Refernce to object for copying.

inline virtual std::unique_ptr<Distance> clone() const override

克隆这个 Distance 对象。

返回:

Distance* 重新创建的对象指针

inline virtual DistanceType type() override

返回该对象的类型。

返回:

DistanceType 距离陆良类型

virtual void makeParameter(std::initializer_list<DistParamVariant> plist) override

将输入的数据初始化到mSpatialDistance, mTemporalDistance中,并初始化mParameter

参数:

plist -- 需要是4个数据组成:mat:目标空间点,mat:数据空间点,vec:目标时间戳,vec:数据时间戳

inline virtual arma::vec distance(arma::uword focus) override

利用mCalculator计算距离

参数:

focus -- 第几个数据

返回:

mCalculator 距离计算器,二选一,是已被初始化的

virtual double minDistance() override

用于计算带宽

virtual double maxDistance() override

获取最大距离。

返回:

double 最大距离

inline const std::unique_ptr<Distance> &spatialDistance() const
inline const std::unique_ptr<OneDimDistance> &temporalDistance() const
inline const double lambda()
inline void setLambda(const double lambda)
inline const double angle()
inline void setAngle(const double angle)

公有静态方法

static arma::vec OrthogonalSTDistance(const std::unique_ptr<Distance> &spatial, const std::unique_ptr<OneDimDistance> &temporal, arma::uword focus, double lambda, double angle)

一般情况下的时空距离计算。正交时空距离

参数:
  • spatial -- gwm::Distance类的空间距离。

  • temporal -- gwm::Distance类的时间距离。

  • focus -- 要计算的数据的序号。

  • lambda -- 时空距离的相对权重值,λ控制空间距离,1-λ控制时间距离。

  • angle -- 参数取默认值。

返回:

arma::vec 计算得到的距离向量

static arma::vec ObliqueSTDistance(const std::unique_ptr<Distance> &spatial, const std::unique_ptr<OneDimDistance> &temporal, arma::uword focus, double lambda, double angle)

有angle情况下的时空距离计算,斜交时空距离

参数:
  • spatial -- gwm::Distance类的空间距离。

  • temporal -- gwm::Distance类的时间距离。

  • focus -- 要计算的数据的序号。

  • lambda -- 时空距离的相对权重值,λ控制空间距离,1-λ控制时间距离。

  • angle -- 默认值是π/2,给函数提供angle值,计算斜交时空距离

返回:

arma::vec 计算得到的距离向量

保护属性

std::unique_ptr<Distance> mSpatialDistance = nullptr

指向空间距离的指针

std::unique_ptr<OneDimDistance> mTemporalDistance = nullptr

指向时间距离的指针

double mLambda = 0.0

时间距离的权重

double mAngle = arma::datum::pi / 2

斜交时空距离的角度