/usr/include/OTB-5.8/otbGeographicalDistance.h is in libotb-dev 5.8.0+dfsg-3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 | /*=========================================================================
Program: ORFEO Toolbox
Language: C++
Date: $Date$
Version: $Revision$
Copyright (c) Centre National d'Etudes Spatiales. All rights reserved.
See OTBCopyright.txt for details.
Copyright (c) CS Systemes d'information. All rights reserved.
See CSCopyright.txt for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notices for more information.
=========================================================================*/
#ifndef otbGeographicalDistance_h
#define otbGeographicalDistance_h
#include "itkNumericTraits.h"
#include "itkDistanceMetric.h"
namespace otb
{
/**
* \class GeographicalDistance
* \brief Compute the metric distance between two geographical points
*
* Vector length must be at least two, otherwise the Evaluate method
* will throw an exception.
*
* First dimension is assumed to be the longitude, and second
* dimension is assumed to be the latitude.
*
* This distance uses the Haversine formula, which can be found here:
* http://www.movable-type.co.uk/scripts/latlong.html
*
* Please note that the computation makes use of the earth radius in
* meters. Mean radius (6371 km) is used as a default value, but one
* might use local values from spheroid or geoid for better precision.
*
*
* \ingroup OTBProjection
*/
template <class TVector>
class ITK_EXPORT GeographicalDistance :
public itk::Statistics::DistanceMetric<TVector>
{
public:
/** Standard class typedefs. */
typedef GeographicalDistance Self;
typedef itk::Statistics::DistanceMetric<TVector> Superclass;
typedef itk::SmartPointer<Self> Pointer;
typedef itk::SmartPointer<const Self> ConstPointer;
/** Run-time type information (and related methods). */
itkTypeMacro(GeographicalDistance, itk::Statistics::DistanceMetric);
/** Method for creation through the object factory. */
itkNewMacro(Self);
/** Useful typedefs */
typedef TVector VectorType;
/** Gets the distance between the origin point and x. This function
* work with SetOrigin() function */
double Evaluate(const VectorType & x) const ITK_OVERRIDE;
/* Gets the distance between x and y points */
double Evaluate(const VectorType & x, const VectorType & y) const ITK_OVERRIDE;
/** Set the earth radius */
itkSetMacro(EarthRadius, double);
/** Get the earth radius */
itkGetMacro(EarthRadius, double);
protected:
/** Constructor */
GeographicalDistance();
/** Destructor */
~GeographicalDistance() ITK_OVERRIDE{}
/** PrintSelf method */
void PrintSelf(std::ostream& os, itk::Indent indent) const ITK_OVERRIDE;
private:
GeographicalDistance(const Self &); //purposely not implemented
void operator =(const Self&); //purposely not implemented
/** Earth radius */
double m_EarthRadius;
};
} // end namespace otb
#ifndef OTB_MANUAL_INSTANTIATION
# include "otbGeographicalDistance.txx"
#endif
#endif
|