admin管理员组文章数量:1334669
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
1 Answer
Reset to default 0You 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)
本文标签: layerHow do I change Provider Time Settings in QgsMeshLayer using pyqgisStack Overflow
版权声明:本文标题:layer - How do I change Provider Time Settings in QgsMeshLayer using pyqgis? - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1742377951a2463540.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论