# HG changeset patch # User Sascha L. Teichmann # Date 1625643821 -7200 # Node ID 9822a840d668314f31fe8a263b386409f6b9f43b # Parent 8b6018ed3ffd7c1d408fc7a9ce9df115322d25b1 Some refactoring to move marking handling to the right place in SR import. diff -r 8b6018ed3ffd -r 9822a840d668 pkg/imports/sr.go --- 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.