12  Resultados

O fluxo de processamento documentado produz um conjunto de ficheiros de saída que constituem os dados base do painel interativo e que podem ser descarregados para análises complementares.

12.1 Estrutura dos ficheiros de saída

O arquivo ZIP disponível para descarregar no painel (Seção 13.1.2) contém os seguintes ficheiros:

Ficheiro Formato Descrição
prioritisation_area_polygon_*.geojson GeoJSON Perímetro externo da área em análise
ways_*.geojson / .gpkg GeoJSON / GeoPackage Geometrias dos segmentos de via (OSM) com serviço de transporte público
way_data_*.json JSON Atributos, frequência horária, velocidades e procura por segmento
shape_data_*.json JSON Metadados por percurso (GTFS shape): estatísticas, horário e paragens
route_data_*.json JSON Metadados por linha (GTFS route): nome, cor, procura e perfil de velocidade
metadata_*.json JSON Estatísticas de cobertura e descritivas dos indicadores e documentação dos parâmetros utilizados na análise
gtfs_*.zip ZIP Feed GTFS filtrado ao dia de análise
gtfs_*_manipulated.zip ZIP Feed GTFS manipulado (quando aplicável)
prioritisation_*.csv CSV Resultado dos métodos de priorização aplicados ao nível do segmento

Foi dada primazia ao formato JSON para integração no painel interativo. No entanto, alguns ficheiros estão disponíveis noutros formatos (GeoJSON/GeoPackage e CSV) para facilitar a integração com diferentes ferramentas de análise.

12.2 Modelo relacional dos dados

O diagrama seguinte ilustra as relações entre os ficheiros de saída:

erDiagram
    Prioritisation_Area_Polygon_GeoJSON {
        Polygon geometry "Convex hull da área em análise"
    }
    Ways_GeoJSON {
        string way_osm_id PK "Identificador OSM da via"
        LineString geometry "Geometria do segmento de via"
    }
    Way_Data_JSON {
        string way_osm_id PK "Identificador OSM (chave do dicionário)"
        string name "Nome da rua"
        float length_m "Comprimento em metros"
        boolean is_bus_lane "Tem corredores bus?"
        int n_lanes_parking "Nº de vias de estacionamento"
        int n_lanes_circulation "Nº total de vias de circulação"
        int n_directions "Nº de sentidos"
        float n_lanes_circulation_direction "vias por sentido"
        float speed_avg "Velocidade média (se RT disponível)"
        float speed_median "Velocidade mediana (se RT disponível)"
        float speed_p85 "Velocidade P85 (se RT disponível)"
        int demand "Procura diária"
        string_array routes FK "Lista de route_id que percorrem esta via"
        string_array shapes FK "Lista de shape_id que percorrem esta via"
        object hour_frequency "Frequência por hora (0-23)"
        object hour_speed_avg "Velocidade média por hora (se RT disponível)"
        object hour_speed_median "Velocidade mediana por hora (se RT disponível)"
        object hour_disturbance_index "Índice de perturbação por hora (se RT disponível)"
    }
    Shape_Data_JSON {
        string shape_id PK "GTFS shape_id (chave do dicionário)"
        string route_id FK "GTFS route_id"
        string route_short_name "Nome curto da linha"
        string route_long_name "Nome completo da linha"
        int direction_id "Sentido GTFS (0 ou 1)"
        string route_color "Cor hex da linha"
        object stats "Estatísticas de priorização ponderadas"
        object schedule "Frequência horária do percurso"
        array stops "Lista de paragens (sequência, id, nome, lat, lon)"
    }
    Route_Data_JSON {
        string route_id PK "GTFS route_id (chave do dicionário)"
        string route_short_name "Nome curto da linha"
        string route_long_name "Nome completo da linha"
        string route_color "Cor hex da linha"
        int demand "Procura diária"
    }
    Metadata_JSON {
        string region "Nome da região analisada"
        object gtfs "Metadados GTFS (data, URL)"
        array osm_query "Consulta OSM utilizada"
        object prioritisation "Métricas de cobertura globais"
        object prioritisation_hour "Métricas de cobertura por hora"
        object data_census "Estatísticas descritivas da rede"
        object rt "Metadados GTFS-RT"
        object demand "Metadados de procura"
        object execution "Momento de execução e versão do código"
        object environment "Versões do R e dos pacotes"
    }

    Prioritisation_Area_Polygon_GeoJSON ||--o{ Ways_GeoJSON : "contém espacialmente"
    Ways_GeoJSON ||--|| Way_Data_JSON : "ligado 1:1 por way_osm_id"
    Way_Data_JSON }o--o{ Route_Data_JSON : "referenciado via routes"
    Way_Data_JSON }o--o{ Shape_Data_JSON : "referenciado via shapes"
    Shape_Data_JSON }o--|| Route_Data_JSON : "pertence a route_id"

12.3 Estatísticas de cobertura

O ficheiro metadata_*.json inclui métricas que permitem avaliar a cobertura da análise, nomeadamente a proporção de percursos e linhas GTFS que foram associados com sucesso à rede viária OSM:

  • shapes_total: número total de percursos GTFS no dia de análise;
  • shapes_found_n: número de percursos com pelo menos um segmento de via identificado;
  • shapes_missing_n: número de percursos sem correspondência OSM;
  • shapes_found_frequency: frequência total associada a percursos encontrados;
  • shapes_missing_frequency: frequência total associada a percursos não encontrados.

Estes valores são também calculados por hora do dia (prioritisation_hour), permitindo identificar períodos com menor cobertura (por exemplo, serviços noturnos com menor representação no OSM).

12.4 Estatísticas descritivas

O metadata_*.json inclui um conjunto de estatísticas descritivas dos indicadores calculados, com valores ponderados pelo comprimento e pela frequência dos segmentos:

"data_census": {
  "frequency": { "mean": 8.3, "median": 6.0, "p5": 1.0, "p95": 24.0, ... },
  "speed_avg_length": { "mean": 14.2, "p85": 19.1, ... },
  "disturbance_index_length": { "mean": -0.12, "median": -0.09, ... },
  ...
}

Estes valores são utilizados no painel para calibrar as escalas de cor das camadas de visualização e exibidos nos detalhes de cada camada, quando selecionada.