osrm-backend/traffic_updater/README.md
Jay fa37e1f618 Integrate Telenav Traffic Design and traffic_updater implementation (#18)
feat: Define thrift protocol with traffic service and implement logic which generates traffic update file for OSRM

- OSRM with telenav traffic architecture
- Define traffic protocol in thrift and generate de-coding code
- Implement logic to pull result from traffic server and generate csv which could be used for OSRM customization

Closes #1, #2, #3
2019-06-17 13:50:31 -07:00

1.9 KiB

OSRM Traffic Updater

The OSRM Traffic Updater is designed for pull traffic data from Traffic Proxy(Telenav) then dump to OSRM required traffic.csv. Refer to OSRM with Telenav Traffic Design and OSRM Traffic for more details.
We have implemented both Python and Go version. Both of them have same function(pull data then dump to csv), but the Go implementation is about 23 times faster than Python implementation. So strongly recommended to use Go implementation as preference.

  • E.g. 6727490 lines traffic of NA region
    • Go Implementation: about 9 seconds
    • Python Implementation: about 210 seconds

RPC Protocol

See proxy.thrift for details.

Python Implementation

The python based implementation has been deprecated due to bad performance. See Deprecated Python Implementation Codes if you'd like to see code details.

Go Implementation

Requirements

  • go version go1.12.5 linux/amd64
  • thrift 0.12.0
    • clone thrift from github.com/apache/thrift, then checkout branch 0.12.0
  • change thrift imports in generated codes gen-go/proxy
    • git.apache.org/thrift.git/lib/go/thrift -> github.com/apache/thrift/lib/go/thrift

Usage

$ cd $GOPATH
$ go install github.com/Telenav/osrm-backend/traffic_updater/go/osrm_traffic_updater
$ ./bin/osrm_traffic_updater -h
Usage of ./bin/osrm_traffic_updater:
  -c string
        traffic proxy ip address (default "127.0.0.1")
  -d    use high precision speeds, i.e. decimal (default true)
  -f string
        OSRM traffic csv file (default "traffic.csv")
  -p int
        traffic proxy listening port (default 6666)