view cmd/octree2contour/store.go @ 727:41c8dc61f38f

Moved octree loading stuff to octree package.
author Sascha L. Teichmann <teichmann@intevation.de>
date Sat, 22 Sep 2018 21:57:30 +0200
parents 5af9ab39e715
children 39b5cf9a6b8f
line wrap: on
line source

package main

import (
	"database/sql"

	"gemma.intevation.de/gemma/pkg/octree"
)

type result struct {
	h     float64
	lines octree.MultiLineStringZ
}

const insertSQL = `
INSERT INTO waterway.contour_lines (height, geom)
VALUES ($1, ST_Transform(
	ST_SetSRID(ST_GeomFromWKB($2), $3), 4326)::geography)
`

func store(all []result, epsg uint32) error {

	return run(func(db *sql.DB) error {

		tx, err := db.Begin()
		if err != nil {
			return err
		}
		defer tx.Rollback()

		stmt, err := tx.Prepare(insertSQL)
		if err != nil {
			return err
		}

		for _, r := range all {
			if _, err := stmt.Exec(r.h, r.lines.AsWKB(), epsg); err != nil {
				return err
			}
		}

		return tx.Commit()
	})
}