Sexta-feira, 17/04/2009 - 11:00 - Por Mauricio ReckziegelMinha cidade no Google Transit?
Seções relacionadas:Olá, amigos!
No final de 2007, quando iniciei o processo de busca por um assunto para meu TCC da pós, me deparei com o Google Transit. Na época, eram poucas as cidades que disponibilizavam o serviço junto ao Google. Então pensei, por que não tornar Porto Alegre a primeira cidade do Brasil a estar no Google Transit? Após, obtive as informações deste artigo que exemplifica como especificar os dados de transportes públicos da sua cidade no Google Maps (não vai depender apenas de vocês, é claro, senão Porto Alegre já estaria há muito tempo lá...). Melhor dizendo, este tipo de dado deve ser administrado por órgãos responsáveis da sua cidade, mantendo-os atualizados.
Conhece o Google Transit?O Google Transit não são as informações sobre o tráfego de veículos da sua cidade não!
O Google Transit é um recurso presente junto ao Google Maps com o objetivo de auxiliar usuários de transportes públicos a obterem os melhores itinerários para uma determinada viagem. Seu funcionamento se compara com a busca por rotas de veículos particulares, porém, leva em consideração linhas e horários pré-definidos pelos órgãos públicos responsáveis pelo transporte urbano.
Na imagem acima podemos ver que funciona exatamente como uma rota "De Carro", inserimos o endereço de origem e destino. Abaixo a primeira diferença: informamos o horário. De início a idéia soa meio confusa, mas tem um objetivo muito importante, visto que os transportes públicos possuem horários de intervalos diferentes de acordo com os períodos do dia. Assim você tem a informação correta da hora em que o ônibus irá passar na parada em frente à sua casa!! Já imaginou? Quem dera, mas a idéia é esta mesmo. O campo de preenchimento do data funciona da mesma maneira, visto que finais de semana e feriados também existem intervalos diferentes nos horários.
Como resultado da busca, temos exemplificado na imagem abaixo:
O Google lhe retorna algumas das possibilidades, que variam desde linhas de ônibus diferentes, baldeações entre ônibus e metrô, dois ônibus, etc. Informa o tempo de cada sequência e o custo, passando para o usuário decidir qual o melhor itinerário.
A imagem abaixo mostra o resultado da rota no mapa, visualmente temos as informações dos trechos a pé, de ônibus e metrô, destacando qual a parada de descida e acesso ao próximo transporte, se existir.
E melhor, o tempo de espera entre as baldeações, como mostra a figura abaixo.
Na descrição da rota, temos informações completas de cada trajeto, com o custo, tempo dos segmentos de parada e detalhes das rotas a pé, para você não se perder nunca.
Link da rota exemplificada: de Av. Indianópolis a R. Vergueiro - São Paulo SP
Bom, talvez você já tenha utilizado o serviço acima e está se perguntando: e aí, como funciona? Vamos ao que interessa...
A maioria das informações abaixo são traduzidas do site oficial (como esse material foi retirado no início de 2008, ainda não existia a tradução para o Português), caso vocês queiram maiores informações e, atualizadas, acessem o link Google Transit Feed Specification (agora traduzido) senão, confiram o artigo abaixo e tenham as mesmas informações e alguns extras.
Cidades que possuem informações de rotas urbanas no Google até o presente momento:
Mas lembro a todos que apenas São Paulo e Belo Horizonte incluem dados quanto a rotas e paradas de ônibus e metrô. As demais cidades encontram apenas as geometrias das linhas de metrô.
Como divulgarO Google fornece aos órgãos públicos informações quanto ao processo de divulgação destes dados junto ao recurso.
Os seguintes processos devem ser efetuados:
- O órgão ou agência responsável pelos dados deve exportar os mesmos como um arquivo ZIP no formato especificado pelo Google Transit Feed, documentado neste mesmo trabalho, disponibilizando-os em um servidor web padrão.
- Um e-mail deve ser enviado ao Google notificando a pasta raiz destas informações junto com a conta Google responsável pela manutenção destas informações.
- O Google irá recuperar estas informações de acordo com o caminho indicado acima.
- O Google adiciona os dados junto aos recursos do Google Transit.
- O órgão ou agência provedora dos dados analisa as informações e recorre ao Google caso houver algum problema.
- O Google e a empresa prestadora dos dados entram em comum acordo quanto à divulgação das informações.
- Os dados são inclusos junto ao Google.com.
- O Google passa a atualizar as informações junto ao Google Transit sempre que houver uma nova atualização dos dados no Servidor Web Padrão da empresa prestadora dos dados.
Definições
Algumas definições utilizadas neste artigo:
- Field Required (Campo exigido): Os campos descritos como Field Required devem ser incluídos obrigatoriamente, sendo fornecido um valor para cada registro. Alguns campos obrigatórios permitem a inclusão de campos com strings de valor vazio. Para inserir uma string vazia, basta omitir qualquer texto entre as vírgulas dentro do campo. Lembre-se que 0 é interpretado como uma cadeira de valor, e não como uma string vazia.
- Field Optional (Campo opcional): Os campos descritos como Field Optional podem ser omitidos do documento. Caso você optar pela inclusão destes dados, cada registro deve possuir um valor para a coluna referenciada. Da mesma forma que o campo Field Required, alguns campos permitem a inclusão de strings vazias, seguindo o mesmo processo de omitir qualquer texto entre as vírgulas presentes para o campo.
- Dataset Unique: O campo descrito como Dataset Unique representa um índice único, que representa uma entidade distinta no interior de uma coluna. Por exemplo, se em uma rota é atribuído o ID 1A, então a nenhuma outra rota será possível utilizar o identificador 1A.
Requisitos
O Google Transit aceita os feeds com os seguintes arquivos:
Agency.txt
Classificação: Field Required
Contém informações quanto a um ou mais órgãos de trânsito que fornecem os dados.
Stops.txt
Classificação: Field Required
Este arquivo contém informações sobre os locais de embarque e desembarque de veículos individuais. (pontos de ônibus/paradas).
Routes.txt
Classificação: Field Required
Contém informações sobre rotas de trânsito das empresas. Uma rota é a seqüência de duas ou mais paradas.
Trips.txt
Classificação: Field Required
Este arquivo contém informações quanto ao serviço regular (direção e freqüência) de uma rota específica.
Stop_times.txt
Classificação: Field Required
Contém a lista de vezes que um veículo chega a parar ao longo de uma rota.
Calendar.txt
Classificação: Field Required
Este arquivo define as categorias de serviços. Cada categoria de serviço indica quando começa e termina, assim como os dias que o serviço está disponível.
Calendar_dates.txt
Classificação: Field Optional
Este arquivo listas de exceções para o serviço calendar.txt. Se calendar_dates.txt incluir todas as datas de serviço, este arquivo pode ser especificado em vez de calendar.txt.
Fare_atributes.txt
Classificação: Field Optional
Este arquivo define as informações quanto à tarifação para as rota de uma organização de trânsito.
Fare_rules.txt
Classificação: Field Optional
Define as regras para a tarifação de uma rota presente em uma organização de trânsito.
Shapes.txt
Classificação: Field Optional
Este arquivo define as regras para a elaboração de linhas em um mapa para a representação das rotas de uma determinada organização de trânsito.
Frequencies.txt
Classificação: Field Optional
Define o avanço (tempo entre as viagens) para rotas com freqüência variável de serviço.
Requisitos dos Arquivos
Os requisitos seguintes aplicam-se à forma e ao conteúdo de seus arquivos:
- Todos os arquivos presentes no Google Transit Feed Spec (GTGS) devem ser salvos como texto delimitador por vírgula.
- A primeira linha dos arquivos deve conter o nome referente à coluna. Cada componente corresponde a definições presentes nas definições deste trabalho.
- Todos os campos são case-sensitive.
- Os campos de valores não podem conter tabs ou novas linhas.
- Campos de valores que contenham aspas ou vírgulas devem ser incluídos entre aspas. Além disso, cada aspas no campo valor deve ser precedida de uma aspas.
- Campo Valor Original: Contém "aspas", vírgulas e texto.
- Campo Valor em um arquivo CVS: "Contém" ""aspas"", vírgulas e texto"
- Os campos de valores não devem conter tags HTML ou comentários.
- Os arquivos devem ser codificados em UTF-8 para suportar todos os caracteres Unicode.
- Nomeie seus feeds usando as seguintes convenções:
- agency.txt
- stops.txt
- routes.txt
- trips.txt
- stop_times.txt
- calendar.txt
- calendar_dates.txt
- fare_rules.txt
- fare_attributes.txt
- shapes.txt
- frequencies.txt
- Compacte os arquivos de seu Feed como Zip. Nomeie o arquivo zipado como google_transit.zip. Poste o arquivo em um diretório denominado de AAAAMMDD, representando a ultima data de atualização das informações.
Atualizando seus Feeds
Orientações quanto à atualização dos arquivos:
- Você pode postar simultâneos arquivos compactados (zip), contanto que cada arquivo contenha todos os dados para um único e determinado período. Em outras palavras, os arquivos não podem conter dados relativos a sobreposição de datas de serviços.
- Cada arquivo deverá residir em um diretório diferente no seu servidor.
- Quanto o Google recuperar um novo arquivo, este irá sobrescrever todos os dados armazenados previamente para a sua agência. Pede-se que você assegure-se que seus arquivos de dados forneçam um serviço completo quanto ao período ao qual se destina. Como visto no item anterior, você pode fornecer diversos arquivos zipados, desde que os mesmos não contenham sobreposições de datas de serviços.
Requisitos para a publicação de seus Feeds ao Google Maps
- A empresa responsável pela divulgação das informações terá de fornecer a URL do Feed. O Google pode fazer o download dos Feeds utilizando HTTP ou HTTPS. Também é necessário fornecer um login e senha, se for necessária a recuperação e alimentação das informações.
- A equipe de TI/Redes deve ter ciência que o Google periodicamente recupera dados a partir do Servidor Web Padrão informado pela empresa prestadora dos dados de trânsito, de modo que qualquer alteração quanto a permissão de arquivos, blocos ou caminho dos arquivos pode acarretar na quebra do processo de coleta de dados.
Desafios
Embora a participação no Google Transit e o licenciamento quanto a ferramenta GoogleTransitDataFeed sejam gratuitos, é provável que a empresa prestadora dos dados de transporte irá encontrar uma série de desafios na integração entre a ferramenta e sua base de dados, implicando em um significativo esforço.
Um dos grandes desafios é quanto a qualidade das informações quanto ao sistema de trânsito. Caso os dados já estejam sendo utilizados em alguma aplicação que represente a localização automática de veículos, ou controle de frotas, é bem provável que o nível da qualidade das informações seja grande o suficiente para alimentar o Google Transit sem o adicional de muitos esforços. Por outro lado, caso a qualidade das informações seja relativamente baixo, é bem provável que alguns desafios e esforços venham a ser necessários ao longo do projeto.
Possíveis desafios
- Aquisição de dados básicos: O Google Transit exige que todos os pontos de paradas sejam geocodificados (coordenadas mapeadas através de GPS ou Geocoding). O que significa que um trabalho de campo seja necessário para a coleta destas informações junto a cada ponto de parada, obtendo informações completas junto aos mesmos.
- Dados consistentes e completos: As rotas dos transportes públicos devem possuir dados consistentes, isto é, os pontos de paradas mapeados ao longo de um percurso devem corresponder à realidade das rotas.
- Formato Proprietário dados: O formato dos dados deve ser aberto, permitindo ao Google normaliza-los de acordo com determinados padrões abertos existentes.
Abaixo, uma breve descrição de cada arquivo e suas respectivas colunas.
Dica: O Google disponilbiliza um Feed de exemplo, não deixem de acessar este link para uma melhor visualização das informações a seguir: Demo Transit Authority
Agency.txt
Exemplo
agency_id, agency_name, agency_url, agency_timezone
FunBus, The FunBus, http://www.thefunbus.org, America / Los Angeles
Calendar.txt
Exemplo
service_id,monday,tuesday,wednesday,thursday,friday,saturday,sunday,start_date,end_date
WE,0,0,0,0,0,1,1,20060701,20060731
WD,1,1,1,1,1,0,0,20060701,20060731
Calendar_dates.txt
Exemplo
O exemplo abaixo mostra uma exceção para o serviço de transporte no natal do ano de 2007. Na terça-feira, 25 de dezembro de 2007, o serviço regular (service_id = WD) é interrompido (exception_type = 2). Por outro lado, é executado um outro serviço identificado como WE (service_id = WE) na data especificada.
service_id,date,exception_type
WD,20060703,2
WE,20060703,1
Fare_atributes.txt
Exemplo
fare_id,price,currency_type,payment_method,transfers,transfer_duration
1,0.00,USD,0,0,0
2,0.50,USD,0,0,0
3,1.50,USD,0,0,0
4,2.00,USD,0,0,0
5,2.50,USD,0,0,0
Fare_rules.txt
Exemplo
fare_id,route_id,origin_id,destination_id,contains_id
a,TSW,1,1,
a,TSE,1,1,
a,GRT,1,1,
a,GRJ,1,1,
a,SVJ,1,1,
a,JSV,1,1,
a,GRT,2,4,
a,GRJ,4,2,
b,GRT,3,3,
c,GRT,,,6
Shapes.txt
Exemplo
shape_id,shape_pt_lat,shape_pt_lon,shape_pt_sequence,shape_dist_traveled
A_shp,37.61956,-122.48161,1,0
A_shp,37.64430,-122.41070,2,6.8310
A_shp,37.65863,-122.30839,3,15.8765
Stop_times.txt
Exemplo
trip_id,arrival_time,departure_time,stop_id,stop_sequence,pickup_type,dropoff_type
AWE1,0:06:10,0:06:10,S1,1,0,0,0
AWE1,,,S2,2,0,1,3
AWE1,0:06:20,0:06:30,S3,3,0,0,0
AWE1,,,S5,4,0,0,0
AWE1,0:06:45,0:06:45,S6,5,0,0,0
AWD1,0:06:10,0:06:10,S1,1,0,0,0
AWD1,,,S2,2,0,0,0
AWD1,0:06:20,0:06:20,S3,3,0,0,0
AWD1,,,S4,4,0,0,0
AWD1,,,S5,5,0,0,0
AWD1,0:06:45,0:06:45,S6,6,0,0,0
Stops.txt
Exemplo
stop_id,stop_name,stop_desc,stop_lat,stop_lon,stop_url
S1,Mission St. & Silver Ave.,The stop is located at the southwest corner of the intersection.,37.728631,-122.431282
S2,Mission St. & Cortland Ave.,The stop is located 20 feet south of Mission St.,37.74103,-122.422482
S3,Mission St. & 24th St.,The stop is located at the southwest corner of the intersection.,37.75223,-122.418581
S4,Mission St. & 21st St.,The stop is located at the northwest corner of the intersection.,37.75713,-122.418982
S5,Mission St. & 18th St.,The stop is located 25 feet west of 18th St.,37.761829,-122.419382
S6,Mission St. & 15th St.,The stop is located 10 feet north of Mission St.,37.766629,-122.419782
Trips.txt
Exemplo
route_id,service_id,trip_id,trip_headsign,block_id
A,WE,AWE1,Downtown,1
A,WE,AWE2,Downtown,2
Diagrama ER
Extras
Ainda na página do Feed Specifications do Google, você tem acesso a softwares que auxiliam na visualização dos feeds. No canto esquerdo do site possui o menu "Para desenvolvedores de feeds" o item "Ferramentas de feed GTFS de software livre".
Aconselho uma aplicação: transitfeed-windows-binary.
Desenvolvida na linguagem Python, é muito útil para validar os seus feeds criados e através do schedule_viewer, visualizar os pontos de paradas no mapa, como podemos ver na figura abaixo.
Concluindo
Ferramentas como o Google Transit facilitam as empresas e orgãos públicos a disponibilizar as informações sem se preocupar com infra-estrutura e manutenção das aplicações, tendo apenas como "trabalho" manter atualizada suas bases de dados com os itinerários e horários das linhas urbanas. Existem ferramentas muito semelhantes, criadas muito antes do Google Transit, como por exemplo o "Como vou de Ônibus" da BHTrans (a mesma empresa que fornece os feeds de Belo Horizonte para o Google. No site BHTRANS podemos mais ter conhecimento do ótimo trabalho que essa empresa de transporte presta na cidade de BH. Fiquei impressionado com a qualidade das informações e o trabalho prestado.
Espero que todos os órgãos e empresas responsáveis tenham acesso a este tipo de informação, como o Google Transit, e se conscientizem quanto a facilidade para se disponibilizar este tipo de informação que é, sem dúvida nenhuma, muito importante para a população.
iMasters - Minha cidade no Google Transit? - Software Livre
terça-feira, julho 21, 2009
iMasters - Minha cidade no Google Transit? - Software Livre
Assinar:
Postar comentários (Atom)
Nenhum comentário:
Postar um comentário