polyline sanity check: Handle border stations and incomplete IRIS routes
This commit is contained in:
parent
1d2b37f849
commit
3c897ad62a
1 changed files with 12 additions and 3 deletions
|
@ -2077,10 +2077,19 @@ sub startup {
|
||||||
|
|
||||||
$cache->freeze( $url, $ret );
|
$cache->freeze( $url, $ret );
|
||||||
|
|
||||||
my $iris_stations = join( '|', $train->route );
|
# borders ("(Gr)" as in "Grenze") are only returned by HAFAS.
|
||||||
my $hafas_stations = join( '|', @station_list );
|
# They are not stations.
|
||||||
|
my $iris_stations = join( '|', $train->route );
|
||||||
|
my $hafas_stations
|
||||||
|
= join( '|', grep { $_ !~ m{\(Gr\)$} } @station_list );
|
||||||
|
|
||||||
if ( $iris_stations ne $hafas_stations ) {
|
# Do not return polyline if it belongs to an entirely different
|
||||||
|
# train. Trains with longer routes (e.g. due to train number
|
||||||
|
# changes, which are handled by HAFAS but left out in IRIS)
|
||||||
|
# are okay though.
|
||||||
|
if ( $iris_stations ne $hafas_stations
|
||||||
|
and index( $hafas_stations, $iris_stations ) == -1 )
|
||||||
|
{
|
||||||
$self->app->log->warn( 'Ignoring polyline for '
|
$self->app->log->warn( 'Ignoring polyline for '
|
||||||
. $train->line
|
. $train->line
|
||||||
. ": IRIS route does not agree with HAFAS route: $iris_stations != $hafas_stations"
|
. ": IRIS route does not agree with HAFAS route: $iris_stations != $hafas_stations"
|
||||||
|
|
Loading…
Reference in a new issue