Mercurial > gemma
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 } |