Mercurial > gemma
diff pkg/octree/tin.go @ 2529:45d51a49f191
SR import: Use own triangulation and clipping when importing sounding results.
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Wed, 06 Mar 2019 17:51:58 +0100 |
parents | 63475c8e710e |
children | 59e7a011d347 |
line wrap: on
line diff
--- a/pkg/octree/tin.go Wed Mar 06 16:26:45 2019 +0100 +++ b/pkg/octree/tin.go Wed Mar 06 17:51:58 2019 +0100 @@ -15,8 +15,6 @@ import ( "bytes" - "context" - "database/sql" "encoding/binary" "errors" "fmt" @@ -190,47 +188,6 @@ return nil } -const ( - tinSQLPrefix = `WITH trans AS ( - SELECT - ST_Buffer(ST_Transform(area::geometry, $1::int), 0.001) AS area, - ST_Transform(point_cloud::geometry, $1::int) AS point_cloud - FROM waterway.sounding_results -` - tinSQLSuffix = ` -), -triangles AS ( - SELECT t.geom AS geom, ST_MakePolygon(ST_ExteriorRing(t.geom)) AS poly FROM ( - SELECT (ST_Dump( - ST_DelaunayTriangles(point_cloud, 0, 2))).geom - FROM trans) t -) -SELECT ST_AsBinary(ST_Collect(triangles.geom)) FROM triangles, trans -WHERE ST_Covers(trans.area, triangles.poly)` - - loadTinByIDSQL = tinSQLPrefix + `WHERE id = $2` + tinSQLSuffix -) - -// GenerateTinByID generated a TIN by triangulating a point cloud -// from the database. -func GenerateTinByID( - ctx context.Context, - conn *sql.Conn, - id int64, - epsg uint32, -) (*Tin, error) { - var tin Tin - err := conn.QueryRowContext(ctx, loadTinByIDSQL, epsg, id).Scan(&tin) - switch { - case err == sql.ErrNoRows: - return nil, nil - case err != nil: - return nil, err - } - tin.EPSG = epsg - return &tin, nil -} - // Scan implements the sql.Scanner interface. func (t *Tin) Scan(raw interface{}) error { if raw == nil {