renamed geom/clipper to geom/limit

master
Oliver Tonnhofer 2013-07-30 08:17:47 +02:00
parent 0f10433ed5
commit 4ec962f002
11 changed files with 48 additions and 48 deletions

View File

@ -10,7 +10,7 @@ import (
diffstate "goposm/diff/state"
"goposm/element"
"goposm/expire"
"goposm/geom/clipper"
"goposm/geom/limit"
"goposm/logging"
"goposm/mapping"
"goposm/stats"
@ -20,7 +20,7 @@ import (
var log = logging.NewLogger("diff")
func Update(oscFile string, geometryClipper *clipper.Clipper, force bool) {
func Update(oscFile string, geometryLimiter *limit.Limiter, force bool) {
state, err := diffstate.ParseFromOsc(oscFile)
if err != nil {
log.Fatal(err)
@ -105,19 +105,19 @@ func Update(oscFile string, geometryClipper *clipper.Clipper, force bool) {
relWriter := writer.NewRelationWriter(osmCache, diffCache, relations,
db, polygonsTagMatcher, progress, config.DiffImportOptions.Base.Srid)
relWriter.SetClipper(geometryClipper)
relWriter.SetLimiter(geometryLimiter)
relWriter.SetExpireTiles(expiredTiles)
relWriter.Start()
wayWriter := writer.NewWayWriter(osmCache, diffCache, ways, db,
lineStringsTagMatcher, polygonsTagMatcher, progress, config.DiffImportOptions.Base.Srid)
wayWriter.SetClipper(geometryClipper)
wayWriter.SetLimiter(geometryLimiter)
wayWriter.SetExpireTiles(expiredTiles)
wayWriter.Start()
nodeWriter := writer.NewNodeWriter(osmCache, nodes, db,
pointsTagMatcher, progress, config.DiffImportOptions.Base.Srid)
nodeWriter.SetClipper(geometryClipper)
nodeWriter.SetLimiter(geometryLimiter)
nodeWriter.Start()
nodeIds := make(map[int64]bool)

View File

@ -31,7 +31,7 @@ var (
func Point(g *geos.Geos, node element.Node) (*geos.Geom, error) {
geom := g.Point(node.Long, node.Lat)
if geom == nil {
return nil, NewGeomError("couldn't create point")
return nil, NewGeomError("couldn't create point", 1)
}
g.DestroyLater(geom)
return geom, nil

View File

@ -3,15 +3,15 @@ package main
import (
"flag"
"fmt"
"goposm/geom/clipper"
"goposm/geom/geos"
"goposm/geom/limit"
"log"
)
func main() {
flag.Parse()
clipper, err := clipper.NewFromOgrSource(flag.Arg(0))
limiter, err := limit.NewFromOgrSource(flag.Arg(0))
if err != nil {
log.Fatal(err)
}
@ -21,6 +21,6 @@ func main() {
line := g.FromWkt("LINESTRING(1106543 7082055, 1107105.2 7087540.0)")
result, err := clipper.Clip(line)
result, err := limiter.Clip(line)
fmt.Println(result, err)
}

View File

@ -1,4 +1,4 @@
package clipper
package limit
import (
"errors"
@ -9,7 +9,7 @@ import (
"strings"
)
var log = logging.NewLogger("Clipper")
var log = logging.NewLogger("limiter")
// Tile bbox into multiple sub-boxes, each of `width` size.
@ -86,17 +86,17 @@ func SplitPolygonAtGrid(g *geos.Geos, geom *geos.Geom, gridWidth, currentGridWid
return result, nil
}
type Clipper struct {
type Limiter struct {
index *geos.Index
bufferedPrep *geos.PreparedGeom
bufferedBbox geos.Bounds
}
func NewFromOgrSource(source string) (*Clipper, error) {
func NewFromOgrSource(source string) (*Limiter, error) {
return NewFromOgrSourceWithBuffered(source, 0.0)
}
func NewFromOgrSourceWithBuffered(source string, buffer float64) (*Clipper, error) {
func NewFromOgrSourceWithBuffered(source string, buffer float64) (*Limiter, error) {
ds, err := ogr.Open(source)
if err != nil {
return nil, err
@ -161,7 +161,7 @@ func NewFromOgrSourceWithBuffered(source string, buffer float64) (*Clipper, erro
return nil, errors.New("unable to prepare limitto polygons")
}
}
return &Clipper{index, prep, bbox}, nil
return &Limiter{index, prep, bbox}, nil
}
func filterGeometryByType(g *geos.Geos, geom *geos.Geom, targetType string) []*geos.Geom {
@ -202,11 +202,11 @@ func filterGeometryByType(g *geos.Geos, geom *geos.Geom, targetType string) []*g
return []*geos.Geom{}
}
func (clipper *Clipper) Clip(geom *geos.Geom) ([]*geos.Geom, error) {
func (l *Limiter) Clip(geom *geos.Geom) ([]*geos.Geom, error) {
g := geos.NewGeos()
defer g.Finish()
hits := g.IndexQuery(clipper.index, geom)
hits := g.IndexQuery(l.index, geom)
if len(hits) == 0 {
return nil, nil
@ -239,7 +239,7 @@ func (clipper *Clipper) Clip(geom *geos.Geom) ([]*geos.Geom, error) {
return mergeGeometries(g, intersections, geomType), nil
}
func (c *Clipper) IntersectsBuffer(g *geos.Geos, x, y float64) bool {
func (c *Limiter) IntersectsBuffer(g *geos.Geos, x, y float64) bool {
if c.bufferedPrep == nil {
return true
}

View File

@ -1,4 +1,4 @@
package clipper
package limit
import (
"goposm/geom/geos"
@ -260,17 +260,17 @@ func TestFilterGeometryByType(t *testing.T) {
func TestClipper(t *testing.T) {
g := geos.NewGeos()
defer g.Finish()
clipper, err := NewFromOgrSource("./hamburg_clip.geojson")
limiter, err := NewFromOgrSource("./hamburg_clip.geojson")
if err != nil {
t.Fatal(err)
}
result, err := clipper.Clip(g.FromWkt("POINT(0 0)"))
result, err := limiter.Clip(g.FromWkt("POINT(0 0)"))
if err != nil || result != nil {
t.Fatal(err)
}
result, err = clipper.Clip(g.FromWkt("POINT(1106543 7082055)"))
result, err = limiter.Clip(g.FromWkt("POINT(1106543 7082055)"))
if err != nil {
t.Fatal(err)
}
@ -278,7 +278,7 @@ func TestClipper(t *testing.T) {
t.Fatal()
}
result, err = clipper.Clip(g.FromWkt("LINESTRING(1106543 7082055, 1107105.2 7087540.0)"))
result, err = limiter.Clip(g.FromWkt("LINESTRING(1106543 7082055, 1107105.2 7087540.0)"))
if err != nil {
t.Fatal(err)
}
@ -287,7 +287,7 @@ func TestClipper(t *testing.T) {
}
geom := g.FromWkt("POLYGON((1106543 7082055, 1107105.2 7087540.0, 1112184.9 7084424.5, 1106543 7082055))")
result, err = clipper.Clip(geom)
result, err = limiter.Clip(geom)
if err != nil {
t.Fatal(err)
}
@ -302,14 +302,14 @@ func TestClipper(t *testing.T) {
func TestClipperWithBuffer(t *testing.T) {
g := geos.NewGeos()
defer g.Finish()
clipper, err := NewFromOgrSourceWithBuffered("./hamburg_clip.geojson", 10000.0)
limiter, err := NewFromOgrSourceWithBuffered("./hamburg_clip.geojson", 10000.0)
if err != nil {
t.Fatal(err)
}
if clipper.IntersectsBuffer(g, 1106543, 7082055) != true {
if limiter.IntersectsBuffer(g, 1106543, 7082055) != true {
t.Fatal()
}
if clipper.IntersectsBuffer(g, 1006543, 7082055) != false {
if limiter.IntersectsBuffer(g, 1006543, 7082055) != false {
t.Fatal()
}
}
@ -317,14 +317,14 @@ func TestClipperWithBuffer(t *testing.T) {
func BenchmarkClipper(b *testing.B) {
g := geos.NewGeos()
defer g.Finish()
clipper, err := NewFromOgrSource("./hamburg_clip.geojson")
limiter, err := NewFromOgrSource("./hamburg_clip.geojson")
if err != nil {
b.Fatal(err)
}
geom := g.FromWkt("LINESTRING(1106543 7082055, 1107105.2 7087540.0)")
for i := 0; i < b.N; i++ {
result, err := clipper.Clip(geom)
result, err := limiter.Clip(geom)
if err != nil {
b.Fatal(err)
}

View File

@ -8,7 +8,7 @@ import (
_ "goposm/database/postgis"
"goposm/diff"
state "goposm/diff/state"
"goposm/geom/clipper"
"goposm/geom/limit"
"goposm/logging"
"goposm/mapping"
"goposm/parser/pbf"
@ -70,11 +70,11 @@ func main() {
reportErrors(errs)
break
}
var geometryClipper *clipper.Clipper
var geometryLimiter *limit.Limiter
if config.DiffImportOptions.Base.LimitTo != "" {
var err error
step := log.StartStep("Reading limitto geometries")
geometryClipper, err = clipper.NewFromOgrSource(config.DiffImportOptions.Base.LimitTo)
geometryLimiter, err = limit.NewFromOgrSource(config.DiffImportOptions.Base.LimitTo)
if err != nil {
log.Fatal(err)
}
@ -82,7 +82,7 @@ func main() {
}
for _, oscFile := range config.DiffImportFlags.Args() {
diff.Update(oscFile, geometryClipper, false)
diff.Update(oscFile, geometryLimiter, false)
}
default:
log.Fatal("invalid command")
@ -135,11 +135,11 @@ func mainimport() {
log.Fatal("-revertdeploy not compatible with -deployproduction/-removebackup")
}
var geometryClipper *clipper.Clipper
var geometryLimiter *limit.Limiter
if config.ImportOptions.Write && config.ImportOptions.Base.LimitTo != "" {
var err error
step := log.StartStep("Reading limitto geometries")
geometryClipper, err = clipper.NewFromOgrSource(config.ImportOptions.Base.LimitTo)
geometryLimiter, err = limit.NewFromOgrSource(config.ImportOptions.Base.LimitTo)
if err != nil {
log.Fatal(err)
}
@ -254,7 +254,7 @@ func mainimport() {
relations := osmCache.Relations.Iter()
relWriter := writer.NewRelationWriter(osmCache, diffCache, relations,
db, polygonsTagMatcher, progress, config.ImportOptions.Base.Srid)
relWriter.SetClipper(geometryClipper)
relWriter.SetLimiter(geometryLimiter)
relWriter.Start()
// blocks till the Relations.Iter() finishes
@ -264,7 +264,7 @@ func mainimport() {
ways := osmCache.Ways.Iter()
wayWriter := writer.NewWayWriter(osmCache, diffCache, ways, db,
lineStringsTagMatcher, polygonsTagMatcher, progress, config.ImportOptions.Base.Srid)
wayWriter.SetClipper(geometryClipper)
wayWriter.SetLimiter(geometryLimiter)
wayWriter.Start()
// blocks till the Ways.Iter() finishes
@ -274,7 +274,7 @@ func mainimport() {
nodes := osmCache.Nodes.Iter()
nodeWriter := writer.NewNodeWriter(osmCache, nodes, db,
pointsTagMatcher, progress, config.ImportOptions.Base.Srid)
nodeWriter.SetClipper(geometryClipper)
nodeWriter.SetLimiter(geometryLimiter)
nodeWriter.Start()
// blocks till the Nodes.Iter() finishes

View File

@ -66,8 +66,8 @@ func (nw *NodeWriter) loop() {
continue
}
if nw.clipper != nil {
parts, err := nw.clipper.Clip(n.Geom.Geom)
if nw.limiter != nil {
parts, err := nw.limiter.Clip(n.Geom.Geom)
if err != nil {
log.Println(err)
continue

View File

@ -107,8 +107,8 @@ NextRel:
continue NextRel
}
if rw.clipper != nil {
parts, err := rw.clipper.Clip(r.Geom.Geom)
if rw.limiter != nil {
parts, err := rw.limiter.Clip(r.Geom.Geom)
if err != nil {
log.Println(err)
continue NextRel

View File

@ -109,8 +109,8 @@ func (ww *WayWriter) buildAndInsert(geos *geos.Geos, w *element.Way, matches []m
return
}
if ww.clipper != nil {
parts, err := ww.clipper.Clip(way.Geom.Geom)
if ww.limiter != nil {
parts, err := ww.limiter.Clip(way.Geom.Geom)
if err != nil {
log.Println(err)
return

View File

@ -5,7 +5,7 @@ import (
"goposm/database"
"goposm/element"
"goposm/expire"
"goposm/geom/clipper"
"goposm/geom/limit"
"goposm/mapping"
"goposm/stats"
"runtime"
@ -26,14 +26,14 @@ type OsmElemWriter struct {
progress *stats.Statistics
insertBuffer database.RowInserter
wg *sync.WaitGroup
clipper *clipper.Clipper
limiter *limit.Limiter
writer looper
srid int
expireTiles *expire.Tiles
}
func (writer *OsmElemWriter) SetClipper(clipper *clipper.Clipper) {
writer.clipper = clipper
func (writer *OsmElemWriter) SetLimiter(limiter *limit.Limiter) {
writer.limiter = limiter
}
func (writer *OsmElemWriter) Start() {