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))