Issuu on Google+

Implementação de uma interface gráfica para o planeamento de transportes João Moreira Introdução Este trabalho surge com o propósito de continuar o trabalho realizado pelo Rodrigo Henriques na sua tese de mestrado. Foi-me fornecido o referido trabalho que teve como objectivo a implementação de uma aplicação em Matlab, que recebe determinados pontos como parâmetros e, através de um algoritmo baseado na colónia de formigas, retorna o caminho mais curto ou próximo do mais curto (algoritmo matematicamente não linear), mediante restrições temporais e distanciais. O meu projecto de Licenciatura em Informática tem como objectivo a implementação de uma interface gráfica, desenvolvida em ASP.Net C# MVC2 , com suporte da API do Google Maps em Javascritpt. Nesta interface gráfica são marcados pontos e são inseridos dados referentes a esses pontos/paragens que serão guardados numa base de dados, executados pela aplicação Matlab que calculará o percurso. Posteriormente esse resultado será desenhado novamente através da interface gráfica desenvolvida.

Criação de uma interface gráfica onde são inseridos pontos e respectivos dados

Esta interface foi desenvolvida em “Javascript” com suporte da API do Google Maps, assim como foi referido. Além de ser a interface de marcação de pontos é também a primeira página a ser acedida. A partir dessa e através do menu, poderá ser inserida a informação referente aos autocarros e opções temporais, bem como consultar o percurso actual caso já tenham sido inseridos dados para o efeito. Nesse contexto, se a base de dados não estiver vazia, automaticamente, ao abrir a aplicação, serão visíveis no mapa disposto na figura anterior, os pontos anteriormente marcados, podendo neste caso serem acrescentados e guardados da mesma forma, como se o mapa estivesse vazio. Os pontos são marcados no Mapa, um de cada vez, não podendo ser marcado o segundo ponto sem que o primeiro seja guardado (através do botão guardar) e sem que os campos referentes sejam preenchidos correctamente. O número de passageiros não poderá ser superior ao número de lugares que o autocarro dispõem e a hora de chegada não poderá ser inferior ou superior ao intervalo disponível para recolha de passageiros. Se este intervalo e a informação referente aos autocarros não estiverem definidos, o utilizador será reencaminhado para a página de gestão de autocarros, depois de avisado e confirmada essa intenção.

Ultrapassado este passo e, antes da marcação de um novo ponto, é ainda possível alterar o ponto recém-guardado através do botão editar, estando ainda visíveis mas não editáveis todos os campos. Marcando o ponto seguinte no mapa, todas as caixas de texto serão apagadas para o utilizador preencher os seus dados. O botão excluir, da mesma forma, tem o propósito de corrigir um botão recémguardado, podendo ser eliminado também antes da marcação de um novo ponto no mapa. Relativamente ao botão “Procurar”, este tem como finalidade pesquisar um ponto guardado no sentido de o excluir ou editar. A informação relativa a cada ponto está disponível ao utilizador clicando no mapa, no ponto que pretende. Depois de concluída a inserção de todos os pontos, o utilizador deverá clicar no botão “Exportar Marcas”, despoletando um pedido que encaminhará todos os dados para o “Controller”. Este, por sua vez, guardará a informação de todos os pontos na base de dados e executará a aplicação em Matlab, retornando a sequência de pontos a serem visitados. O “Controller” enviará então esse resultado para outra “View”, que se encarregará de desenhar o percurso.

Criação de uma interface que desenha o percurso calculado

Esta interface foi desenvolvida da mesma forma em “Javascript” e desenhará automaticamente um percurso calculado. Esta página poderá ser acedida através do botão “Percurso calculado”, na páginObjectivo 2: Criação de uma interface que desenha o percurso calculado a principal, ou através do botão “calcular percurso”, presentes na página principal, sendo obrigatório o preenchimento de dados de pelo menos dois pontos. Consultada esta página, poderá ser impresso o mapa nela presente, acrescido da informação de cada ponto presente num balão, contendo os mesmos dados inseridos na página principal e ainda a ordem de visita. A razão pela qual não está visível ao utilizador essa informação, deve-se ao facto de o mesmo poder alterar um percurso e esse balão informativo poderia dificultar esse processo. Considerando o facto de o Google Maps não ser actualizado todos os dias e não considerar caminhos privados, que poderão eventualmente ser usados, foi acrescentada uma funcionalidade no sentido de alterar uma rota calculada. Para tal, será necessário clicar no botão “alterar rota”, ficando disponíveis para inserção duas caixas de texto, para preenchimento de dois pontos correspondentes a um trajecto e apagada a linha correspondente ao trajecto previsto. Este percurso alterado, será formado, através de linhas rectas sucessivas, ligadas entre si, até ao segundo ponto, podendo ser eliminada a anterior, sucessivamente, até ao inicio de edição (botão “cancelar linha”). O botão “alterar”, guarda a edição, depois de confirmada a união entre os dois pontos inseridos, despoletando um pedido “AJAX”, encaminhando os dados para o “Controller” que se encarregará de gravar a alteração na base de dados. De seguida, é invocada novamente a “View” correspondente ao “Percurso calculado”, onde será visível a nova alteração, permitindo assim, de igual forma, a impressão pretendida.

Criação de uma página que suporte a gestão de autocarros

Nesta página, é possível a inserção de dados referentes aos autocarros disponíveis e ainda a indicação do intervalo temporal disponível para recolha de passageiros. Inicialmente, sem que tenham sido inseridos quaisquer dados, a “”ListBox” conterá apenas a indicação “autocarro 1”, sendo os três campos abaixo referentes a esse autocarro. Se no campo de indicação de número de autocarros for inserido um número superior a “1”, o botão “ok”, a ele associado, desencadeará a chamada de uma função que atribuirá o valor correspondente a uma variável para o efeito e colocará correspondentemente na “ListBox” os autocarros de 1 a n. No seguimento desta funcionalidade, os campos abaixo referidos correspondem à selecção na “ListBox”. O botão “confirmar”, alterará o seu nome na “ListBox”, ficando visível a sua matrícula. O botão “guardar” despoletará um pedido que guardará os dados inseridos na base de dados, depois de confirmado pelo utilizador. No caso de o utilizador pretender diminuir o número de autocarros, terá de seleccionar na “ListBox” e eliminar um de cada vez. Disto advém que, após a inserção e gravação de dados, nomeadamente o número de autocarros, se o utilizador inserir um número inferior ao que foi introduzido anteriormente, receberá uma mensagem informativa de que terá de excluir cada autocarro que pretender, seleccionando-o e eliminando-o.

Conclusão O algoritmo desenvolvido pelo Rodrigo Henriques calcula apenas o percurso de um autocarro. O objectivo global deste projecto consiste no desenvolvimento de uma aplicação que calcule o percurso de vários autocarros. Desta forma, este interface desenvolvido no âmbito do Projecto de Licenciatura, pode ser adaptado no sentido de concluir o objectivo final, fazendo corresponder o número de autocarros ao número de “Mapas” distintos com percurso calculado. A complexidade do algoritmo aumentará exponencialmente em investigações futuras, no seguimento deste Projecto, quem sabe, no âmbito do desenvolvimento de uma Tese de Mestrado ou Doutoramento.


João Paulo Moreira