我正在开发一个 QGIS 插件来转换 hdf5 文件中的数据。将我想要的数据转换为栅格后,我使用 addRasterLayer 将其加载到界面中。那我就做:
temporal_properties = layer.temporalProperties()
temporal_properties.setMode(mode)
# temporal_properties.setIsActive(True)
start = date
end = date
temporal_properties.setFixedTemporalRange(QgsDateTimeRange(start - timedelta(minutes=self.pas_minutes/2), end + timedelta(minutes=self.pas_minutes/2)))
temporal_properties.setIsActive(True)
它工作得很好,但是当我手动激活时间控制器以在适当的时间显示光栅时,它不会显示任何内容。我必须转到图层的属性窗口,单击“应用”才能显示它。一层似乎不太无聊,但我会有很多。
我没有找到任何有用的信息,我想知道我是否忘记了什么或者它是否是QGIS的错误。
(QGIS 3.16 无法使用,3.10 可以使用)。
如果有人可以帮忙...谢谢
尝试在QGIS的控制器中自动显示带有时间的栅格。我尝试过刷新画布功能,更新QGIS控制器的TemporalRange。
好吧,经过多次尝试,我终于弄清楚发生了什么事。 我的日期(开始和结束)是日期时间类型。需要的是 QDateTime。所以我把他们变成了好类型。
仍然有问题。结果我的 QDateTime 不是 UTC。我添加了这个标签然后就ok了。这给出了类似的东西:
start = date
end = date
print("date layer",date)
start = start - timedelta(minutes=pas/2)
end = end + timedelta(minutes=pas/2)
# Définir la date de début et fin
date_debut = QDateTime()
date_debut.setTime(QTime(int(start.hour),int(start.minute),int(start.second)))
date_debut.setDate(QDate(int(start.year),int(start.month),int(start.day)))
date_debut.setTimeSpec(Qt.UTC)
#print("date_debut",date_debut,type(date_debut))
date_fin = QDateTime()
date_fin.setDate(QDate(int(end.year),int(end.month),int(end.day)))
date_fin.setTime(QTime(int(end.hour),int(end.minute),int(end.second)))
date_fin.setTimeSpec(Qt.UTC)
mon_range = QgsDateTimeRange(date_debut, date_fin,includeEnd = True)
layer.temporalProperties().setIsActive(True)
layer.temporalProperties().setFixedTemporalRange(mon_range)