89 lines
1.9 KiB
Go
89 lines
1.9 KiB
Go
package geom
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/omniscale/imposm3/element"
|
|
"github.com/omniscale/imposm3/geom/geos"
|
|
)
|
|
|
|
func TestWkbLineString(t *testing.T) {
|
|
nodes := make([]element.Node, 5)
|
|
nodes[0] = element.Node{Lat: 0, Long: 0}
|
|
nodes[1] = element.Node{Lat: 1.123, Long: -0.2}
|
|
nodes[2] = element.Node{Lat: 1.99, Long: 1}
|
|
nodes[3] = element.Node{Lat: 0, Long: 1.1}
|
|
nodes[4] = element.Node{Lat: 0, Long: 0}
|
|
g := geos.NewGeos()
|
|
defer g.Finish()
|
|
|
|
geom, err := LineString(g, nodes)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
geosWkb := string(g.AsEwkbHex(geom))
|
|
wkbb, err := NodesAsEWKBHexLineString(nodes, 0)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
wkb := strings.ToUpper(string(wkbb))
|
|
|
|
if geosWkb != wkb {
|
|
t.Error("linestring wkb differs")
|
|
t.Error(string(geosWkb))
|
|
t.Error(string(wkb))
|
|
}
|
|
}
|
|
|
|
func TestWkbPolygon(t *testing.T) {
|
|
nodes := make([]element.Node, 5)
|
|
nodes[0] = element.Node{Lat: 1.123, Long: -0.2}
|
|
nodes[1] = element.Node{Lat: 1.99, Long: 1}
|
|
nodes[2] = element.Node{Lat: 0, Long: 1.1}
|
|
nodes[3] = element.Node{Lat: 0, Long: 0}
|
|
nodes[4] = element.Node{Lat: 1.123, Long: -0.2}
|
|
g := geos.NewGeos()
|
|
defer g.Finish()
|
|
|
|
geom, err := Polygon(g, nodes)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
geosWkb := string(g.AsEwkbHex(geom))
|
|
wkbb, err := NodesAsEWKBHexPolygon(nodes, 0)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
wkb := strings.ToUpper(string(wkbb))
|
|
|
|
if geosWkb != wkb {
|
|
t.Error("polygon wkb differs")
|
|
t.Error(string(geosWkb))
|
|
t.Error(string(wkb))
|
|
}
|
|
}
|
|
|
|
func BenchmarkAsWkb(b *testing.B) {
|
|
g := geos.NewGeos()
|
|
defer g.Finish()
|
|
|
|
p := g.FromWkt("LINESTRING(0 0, 5 0, 10 0, 10 5, 10 10, 0 10, 0 0)")
|
|
|
|
for i := 0; i < b.N; i++ {
|
|
g.AsEwkbHex(p)
|
|
}
|
|
}
|
|
|
|
func BenchmarkAsWkbSrid(b *testing.B) {
|
|
g := geos.NewGeos()
|
|
g.SetHandleSrid(4326)
|
|
defer g.Finish()
|
|
|
|
p := g.FromWkt("LINESTRING(0 0, 5 0, 10 0, 10 5, 10 10, 0 10, 0 0)")
|
|
|
|
for i := 0; i < b.N; i++ {
|
|
g.AsEwkbHex(p)
|
|
}
|
|
}
|