Mercurial > gemma
comparison pkg/imports/sr.go @ 4660:6eab3ac0e849 stree-experiment
Speak of meshes instead od octrees as they are not longer used.
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Mon, 14 Oct 2019 15:27:34 +0200 |
parents | 3eda5a7215ab |
children | 0ddb308fed37 |
comparison
equal
deleted
inserted
replaced
4659:92a7551d626f | 4660:6eab3ac0e849 |
---|---|
151 SELECT | 151 SELECT |
152 ST_AsBinary(ST_Transform(ST_GeomFromWKB($1, $2::integer), $3::integer)), | 152 ST_AsBinary(ST_Transform(ST_GeomFromWKB($1, $2::integer), $3::integer)), |
153 ST_AsBinary(ST_Buffer(ST_Transform(ST_GeomFromWKB($1, $2::integer), $3::integer), 0.1)), | 153 ST_AsBinary(ST_Buffer(ST_Transform(ST_GeomFromWKB($1, $2::integer), $3::integer), 0.1)), |
154 ST_Area(ST_Transform(ST_GeomFromWKB($1, $2::integer), $3::integer))` | 154 ST_Area(ST_Transform(ST_GeomFromWKB($1, $2::integer), $3::integer))` |
155 | 155 |
156 insertOctreeSQL = ` | 156 insertMeshSQL = ` |
157 UPDATE waterway.sounding_results SET | 157 UPDATE waterway.sounding_results SET |
158 mesh_checksum = $2, mesh_index = $3 | 158 mesh_checksum = $2, mesh_index = $3 |
159 WHERE id = $1` | 159 WHERE id = $1` |
160 | 160 |
161 repairBoundarySQL = ` | 161 repairBoundarySQL = ` |
554 tin = tri.Tin() | 554 tin = tri.Tin() |
555 tin.EPSG = epsg | 555 tin.EPSG = epsg |
556 | 556 |
557 var str octree.STRTree | 557 var str octree.STRTree |
558 str.Build(tin) | 558 str.Build(tin) |
559 feedback.Info("Building STR tree took %v", time.Since(start)) | 559 feedback.Info("Building clipping index took %v", time.Since(start)) |
560 | 560 |
561 start = time.Now() | 561 start = time.Now() |
562 | 562 |
563 clippingPolygonBuffered.Indexify() | 563 clippingPolygonBuffered.Indexify() |
564 removed = str.Clip(&clippingPolygonBuffered) | 564 removed = str.Clip(&clippingPolygonBuffered) |
565 feedback.Info("Clipping STR tree took %v.", time.Since(start)) | 565 feedback.Info("Clipping took %v.", time.Since(start)) |
566 feedback.Info("Number of triangles to clip %d.", len(removed)) | 566 feedback.Info("Number of triangles to clip %d.", len(removed)) |
567 | 567 |
568 start = time.Now() | 568 start = time.Now() |
569 final := octree.STRTree{Entries: 16} | 569 final := octree.STRTree{Entries: 16} |
570 final.BuildWithout(tin, removed) | 570 final.BuildWithout(tin, removed) |
571 | 571 |
572 feedback.Info("Building octree took %v.", time.Since(start)) | 572 feedback.Info("Building final mesh took %v.", time.Since(start)) |
573 feedback.Info("Store octree.") | 573 feedback.Info("Store mesh.") |
574 | 574 |
575 start = time.Now() | 575 start = time.Now() |
576 | 576 |
577 var ( | 577 var ( |
578 id int64 | 578 id int64 |
614 } | 614 } |
615 | 615 |
616 h := sha1.New() | 616 h := sha1.New() |
617 h.Write(index) | 617 h.Write(index) |
618 checksum := hex.EncodeToString(h.Sum(nil)) | 618 checksum := hex.EncodeToString(h.Sum(nil)) |
619 _, err = tx.ExecContext(ctx, insertOctreeSQL, id, checksum, index) | 619 _, err = tx.ExecContext(ctx, insertMeshSQL, id, checksum, index) |
620 if err != nil { | 620 if err != nil { |
621 return nil, err | 621 return nil, err |
622 } | 622 } |
623 feedback.Info("Storing octree index took %s.", time.Since(start)) | 623 feedback.Info("Storing mesh index took %s.", time.Since(start)) |
624 err = generateIsos(ctx, tx, feedback, &final, id) | 624 err = generateIsos(ctx, tx, feedback, &final, id) |
625 if err != nil { | 625 if err != nil { |
626 return nil, err | 626 return nil, err |
627 } | 627 } |
628 | 628 |