Mercurial > gemma
diff cmd/octreediff/main.go @ 2488:cb55d7eaaa36 octree-diff
Started with the idea to clip an octree by an bounding polygon.
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Sun, 03 Mar 2019 14:45:41 +0100 |
parents | 4fa92d468164 |
children | 12ed6feefea5 |
line wrap: on
line diff
--- a/cmd/octreediff/main.go Sun Mar 03 13:00:50 2019 +0100 +++ b/cmd/octreediff/main.go Sun Mar 03 14:45:41 2019 +0100 @@ -65,6 +65,23 @@ 4326 ) ` + clippingPolygonSQL = ` +WITH joined AS ( + SELECT + sr.area AS area, + sr.date_info AS date_info + FROM waterway.sounding_results sr JOIN + waterway.bottlenecks bn ON sr.bottleneck_id = bn.id + WHERE bn.bottleneck_id = $1 +) +SELECT ST_AsBinary( + ST_Buffer( + ST_intersection( + (SELECT ST_Transform(area::geometry, $2::int) FROM joined WHERE date_info = $3::date), + (SELECT ST_Transform(area::geometry, $2::int) FROM joined WHERE date_info = $4::date) + ), + 0.001)) AS area +` insertContourSQLClipped = ` WITH joined AS ( SELECT @@ -347,6 +364,21 @@ last = now log.Printf("num points: %d\n", len(result)) + var clip []byte + + if err := tx.QueryRowContext( + ctx, clippingPolygonSQL, + bottleneck, + first.EPSG, + firstDate, secondDate, + ).Scan(&clip); err != nil { + return err + } + + now = time.Now() + log.Printf("loading clipping polygon took %v\n", now.Sub(last)) + last = now + tri, err := result.triangulate() if err != nil { return err