write coords->way index
parent
51ccd02645
commit
773cbaac94
|
@ -114,9 +114,9 @@ func NewRefIndex(path string) (*RefIndex, error) {
|
|||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
index.write = make(chan map[int64][]int64)
|
||||
index.write = make(chan map[int64][]int64, 2)
|
||||
index.cache = make(map[int64][]int64, cacheSize)
|
||||
index.add = make(chan idRef)
|
||||
index.add = make(chan idRef, 1024)
|
||||
|
||||
index.waitWrite = &sync.WaitGroup{}
|
||||
index.waitAdd = &sync.WaitGroup{}
|
||||
|
|
23
goposm.go
23
goposm.go
|
@ -180,13 +180,16 @@ func main() {
|
|||
if err != nil {
|
||||
die(err)
|
||||
}
|
||||
var diffCache *cache.DiffCache
|
||||
|
||||
diffCache := cache.NewDiffCache(*cachedir)
|
||||
if err = diffCache.Remove(); err != nil {
|
||||
die(err)
|
||||
}
|
||||
if err = diffCache.Open(); err != nil {
|
||||
die(err)
|
||||
if *diff {
|
||||
diffCache = cache.NewDiffCache(*cachedir)
|
||||
if err = diffCache.Remove(); err != nil {
|
||||
die(err)
|
||||
}
|
||||
if err = diffCache.Open(); err != nil {
|
||||
die(err)
|
||||
}
|
||||
}
|
||||
|
||||
insertBuffer := writer.NewInsertBuffer()
|
||||
|
@ -206,7 +209,7 @@ func main() {
|
|||
relWriter.Close()
|
||||
|
||||
ways := osmCache.Ways.Iter()
|
||||
wayWriter := writer.NewWayWriter(osmCache, ways, insertBuffer,
|
||||
wayWriter := writer.NewWayWriter(osmCache, diffCache, ways, insertBuffer,
|
||||
lineStringsTagMatcher, polygonsTagMatcher, progress)
|
||||
wayWriter.SetClipper(geometryClipper)
|
||||
wayWriter.Start()
|
||||
|
@ -217,14 +220,16 @@ func main() {
|
|||
nodeWriter.SetClipper(geometryClipper)
|
||||
nodeWriter.Start()
|
||||
|
||||
diffCache.Coords.Close()
|
||||
|
||||
wayWriter.Close()
|
||||
nodeWriter.Close()
|
||||
insertBuffer.Close()
|
||||
dbWriter.Close()
|
||||
progress.Stop()
|
||||
|
||||
if *diff {
|
||||
diffCache.Close()
|
||||
}
|
||||
|
||||
log.StopStep(stepWrite)
|
||||
|
||||
if db, ok := db.(database.Generalizer); ok {
|
||||
|
|
|
@ -19,12 +19,13 @@ type WayWriter struct {
|
|||
polygonTagMatcher *mapping.TagMatcher
|
||||
}
|
||||
|
||||
func NewWayWriter(osmCache *cache.OSMCache, ways chan *element.Way,
|
||||
func NewWayWriter(osmCache *cache.OSMCache, diffCache *cache.DiffCache, ways chan *element.Way,
|
||||
insertBuffer *InsertBuffer, lineStringTagMatcher *mapping.TagMatcher,
|
||||
polygonTagMatcher *mapping.TagMatcher, progress *stats.Statistics) *OsmElemWriter {
|
||||
ww := WayWriter{
|
||||
OsmElemWriter: OsmElemWriter{
|
||||
osmCache: osmCache,
|
||||
diffCache: diffCache,
|
||||
progress: progress,
|
||||
wg: &sync.WaitGroup{},
|
||||
insertBuffer: insertBuffer,
|
||||
|
@ -65,9 +66,9 @@ func (ww *WayWriter) loop() {
|
|||
}
|
||||
}
|
||||
|
||||
// if *diff {
|
||||
// ww.diffCache.Coords.AddFromWay(w)
|
||||
// }
|
||||
if ww.diffCache != nil {
|
||||
ww.diffCache.Coords.AddFromWay(w)
|
||||
}
|
||||
}
|
||||
ww.wg.Done()
|
||||
}
|
||||
|
|
|
@ -55,6 +55,7 @@ type looper interface {
|
|||
|
||||
type OsmElemWriter struct {
|
||||
osmCache *cache.OSMCache
|
||||
diffCache *cache.DiffCache
|
||||
progress *stats.Statistics
|
||||
insertBuffer *InsertBuffer
|
||||
wg *sync.WaitGroup
|
||||
|
|
Loading…
Reference in New Issue