refactored Geos/Wkb/Wkt type/func names

master
Oliver Tonnhofer 2013-05-24 10:08:38 +02:00
parent ba083239f8
commit 4ee257bf81
9 changed files with 60 additions and 60 deletions

View File

@ -28,7 +28,7 @@ var (
ErrorNoRing = NewGeomError("linestrings do not form ring", 0)
)
func PointWKB(g *geos.GEOS, node element.Node) (*element.Geometry, error) {
func PointWkb(g *geos.Geos, node element.Node) (*element.Geometry, error) {
coordSeq, err := g.CreateCoordSeq(1, 2)
if err != nil {
return nil, err
@ -39,7 +39,7 @@ func PointWKB(g *geos.GEOS, node element.Node) (*element.Geometry, error) {
if err != nil {
return nil, err
}
wkb := g.AsWKB(geom)
wkb := g.AsWkb(geom)
if wkb == nil {
g.Destroy(geom)
return nil, errors.New("could not create wkb")
@ -51,7 +51,7 @@ func PointWKB(g *geos.GEOS, node element.Node) (*element.Geometry, error) {
}, nil
}
func LineStringWKB(g *geos.GEOS, nodes []element.Node) (*element.Geometry, error) {
func LineStringWkb(g *geos.Geos, nodes []element.Node) (*element.Geometry, error) {
if len(nodes) < 2 {
return nil, ErrorOneNodeWay
}
@ -65,7 +65,7 @@ func LineStringWKB(g *geos.GEOS, nodes []element.Node) (*element.Geometry, error
coordSeq.SetXY(g, uint32(i), nd.Long, nd.Lat)
}
geom, err := coordSeq.AsLineString(g)
wkb := g.AsWKB(geom)
wkb := g.AsWkb(geom)
if wkb == nil {
g.Destroy(geom)
return nil, errors.New("could not create wkb")
@ -77,12 +77,12 @@ func LineStringWKB(g *geos.GEOS, nodes []element.Node) (*element.Geometry, error
}, nil
}
func PolygonWKB(g *geos.GEOS, nodes []element.Node) (*element.Geometry, error) {
func PolygonWkb(g *geos.Geos, nodes []element.Node) (*element.Geometry, error) {
geom, err := Polygon(g, nodes)
if err != nil {
return nil, err
}
wkb := g.AsWKB(geom)
wkb := g.AsWkb(geom)
if wkb == nil {
return nil, errors.New("could not create wkb")
}
@ -92,7 +92,7 @@ func PolygonWKB(g *geos.GEOS, nodes []element.Node) (*element.Geometry, error) {
}, nil
}
func Polygon(g *geos.GEOS, nodes []element.Node) (*geos.Geom, error) {
func Polygon(g *geos.Geos, nodes []element.Node) (*geos.Geom, error) {
coordSeq, err := g.CreateCoordSeq(uint32(len(nodes)), 2)
if err != nil {
return nil, err

View File

@ -11,9 +11,9 @@ func TestLineString(t *testing.T) {
nodes := make([]element.Node, 2)
nodes[0] = element.Node{Lat: 0, Long: 0}
nodes[1] = element.Node{Lat: 0, Long: 10}
g := geos.NewGEOS()
g := geos.NewGeos()
defer g.Finish()
geom, err := LineStringWKB(g, nodes)
geom, err := LineStringWkb(g, nodes)
if err != nil {
t.Fatal(err)
}
@ -29,9 +29,9 @@ func TestPolygon(t *testing.T) {
element.Node{Lat: 10, Long: 10},
element.Node{Lat: 0, Long: 0},
}
g := geos.NewGEOS()
g := geos.NewGeos()
defer g.Finish()
geom, err := PolygonWKB(g, nodes)
geom, err := PolygonWkb(g, nodes)
if err != nil {
t.Fatal(err)
}
@ -47,9 +47,9 @@ func TestPolygonNotClosed(t *testing.T) {
element.Node{Lat: 0, Long: 10},
element.Node{Lat: 10, Long: 10},
}
g := geos.NewGEOS()
g := geos.NewGeos()
defer g.Finish()
_, err := PolygonWKB(g, nodes)
_, err := PolygonWkb(g, nodes)
if err == nil {
t.Fatal("no error")
}
@ -61,10 +61,10 @@ func BenchmarkLineString(b *testing.B) {
for i := 0; i < size; i++ {
nodes[i] = element.Node{Lat: 0, Long: float64(i)}
}
g := geos.NewGEOS()
g := geos.NewGeos()
defer g.Finish()
for i := 0; i < b.N; i++ {
LineStringWKB(g, nodes)
LineStringWkb(g, nodes)
}
}

View File

@ -25,7 +25,7 @@ func goLogString(msg *C.char) {
log.Printf(C.GoString(msg))
}
type GEOS struct {
type Geos struct {
v C.GEOSContextHandle_t
}
@ -44,13 +44,13 @@ func (e CreateError) Error() string {
return string(e)
}
func NewGEOS() *GEOS {
geos := &GEOS{}
func NewGeos() *Geos {
geos := &Geos{}
geos.v = C.initGEOS_r_debug()
return geos
}
func (this *GEOS) Finish() {
func (this *Geos) Finish() {
if this.v != nil {
C.finishGEOS_r(this.v)
this.v = nil
@ -73,7 +73,7 @@ type CoordSeq struct {
v *C.GEOSCoordSequence
}
func (this *GEOS) CreateCoordSeq(size, dim uint32) (*CoordSeq, error) {
func (this *Geos) CreateCoordSeq(size, dim uint32) (*CoordSeq, error) {
result := C.GEOSCoordSeq_create_r(this.v, C.uint(size), C.uint(dim))
if result == nil {
return nil, CreateError("could not create CoordSeq")
@ -81,7 +81,7 @@ func (this *GEOS) CreateCoordSeq(size, dim uint32) (*CoordSeq, error) {
return &CoordSeq{result}, nil
}
func (this *CoordSeq) SetXY(handle *GEOS, i uint32, x, y float64) error {
func (this *CoordSeq) SetXY(handle *Geos, i uint32, x, y float64) error {
if C.GEOSCoordSeq_setX_r(handle.v, this.v, C.uint(i), C.double(x)) == 0 {
return Error("unable to SetY")
}
@ -91,7 +91,7 @@ func (this *CoordSeq) SetXY(handle *GEOS, i uint32, x, y float64) error {
return nil
}
func (this *CoordSeq) AsPoint(handle *GEOS) (*Geom, error) {
func (this *CoordSeq) AsPoint(handle *Geos) (*Geom, error) {
geom := C.GEOSGeom_createPoint_r(handle.v, this.v)
if geom == nil {
return nil, CreateError("unable to create Point")
@ -99,7 +99,7 @@ func (this *CoordSeq) AsPoint(handle *GEOS) (*Geom, error) {
return &Geom{geom}, nil
}
func (this *CoordSeq) AsLineString(handle *GEOS) (*Geom, error) {
func (this *CoordSeq) AsLineString(handle *Geos) (*Geom, error) {
geom := C.GEOSGeom_createLineString_r(handle.v, this.v)
if geom == nil {
return nil, CreateError("unable to create LineString")
@ -107,7 +107,7 @@ func (this *CoordSeq) AsLineString(handle *GEOS) (*Geom, error) {
return &Geom{geom}, nil
}
func (this *CoordSeq) AsLinearRing(handle *GEOS) (*Geom, error) {
func (this *CoordSeq) AsLinearRing(handle *Geos) (*Geom, error) {
ring := C.GEOSGeom_createLinearRing_r(handle.v, this.v)
if ring == nil {
return nil, CreateError("unable to create LinearRing")
@ -115,7 +115,7 @@ func (this *CoordSeq) AsLinearRing(handle *GEOS) (*Geom, error) {
return &Geom{ring}, nil
}
func (this *GEOS) CreatePolygon(shell *Geom, holes []*Geom) *Geom {
func (this *Geos) CreatePolygon(shell *Geom, holes []*Geom) *Geom {
if len(holes) > 0 {
panic("holes not implemented")
}
@ -126,17 +126,17 @@ func (this *GEOS) CreatePolygon(shell *Geom, holes []*Geom) *Geom {
return &Geom{polygon}
}
func (this *GEOS) GeomFromWKT(wkt string) (geom *Geom) {
func (this *Geos) FromWkt(wkt string) (geom *Geom) {
wktC := C.CString(wkt)
defer C.free(unsafe.Pointer(wktC))
return &Geom{C.GEOSGeomFromWKT_r(this.v, wktC)}
}
func (this *GEOS) Buffer(geom *Geom, size float64) *Geom {
func (this *Geos) Buffer(geom *Geom, size float64) *Geom {
return &Geom{C.GEOSBuffer_r(this.v, geom.v, C.double(size), 50)}
}
func (this *GEOS) Contains(a, b *Geom) bool {
func (this *Geos) Contains(a, b *Geom) bool {
result := C.GEOSContains_r(this.v, a.v, b.v)
if result == 1 {
return true
@ -145,7 +145,7 @@ func (this *GEOS) Contains(a, b *Geom) bool {
return false
}
func (this *GEOS) ExteriorRing(geom *Geom) *Geom {
func (this *Geos) ExteriorRing(geom *Geom) *Geom {
ring := C.GEOSGetExteriorRing_r(this.v, geom.v)
if ring == nil {
return nil
@ -153,7 +153,7 @@ func (this *GEOS) ExteriorRing(geom *Geom) *Geom {
return &Geom{ring}
}
func (this *GEOS) Polygon(exterior *Geom, interiors []*Geom) *Geom {
func (this *Geos) Polygon(exterior *Geom, interiors []*Geom) *Geom {
if len(interiors) == 0 {
geom := C.GEOSGeom_createPolygon_r(this.v, exterior.v, nil, C.uint(0))
if geom == nil {
@ -183,7 +183,7 @@ func (this *GEOS) Polygon(exterior *Geom, interiors []*Geom) *Geom {
return &Geom{geom}
}
func (this *GEOS) MultiPolygon(polygons []*Geom) *Geom {
func (this *Geos) MultiPolygon(polygons []*Geom) *Geom {
polygonPtr := make([]*C.GEOSGeometry, len(polygons))
for i, geom := range polygons {
polygonPtr[i] = geom.v
@ -195,13 +195,13 @@ func (this *GEOS) MultiPolygon(polygons []*Geom) *Geom {
return &Geom{geom}
}
func (this *GEOS) AsWKT(geom *Geom) string {
func (this *Geos) AsWkt(geom *Geom) string {
str := C.GEOSGeomToWKT_r(this.v, geom.v)
result := C.GoString(str)
C.free(unsafe.Pointer(str))
return result
}
func (this *GEOS) AsWKB(geom *Geom) []byte {
func (this *Geos) AsWkb(geom *Geom) []byte {
var size C.size_t
buf := C.GEOSGeomToWKB_buf_r(this.v, geom.v, &size)
if buf == nil {
@ -212,7 +212,7 @@ func (this *GEOS) AsWKB(geom *Geom) []byte {
return result
}
func (this *GEOS) FromWkb(wkb []byte) *Geom {
func (this *Geos) FromWkb(wkb []byte) *Geom {
geom := C.GEOSGeomFromWKB_buf((*C.uchar)(&wkb[0]), C.size_t(len(wkb)))
if geom == nil {
return nil
@ -220,7 +220,7 @@ func (this *GEOS) FromWkb(wkb []byte) *Geom {
return &Geom{geom}
}
func (this *GEOS) IsValid(geom *Geom) bool {
func (this *Geos) IsValid(geom *Geom) bool {
if C.GEOSisValid_r(this.v, geom.v) == 1 {
return true
}
@ -282,7 +282,7 @@ type Bounds struct {
MaxY float64
}
func (this *GEOS) Destroy(geom *Geom) {
func (this *Geos) Destroy(geom *Geom) {
if geom.v != nil {
C.GEOSGeom_destroy_r(this.v, geom.v)
geom.v = nil
@ -295,11 +295,11 @@ func destroyGeom(geom *Geom) {
C.GEOSGeom_destroy(geom.v)
}
func (this *GEOS) DestroyLater(geom *Geom) {
func (this *Geos) DestroyLater(geom *Geom) {
runtime.SetFinalizer(geom, destroyGeom)
}
func (this *GEOS) DestroyCoordSeq(coordSeq *CoordSeq) {
func (this *Geos) DestroyCoordSeq(coordSeq *CoordSeq) {
if coordSeq.v != nil {
C.GEOSCoordSeq_destroy_r(this.v, coordSeq.v)
coordSeq.v = nil

View File

@ -3,11 +3,11 @@ package geos
import "testing"
func TestFoo(t *testing.T) {
_ = NewGEOS()
_ = NewGeos()
}
func BenchmarkWKB(b *testing.B) {
g := NewGEOS()
g := NewGeos()
defer g.Finish()
for i := 0; i < b.N; i++ {
@ -19,7 +19,7 @@ func BenchmarkWKB(b *testing.B) {
if g.IsValid(geom) == false {
b.Fail()
}
g.AsWKB(geom)
g.AsWkb(geom)
g.Destroy(geom)
}
}

View File

@ -33,7 +33,7 @@ func BuildRings(rel *element.Relation) ([]*Ring, error) {
rings = append(rings, NewRing(member.Way))
}
g := geos.NewGEOS()
g := geos.NewGeos()
defer g.Finish()
// create geometries for closed rings, collect incomplete rings
@ -75,7 +75,7 @@ func (r SortableRingsDesc) Less(i, j int) bool { return r[i].area > r[j].area }
func (r SortableRingsDesc) Swap(i, j int) { r[i], r[j] = r[j], r[i] }
func BuildRelGeometry(rel *element.Relation, rings []*Ring) (*geos.Geom, error) {
g := geos.NewGEOS()
g := geos.NewGeos()
defer g.Finish()
// sort by area (large to small)
@ -162,7 +162,7 @@ func BuildRelGeometry(rel *element.Relation, rings []*Ring) (*geos.Geom, error)
}
rel.Members = relMembers
wkb := g.AsWKB(result)
wkb := g.AsWkb(result)
if wkb == nil {
return nil, errors.New("unable to create WKB for relation")
}

View File

@ -63,11 +63,11 @@ func TestMultiPolygonWithHole(t *testing.T) {
t.Fatal("wrong rel tags", rel.Tags)
}
g := geos.NewGEOS()
g := geos.NewGeos()
defer g.Finish()
if !g.IsValid(rel.Geom.Geom) {
t.Fatal("geometry not valid", g.AsWKT(rel.Geom.Geom))
t.Fatal("geometry not valid", g.AsWkt(rel.Geom.Geom))
}
if area := rel.Geom.Geom.Area(); area != 64 {
@ -107,7 +107,7 @@ func TestMultiPolygonWithMultipleHoles(t *testing.T) {
}
BuildRelation(&rel)
g := geos.NewGEOS()
g := geos.NewGeos()
defer g.Finish()
if len(rel.Members) != 1 {
@ -125,7 +125,7 @@ func TestMultiPolygonWithMultipleHoles(t *testing.T) {
}
if !g.IsValid(rel.Geom.Geom) {
t.Fatal("geometry not valid", g.AsWKT(rel.Geom.Geom))
t.Fatal("geometry not valid", g.AsWkt(rel.Geom.Geom))
}
if area := rel.Geom.Geom.Area(); area != 100-1-1 {
@ -180,7 +180,7 @@ func TestMultiPolygonWithNeastedHoles(t *testing.T) {
}
BuildRelation(&rel)
g := geos.NewGEOS()
g := geos.NewGeos()
defer g.Finish()
if len(rel.Members) != 3 {
@ -198,7 +198,7 @@ func TestMultiPolygonWithNeastedHoles(t *testing.T) {
}
if !g.IsValid(rel.Geom.Geom) {
t.Fatal("geometry not valid", g.AsWKT(rel.Geom.Geom))
t.Fatal("geometry not valid", g.AsWkt(rel.Geom.Geom))
}
if area := rel.Geom.Geom.Area(); area != 100-64+36-16+4 {
@ -229,7 +229,7 @@ func TestPolygonFromThreeWays(t *testing.T) {
}
BuildRelation(&rel)
g := geos.NewGEOS()
g := geos.NewGeos()
defer g.Finish()
if len(rel.Members) != 2 {
@ -247,7 +247,7 @@ func TestPolygonFromThreeWays(t *testing.T) {
}
if !g.IsValid(rel.Geom.Geom) {
t.Fatal("geometry not valid", g.AsWKT(rel.Geom.Geom))
t.Fatal("geometry not valid", g.AsWkt(rel.Geom.Geom))
}
if area := rel.Geom.Geom.Area(); area != 100 {

View File

@ -138,7 +138,7 @@ func (layer *Layer) Geoms() chan *geos.Geom {
go func() {
defer close(geoms)
g := geos.NewGEOS()
g := geos.NewGeos()
defer g.Finish()
wkbs := layer.Wkbs()
@ -161,10 +161,10 @@ func main() {
log.Fatal(err)
}
g := geos.NewGEOS()
g := geos.NewGeos()
defer g.Finish()
for geom := range layer.Geoms() {
fmt.Println(g.AsWKT(geom))
fmt.Println(g.AsWkt(geom))
}
fmt.Println(layer)

View File

@ -45,7 +45,7 @@ func (nw *NodeWriter) Close() {
}
func (nw *NodeWriter) loop() {
geos := geos.NewGEOS()
geos := geos.NewGeos()
defer geos.Finish()
var err error
@ -53,7 +53,7 @@ func (nw *NodeWriter) loop() {
nw.progress.AddNodes(1)
if matches := nw.tagMatcher.Match(&n.Tags); len(matches) > 0 {
proj.NodeToMerc(n)
n.Geom, err = geom.PointWKB(geos, *n)
n.Geom, err = geom.PointWkb(geos, *n)
if err != nil {
if err, ok := err.(ErrorLevel); ok {
if err.Level() <= 0 {

View File

@ -48,7 +48,7 @@ func (ww *WayWriter) Close() {
}
func (ww *WayWriter) loop() {
geos := geos.NewGEOS()
geos := geos.NewGeos()
defer geos.Finish()
for w := range ww.ways {
ww.progress.AddWays(1)
@ -69,7 +69,7 @@ func (ww *WayWriter) loop() {
if matches := ww.lineStringTagMatcher.Match(&w.Tags); len(matches) > 0 {
// make copy to avoid interference with polygon matches
way := element.Way(*w)
way.Geom, err = geom.LineStringWKB(geos, way.Nodes)
way.Geom, err = geom.LineStringWkb(geos, way.Nodes)
if err != nil {
if err, ok := err.(ErrorLevel); ok {
if err.Level() <= 0 {
@ -88,7 +88,7 @@ func (ww *WayWriter) loop() {
if w.IsClosed() {
if matches := ww.polygonTagMatcher.Match(&w.Tags); len(matches) > 0 {
way := element.Way(*w)
way.Geom, err = geom.PolygonWKB(geos, way.Nodes)
way.Geom, err = geom.PolygonWkb(geos, way.Nodes)
if err != nil {
if err, ok := err.(ErrorLevel); ok {
if err.Level() <= 0 {