-
-
Notifications
You must be signed in to change notification settings - Fork 2.6k
/
Copy pathGDALRasterBand.cls
241 lines (217 loc) · 8.05 KB
/
GDALRasterBand.cls
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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
'*****************************************************************************
' $Id$
'
' Project: GDAL VB6 Bindings
' Purpose: VB6 GDALRasterBand Shadow Class.
' Author: Frank Warmerdam, warmerdam@pobox.com
'
'*****************************************************************************
' Copyright (c) 2005, Frank Warmerdam <warmerdam@pobox.com>
'
' Permission is hereby granted, free of charge, to any person obtaining a
' copy of this software and associated documentation files (the "Software"),
' to deal in the Software without restriction, including without limitation
' the rights to use, copy, modify, merge, publish, distribute, sublicense,
' and/or sell copies of the Software, and to permit persons to whom the
' Software is furnished to do so, subject to the following conditions:
'
' The above copyright notice and this permission notice shall be included
' in all copies or substantial portions of the Software.
'
' THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
' OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
' FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
' THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
' LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
' FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
' DEALINGS IN THE SOFTWARE.
'*****************************************************************************
'
' $Log$
' Revision 1.5 2005/08/04 20:53:51 fwarmerdam
' convert to DOS text mode
'
' Revision 1.4 2005/04/08 14:36:25 fwarmerdam
' applied owned flag, and auto-destroy
'
' Revision 1.3 2005/04/06 22:30:39 fwarmerdam
' fixed some color table stuff, added headers
'
'
VERSION 1.0 CLASS
BEGIN
MultiUse = -1 'True
Persistable = 0 'NotPersistable
DataBindingBehavior = 0 'vbNone
DataSourceBehavior = 0 'vbNone
MTSTransactionMode = 0 'NotAnMTSObject
END
Attribute VB_Name = "GDALRasterBand"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False
' ----------------------------------------------------------------------------
Option Explicit
Private obj As Long
Public XSize As Long
Public YSize As Long
Public BlockXSize As Long
Public BlockYSize As Long
Public DataType As Long
' ----------------------------------------------------------------------------
Private Sub Class_Initialize()
obj = 0
XSize = 0
YSize = 0
BlockXSize = 0
BlockYSize = 0
DataType = 0
End Sub
' ----------------------------------------------------------------------------
Public Sub CInit(obj_in As Long)
obj = obj_in
XSize = GDALCore.GDALGetRasterBandXSize(obj)
YSize = GDALCore.GDALGetRasterBandYSize(obj)
Call GDALCore.GDALGetBlockSize(obj, BlockXSize, BlockYSize)
DataType = GDALCore.GDALGetRasterDataType(obj)
End Sub
' ----------------------------------------------------------------------------
Public Function GetMinimum()
Dim Success As Long
If obj <> 0 Then
GetMinimum = GDALCore.GDALGetRasterMinimum(obj, Success)
End If
End Function
' ----------------------------------------------------------------------------
Public Function GetMaximum()
Dim Success As Long
If obj <> 0 Then
GetMaximum = GDALCore.GDALGetRasterMaximum(obj, Success)
End If
End Function
' ----------------------------------------------------------------------------
Public Function GetOffset() As Double
Dim Success As Long
If obj <> 0 Then
GetOffset = GDALCore.GDALGetRasterOffset(obj, Success)
End If
End Function
' ----------------------------------------------------------------------------
Public Function SetOffset(ByVal Offset As Double) As Long
If obj <> 0 Then
SetOffset = GDALCore.GDALSetRasterOffset(obj, Offset)
Else
SetOffset = GDALCore.ObjIsNULLError
End If
End Function
' ----------------------------------------------------------------------------
Public Function GetScale() As Double
Dim Success As Long
If obj <> 0 Then
GetScale = GDALCore.GDALGetRasterScale(obj, Success)
End If
End Function
' ----------------------------------------------------------------------------
Public Function SetScale(ByVal NewScale As Double) As Long
If obj <> 0 Then
SetScale = GDALCore.GDALSetRasterScale(obj, NewScale)
Else
SetScale = GDALCore.ObjIsNULLError
End If
End Function
' ----------------------------------------------------------------------------
Public Function GetNoDataValue(ByRef Success As Long)
If obj <> 0 Then
GetNoDataValue = GDALCore.GDALGetRasterNoDataValue(obj, Success)
Else
Success = 0
End If
End Function
' ----------------------------------------------------------------------------
Public Function SetNoDataValue(ByVal NoDataValue As Double)
If obj <> 0 Then
SetNoDataValue = GDALCore.GDALSetRasterNoDataValue(obj, NoDataValue)
Else
SetNoDataValue = GDALCore.ObjIsNULLError
End If
End Function
' ----------------------------------------------------------------------------
Public Function RasterIO _
(ByVal RWFlag As Long, _
ByVal XOff As Long, ByVal YOff As Long, _
ByVal XSize As Long, ByVal YSize As Long, _
DataArray As Variant) As Long
If obj <> 0 Then
Dim BufXSize, BufYSize, RawPtr, DataType As Long
RawPtr = GDALCore.SafeArrayToPtr(DataArray, DataType, _
BufXSize, BufYSize)
If RawPtr <> 0 Then
RasterIO = GDALCore.GDALRasterIO( _
obj, RWFlag, XOff, YOff, XSize, YSize, _
RawPtr, BufXSize, BufYSize, DataType, 0, 0)
Else
RasterIO = 3 ' CE_Failure
End If
Else
RasterIO = GDALCore.ObjIsNULLError
End If
End Function
' ----------------------------------------------------------------------------
Public Function GetMetadata(Domain As String) As Variant
If obj <> 0 Then
GetMetadata = GDALCore.GetMetadata(obj, Domain)
End If
End Function
' ----------------------------------------------------------------------------
Public Function SetMetadata(MetaData As Variant, Domain As String) As Variant
If obj <> 0 Then
SetMetadata = GDALCore.SetMetadata(obj, MetaData, Domain)
Else
SetMetadata = GDALCore.ObjIsNULLError
End If
End Function
' ----------------------------------------------------------------------------
Public Function GetMetadataItem(Name As String, Domain As String) As String
If obj <> 0 Then
GetMetadataItem = GDALCore.CStr2VB(GDALCore.GDALGetMetadataItem(obj, Name, Domain))
Else
GetMetadataItem = vbNullString
End If
End Function
' ----------------------------------------------------------------------------
Public Function SetMetadataItem(Name As String, _
Value As String, Domain As String) As Long
If obj <> 0 Then
SetMetadataItem = GDALCore.GDALSetMetadataItem(obj, Name, Value, Domain)
Else
SetMetadataItem = GDALCore.ObjIsNULLError
End If
End Function
' ----------------------------------------------------------------------------
Public Function GetDescription() As String
If obj <> 0 Then
GetDescription = GDALCore.CStr2VB(GDALCore.GDALGetDescription(obj))
End If
End Function
' ----------------------------------------------------------------------------
Public Function GetColorTable() As GDALColorTable
Dim ct As New GDALColorTable
If obj <> 0 Then
Dim CTHandle As Long
CTHandle = GDALCore.GDALGetRasterColorTable(obj)
If CTHandle <> 0 Then
Call ct.CInit(CTHandle,0)
End If
End If
Set GetColorTable = ct
End Function
' ----------------------------------------------------------------------------
Public Function SetColorTable(ColorTable As GDALColorTable) As Long
If obj <> 0 And ColorTable.GetObjPtr() <> 0 Then
SetColorTable = GDALCore.GDALSetRasterColorTable( _
obj, ColorTable.GetObjPtr())
Else
SetColorTable = GDALCore.ObjIsNULLError
End If
End Function