Como extrair uma pequena área de um grande feed GTFS?

11

Existe uma ferramenta que suporte a extração de uma pequena região de um feed GTFS maior? A biblioteca Transitfeed do Google contém uma ferramenta de mesclagem, mas nenhuma ferramenta de extração / clipe, até onde posso ver. Outras bibliotecas que encontrei podem apenas ler e plotar dados, mas não suportam manipulação.

Informações de plano de fundo: O Transitfeed Feedvalidator mostra muitos erros no meu arquivo GTFS. Quero extrair minha região de interesse para avaliar a qualidade local.


As recomendações no Twitter me indicaram o FME, que possui um leitor e um escritor GTFS. Meu fluxo de trabalho simples consiste em um leitor GTFS (canto inferior esquerdo), leitor Shapefile (canto superior esquerdo, para o polígono da área de interesse), um clipper e um gravador GTFS para a saída (apenas gravando os arquivos de paradas e formas por enquanto, mas eventualmente eu ' quero todos os arquivos):

insira a descrição da imagem aqui

O problema até agora é que o conteúdo das formas de saída (pontos laranja) não contém todos os pontos de entrada (verdes) que estão dentro da área amarela de interesse:

insira a descrição da imagem aqui

(Fonte de dados: https://transitfeeds.com/p/helsinki-regional-transport/735/latest/download )


Usando "Criar Agregados" = "Não", as formas cortadas parecem completas

insira a descrição da imagem aqui

mas as paradas definitivamente não são

insira a descrição da imagem aqui

underdark
fonte
É possível compartilhar o arquivo de forma e a área de trabalho que você usou no exemplo acima? Sei que você não pode compartilhar os dados do GTFS.
Ken Bragg
Os números vermelhos na área de trabalho indicam recursos que não puderam ser cortados. Clicar duas vezes nele os abrirá no inspetor de dados para que você possa ver o que são. Suponho que sejam recursos sem geometria.
Ken Bragg
Sim, esses são todos os recursos dos arquivos que não são de geometria, pelo que sei.
Underdark

Respostas:

6

Isso deve ser possível no FME 2016. Como não podemos gravar agregados no GTFS, é necessária uma configuração no Clipper "Create Aggregates" = "No" para impedir que o FME crie agregados quando o recurso cortado resultar em várias peças. O espaço de trabalho com o qual testei está aqui: https://www.dropbox.com/s/b02hd7shefybtmw/gtfs2gtfs.fmw?dl=0 Com base nos dados da amostra de Helsinque aqui: https://t.co/wAZHmUS5HN insira a descrição da imagem aqui

Ken Bragg
fonte
Obrigado, vou ter que tentar isso de volta no escritório. Aliás, existe lógica / magia negra suficiente para ter também os arquivos GTFS que não contêm coordenadas por si mesmos (por exemplo, routes.txt e trips.txt) cortados?
Underdark
Você pode associar os atributos de dados não espaciais a um representante de emergência ou marceneiro com a referência oficial developers.google.com/transit/gtfs/reference, mas nem todos os dados de Helsinque são preenchidos para que as junções não funcionem totalmente.
Mapperz
Sim, como o @Mapperz aponta, precisamos usar o transformador FeatureMerger para unir as geometrias cortadas com recursos não espaciais. Por exemplo, viagens podem ser encontradas usando o FeatureMerger para ingressar no shap_id e, em seguida, registros do calendário podem ser encontrados mesclando-se à viagem no service_id. Comecei a trabalhar com esta aqui: dropbox.com/s/b02hd7shefybtmw/gtfs2gtfs.fmw?dl=0
Ken Bragg
1
Eu vejo o problema e acho que a solução ;-) O atributo parent_station nas paradas nos dados de amostra de Helsinque possui alguns espaços em branco (conforme permitido na especificação), mas eles parecem ser caracteres de espaço em branco para que o FME não os escreva porque não atender ao tipo de dados conforme definido pelo FME. Estamos aplicando número inteiro ou nulo. Você pode corrigir isso usando o transformador AttributeManager para definir o atributo como nulo se não for um número inteiro. Veja a captura de tela aqui: screencast.com/t/dvsWfoYe
Ken Bragg
2
Se o exposto acima não ajudar, teremos prazer em trabalhar com você mais de perto com isso através do suporte da Safe Software ( safe.com/support ) e podemos postar um resumo aqui quando resolvermos tudo. Ou continue aqui, se preferir.
Ken Bragg
5

Se você conhece as rotas que estão na sua região de intérprete, o GTFS Transformer pode oferecer um GTFS muito menor.

Ao fazer isso, ele removerá todas as viagens, formas, paradas, horários de parada e calendários que não estão incluídos nas rotas retidas.

Se você deseja remover route_id 1 e manter route_id 3, seu arquivo de transformação seria algo como:

{"op":"retain","match":{"file":"routes.txt","route_id":"1"}}
{"op":"remove","match":{"file":"routes.txt","route_id":"3"}}
Tony Laidig
fonte
1
Embora não seja o ideal, isso pode acabar sendo a melhor solução disponível. Com base na descrição, presumo que o Transformer também filtra todos os arquivos relacionados para conter apenas informações das rotas retidas.
Underdark
1

Acabei de encontrar o twalcari / gtfs-filter , um bom utilitário para filtrar o GTFS limitando os modos de caixa, hora e / ou viagem (clássica).

Holger Bruch
fonte