Mercurial > gemma
comparison pkg/controllers/diff.go @ 5490:5f47eeea988d logging
Use own logging package.
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Mon, 20 Sep 2021 17:45:39 +0200 |
parents | 34bc6041e61e |
children |
comparison
equal
deleted
inserted
replaced
5488:a726a92ea5c9 | 5490:5f47eeea988d |
---|---|
16 import ( | 16 import ( |
17 "context" | 17 "context" |
18 "database/sql" | 18 "database/sql" |
19 "errors" | 19 "errors" |
20 "fmt" | 20 "fmt" |
21 "log" | |
22 "net/http" | 21 "net/http" |
23 "runtime" | 22 "runtime" |
24 "time" | 23 "time" |
25 | 24 |
26 "gemma.intevation.de/gemma/pkg/auth" | 25 "gemma.intevation.de/gemma/pkg/auth" |
27 "gemma.intevation.de/gemma/pkg/common" | 26 "gemma.intevation.de/gemma/pkg/common" |
27 "gemma.intevation.de/gemma/pkg/log" | |
28 "gemma.intevation.de/gemma/pkg/mesh" | 28 "gemma.intevation.de/gemma/pkg/mesh" |
29 "gemma.intevation.de/gemma/pkg/models" | 29 "gemma.intevation.de/gemma/pkg/models" |
30 | 30 |
31 mw "gemma.intevation.de/gemma/pkg/middleware" | 31 mw "gemma.intevation.de/gemma/pkg/middleware" |
32 ) | 32 ) |
164 | 164 |
165 minuendTree, err := mesh.FromCache( | 165 minuendTree, err := mesh.FromCache( |
166 ctx, conn, | 166 ctx, conn, |
167 dci.Bottleneck, dci.Minuend.Time) | 167 dci.Bottleneck, dci.Minuend.Time) |
168 | 168 |
169 log.Printf("info: loading minuend mesh took %s\n", time.Since(start)) | 169 log.Infof("loading minuend mesh took %s\n", time.Since(start)) |
170 if err != nil { | 170 if err != nil { |
171 return 0, err | 171 return 0, err |
172 } | 172 } |
173 | 173 |
174 if minuendTree == nil { | 174 if minuendTree == nil { |
197 | 197 |
198 if box.Empty() { | 198 if box.Empty() { |
199 return 0, errors.New("intersection is empty") | 199 return 0, errors.New("intersection is empty") |
200 } | 200 } |
201 | 201 |
202 log.Printf("info: bbox of intersection: (%.2f, %.2f) - (%.2f, %.2f)\n", | 202 log.Infof("bbox of intersection: (%.2f, %.2f) - (%.2f, %.2f)\n", |
203 box.X1, box.Y1, box.X2, box.Y2) | 203 box.X1, box.Y1, box.X2, box.Y2) |
204 | 204 |
205 start = time.Now() | 205 start = time.Now() |
206 raster := mesh.NewRaster(box, isoCellSize) | 206 raster := mesh.NewRaster(box, isoCellSize) |
207 raster.Rasterize(minuendTree.Value) | 207 raster.Rasterize(minuendTree.Value) |
208 log.Printf("info: rasterizing minuend took %v\n", time.Since(start)) | 208 log.Infof("rasterizing minuend took %v\n", time.Since(start)) |
209 | 209 |
210 minuendTree = nil | 210 minuendTree = nil |
211 | 211 |
212 start = time.Now() | 212 start = time.Now() |
213 | 213 |
214 subtrahendTree, err := mesh.FromCache( | 214 subtrahendTree, err := mesh.FromCache( |
215 ctx, conn, | 215 ctx, conn, |
216 dci.Bottleneck, dci.Subtrahend.Time) | 216 dci.Bottleneck, dci.Subtrahend.Time) |
217 | 217 |
218 log.Printf("info: loading subtrahend mesh took %s\n", time.Since(start)) | 218 log.Infof("loading subtrahend mesh took %s\n", time.Since(start)) |
219 if err != nil { | 219 if err != nil { |
220 return 0, err | 220 return 0, err |
221 } | 221 } |
222 | 222 |
223 if subtrahendTree == nil { | 223 if subtrahendTree == nil { |
232 "EPSG code meshes are not supported, yet") | 232 "EPSG code meshes are not supported, yet") |
233 } | 233 } |
234 | 234 |
235 start = time.Now() | 235 start = time.Now() |
236 raster.Diff(subtrahendTree.Value) | 236 raster.Diff(subtrahendTree.Value) |
237 log.Printf("info: A - B took %v\n", time.Since(start)) | 237 log.Infof("A - B took %v\n", time.Since(start)) |
238 subtrahendTree = nil | 238 subtrahendTree = nil |
239 | 239 |
240 // XXX: Maybe we should start this transaction earlier!? | 240 // XXX: Maybe we should start this transaction earlier!? |
241 var tx *sql.Tx | 241 var tx *sql.Tx |
242 if tx, err = conn.BeginTx(ctx, nil); err != nil { | 242 if tx, err = conn.BeginTx(ctx, nil); err != nil { |
247 zMin, zMax, ok := raster.ZExtent() | 247 zMin, zMax, ok := raster.ZExtent() |
248 if !ok { | 248 if !ok { |
249 return 0, errors.New("scans do not have common points") | 249 return 0, errors.New("scans do not have common points") |
250 } | 250 } |
251 | 251 |
252 log.Printf("info: z range: %.3f - %.3f\n", zMin, zMax) | 252 log.Infof("z range: %.3f - %.3f\n", zMin, zMax) |
253 | 253 |
254 var heights mesh.ClassBreaks | 254 var heights mesh.ClassBreaks |
255 | 255 |
256 heights, err = mesh.LoadClassBreaks( | 256 heights, err = mesh.LoadClassBreaks( |
257 ctx, tx, | 257 ctx, tx, |
258 "morphology_classbreaks_compare") | 258 "morphology_classbreaks_compare") |
259 if err != nil { | 259 if err != nil { |
260 log.Printf("warn: Loading class breaks failed: %v\n", err) | 260 log.Warnf("Loading class breaks failed: %v\n", err) |
261 err = nil | 261 err = nil |
262 heights = mesh.SampleDiffHeights(zMin, zMax, contourStep) | 262 heights = mesh.SampleDiffHeights(zMin, zMax, contourStep) |
263 } else { | 263 } else { |
264 heights = heights.ExtrapolateClassBreaks(zMin, zMax) | 264 heights = heights.ExtrapolateClassBreaks(zMin, zMax) |
265 } | 265 } |
266 | 266 |
267 heights = common.DedupFloat64s(heights) | 267 heights = common.DedupFloat64s(heights) |
268 | 268 |
269 log.Printf("info: num heights: %d\n", len(heights)) | 269 log.Infof("num heights: %d\n", len(heights)) |
270 | 270 |
271 var isoStmt *sql.Stmt | 271 var isoStmt *sql.Stmt |
272 if isoStmt, err = tx.PrepareContext(ctx, insertDiffIsoAreasQL); err != nil { | 272 if isoStmt, err = tx.PrepareContext(ctx, insertDiffIsoAreasQL); err != nil { |
273 return 0, err | 273 return 0, err |
274 } | 274 } |
306 ); err != nil { | 306 ); err != nil { |
307 return 0, err | 307 return 0, err |
308 } | 308 } |
309 } | 309 } |
310 | 310 |
311 log.Printf("info: Transferred WKB size: %.2fMB.\n", | 311 log.Infof("Transferred WKB size: %.2fMB.\n", |
312 float64(size)/(1024*1024)) | 312 float64(size)/(1024*1024)) |
313 | 313 |
314 log.Printf("info: calculating and storing iso areas took %v\n", | 314 log.Infof("calculating and storing iso areas took %v\n", |
315 time.Since(start)) | 315 time.Since(start)) |
316 | 316 |
317 if err = tx.Commit(); err != nil { | 317 if err = tx.Commit(); err != nil { |
318 log.Printf("info: difference calculation failed after %v\n", | 318 log.Infof("difference calculation failed after %v\n", |
319 time.Since(begin)) | 319 time.Since(begin)) |
320 return 0, err | 320 return 0, err |
321 } | 321 } |
322 log.Printf("info: difference calculation succeed after %v\n", | 322 log.Infof("difference calculation succeed after %v\n", |
323 time.Since(begin)) | 323 time.Since(begin)) |
324 | 324 |
325 return id, nil | 325 return id, nil |
326 } | 326 } |
327 | 327 |
441 jr = mw.JSONResult{ | 441 jr = mw.JSONResult{ |
442 Result: map[string]int64{"id": res.id}, | 442 Result: map[string]int64{"id": res.id}, |
443 } | 443 } |
444 } | 444 } |
445 case <-ctx.Done(): | 445 case <-ctx.Done(): |
446 log.Println("request canceled") | 446 log.Infoln("request canceled") |
447 } | 447 } |
448 | 448 |
449 return | 449 return |
450 } | 450 } |