Mercurial > gemma
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( |