18 #ifndef QGSCOORDINATEREFERENCESYSTEM_H
19 #define QGSCOORDINATEREFERENCESYSTEM_H
22 #include "qgis_core.h"
29 #include <QReadWriteLock>
30 #include <QExplicitlySharedDataPointer>
36 #include "qgsconfig.h"
42 class QgsCoordinateReferenceSystemPrivate;
49 typedef struct PJconsts
PJ;
51 #if PROJ_VERSION_MAJOR>=8
216 Q_PROPERTY(
bool isGeographic READ isGeographic )
217 Q_PROPERTY( QString authid READ authid )
218 Q_PROPERTY( QString description READ description )
276 operator QVariant()
const
278 return QVariant::fromValue( *
this );
287 static QList< long > validSrsIds();
360 Q_DECL_DEPRECATED
bool createFromId(
long id, CrsType type = PostgisCrsId )
SIP_DEPRECATED;
374 bool createFromOgcWmsCrs(
const QString &
crs );
385 Q_DECL_DEPRECATED
bool createFromSrid(
long srid )
SIP_DEPRECATED;
399 bool createFromWkt(
const QString &wkt );
413 bool createFromSrsId(
long srsId );
438 Q_DECL_DEPRECATED
bool createFromProj4(
const QString &projString )
SIP_DEPRECATED;
468 bool createFromProj(
const QString &projString,
bool identify =
true );
470 bool createFromProj(
const QString &projString );
488 bool createFromString(
const QString &definition );
507 bool createFromUserInput(
const QString &definition );
522 bool isValid() const;
569 bool readXml( const QDomNode &node );
577 bool writeXml( QDomNode &node, QDomDocument &doc ) const;
606 long postgisSrid() const;
620 QString authid() const;
629 QString description() const;
644 QString userFriendlyIdentifier(
Qgis::CrsIdentifierType type =
Qgis::CrsIdentifierType::MediumString ) const;
652 QString projectionAcronym() const;
660 QString ellipsoidAcronym() const;
673 QString toWkt(
Qgis::CrsWktVariant variant =
Qgis::CrsWktVariant::Wkt1Gdal,
bool multiline = false,
int indentationWidth = 4 ) const;
701 QString toProj() const;
708 Qgis::CrsType type() const;
715 bool isDeprecated() const;
721 bool isGeographic() const;
731 bool isDynamic() const;
783 void setCoordinateEpoch(
double epoch );
808 double coordinateEpoch() const;
846 QList< Qgis::CrsAxisDirection > axisOrdering()
const;
848 SIP_PYOBJECT axisOrdering() const
SIP_TYPEHINT( List[
Qgis.CrsAxisDirection] );
852 const QList<
Qgis::CrsAxisDirection > cppRes = sipCpp->axisOrdering();
854 PyObject *l = PyList_New( cppRes.size() );
860 for (
int i = 0; i < cppRes.size(); ++i )
862 PyObject *eobj = sipConvertFromEnum(
static_cast<int>( cppRes.at( i ) ),
863 sipType_Qgis_CrsAxisDirection );
870 PyList_SetItem( l, i, eobj );
907 QString toOgcUri()
const;
927 void updateDefinition();
932 void setValidationHint(
const QString &html );
937 QString validationHint()
const;
945 static int syncDatabase();
1020 QString geographicCrsAuthId()
const;
1023 SIP_PYOBJECT __repr__();
1025 const QString
str = sipCpp->isValid() ? QStringLiteral(
"<QgsCoordinateReferenceSystem: %1%2>" ).arg( !sipCpp->authid().isEmpty() ? sipCpp->authid() : sipCpp->toWkt(
Qgis::CrsWktVariant::Preferred ),
1026 std::isfinite( sipCpp->coordinateEpoch() ) ? QStringLiteral(
" @ %1" ).arg( sipCpp->coordinateEpoch() ) : QString() )
1027 : QStringLiteral(
"<QgsCoordinateReferenceSystem: invalid>" );
1028 sipRes = PyUnicode_FromString(
str.toUtf8().constData() );
1043 PJ *projObject()
const;
1065 bool createFromProjObject(
PJ *
object );
1074 Q_DECL_DEPRECATED
static QStringList recentProjections()
SIP_DEPRECATED;
1102 Q_DECL_DEPRECATED static
void clearRecentCoordinateReferenceSystems()
SIP_DEPRECATED;
1115 static void invalidateCache(
bool disableCache =
false );
1124 static void invalidateCache(
bool disableCache
SIP_PYARGREMOVE =
false );
1137 static QString projFromSrsId(
int srsId );
1144 void setProjString(
const QString &projString );
1149 bool setWktString(
const QString &wkt );
1157 typedef QMap<QString, QString> RecordMap;
1166 RecordMap getRecord(
const QString &sql );
1178 static long getRecordCount();
1180 bool loadFromAuthCode(
const QString &auth,
const QString &code );
1185 static QList< long > userSrsIds();
1194 long matchToUserCrs()
const;
1200 bool loadFromDatabase(
const QString &db,
const QString &expression,
const QString &value );
1202 bool createFromWktInternal(
const QString &wkt,
const QString &description );
1204 QExplicitlySharedDataPointer<QgsCoordinateReferenceSystemPrivate> d;
1206 QString mValidationHint;
1213 static void removeFromCacheObjectsBelongingToCurrentThread(
PJ_CONTEXT *pj_context );
1220 static bool sDisableSrIdCache;
1221 static bool sDisableOgcCache;
1222 static bool sDisableProjCache;
1223 static bool sDisableWktCache;
1224 static bool sDisableSrsIdCache;
1225 static bool sDisableStringCache;
1228 static const QHash< QString, QgsCoordinateReferenceSystem > &stringCache();
1229 static const QHash< QString, QgsCoordinateReferenceSystem > &projCache();
1230 static const QHash< QString, QgsCoordinateReferenceSystem > &ogcCache();
1231 static const QHash< QString, QgsCoordinateReferenceSystem > &wktCache();
1232 static const QHash< long, QgsCoordinateReferenceSystem > &srsIdCache();
1233 static const QHash< long, QgsCoordinateReferenceSystem > &srIdCache();
1235 friend class TestQgsCoordinateReferenceSystem;
1242 bool createFromPostgisSrid(
const long id );
1251 QString mySummary( QStringLiteral(
"\n\tSpatial Reference System:" ) );
1252 mySummary += QLatin1String(
"\n\t\tDescription : " );
1259 mySummary += QLatin1String(
"Undefined" );
1261 mySummary += QLatin1String(
"\n\t\tProjection : " );
1268 mySummary += QLatin1String(
"Undefined" );
1271 mySummary += QLatin1String(
"\n\t\tEllipsoid : " );
1278 mySummary += QLatin1String(
"Undefined" );
1281 mySummary += QLatin1String(
"\n\t\tProjString : " );
1282 if ( !r.
toProj().isNull() )
1288 mySummary += QLatin1String(
"Undefined" );
1291 return os << mySummary.toLocal8Bit().data() << std::endl;
The Qgis class provides global constants for use throughout the application.
DistanceUnit
Units of distance.
CrsDefinitionFormat
CRS definition formats.
@ Wkt
WKT format (always recommended over proj string format)
@ Preferred
Preferred format, matching the most recent WKT ISO standard. Currently an alias to WKT2_2019,...
A registry for known coordinate reference system (CRS) definitions, including any user-defined CRSes.
This class represents a coordinate reference system (CRS).
QString toProj() const
Returns a Proj string representation of this CRS.
QString ellipsoidAcronym() const
Returns the ellipsoid acronym for the ellipsoid used by the CRS.
QString projectionAcronym() const
Returns the projection acronym for the projection used by the CRS.
CrsType
Enumeration of types of IDs accepted in createFromId() method.
@ InternalCrsId
Internal ID used by QGIS in the local SQLite database.
@ PostgisCrsId
SRID used in PostGIS. DEPRECATED – DO NOT USE.
Contains information about a datum ensemble.
Custom exception class which is raised when an operation is not supported.
Point geometry type, with support for z-dimension and m-values.
Used to create and store a proj context object, correctly freeing the context upon destruction.
Contains information about a PROJ operation.
contains various cartographic properties, such as scale factors, angular distortion and meridian conv...
A rectangle specified with double values.
Unique pointer for sqlite3 databases, which automatically closes the database when the pointer goes o...
#define SIP_TYPEHINT(type)
#define SIP_THROW(name,...)
void * OGRSpatialReferenceH
bool CORE_EXPORT operator<(const QgsCoordinateReferenceSystem &c1, const QgsCoordinateReferenceSystem &c2)
bool CORE_EXPORT operator>(const QgsCoordinateReferenceSystem &c1, const QgsCoordinateReferenceSystem &c2)
bool CORE_EXPORT operator<=(const QgsCoordinateReferenceSystem &c1, const QgsCoordinateReferenceSystem &c2)
std::ostream & operator<<(std::ostream &os, const QgsCoordinateReferenceSystem &r)
Output stream operator.
struct projCtx_t PJ_CONTEXT
bool CORE_EXPORT operator>=(const QgsCoordinateReferenceSystem &c1, const QgsCoordinateReferenceSystem &c2)
void(* CUSTOM_CRS_VALIDATION)(QgsCoordinateReferenceSystem &)
Q_DECLARE_METATYPE(QgsDatabaseQueryLogEntry)
const QgsCoordinateReferenceSystem & crs