Mercurial > gemma
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 +)