comparison pkg/imports/sr.go @ 5710:37c8feeecb4d

Merged branch sr-v2 into default.
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Tue, 20 Feb 2024 21:28:56 +0100
parents 148abae1fcd0
children 6270951dda28
comparison
equal deleted inserted replaced
5672:b1a10654bf0f 5710:37c8feeecb4d
172 ST_AsBinary(ST_Buffer(ST_Transform(ST_GeomFromWKB($1, $2::integer), $3::integer), 0.1)), 172 ST_AsBinary(ST_Buffer(ST_Transform(ST_GeomFromWKB($1, $2::integer), $3::integer), 0.1)),
173 ST_Area(ST_Transform(ST_GeomFromWKB($1, $2::integer), $3::integer))` 173 ST_Area(ST_Transform(ST_GeomFromWKB($1, $2::integer), $3::integer))`
174 174
175 insertMeshSQL = ` 175 insertMeshSQL = `
176 UPDATE waterway.sounding_results SET 176 UPDATE waterway.sounding_results SET
177 mesh_checksum = $2, mesh_index = $3 177 mesh_checksum = $2, mesh_index = $3, mesh_index_version = $4
178 WHERE id = $1` 178 WHERE id = $1`
179 179
180 repairBoundarySQL = ` 180 repairBoundarySQL = `
181 SELECT 181 SELECT
182 ST_AsBinary(ST_Buffer(ST_MakeValid(ST_GeomFromWKB($1, $2::integer)), 0.0)), 182 ST_AsBinary(ST_Buffer(ST_MakeValid(ST_GeomFromWKB($1, $2::integer)), 0.0)),
510 } 510 }
511 511
512 if err := xyz.FromWKB(reproj); err != nil { 512 if err := xyz.FromWKB(reproj); err != nil {
513 return nil, err 513 return nil, err
514 } 514 }
515
516 feedback.Info("Reprojecting points to EPSG %d took %v.", 515 feedback.Info("Reprojecting points to EPSG %d took %v.",
517 epsg, time.Since(start)) 516 epsg, time.Since(start))
517
518 start = time.Now()
519 xyz = xyz.QuantizeXY(mesh.QuantScale)
520 feedback.Info("Quantizing points in X/Y to 1/%d took %v.",
521 mesh.QuantScale, time.Since(start))
522
518 feedback.Info("Number of reprojected points: %d", len(xyz)) 523 feedback.Info("Number of reprojected points: %d", len(xyz))
519 feedback.Info("Triangulate XYZ data.") 524 feedback.Info("Triangulate XYZ data.")
520 525
521 start = time.Now() 526 start = time.Now()
522 tri, err := mesh.Triangulate(xyz) 527 tri, err := mesh.Triangulate(xyz)
739 case err != nil: 744 case err != nil:
740 return nil, err 745 return nil, err
741 } 746 }
742 747
743 if m.SurveyType != models.SurveyTypeMarking { 748 if m.SurveyType != models.SurveyTypeMarking {
749 final.OptimizeForSerialization(-1)
750
744 var index []byte 751 var index []byte
745 752 var version int
746 index, err = final.Bytes() 753 index, version, err = final.Bytes(-1)
747 if err != nil { 754 if err != nil {
748 return nil, err 755 return nil, err
749 } 756 }
750 757
751 h := sha1.New() 758 h := sha1.New()
752 h.Write(index) 759 h.Write(index)
753 checksum := hex.EncodeToString(h.Sum(nil)) 760 checksum := hex.EncodeToString(h.Sum(nil))
754 _, err = tx.ExecContext(ctx, insertMeshSQL, id, checksum, index) 761 _, err = tx.ExecContext(ctx, insertMeshSQL, id, checksum, index, version)
755 if err != nil { 762 if err != nil {
756 return nil, err 763 return nil, err
757 } 764 }
758 feedback.Info("Storing mesh index took %s.", time.Since(start)) 765 feedback.Info("Storing mesh index took %s.", time.Since(start))
759 err = generateIsoAreas( 766 err = generateIsoAreas(