Map::Tube::Warsaw - Interface to the Warsaw Tube Map.
use Map::Tube::Warsaw; my $obj = Map::Tube::Warsaw->new; my $routes_ar = $obj->get_all_routes($from, $to); my $line = $obj->get_line_by_id($line_id); my $line = $obj->get_line_by_name($line_name); my $lines_ar = $obj->get_lines; my $station = $obj->get_node_by_id($station_id); my $station = $obj->get_node_by_name($station_name); my $route = $obj->get_shortest_route($from, $to); my $stations_ar = $obj->get_stations($line); my $metro_name = $obj->name; my $xml = $obj->xml;
It currently provides functionality to find the shortest route between the two given nodes.
For more information about Warsaw Map, click here.
new
my $obj = Map::Tube::Warsaw->new;
Constructor.
Returns instance of object.
get_all_routes
my $routes_ar = $obj->get_all_routes($from, $to);
Get all routes from station to station.
Returns reference to array with Map::Tube::Route objects.
get_line_by_id
my $line = $obj->get_line_by_id($line_id);
Get line object defined by id.
Returns Map::Tube::Line object.
get_line_by_name
my $line = $obj->get_line_by_name($line_name);
Get line object defined by name.
get_lines
my $lines_ar = $obj->get_lines;
Get lines in metro map.
Returns reference to unsorted array with Map::Tube::Line objects.
get_node_by_id
my $station = $obj->get_node_by_id($station_id);
Get station node by id.
Returns Map::Tube::Node object.
get_node_by_name
my $station = $obj->get_node_by_name($station_name);
Get station node by name.
get_shortest_route
my $route = $obj->get_shortest_route($from, $to);
Get shortest route between $from and $to node names. Node names in $from and $to are case insensitive.
Returns Map::Tube::Route object.
get_stations
my $stations_ar = $obj->get_stations($line);
Get list of stations for concrete metro line.
Returns reference to array with Map::Tube::Node objects.
name
my $metro_name = $obj->name;
Get metro name.
Returns string with metro name.
xml
my $xml = $obj->xml;
Get XML specification of Warsaw metro.
Returns string with XML.
use strict; use warnings; use Encode qw(decode_utf8 encode_utf8); use Map::Tube::Warsaw; # Object. my $obj = Map::Tube::Warsaw->new; # Get route. my $route = $obj->get_shortest_route(decode_utf8('Imielin'), decode_utf8('Świętokrzyska')); # Print out type. print "Route: ".encode_utf8($route)."\n"; # Output: # Route: Imielin (Linia M1), Stokłosy (Linia M1), Ursynów (Linia M1), Służew (Linia M1), Wilanowska (Linia M1), Wierzbno (Linia M1), Racławicka (Linia M1), Pole Mokotowskie (Linia M1), Politechnika (Linia M1), Centrum (Linia M1), Świętokrzyska (Linia M1)
use strict; use warnings; use Map::Tube::Warsaw; # Object. my $obj = Map::Tube::Warsaw->new; # Get XML file. my $xml_file = $obj->xml; # Print out XML file. print "XML file: $xml_file\n"; # Output like: # XML file: .*/warsaw-map.xml
use strict; use warnings; use Map::Tube::GraphViz; use Map::Tube::GraphViz::Utils qw(node_color_without_label); use Map::Tube::Warsaw; # Object. my $obj = Map::Tube::Warsaw->new; # GraphViz object. my $g = Map::Tube::GraphViz->new( 'callback_node' => \&node_color_without_label, 'tube' => $obj, ); # Get graph to file. $g->graph('Warsaw.png'); # Print file. system "ls -l Warsaw.png"; # Output like: # -rw-r--r-- 1 skim skim 90061 lis 3 23:18 Warsaw.png
use strict; use warnings; use Encode qw(encode_utf8); use Map::Tube::Warsaw; # Object. my $obj = Map::Tube::Warsaw->new; # Get lines. my $lines_ar = $obj->get_lines; # Print out. map { print encode_utf8($_->name)."\n"; } sort @{$lines_ar}; # Output: # Linia M1 # Linia M2
use strict; use warnings; use Encode qw(encode_utf8); use Map::Tube::Warsaw; # Arguments. if (@ARGV < 1) { print STDERR "Usage: $0 line\n"; exit 1; } my $line = $ARGV[0]; # Object. my $obj = Map::Tube::Warsaw->new; # Get stations for line. my $stations_ar = $obj->get_stations($line); # Print out. map { print encode_utf8($_->name)."\n"; } @{$stations_ar}; # Output: # Usage: __PROG__ line # Output with 'foo' argument. # Map::Tube::get_stations(): ERROR: Invalid Line Name [foo]. (status: 105) file __PROG__ on line __LINE__ # Output with 'Linia M1' argument. # Kabaty # Natolin # Imielin # Stokłosy # Ursynów # Służew # Wilanowska # Wierzbno # Racławicka # Pole Mokotowskie # Politechnika # Centrum # Świętokrzyska # Ratusz Arsenał # Dworzec Gdański # Plac Wilsona # Marymont # Słodowiec # Stare Bielany # Wawrzyszew # Młociny
File::Share, Map::Tube, Moo, namespace::clean.
Core library as Role (Moo) to process map data.
Install the Map::Tube modules.
Install the Map::Tube concrete metro modules.
https://github.com/michal-josef-spacek/Map-Tube-Warsaw
Michal Josef Špaček mailto:skim@cpan.org
http://skim.cz
© 2014-2021 Michal Josef Špaček
Artistic License
BSD 2-Clause License
0.08
To install Map::Tube::Warsaw, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Map::Tube::Warsaw
CPAN shell
perl -MCPAN -e shell install Map::Tube::Warsaw
For more information on module installation, please visit the detailed CPAN module installation guide.