Mercurial > gemma
changeset 2575:59e7a011d347
Morphological differences: Moved TIN clipping to octree package and hide the technical details there.
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Mon, 11 Mar 2019 14:50:04 +0100 |
parents | 2833ff156cb2 |
children | 647a58ee9ae9 |
files | cmd/octreediff/main.go pkg/controllers/diff.go pkg/octree/tin.go |
diffstat | 3 files changed, 19 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/cmd/octreediff/main.go Mon Mar 11 14:36:34 2019 +0100 +++ b/cmd/octreediff/main.go Mon Mar 11 14:50:04 2019 +0100 @@ -234,19 +234,11 @@ log.Printf("triangulation took %v\n", now.Sub(last)) last = now - var str octree.STRTree - tin := tri.Tin() - str.Build(tin) - + removed := tin.Clip(clippingPolygon) now = time.Now() - log.Printf("building STR tree took %v\n", now.Sub(last)) - last = now - - removed := str.Clip(clippingPolygon) - now = time.Now() - log.Printf("clipping STR tree took %v\n", now.Sub(last)) + log.Printf("clipping tin took %v\n", now.Sub(last)) last = now log.Printf("Number of triangles to clip: %d\n", len(removed))
--- a/pkg/controllers/diff.go Mon Mar 11 14:36:34 2019 +0100 +++ b/pkg/controllers/diff.go Mon Mar 11 14:50:04 2019 +0100 @@ -158,6 +158,17 @@ return } + start = time.Now() + tin := tri.Tin() + removed := tin.Clip(clip) + log.Printf("info: clipping TIN took %v\n", time.Since(start)) + + start = time.Now() + log.Printf("info: Number of triangles to clip: %d\n", len(removed)) + builder := octree.NewBuilder(tin) + builder.Build(removed) + log.Printf("info: building octree took %v\n", time.Since(start)) + // TODO: Implement me! return
--- a/pkg/octree/tin.go Mon Mar 11 14:36:34 2019 +0100 +++ b/pkg/octree/tin.go Mon Mar 11 14:50:04 2019 +0100 @@ -46,6 +46,12 @@ Max Vertex } +func (t *Tin) Clip(polygon *Polygon) map[int32]struct{} { + var tree STRTree + tree.Build(t) + return tree.Clip(polygon) +} + // FromWKB constructs the TIN from a WKB representation. // Shared vertices are identified and referenced by the // same index.