renamed geom/clipper to geom/limit
parent
0f10433ed5
commit
4ec962f002
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
|
@ -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)
|
||||
}
|
18
goposm.go
18
goposm.go
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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() {
|
||||
|
|
Loading…
Reference in New Issue