<feed xmlns='http://www.w3.org/2005/Atom'>
<title>chouette-core/lib/tom_tom, branch 6960-workgroup-edition</title>
<subtitle>Chouette manage transport static data</subtitle>
<link rel='alternate' type='text/html' href='https://git.teddywing.com/fork/chouette-core/'/>
<entry>
<title>TomTom::Matrix: Disable traffic information</title>
<updated>2018-04-27T10:38:09+00:00</updated>
<author>
<name>Teddy Wing</name>
</author>
<published>2018-04-27T10:38:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.teddywing.com/fork/chouette-core/commit/?id=ee6edf03f8da4015080261f3244144293e56ad11'/>
<id>ee6edf03f8da4015080261f3244144293e56ad11</id>
<content type='text'>
By default the TomTom API uses traffic data to calculate travel time.
This means that previously, getting costs for the exact same route twice
at different times could produce different results.

Johan made a good suggestion to turn off this functionality as it's
apparently enabled by default. This should get us correct times
regardless of time of day since the distances will be effectively the
same.

Refs #6661
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
By default the TomTom API uses traffic data to calculate travel time.
This means that previously, getting costs for the exact same route twice
at different times could produce different results.

Johan made a good suggestion to turn off this functionality as it's
apparently enabled by default. This should get us correct times
regardless of time of day since the distances will be effectively the
same.

Refs #6661
</pre>
</div>
</content>
</entry>
<entry>
<title>Add a small log message for each TomTom invocation. Refs #6222</title>
<updated>2018-04-04T08:02:53+00:00</updated>
<author>
<name>Alban Peignier</name>
</author>
<published>2018-04-04T08:02:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.teddywing.com/fork/chouette-core/commit/?id=2cb5225efbb080707c060e4038ae6d48612515f0'/>
<id>2cb5225efbb080707c060e4038ae6d48612515f0</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>TomTom::Matrix: Add comment about JSON serialisation</title>
<updated>2018-03-27T14:46:18+00:00</updated>
<author>
<name>Teddy Wing</name>
</author>
<published>2018-03-27T14:28:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.teddywing.com/fork/chouette-core/commit/?id=6be13632388dd938a60447b540519678083c5711'/>
<id>6be13632388dd938a60447b540519678083c5711</id>
<content type='text'>
Make it clearer why we have to use a custom serialiser here.

Refs #6222
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Make it clearer why we have to use a custom serialiser here.

Refs #6222
</pre>
</div>
</content>
</entry>
<entry>
<title>TomTom::Matrix: Serialize `BigDecimal` as float</title>
<updated>2018-03-27T14:46:18+00:00</updated>
<author>
<name>Teddy Wing</name>
</author>
<published>2018-03-27T13:24:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.teddywing.com/fork/chouette-core/commit/?id=c17665c0cc064c8a14af812dedd645977d110388'/>
<id>c17665c0cc064c8a14af812dedd645977d110388</id>
<content type='text'>
Rails serialises `BigDecimal`s as JSON strings to prevent loss of
precision. The `latitude` and `longitude` columns in `StopArea` are
stored as `BigDecimal`s. The trouble is that TomTom's API requires the
latitude &amp; longitude values to be JSON floats, not strings.

Make a new JSON serialiser that converts the `BigDecimal` coordinates to
float to allow the values to be correctly interpreted by the API.

Refs #6222
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Rails serialises `BigDecimal`s as JSON strings to prevent loss of
precision. The `latitude` and `longitude` columns in `StopArea` are
stored as `BigDecimal`s. The trouble is that TomTom's API requires the
latitude &amp; longitude values to be JSON floats, not strings.

Make a new JSON serialiser that converts the `BigDecimal` coordinates to
float to allow the values to be correctly interpreted by the API.

Refs #6222
</pre>
</div>
</content>
</entry>
<entry>
<title>TomTom::Matrix: Remove completed TODO</title>
<updated>2018-03-27T14:46:18+00:00</updated>
<author>
<name>Teddy Wing</name>
</author>
<published>2018-03-26T14:02:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.teddywing.com/fork/chouette-core/commit/?id=f03f942ecb9b802664dee0cc0f33f96a566c67e9'/>
<id>f03f942ecb9b802664dee0cc0f33f96a566c67e9</id>
<content type='text'>
Already handled this a few commits ago.

Refs #6222
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Already handled this a few commits ago.

Refs #6222
</pre>
</div>
</content>
</entry>
<entry>
<title>TomTom::Matrix#points_from_way_costs: Use array instead of set</title>
<updated>2018-03-27T14:46:18+00:00</updated>
<author>
<name>Teddy Wing</name>
</author>
<published>2018-03-26T13:52:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.teddywing.com/fork/chouette-core/commit/?id=ebd46f068fbf11ea8793e9f7982b3a5291e21398'/>
<id>ebd46f068fbf11ea8793e9f7982b3a5291e21398</id>
<content type='text'>
Using a set ended up not working out. I needed to be able to index into
the list in `#extract_costs_to_way_costs!`, and sets aren't indexable.
This is because they're supposed to be unordered, though modern Ruby
implements `Set` with `Hash` under the hood, which is ordered in Ruby.

I like the idea of having a data structure that automatically eliminates
duplicates, but it wasn't meant to be, because for the extraction to
`WayCost`s, I need an ordered list. Rather than create a new
`OrderedSet` type, I just went the simple route and used an Array,
eliminating the duplicates manually because I know when duplicates are
supposed to occur due to the nature of the data set.

Remove the `#eql?` and `#hash` methods from `TomTom::Matrix::Point`.
Because we're not longer using `Set`, these methods don't need to be
implemented.

Refs #6222
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Using a set ended up not working out. I needed to be able to index into
the list in `#extract_costs_to_way_costs!`, and sets aren't indexable.
This is because they're supposed to be unordered, though modern Ruby
implements `Set` with `Hash` under the hood, which is ordered in Ruby.

I like the idea of having a data structure that automatically eliminates
duplicates, but it wasn't meant to be, because for the extraction to
`WayCost`s, I need an ordered list. Rather than create a new
`OrderedSet` type, I just went the simple route and used an Array,
eliminating the duplicates manually because I know when duplicates are
supposed to occur due to the nature of the data set.

Remove the `#eql?` and `#hash` methods from `TomTom::Matrix::Point`.
Because we're not longer using `Set`, these methods don't need to be
implemented.

Refs #6222
</pre>
</div>
</content>
</entry>
<entry>
<title>TomTom::Matrix#extract_costs_to_way_costs!: Try to include stop IDs</title>
<updated>2018-03-27T14:46:18+00:00</updated>
<author>
<name>Teddy Wing</name>
</author>
<published>2018-03-26T09:49:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.teddywing.com/fork/chouette-core/commit/?id=ddfc41f75cb52f02511e2acd6429270bc9c0ab19'/>
<id>ddfc41f75cb52f02511e2acd6429270bc9c0ab19</id>
<content type='text'>
Change this code to get stop IDs based on the change in
be3e1effcdea87909a181c7e9b12cf6867b1839d. It should use these IDs to
construct new `WayCost`s with the combination of stop IDs from departure
and arrival stops.

This doesn't work currently because the method has code that tries to
index the `points` collection, but it's a `Set`, and sets don't support
indexing and aren't ordered, so this code errors. Need to change the
`Set` to something else that will work here.

Refs #6222
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Change this code to get stop IDs based on the change in
be3e1effcdea87909a181c7e9b12cf6867b1839d. It should use these IDs to
construct new `WayCost`s with the combination of stop IDs from departure
and arrival stops.

This doesn't work currently because the method has code that tries to
index the `points` collection, but it's a `Set`, and sets don't support
indexing and aren't ordered, so this code errors. Need to change the
`Set` to something else that will work here.

Refs #6222
</pre>
</div>
</content>
</entry>
<entry>
<title>TomTom::Matrix#points_as_params: Use `TomTom::Matrix::Point`s</title>
<updated>2018-03-27T14:46:18+00:00</updated>
<author>
<name>Teddy Wing</name>
</author>
<published>2018-03-23T17:05:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.teddywing.com/fork/chouette-core/commit/?id=0a45ba811eefebb97bdc75f5e70da2be13186c28'/>
<id>0a45ba811eefebb97bdc75f5e70da2be13186c28</id>
<content type='text'>
Rewrite this method to accept `TomTom::Matrix::Point`s instead of plain
`Geokit::LatLng` coordinates. Do this because this method needs to take
the result of `#points_from_way_costs` as input, and that method now
returns a `Set` of `Point`s.

Refs #6222
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Rewrite this method to accept `TomTom::Matrix::Point`s instead of plain
`Geokit::LatLng` coordinates. Do this because this method needs to take
the result of `#points_from_way_costs` as input, and that method now
returns a `Set` of `Point`s.

Refs #6222
</pre>
</div>
</content>
</entry>
<entry>
<title>TomTom::Matrix#points_from_way_costs: Better names for IDs</title>
<updated>2018-03-27T14:46:18+00:00</updated>
<author>
<name>Teddy Wing</name>
</author>
<published>2018-03-23T16:57:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.teddywing.com/fork/chouette-core/commit/?id=1c1ecc85064042b0d719e3134afe310227d41f1c'/>
<id>1c1ecc85064042b0d719e3134afe310227d41f1c</id>
<content type='text'>
Instead of a generic `ids` array, use clearer variable names for these
values.

Refs #6222
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Instead of a generic `ids` array, use clearer variable names for these
values.

Refs #6222
</pre>
</div>
</content>
</entry>
<entry>
<title>TomTom::Matrix#points_from_way_costs: Include stop IDs with points</title>
<updated>2018-03-27T14:46:18+00:00</updated>
<author>
<name>Teddy Wing</name>
</author>
<published>2018-03-23T16:01:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.teddywing.com/fork/chouette-core/commit/?id=e2cbcdb4dc32db05e2c6d7a7bb57952e1da6dab3'/>
<id>e2cbcdb4dc32db05e2c6d7a7bb57952e1da6dab3</id>
<content type='text'>
We need to persist stop IDs in order to properly construct `WayCost`
objects from the costs returned from the TomTom matrix API.

In order to persist stop IDs, my idea here is to group together a point
and its corresponding ID into a bucket. When we later
`#extract_costs_to_way_costs!`, we'll be able to grab the correct ID for
a given coordinate to create a `WayCost` from it.

Here, we create a new `TomTom::Matrix::Point` class that encapsulates a
coordinate and an ID, and build a `Set` of those. I needed an `#eql?`
and `#hash` method on `Point` as described in the `Set` documentation
(https://ruby-doc.org/stdlib-1.9.3/libdoc/set/rdoc/Set.html) in order to
properly maintain a unique set.

Refs #6222
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We need to persist stop IDs in order to properly construct `WayCost`
objects from the costs returned from the TomTom matrix API.

In order to persist stop IDs, my idea here is to group together a point
and its corresponding ID into a bucket. When we later
`#extract_costs_to_way_costs!`, we'll be able to grab the correct ID for
a given coordinate to create a `WayCost` from it.

Here, we create a new `TomTom::Matrix::Point` class that encapsulates a
coordinate and an ID, and build a `Set` of those. I needed an `#eql?`
and `#hash` method on `Point` as described in the `Set` documentation
(https://ruby-doc.org/stdlib-1.9.3/libdoc/set/rdoc/Set.html) in order to
properly maintain a unique set.

Refs #6222
</pre>
</div>
</content>
</entry>
</feed>
