Documentation ¶
Overview ¶
Package osmpbf decodes OpenStreetMap (OSM) PBF files. Use this package by creating a NewDecoder and passing it a PBF file. Use Start to start decoding process. Use Decode to return Node, Way and Relation structs.
Example ¶
package main import ( "fmt" "io" "log" "os" "runtime" "github.com/HellButcher/osmpbf" ) func main() { f, err := os.Open("greater-london-140324.osm.pbf") if err != nil { log.Fatal(err) } defer f.Close() d := osmpbf.NewDecoder(f) // use more memory from the start, it is faster d.SetBufferSize(osmpbf.MaxBlobSize) // start decoding with several goroutines, it is faster err = d.Start(runtime.GOMAXPROCS(-1)) if err != nil { log.Fatal(err) } var nc, wc, rc uint64 for { if v, err := d.Decode(); err == io.EOF { break } else if err != nil { log.Fatal(err) } else { switch v := v.(type) { case *osmpbf.Node: // Process Node v. nc++ case *osmpbf.Way: // Process Way v. wc++ case *osmpbf.Relation: // Process Relation v. rc++ default: log.Fatalf("unknown type %T\n", v) } } } fmt.Printf("Nodes: %d, Ways: %d, Relations: %d\n", nc, wc, rc) }
Output: Nodes: 2729006, Ways: 459055, Relations: 12833
Index ¶
Examples ¶
Constants ¶
const (
// MaxBlobSize is maximum supported blob size.
MaxBlobSize = 32 * 1024 * 1024
)
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type BoundingBox ¶
type Decoder ¶
type Decoder struct { Options DecoderOptions // contains filtered or unexported fields }
A Decoder reads and decodes OpenStreetMap PBF data from an input stream.
func NewDecoder ¶
NewDecoder returns a new decoder that reads from r.
func (*Decoder) Decode ¶
Decode reads the next object from the input stream and returns either a pointer to Node, Way or Relation struct representing the underlying OpenStreetMap PBF data, or error encountered. The end of the input stream is reported by an io.EOF error.
Decode is safe for parallel execution. Only first error encountered will be returned, subsequent invocations will return io.EOF.
func (*Decoder) SetBufferSize ¶
SetBufferSize sets initial size of decoding buffer. Default value is 1MB, you can set higher value (for example, MaxBlobSize) for (probably) faster decoding, or lower value for reduced memory consumption. Any value will produce valid results; buffer will grow automatically if required.
type DecoderOptions ¶
Options for controlling the decoder
type Member ¶
type Member struct { ID int64 Type MemberType Role string }