changeset 2471:63475c8e710e octree-diff

Moved WKB constants to own package.
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Tue, 26 Feb 2019 11:34:15 +0100
parents 5bd3236f2b1f
children db0e4ab57977
files pkg/imports/wkb.go pkg/models/cross.go pkg/octree/tin.go pkg/octree/vertex.go pkg/octree/wkb.go pkg/wkb/wkb.go
diffstat 6 files changed, 72 insertions(+), 79 deletions(-) [+]
line wrap: on
line diff
--- a/pkg/imports/wkb.go	Tue Feb 26 11:01:06 2019 +0100
+++ b/pkg/imports/wkb.go	Tue Feb 26 11:34:15 2019 +0100
@@ -20,6 +20,8 @@
 	"math"
 
 	shp "github.com/jonas-p/go-shp"
+
+	"gemma.intevation.de/gemma/pkg/wkb"
 )
 
 type (
@@ -28,22 +30,14 @@
 	polygonSlice [][][]float64
 )
 
-const (
-	wkbNDR byte = 1
-
-	wkbPoint      uint32 = 1
-	wkbLineString uint32 = 2
-	wkbPolygon    uint32 = 3
-)
-
 func (l lineSlice) asWKB() []byte {
 
 	size := 1 + 4 + 4 + len(l)*(2*8)
 
 	buf := bytes.NewBuffer(make([]byte, 0, size))
 
-	binary.Write(buf, binary.LittleEndian, wkbNDR)
-	binary.Write(buf, binary.LittleEndian, wkbLineString)
+	binary.Write(buf, binary.LittleEndian, wkb.NDR)
+	binary.Write(buf, binary.LittleEndian, wkb.LineString)
 	binary.Write(buf, binary.LittleEndian, uint32(len(l)))
 
 	for _, c := range l {
@@ -67,8 +61,8 @@
 
 	buf := bytes.NewBuffer(make([]byte, 0, size))
 
-	binary.Write(buf, binary.LittleEndian, wkbNDR)
-	binary.Write(buf, binary.LittleEndian, wkbPoint)
+	binary.Write(buf, binary.LittleEndian, wkb.NDR)
+	binary.Write(buf, binary.LittleEndian, wkb.Point)
 
 	var lat, lon float64
 	if len(p) > 0 {
@@ -95,8 +89,8 @@
 
 	buf := bytes.NewBuffer(make([]byte, 0, size))
 
-	binary.Write(buf, binary.LittleEndian, wkbNDR)
-	binary.Write(buf, binary.LittleEndian, wkbPolygon)
+	binary.Write(buf, binary.LittleEndian, wkb.NDR)
+	binary.Write(buf, binary.LittleEndian, wkb.Polygon)
 	binary.Write(buf, binary.LittleEndian, uint32(len(p)))
 
 	for _, ring := range p {
--- a/pkg/models/cross.go	Tue Feb 26 11:01:06 2019 +0100
+++ b/pkg/models/cross.go	Tue Feb 26 11:34:15 2019 +0100
@@ -21,6 +21,8 @@
 	"fmt"
 	"math"
 	"time"
+
+	"gemma.intevation.de/gemma/pkg/wkb"
 )
 
 type (
@@ -145,22 +147,14 @@
 	return nil
 }
 
-const (
-	wkbXDR              byte   = 0
-	wkbNDR              byte   = 1
-	wkbLineString       uint32 = 2
-	wkbLineStringZ      uint32 = 1000 + 2
-	wkbMultiLineStringZ uint32 = 1000 + 5
-)
-
 func (lc GeoJSONLineCoordinates) AsWKB() []byte {
 
 	size := 1 + 4 + 4 + len(lc)*(2*8)
 
 	buf := bytes.NewBuffer(make([]byte, 0, size))
 
-	binary.Write(buf, binary.LittleEndian, wkbNDR)
-	binary.Write(buf, binary.LittleEndian, wkbLineString)
+	binary.Write(buf, binary.LittleEndian, wkb.NDR)
+	binary.Write(buf, binary.LittleEndian, wkb.LineString)
 	binary.Write(buf, binary.LittleEndian, uint32(len(lc)))
 
 	for i := range lc {
@@ -197,9 +191,9 @@
 	switch {
 	case err != nil:
 		return err
-	case endian == wkbNDR:
+	case endian == wkb.NDR:
 		order = binary.LittleEndian
-	case endian == wkbXDR:
+	case endian == wkb.XDR:
 		order = binary.BigEndian
 	default:
 		return fmt.Errorf("unknown byte order %x", endian)
@@ -211,7 +205,7 @@
 	switch {
 	case err != nil:
 		return err
-	case geomType != wkbLineStringZ:
+	case geomType != wkb.LineStringZ:
 		return fmt.Errorf("unknown geometry type %x", geomType)
 	}
 
@@ -273,9 +267,9 @@
 	switch {
 	case err != nil:
 		return err
-	case endian == wkbNDR:
+	case endian == wkb.NDR:
 		order = binary.LittleEndian
-	case endian == wkbXDR:
+	case endian == wkb.XDR:
 		order = binary.BigEndian
 	default:
 		return fmt.Errorf("unknown byte order %x", endian)
@@ -287,7 +281,7 @@
 	switch {
 	case err != nil:
 		return err
-	case geomType != wkbMultiLineStringZ:
+	case geomType != wkb.MultiLineStringZ:
 		return fmt.Errorf("unknown geometry type %d", geomType)
 	}
 
@@ -304,9 +298,9 @@
 		switch {
 		case err != nil:
 			return err
-		case endian == wkbNDR:
+		case endian == wkb.NDR:
 			order = binary.LittleEndian
-		case endian == wkbXDR:
+		case endian == wkb.XDR:
 			order = binary.BigEndian
 		default:
 			return fmt.Errorf("unknown byte order %x", endian)
@@ -316,7 +310,7 @@
 		switch {
 		case err != nil:
 			return err
-		case geomType != wkbLineStringZ:
+		case geomType != wkb.LineStringZ:
 			return fmt.Errorf("unknown geometry type %d", geomType)
 		}
 
--- a/pkg/octree/tin.go	Tue Feb 26 11:01:06 2019 +0100
+++ b/pkg/octree/tin.go	Tue Feb 26 11:34:15 2019 +0100
@@ -25,6 +25,7 @@
 	"math"
 
 	"gemma.intevation.de/gemma/pkg/models"
+	"gemma.intevation.de/gemma/pkg/wkb"
 )
 
 var (
@@ -62,9 +63,9 @@
 	switch {
 	case err != nil:
 		return err
-	case endian == wkbNDR:
+	case endian == wkb.NDR:
 		order = binary.LittleEndian
-	case endian == wkbXDR:
+	case endian == wkb.XDR:
 		order = binary.BigEndian
 	default:
 		return fmt.Errorf("unknown byte order %x", endian)
@@ -76,7 +77,7 @@
 	switch {
 	case err != nil:
 		return err
-	case geomType != wkbTinZ:
+	case geomType != wkb.TinZ:
 		return fmt.Errorf("unknown geometry type %x", geomType)
 	}
 
@@ -113,9 +114,9 @@
 		switch {
 		case err != nil:
 			return err
-		case endian == wkbNDR:
+		case endian == wkb.NDR:
 			order = binary.LittleEndian
-		case endian == wkbXDR:
+		case endian == wkb.XDR:
 			order = binary.BigEndian
 		default:
 			return fmt.Errorf("unknown byte order %x", endian)
@@ -125,7 +126,7 @@
 		switch {
 		case err != nil:
 			return err
-		case geomType != wkbTriangleZ:
+		case geomType != wkb.TriangleZ:
 			return fmt.Errorf("unknown geometry type %d", geomType)
 		}
 
--- a/pkg/octree/vertex.go	Tue Feb 26 11:01:06 2019 +0100
+++ b/pkg/octree/vertex.go	Tue Feb 26 11:34:15 2019 +0100
@@ -20,6 +20,8 @@
 	"log"
 	"math"
 	"sort"
+
+	"gemma.intevation.de/gemma/pkg/wkb"
 )
 
 type (
@@ -421,13 +423,13 @@
 
 	buf := bytes.NewBuffer(make([]byte, 0, size))
 
-	binary.Write(buf, binary.LittleEndian, wkbNDR)
-	binary.Write(buf, binary.LittleEndian, wkbMultiLineStringZ)
+	binary.Write(buf, binary.LittleEndian, wkb.NDR)
+	binary.Write(buf, binary.LittleEndian, wkb.MultiLineStringZ)
 	binary.Write(buf, binary.LittleEndian, uint32(len(mls)))
 
 	for _, ml := range mls {
-		binary.Write(buf, binary.LittleEndian, wkbNDR)
-		binary.Write(buf, binary.LittleEndian, wkbLineStringZ)
+		binary.Write(buf, binary.LittleEndian, wkb.NDR)
+		binary.Write(buf, binary.LittleEndian, wkb.LineStringZ)
 		binary.Write(buf, binary.LittleEndian, uint32(len(ml)))
 		for _, p := range ml {
 			binary.Write(buf, binary.LittleEndian, math.Float64bits(p.X))
@@ -451,13 +453,13 @@
 
 	buf := bytes.NewBuffer(make([]byte, 0, size))
 
-	binary.Write(buf, binary.LittleEndian, wkbNDR)
-	binary.Write(buf, binary.LittleEndian, wkbMultiLineString)
+	binary.Write(buf, binary.LittleEndian, wkb.NDR)
+	binary.Write(buf, binary.LittleEndian, wkb.MultiLineString)
 	binary.Write(buf, binary.LittleEndian, uint32(len(mls)))
 
 	for _, ml := range mls {
-		binary.Write(buf, binary.LittleEndian, wkbNDR)
-		binary.Write(buf, binary.LittleEndian, wkbLineString)
+		binary.Write(buf, binary.LittleEndian, wkb.NDR)
+		binary.Write(buf, binary.LittleEndian, wkb.LineString)
 		binary.Write(buf, binary.LittleEndian, uint32(len(ml)))
 		for _, p := range ml {
 			binary.Write(buf, binary.LittleEndian, math.Float64bits(p.X))
@@ -918,13 +920,13 @@
 
 	buf := bytes.NewBuffer(make([]byte, 0, size))
 
-	binary.Write(buf, binary.LittleEndian, wkbNDR)
-	binary.Write(buf, binary.LittleEndian, wkbMultiPointZ)
+	binary.Write(buf, binary.LittleEndian, wkb.NDR)
+	binary.Write(buf, binary.LittleEndian, wkb.MultiPointZ)
 	binary.Write(buf, binary.LittleEndian, uint32(len(mpz)))
 
 	for _, p := range mpz {
-		binary.Write(buf, binary.LittleEndian, wkbNDR)
-		binary.Write(buf, binary.LittleEndian, wkbPointZ)
+		binary.Write(buf, binary.LittleEndian, wkb.NDR)
+		binary.Write(buf, binary.LittleEndian, wkb.PointZ)
 		binary.Write(buf, binary.LittleEndian, math.Float64bits(p.X))
 		binary.Write(buf, binary.LittleEndian, math.Float64bits(p.Y))
 		binary.Write(buf, binary.LittleEndian, math.Float64bits(p.Z))
--- a/pkg/octree/wkb.go	Tue Feb 26 11:01:06 2019 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-// This is Free Software under GNU Affero General Public License v >= 3.0
-// without warranty, see README.md and license for details.
-//
-// SPDX-License-Identifier: AGPL-3.0-or-later
-// License-Filename: LICENSES/AGPL-3.0.txt
-//
-// Copyright (C) 2018 by via donau
-//   – Österreichische Wasserstraßen-Gesellschaft mbH
-// Software engineering by Intevation GmbH
-//
-// Author(s):
-//  * Sascha L. Teichmann <sascha.teichmann@intevation.de>
-
-package octree
-
-const (
-	wkbXDR byte = 0
-	wkbNDR byte = 1
-
-	wkbLineString       uint32 = 2
-	wkbMultiLineString  uint32 = 5
-	wkbPointZ           uint32 = 1000 + 1
-	wkbLineStringZ      uint32 = 1000 + 2
-	wkbMultiPointZ      uint32 = 1000 + 4
-	wkbMultiLineStringZ uint32 = 1000 + 5
-	wkbTinZ             uint32 = 1000 + 16
-	wkbTriangleZ        uint32 = 1000 + 17
-)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pkg/wkb/wkb.go	Tue Feb 26 11:34:15 2019 +0100
@@ -0,0 +1,30 @@
+// This is Free Software under GNU Affero General Public License v >= 3.0
+// without warranty, see README.md and license for details.
+//
+// SPDX-License-Identifier: AGPL-3.0-or-later
+// License-Filename: LICENSES/AGPL-3.0.txt
+//
+// Copyright (C) 2018 by via donau
+//   – Österreichische Wasserstraßen-Gesellschaft mbH
+// Software engineering by Intevation GmbH
+//
+// Author(s):
+//  * Sascha L. Teichmann <sascha.teichmann@intevation.de>
+
+package wkb
+
+const (
+	XDR byte = 0
+	NDR byte = 1
+
+	Point            uint32 = 1
+	LineString       uint32 = 2
+	Polygon          uint32 = 3
+	MultiLineString  uint32 = 5
+	PointZ           uint32 = 1000 + 1
+	LineStringZ      uint32 = 1000 + 2
+	MultiPointZ      uint32 = 1000 + 4
+	MultiLineStringZ uint32 = 1000 + 5
+	TinZ             uint32 = 1000 + 16
+	TriangleZ        uint32 = 1000 + 17
+)