Skip to main content

População de Dados: Linhas e Estações de SP

Introdução

Este documento descreve a estrutura e o processo de povoamento do banco de dados PostgreSQL com os dados das Linhas e Estações do sistema metroferroviário de São Paulo, que inclui Metrô, CPTM e ViaMobilidade. Os dados contemplam as Linhas 1 a 13, com exceção da Linha 6, que ainda não está em operação.

Esse banco de dados foi construido para o projeto ter acesso facilitado as informações das linhas e das estações, e principalmente a relação de quais estações pertencem a quais linhas.

Foi utilizado o ORM GORM com a linguagem Go para definir os modelos, criar as tabelas e inserir os dados iniciais automaticamente por meio de uma rota exposta no backend.


Estrutura da Tabela Linha

A tabela linhas armazena as informações principais de cada linha do transporte sobre trilhos de SP.

CampoTipoDescrição
iduintChave primária
nomestringNome completo da linha
numerostringNúmero identificador da linha (como "1", "9" etc)

Exemplos de valores:

  • Linha 1 - Azul
  • Linha 9 - Esmeralda
  • Linha 13 - Jade

Estrutura da Tabela Estacao

A tabela estacoes armazena todas as estações associadas a cada linha.

CampoTipoDescrição
iduintChave primária
nomestringNome da estação
linha_iduintChave estrangeira para linha

Cada estação está associada a exatamente uma linha via o campo linha_id.


Rota para População do Banco de Dados

O backend já possui uma função utilitária que popula automaticamente as tabelas linhas e estacoes. Esta função pode ser chamada a partir de uma rota dedicada, como por exemplo:

POST /admin/populate-database

Essa rota executa a função PopulateDatabase(db *gorm.DB) que:

  1. Cria as entradas das linhas (1 a 13, exceto 6).
  2. Cria todas as estações correspondentes.
  3. Garante integridade referencial entre estacoes e linhas.

Observações Finais

  • A fonte de dados utilizada corresponde às informações oficiais disponíveis nos sites da CPTM, Metrô de SP e ViaMobilidade.
  • Caso novas linhas ou estações sejam lançadas, basta atualizar o map[string][]string usado na função de população.

Importante notar que o banco de dados está sujeito a um aumento do número de tabelas, pois talvez seja necessário guardar as informações de pontos interessantes ao redor de cada estação.