PyQGIS:创建时间属性后在时间控制器中显示时间栅格图层

问题描述 投票:0回答:1

我正在开发一个 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。

qgis pyqgis
1个回答
0
投票

好吧,经过多次尝试,我终于弄清楚发生了什么事。 我的日期(开始和结束)是日期时间类型。需要的是 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)
© www.soinside.com 2019 - 2024. All rights reserved.