This repository has been archived by the owner on Jun 3, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathmeshdataprovider.py
91 lines (67 loc) · 2.41 KB
/
meshdataprovider.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
# -*- coding: utf-8 -*-
from qgis.core import *
from PyQt4.QtCore import *
import numpy
class MeshDataProvider(QgsDataProvider):
"""base class for mesh data providers, please note that this class
is called in a multithreaded context"""
PROVIDER_KEY = "mesh_provider"
dataChanged = pyqtSignal()
xmlLoaded = pyqtSignal()
def __init__(self, uri):
self.__uri = QgsDataSourceURI(uri)
QgsDataProvider.__init__(self, uri)
self.__didx = 0
self.__dates = []
def name(self):
return MeshDataProvider.PROVIDER_KEY
def crs(self):
assert(self.isValid())
return QgsCoordinateReferenceSystem(self.__uri.param('crs'))
def description(self):
return "mesh data provider"
def isValid(self):
return self.__uri.hasParam('crs')
def nodeCoord(self):
"""return a list of coordinates"""
return numpy.empty((0,3), dtype=numpy.float32)
def triangles(self):
"""return a list of triangles described by node indices,
watch out: indices start at zero"""
return numpy.empty((0,3), dtype=numpy.int32)
def setDates(self, dates):
"""set list of dates in case node values vary with time"""
self.__dates = dates
def dates(self):
"""return a list of dates in case node values vary with time"""
return self.__dates
def setDate(self, didx):
"""in case the node values can vary"""
self.__didx = didx
self.dataChanged.emit()
def date(self):
return self.__didx
def valueAtElement(self):
return False
def nodeValues(self):
"""return values at nodes"""
return numpy.empty((0,), dtype=numpy.float32)
def elementValues(self):
"""return values at elements"""
return numpy.empty((0,), dtype=numpy.float32)
def dataSourceUri(self):
return self.__uri.uri()
def uri(self):
return self.__uri
def readXml(self, node):
element = node.toElement()
self.__uri = QgsDataSourceURI(element.attribute("uri"))
self.__didx = int(element.attribute("dateIndex"))
self.xmlLoaded.emit()
return True
def writeXml(self, node, doc):
element = node.toElement()
element.setAttribute("name", self.name())
element.setAttribute("uri", self.dataSourceUri())
element.setAttribute("dateIndex", self.__didx)
return True