terça-feira, julho 21, 2009

iMasters - Minha cidade no Google Transit? - Software Livre

Sexta-feira, 17/04/2009 - 11:00 - Por Mauricio Reckziegel
Seções relacionadas:
Minha cidade no Google Transit?

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 divulgar

O 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:

  1. 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.
  2. 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.
  3. O Google irá recuperar estas informações de acordo com o caminho indicado acima.
  4. O Google adiciona os dados junto aos recursos do Google Transit.
  5. O órgão ou agência provedora dos dados analisa as informações e recorre ao Google caso houver algum problema.
  6. O Google e a empresa prestadora dos dados entram em comum acordo quanto à divulgação das informações.
  7. Os dados são inclusos junto ao Google.com.
  8. 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

 



 

Technorati Marcas: : , , , ,

 

 

BlogBlogs Marcas: : , , , ,

 

Nenhum comentário:

Postar um comentário

Aúncio