Mercurial > gemma
view cmd/octree2contour/store.go @ 942:912d016275ee
client: add arrow to drawn linesegment
* Add styling function that will place an icon png image at the end
of each drawn line segment, in the right rotation.
Note that this does not look perfectly centered, see comment in the
code.
author | Bernhard Reiter <bernhard@intevation.de> |
---|---|
date | Tue, 09 Oct 2018 18:39:01 +0200 |
parents | 15bf101e1522 |
children |
line wrap: on
line source
package main import ( "database/sql" "time" "gemma.intevation.de/gemma/pkg/octree" ) type result struct { h float64 lines octree.MultiLineStringZ } const ( deleteSQL = ` DELETE FROM waterway.sounding_results_contour_lines WHERE sounding_result_id IN (SELECT id FROM waterway.sounding_results WHERE bottleneck_id = $1 AND date_info = $2) ` insertSQL = ` INSERT INTO waterway.sounding_results_contour_lines (sounding_result_id, height, lines) SELECT sr.id, $1, ST_Transform( ST_Multi( ST_CollectionExtract( ST_Intersection( ST_Transform(sr.area::geometry, $3::integer), ST_SimplifyPreserveTopology( ST_LineMerge(ST_GeomFromWKB($2, $3::integer)), $6 ) ), 2 ) ), 4326 ) FROM waterway.sounding_results sr WHERE bottleneck_id = $4 AND date_info = $5 ` ) func store( all []result, epsg uint32, bottleneck string, date time.Time, tol float64, ) error { return run(func(db *sql.DB) error { tx, err := db.Begin() if err != nil { return err } defer tx.Rollback() if _, err := tx.Exec(deleteSQL, bottleneck, date); err != nil { return err } stmt, err := tx.Prepare(insertSQL) if err != nil { return err } for _, r := range all { if _, err := stmt.Exec( r.h, r.lines.AsWKB2D(), epsg, bottleneck, date, tol, ); err != nil { return err } } return tx.Commit() }) }