Map::Tube::KualaLumpur - Interface to the KualaLumpur urban monorail system map.
use Map::Tube::KualaLumpur; my $obj = Map::Tube::KualaLumpur->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_file = $obj->xml;
It currently provides functionality to find the shortest route between the two given nodes.
For more information about KualaLumpur Map, click here and here.
new()
Constructor.
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($line_id)
Get line object defined by id. Returns Map::Tube::Line object.
get_line_by_name($line_name)
Get line object defined by name. Returns Map::Tube::Line object.
get_lines()
Get lines in metro map. Returns reference to unsorted array with Map::Tube::Line objects.
get_node_by_id($station_id)
Get station node by id. Returns Map::Tube::Node object.
get_node_by_name($station_name)
Get station node by name. Returns Map::Tube::Node object.
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($line)
Get list of stations for concrete metro line. Returns reference to array with Map::Tube::Node objects.
name()
Get metro name. Returns string with metro name.
xml()
Get XML specification of Kuala Lumpur metro. Returns string with XML.
use strict; use warnings; use Encode qw(decode_utf8 encode_utf8); use Map::Tube::KualaLumpur; # Object. my $obj = Map::Tube::KualaLumpur->new; # Get route. my $route = $obj->get_shortest_route('Kuang', 'Subang Jaya'); # Print out type. print "Route: ".encode_utf8($route)."\n"; # Output: # Route: Kuang (Seremban Line), Sungai Buloh (Seremban Line), Kepong Sentral (Seremban Line), Kepong (Seremban Line), Segambut (Seremban Line), Putra (Port Klang Line, Walking), Bank Negara (Port Klang Line, Walking), Kuala Lumpur (Port Klang Line), KL Sentral (Port Klang Line, Terminal1, Terminal5, Walking, Terminal6), Angkasapuri (Port Klang Line), Pantai Dalam (Port Klang Line), Petaling (Port Klang Line), Jalan Templer (Port Klang Line), Kampung Dato Harun (Port Klang Line), Seri Setia (Port Klang Line), Setia Jaya (Port Klang Line), Subang Jaya (Port Klang Line)
use strict; use warnings; use Map::Tube::KualaLumpur; # Object. my $obj = Map::Tube::KualaLumpur->new; # Get XML file. my $xml_file = $obj->xml; # Print out XML file. print "XML file: $xml_file\n"; # Output like: # XML file: .*/kuala_lumpur-map.xml
use strict; use warnings; use Map::Tube::GraphViz; use Map::Tube::GraphViz::Utils qw(node_color_without_label); use Map::Tube::KualaLumpur; # Object. my $obj = Map::Tube::KualaLumpur->new; # GraphViz object. my $g = Map::Tube::GraphViz->new( 'callback_node' => \&node_color_without_label, 'tube' => $obj, ); # Get graph to file. $g->graph('KualaLumpur.png'); # Print file. system "ls -l KualaLumpur.png"; # Output like: # -rw-r--r-- 1 skim skim 379962 Sep 28 12:11 KualaLumpur.png
use strict; use warnings; use Encode qw(encode_utf8); use Map::Tube::KualaLumpur; # Object. my $obj = Map::Tube::KualaLumpur->new; # Get lines. my $lines_ar = $obj->get_lines; # Print out. map { print encode_utf8($_->name)."\n"; } sort @{$lines_ar}; # Output: # Ampang Line # KL Monorail Line # KLIA Ekspres Line # KLIA Transit Line # Kelana Jaya Line # Port Klang Line # Seremban Line # Sri Petaling Line
use strict; use warnings; use Encode qw(encode_utf8); use Map::Tube::KualaLumpur; # Arguments. if (@ARGV < 1) { print STDERR "Usage: $0 line\n"; exit 1; } my $line = $ARGV[0]; # Object. my $obj = Map::Tube::KualaLumpur->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 'Ampang Line' argument. # Sentul Timur # Sentul # Titiwangsa # PWTC # Sultan Ismail # Bandaraya # Masjid Jamek # Plaza Rakyat # Hang Tuah # Pudu # Chan Sow Lin # Miharja # Maluri # Pandan Jaya # Pandan Indah # Cempaka # Cahaya # Ampang
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-KualaLumpur
Michal Josef Špaček mailto:skim@cpan.org
http://skim.cz
© 2014-2020 Michal Josef Špaček Artistic License BSD 2-Clause License
0.06
To install Map::Tube::KualaLumpur, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Map::Tube::KualaLumpur
CPAN shell
perl -MCPAN -e shell install Map::Tube::KualaLumpur
For more information on module installation, please visit the detailed CPAN module installation guide.