comparison pkg/octree/loader.go @ 4824:c0eb491aaaa7 remove-octree-debris

Removed octree from octree package.
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Tue, 05 Nov 2019 12:53:27 +0100
parents 4bbfe3dd2ab5
children
comparison
equal deleted inserted replaced
4823:8bca7b744459 4824:c0eb491aaaa7
17 "bufio" 17 "bufio"
18 "bytes" 18 "bytes"
19 "compress/gzip" 19 "compress/gzip"
20 "encoding/binary" 20 "encoding/binary"
21 "log" 21 "log"
22
23 "github.com/golang/snappy"
24 ) 22 )
25 23
26 func (s *STRTree) deserializeIndex(r *bufio.Reader) error { 24 func (s *STRTree) deserializeIndex(r *bufio.Reader) error {
27 var numIndex int32 25 var numIndex int32
28 if err := binary.Read(r, binary.LittleEndian, &numIndex); err != nil { 26 if err := binary.Read(r, binary.LittleEndian, &numIndex); err != nil {
164 } 162 }
165 } 163 }
166 164
167 return nil 165 return nil
168 } 166 }
169
170 func loadReader(r *bufio.Reader) (*Tree, error) {
171 tree := new(Tree)
172
173 var tin Tin
174
175 if err := tin.Deserialize(r); err != nil {
176 return nil, err
177 }
178
179 tree.EPSG = tin.EPSG
180 tree.vertices = tin.Vertices
181 tree.triangles = tin.Triangles
182 tree.Min = tin.Min
183 tree.Max = tin.Max
184
185 var numNodes uint32
186 if err := binary.Read(r, binary.LittleEndian, &numNodes); err != nil {
187 return nil, err
188 }
189
190 log.Printf("info: num nodes: %d\n", numNodes)
191
192 tree.index = make([]int32, numNodes)
193 entries := tree.index[1:]
194
195 var last int32
196 for i := range entries {
197 v, err := binary.ReadVarint(r)
198 if err != nil {
199 return nil, err
200 }
201 value := int32(v) + last
202 entries[i] = value
203 last = value
204 }
205
206 return tree, nil
207 }
208
209 func Deserialize(data []byte) (*Tree, error) {
210 return loadReader(
211 bufio.NewReader(
212 snappy.NewReader(
213 bytes.NewReader(data))))
214 }