def set_fixed_temporal_range(layer: QgsRasterLayer, t_range: QgsDateTimeRange) -> None: """ Set fixed temporal range for raster layer :param layer: raster layer :param t_range: fixed temporal range """ mode = QgsRasterLayerTemporalProperties.ModeFixedTemporalRange tprops: QgsRasterLayerTemporalProperties = layer.temporalProperties() tprops.setMode(mode) if t_range.begin().timeSpec() == 0 or t_range.end().timeSpec() == 0: begin = t_range.begin() end = t_range.end() begin.setTimeSpec(Qt.TimeSpec(1)) end.setTimeSpec(Qt.TimeSpec(1)) t_range = QgsDateTimeRange(begin, end) tprops.setFixedTemporalRange(t_range) tprops.setIsActive(True)
def set_band_based_on_range(layer: QgsRasterLayer, t_range: QgsDateTimeRange) -> int: """ Set raster layer band based on temporal range :param layer: Raster layer :param t_range: temporal range :return: band number """ band_num = 1 tprops: QgsRasterLayerTemporalProperties = layer.temporalProperties() if ( tprops.isVisibleInTemporalRange(t_range) and t_range.begin().isValid() and t_range.end().isValid() ): if tprops.mode() == QgsRasterLayerTemporalProperties.ModeFixedTemporalRange: layer_t_range: QgsDateTimeRange = tprops.fixedTemporalRange() start: datetime.datetime = layer_t_range.begin().toPyDateTime() end: datetime.datetime = layer_t_range.end().toPyDateTime() delta = (end - start) / layer.bandCount() band_num = int((t_range.begin().toPyDateTime() - start) / delta) + 1 set_raster_renderer_to_singleband(layer, band_num) return band_num