layer - How do I change Provider Time Settings in QgsMeshLayer using pyqgis? - Stack Overflow

I am working with QgsMeshLayer and I want to change the provider time settings to seconds (by default i

I am working with QgsMeshLayer and I want to change the provider time settings to seconds (by default it's hours).

This is what I have tried, but provider time settings are still set to hours.

from qgis.core import (
    QgsProject,
    QgsMeshLayer,
    QgsCoordinateReferenceSystem,
    QgsLayerMetadata,
)
from PyQt5.QtCore import QDateTime

# Load the mesh layer
mesh_layer = QgsMeshLayer(
    path,
    "Mesh Layer",
    "mdal",
)


if isinstance(mesh_layer, QgsMeshLayer):
    # Access temporal properties
    temporal_properties = mesh_layer.temporalProperties()

    # Set reference time
    reference_time = QDateTime.fromSecsSinceEpoch(0)  # Epoch time: "1970-01-01T00:00:00Z"
    capabilities = mesh_layer.dataProvider().temporalCapabilities()
    if capabilities:
        print("Temporal capabilities retrieved successfully.")
        temporal_properties.setReferenceTime(reference_time, capabilities)
        print(f"Reference time set to: {temporal_properties.referenceTime().toString()}")
    
    # Access and modify metadata to enforce seconds
    metadata = mesh_layer.metadata()
    metadata.setAbstract("Time units: seconds")
    mesh_layer.setMetadata(metadata)

    # Refresh the mesh layer
    mesh_layer.triggerRepaint()
    QgsProject.instance().addMapLayer(mesh_layer)
    print("Mesh layer updated: Time units set to seconds and layer refreshed.")
else:
    print("Layer is not a valid mesh layer.")

I am working with QgsMeshLayer and I want to change the provider time settings to seconds (by default it's hours).

This is what I have tried, but provider time settings are still set to hours.

from qgis.core import (
    QgsProject,
    QgsMeshLayer,
    QgsCoordinateReferenceSystem,
    QgsLayerMetadata,
)
from PyQt5.QtCore import QDateTime

# Load the mesh layer
mesh_layer = QgsMeshLayer(
    path,
    "Mesh Layer",
    "mdal",
)


if isinstance(mesh_layer, QgsMeshLayer):
    # Access temporal properties
    temporal_properties = mesh_layer.temporalProperties()

    # Set reference time
    reference_time = QDateTime.fromSecsSinceEpoch(0)  # Epoch time: "1970-01-01T00:00:00Z"
    capabilities = mesh_layer.dataProvider().temporalCapabilities()
    if capabilities:
        print("Temporal capabilities retrieved successfully.")
        temporal_properties.setReferenceTime(reference_time, capabilities)
        print(f"Reference time set to: {temporal_properties.referenceTime().toString()}")
    
    # Access and modify metadata to enforce seconds
    metadata = mesh_layer.metadata()
    metadata.setAbstract("Time units: seconds")
    mesh_layer.setMetadata(metadata)

    # Refresh the mesh layer
    mesh_layer.triggerRepaint()
    QgsProject.instance().addMapLayer(mesh_layer)
    print("Mesh layer updated: Time units set to seconds and layer refreshed.")
else:
    print("Layer is not a valid mesh layer.")

Share Improve this question asked Nov 20, 2024 at 6:11 MoezMoez 31 bronze badge
Add a comment  | 

1 Answer 1

Reset to default 0

You can change the temporal unit via the QgsMeshLayerDataProvider, which has a setTemporalUnit method. Documentation

from qgis.core import QgsProject, Qgis

layer_name = 'TIN Mesh'
mesh_layer = QgsProject.instance().mapLayersByName(layer_name)[0]
mesh_layer.dataProvider().setTemporalUnit(Qgis.TemporalUnit.Seconds)

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1742377951a4432567.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信