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