changeset 5411:9822a840d668 marking-single-beam

Some refactoring to move marking handling to the right place in SR import.
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Wed, 07 Jul 2021 09:43:41 +0200
parents 8b6018ed3ffd
children 34bc6041e61e
files pkg/imports/sr.go
diffstat 1 files changed, 41 insertions(+), 38 deletions(-) [+]
line wrap: on
line diff
--- a/pkg/imports/sr.go	Wed Jul 07 09:29:06 2021 +0200
+++ b/pkg/imports/sr.go	Wed Jul 07 09:43:41 2021 +0200
@@ -467,7 +467,6 @@
 		removed                 map[int32]struct{}
 		polygonArea             float64
 		clippingPolygonWKB      []byte
-		tin                     *mesh.Tin
 	)
 
 	if boundary == nil {
@@ -534,12 +533,7 @@
 		removed = str.Clip(&clippingPolygon)
 	}
 
-	switch sr.surveyType() {
-	case models.SurveyTypeMarking:
-		// TODO: Implement me!
-		return nil, errors.New("Not implemented, yet!")
-
-	case models.SurveyTypeSingleBeam:
+	if sr.surveyType() == models.SurveyTypeSingleBeam {
 
 		origDensity := float64(len(xyz)) / polygonArea
 
@@ -611,27 +605,31 @@
 
 multibeam:
 
-	start = time.Now()
-	tin = tri.Tin()
-	tin.EPSG = epsg
+	final := mesh.STRTree{Entries: 16}
+
+	if sr.surveyType() != models.SurveyTypeMarking {
 
-	var str mesh.STRTree
-	str.Build(tin)
-	feedback.Info("Building clipping index took %v", time.Since(start))
+		start = time.Now()
+		tin := tri.Tin()
+		tin.EPSG = epsg
 
-	start = time.Now()
+		var str mesh.STRTree
+		str.Build(tin)
+		feedback.Info("Building clipping index took %v", time.Since(start))
 
-	clippingPolygonBuffered.Indexify()
-	removed = str.Clip(&clippingPolygonBuffered)
-	feedback.Info("Clipping took %v.", time.Since(start))
-	feedback.Info("Number of triangles to clip %d.", len(removed))
+		start = time.Now()
+
+		clippingPolygonBuffered.Indexify()
+		removed = str.Clip(&clippingPolygonBuffered)
+		feedback.Info("Clipping took %v.", time.Since(start))
+		feedback.Info("Number of triangles to clip %d.", len(removed))
 
-	start = time.Now()
-	final := mesh.STRTree{Entries: 16}
-	final.BuildWithout(tin, removed)
+		start = time.Now()
+		final.BuildWithout(tin, removed)
 
-	feedback.Info("Building final mesh took %v.", time.Since(start))
-	feedback.Info("Store mesh.")
+		feedback.Info("Building final mesh took %v.", time.Since(start))
+		feedback.Info("Store mesh.")
+	}
 
 	start = time.Now()
 
@@ -670,22 +668,27 @@
 		return nil, err
 	}
 
-	index, err := final.Bytes()
-	if err != nil {
-		return nil, err
-	}
+	if sr.surveyType() != models.SurveyTypeMarking {
+
+		index, err := final.Bytes()
+		if err != nil {
+			return nil, err
+		}
 
-	h := sha1.New()
-	h.Write(index)
-	checksum := hex.EncodeToString(h.Sum(nil))
-	_, err = tx.ExecContext(ctx, insertMeshSQL, id, checksum, index)
-	if err != nil {
-		return nil, err
-	}
-	feedback.Info("Storing mesh index took %s.", time.Since(start))
-	err = generateIsos(ctx, tx, feedback, &final, id)
-	if err != nil {
-		return nil, err
+		h := sha1.New()
+		h.Write(index)
+		checksum := hex.EncodeToString(h.Sum(nil))
+		_, err = tx.ExecContext(ctx, insertMeshSQL, id, checksum, index)
+		if err != nil {
+			return nil, err
+		}
+		feedback.Info("Storing mesh index took %s.", time.Since(start))
+		err = generateIsos(ctx, tx, feedback, &final, id)
+		if err != nil {
+			return nil, err
+		}
+	} else { // SurveyTypeMarking
+		return nil, errors.New("not implemented, yet")
 	}
 
 	// Store for potential later removal.