QGIS API Documentation  3.17.0-Master (8af46bc54f)
qgsmeshlayertemporalproperties.cpp
Go to the documentation of this file.
1 /***************************************************************************
2  qgsmeshlayertemporalproperties.cpp
3  -----------------------
4  begin : March 2020
5  copyright : (C) 2020 by Vincent Cloarec
6  email : vcloarec at gmail dot com
7  ***************************************************************************/
8 
9 /***************************************************************************
10  * *
11  * This program is free software; you can redistribute it and/or modify *
12  * it under the terms of the GNU General Public License as published by *
13  * the Free Software Foundation; either version 2 of the License, or *
14  * (at your option) any later version. *
15  * *
16  ***************************************************************************/
17 
20 #include "qgsproject.h"
21 #include "qgsprojecttimesettings.h"
22 
24  QgsMapLayerTemporalProperties( parent, enabled )
25 {}
26 
27 QDomElement QgsMeshLayerTemporalProperties::writeXml( QDomElement &element, QDomDocument &doc, const QgsReadWriteContext &context )
28 {
29  Q_UNUSED( context );
30 
31  QDomElement temporalElement = doc.createElement( QStringLiteral( "temporal" ) );
32  temporalElement.setAttribute( QStringLiteral( "temporal-active" ), isActive() ? true : false );
33  temporalElement.setAttribute( QStringLiteral( "reference-time" ), mReferenceTime.toTimeSpec( Qt::UTC ).toString( Qt::ISODate ) );
34  temporalElement.setAttribute( QStringLiteral( "start-time-extent" ), mTimeExtent.begin().toTimeSpec( Qt::UTC ).toString( Qt::ISODate ) );
35  temporalElement.setAttribute( QStringLiteral( "end-time-extent" ), mTimeExtent.end().toTimeSpec( Qt::UTC ).toString( Qt::ISODate ) );
36  temporalElement.setAttribute( QStringLiteral( "matching-method" ), mMatchingMethod );
37 
38  element.appendChild( temporalElement );
39 
40  return element;
41 }
42 
43 bool QgsMeshLayerTemporalProperties::readXml( const QDomElement &element, const QgsReadWriteContext &context )
44 {
45  Q_UNUSED( context );
46 
47  QDomElement temporalElement = element.firstChildElement( QStringLiteral( "temporal" ) );
48  bool active = temporalElement.attribute( QStringLiteral( "temporal-active" ) ).toInt();
49  setIsActive( active );
50 
51  mReferenceTime = QDateTime::fromString( temporalElement.attribute( QStringLiteral( "reference-time" ) ), Qt::ISODate );
52 
53  if ( temporalElement.hasAttribute( QStringLiteral( "start-time-extent" ) )
54  && temporalElement.hasAttribute( QStringLiteral( "end-time-extent" ) ) )
55  {
56  QDateTime start = QDateTime::fromString( temporalElement.attribute( QStringLiteral( "start-time-extent" ) ), Qt::ISODate );
57  QDateTime end = QDateTime::fromString( temporalElement.attribute( QStringLiteral( "end-time-extent" ) ), Qt::ISODate );
58  mTimeExtent = QgsDateTimeRange( start, end );
59  }
60 
62  temporalElement.attribute( QStringLiteral( "matching-method" ) ).toInt() );
63 
64  return true;
65 }
66 
68 {
69  const QgsMeshDataProviderTemporalCapabilities *temporalCapabilities =
70  static_cast<const QgsMeshDataProviderTemporalCapabilities *>( capabilities );
71 
72  setIsActive( temporalCapabilities->hasTemporalCapabilities() );
73  mReferenceTime = temporalCapabilities->referenceTime();
74 
75  if ( mReferenceTime.isValid() )
76  mTimeExtent = temporalCapabilities->timeExtent();
77 }
78 
80 {
81  return mTimeExtent;
82 }
83 
85 {
86  return mTimeExtent;
87 }
88 
90 {
91  return mReferenceTime;
92 }
93 
95 {
96  mReferenceTime = referenceTime;
97  if ( capabilities )
98  {
99  const QgsMeshDataProviderTemporalCapabilities *tempCap = static_cast<const QgsMeshDataProviderTemporalCapabilities *>( capabilities );
100  mTimeExtent = tempCap->timeExtent( referenceTime );
101  }
102  else
103  mTimeExtent = QgsDateTimeRange( referenceTime, referenceTime );
104 }
105 
107 {
108  return mMatchingMethod;
109 }
110 
112 {
113  mMatchingMethod = matchingMethod;
114 }
The class is used as a container of context for various read/write operations on other objects...
QgsDateTimeRange timeExtent() const
Returns the time extent using the internal reference time and the first and last times available from...
QDomElement writeXml(QDomElement &element, QDomDocument &doc, const QgsReadWriteContext &context) override
Writes the properties to a DOM element, to be used later with readXml().
Base class for all map layer types.
Definition: qgsmaplayer.h:83
QDateTime referenceTime() const
Returns the reference time.
Class for handling properties relating to a mesh data provider&#39;s temporal capabilities.
bool isActive() const
Returns true if the temporal property is active.
QgsMeshLayerTemporalProperties(QObject *parent=nullptr, bool enabled=true)
Constructor for QgsMeshLayerTemporalProperties.
MatchingTemporalDatasetMethod
Method for selection of temporal mesh dataset from a range time.
QgsDateTimeRange calculateTemporalExtent(QgsMapLayer *layer) const override
Attempts to calculate the overall temporal extent for the specified layer, using the settings defined...
Base class for handling properties relating to a data provider&#39;s temporal capabilities.
QDateTime referenceTime() const
Returns the reference time.
void setMatchingMethod(const QgsMeshDataProviderTemporalCapabilities::MatchingTemporalDatasetMethod &matchingMethod)
Sets the method used to match dataset from temporal capabilities.
void setReferenceTime(const QDateTime &referenceTime, const QgsDataProviderTemporalCapabilities *capabilities)
Sets the reference time and update the time extent from the temporal capabilities, if the temporal capabilities is null, set a void time extent (reference time to reference time)
Base class for storage of map layer temporal properties.
QgsDateTimeRange timeExtent() const
Returns the time extent.
void setDefaultsFromDataProviderTemporalCapabilities(const QgsDataProviderTemporalCapabilities *capabilities) override
Sets the layers temporal settings to appropriate defaults based on a provider&#39;s temporal capabilities...
void setIsActive(bool active)
Sets whether the temporal property is active.
bool hasTemporalCapabilities() const
Returns true if the provider has temporal capabilities available.
bool readXml(const QDomElement &element, const QgsReadWriteContext &context) override
Reads temporal properties from a DOM element previously written by writeXml().
QgsMeshDataProviderTemporalCapabilities::MatchingTemporalDatasetMethod matchingMethod() const
Returns the method used to match dataset from temporal capabilities.