Mercurial > gemma
comparison cmd/octreediff/main.go @ 2574:2833ff156cb2
Morphological differences: Moved loading of clipping polygon into octree package.
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Mon, 11 Mar 2019 14:36:34 +0100 |
parents | 7686c7c23506 |
children | 59e7a011d347 |
comparison
equal
deleted
inserted
replaced
2573:4486ca003b55 | 2574:2833ff156cb2 |
---|---|
62 2 | 62 2 |
63 ) | 63 ) |
64 ), | 64 ), |
65 4326 | 65 4326 |
66 ) | 66 ) |
67 ` | |
68 clippingPolygonSQL = ` | |
69 WITH joined AS ( | |
70 SELECT | |
71 sr.area AS area, | |
72 sr.date_info AS date_info | |
73 FROM waterway.sounding_results sr JOIN | |
74 waterway.bottlenecks bn ON sr.bottleneck_id = bn.id | |
75 WHERE bn.bottleneck_id = $1 | |
76 ) | |
77 SELECT ST_AsBinary( | |
78 ST_intersection( | |
79 (SELECT ST_Transform(area::geometry, $2::int) FROM joined WHERE date_info = $3::date), | |
80 (SELECT ST_Transform(area::geometry, $2::int) FROM joined WHERE date_info = $4::date) | |
81 ) | |
82 ) AS area | |
83 ` | 67 ` |
84 insertContourSQLClipped = ` | 68 insertContourSQLClipped = ` |
85 WITH joined AS ( | 69 WITH joined AS ( |
86 SELECT | 70 SELECT |
87 sr.area AS area, | 71 sr.area AS area, |
224 now = time.Now() | 208 now = time.Now() |
225 log.Printf("setting in took %v\n", now.Sub(last)) | 209 log.Printf("setting in took %v\n", now.Sub(last)) |
226 last = now | 210 last = now |
227 log.Printf("num points: %d\n", len(result)) | 211 log.Printf("num points: %d\n", len(result)) |
228 | 212 |
229 var clip []byte | 213 clippingPolygon, err := octree.LoadClippingPolygon( |
230 | 214 ctx, |
231 if err := tx.QueryRowContext( | 215 conn, |
232 ctx, clippingPolygonSQL, | 216 first.EPSG, |
233 bottleneck, | 217 bottleneck, |
234 first.EPSG, | |
235 firstDate, secondDate, | 218 firstDate, secondDate, |
236 ).Scan(&clip); err != nil { | 219 ) |
237 return err | 220 if err != nil { |
238 } | 221 return err |
239 | 222 } |
240 var clippingPolygon octree.Polygon | |
241 if err := clippingPolygon.FromWKB(clip); err != nil { | |
242 return err | |
243 } | |
244 clippingPolygon.Indexify() | |
245 | 223 |
246 now = time.Now() | 224 now = time.Now() |
247 log.Printf("loading clipping polygon took %v\n", now.Sub(last)) | 225 log.Printf("loading clipping polygon took %v\n", now.Sub(last)) |
248 last = now | 226 last = now |
249 | 227 |
264 | 242 |
265 now = time.Now() | 243 now = time.Now() |
266 log.Printf("building STR tree took %v\n", now.Sub(last)) | 244 log.Printf("building STR tree took %v\n", now.Sub(last)) |
267 last = now | 245 last = now |
268 | 246 |
269 removed := str.Clip(&clippingPolygon) | 247 removed := str.Clip(clippingPolygon) |
270 now = time.Now() | 248 now = time.Now() |
271 log.Printf("clipping STR tree took %v\n", now.Sub(last)) | 249 log.Printf("clipping STR tree took %v\n", now.Sub(last)) |
272 last = now | 250 last = now |
273 | 251 |
274 log.Printf("Number of triangles to clip: %d\n", len(removed)) | 252 log.Printf("Number of triangles to clip: %d\n", len(removed)) |