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.