changeset 4309:78be85723eff

stretch shape export: Write attributes, too.
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Mon, 02 Sep 2019 22:34:56 +0200
parents 2c83d32bdd1b
children 3d6941046858
files pkg/controllers/shapestretches.go
diffstat 1 files changed, 34 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/pkg/controllers/shapestretches.go	Mon Sep 02 21:32:11 2019 +0200
+++ b/pkg/controllers/shapestretches.go	Mon Sep 02 22:34:56 2019 +0200
@@ -23,6 +23,7 @@
 	"net/http"
 	"os"
 	"path/filepath"
+	"strings"
 	"time"
 
 	"github.com/gorilla/mux"
@@ -214,12 +215,43 @@
 		}
 		defer writer.Close()
 
-		// TODO: Write geometry
+		fields := []shp.Field{
+			shp.StringField("NAME", 50),
+			shp.StringField("OBJNAM", 50),
+			shp.StringField("NOBJNAM", 50),
+			shp.StringField("LOWER", 25),
+			shp.StringField("UPPER", 25),
+			shp.StringField("SOURCE", 50),
+			shp.StringField("DATEINFO", 25),
+			shp.StringField("COUNTRIES", 50),
+		}
+
+		writer.SetFields(fields)
+
 		p := asShpPolygon(geom)
 
 		writer.Write(p)
 
-		return nil
+		write := func(field int, v interface{}) {
+			if err == nil {
+				err = writer.WriteAttribute(0, field, v)
+			}
+		}
+
+		write(0, name)
+		write(1, objnam)
+		if nobjnam.Valid {
+			write(2, nobjnam.String)
+		}
+		write(3, lower)
+		write(4, upper)
+		write(5, source)
+		write(6, dateInfo.Format(time.RFC3339))
+		if len(countries) > 0 {
+			write(7, strings.Join(countries, ","))
+		}
+
+		return err
 	}(); err != nil {
 		http.Error(
 			rw, fmt.Sprintf("creating shapefile failed: %v.", err),