16#ifndef QGSDISTANCEAREA_H
17#define QGSDISTANCEAREA_H
21#include <QReadWriteLock>
67 bool willUseEllipsoid()
const;
98 bool setEllipsoid(
const QString &ellipsoid );
107 bool setEllipsoid(
double semiMajor,
double semiMinor );
152 double measureArea(
const QgsGeometry &geometry )
const;
163 double measureLength(
const QgsGeometry &geometry )
const;
174 double measurePerimeter(
const QgsGeometry &geometry )
const;
182 double measureLine(
const QVector<QgsPointXY> &points )
const;
206 double measureLineProjected(
const QgsPointXY &p1,
double distance = 1,
double azimuth = M_PI_2,
QgsPointXY *projectedPoint
SIP_OUT =
nullptr )
const;
223 double measurePolygon(
const QVector<QgsPointXY> &points )
const;
242 static QString formatDistance(
double distance,
int decimals,
Qgis::DistanceUnit unit,
bool keepBaseUnit =
false );
254 static QString formatArea(
double area,
int decimals,
Qgis::AreaUnit unit,
bool keepBaseUnit =
false );
276 double convertAreaMeasurement(
double area,
Qgis::AreaUnit toUnits )
const;
288 QgsPointXY computeSpheroidProject(
const QgsPointXY &p1,
double distance = 1,
double azimuth = M_PI_2 )
const;
309 QVector<QVector<QgsPointXY> > geodesicLine(
const QgsPointXY &p1,
const QgsPointXY &p2,
double interval,
bool breakLine =
false )
const;
360 double computePolygonArea(
const QVector<QgsPointXY> &points )
const;
362 double computePolygonFlatArea(
const QVector<QgsPointXY> &points )
const;
368 void computeAreaInit()
const;
386 double mSemiMajor, mSemiMinor, mInvFlattening;
388 mutable std::unique_ptr< geod_geodesic > mGeod;
393 double measureLine(
const QgsCurve *curve )
const;
394 double measurePolygon(
const QgsCurve *curve )
const;
DistanceUnit
Units of distance.
Abstract base class for all geometries.
This class represents a coordinate reference system (CRS).
Contains information about the context in which a coordinate transform is executed.
Custom exception class for Coordinate Reference System related exceptions.
Abstract base class for curved geometry type.
A general purpose distance and area calculator, capable of performing ellipsoid based calculations.
QgsCoordinateReferenceSystem ellipsoidCrs() const
Returns the ellipsoid (destination) spatial reference system.
QgsCoordinateReferenceSystem sourceCrs() const
Returns the source spatial reference system.
double ellipsoidInverseFlattening() const
Returns ellipsoid's inverse flattening.
QString ellipsoid() const
Returns ellipsoid's acronym.
double ellipsoidSemiMajor() const
Returns the ellipsoid's semi major axis.
double ellipsoidSemiMinor() const
Returns ellipsoid's semi minor axis.
A geometry is the spatial representation of a feature.
A class to represent a 2D point.
#define SIP_THROW(name,...)
const QgsCoordinateReferenceSystem & crs
Contains parameters for an ellipsoid.