📊 TransiLoja - Esquemas de Datos

Documentación de Estructuras de Datos del Sistema

📁 Archivos GTFS (General Transit Feed Specification)

GTFS es un formato estándar internacional para compartir datos de transporte público. Los archivos son CSV con campos específicos.

Archivo Descripción Campos Principales Tipo
agency.txt Información de las agencias de transporte agency_id, agency_name, agency_url, agency_timezone Requerido
routes.txt Rutas de transporte disponibles route_id, route_short_name, route_long_name, route_type, route_color Requerido
stops.txt Paradas de bus con coordenadas stop_id, stop_name, stop_lat, stop_lon Requerido
trips.txt Viajes individuales por cada ruta trip_id, route_id, service_id, trip_headsign Requerido
stop_times.txt Horarios de llegada/salida en cada parada trip_id, arrival_time, departure_time, stop_id, stop_sequence Requerido
calendar.txt Calendario de servicios (días operativos) service_id, monday, tuesday, ..., start_date, end_date Requerido
calendar_dates.txt Excepciones al calendario service_id, date, exception_type Opcional
fare_attributes.txt Información de tarifas fare_id, price, currency_type, payment_method Opcional
fare_rules.txt Reglas para aplicar tarifas fare_id, route_id, origin_id, destination_id Opcional
frequencies.txt Frecuencias de servicio trip_id, start_time, end_time, headway_secs Opcional
feed_info.txt Metadatos del feed GTFS feed_publisher_name, feed_publisher_url, feed_lang, feed_version Opcional

🔥 Esquema de Datos Firebase - TransiLoja

Estructura de datos almacenados en Firebase Firestore. Cada colección contiene documentos con los siguientes campos:

🚨 Colección: alerts

Campo Tipo Descripción
titleStringTítulo de la alerta
descriptionStringDescripción detallada
typeStringTipo: info, warning, danger
affectedRoutesArray[String]IDs de rutas afectadas
affectedStopsArray[String]IDs de paradas afectadas
startDateTimestampFecha de inicio
endDateTimestampFecha de fin
isActiveBooleanEstado activo/inactivo
createdAtTimestampFecha de creación

🚌 Colección: buses

Campo Tipo Descripción
plateNumberStringNúmero de placa
modelStringModelo del bus
yearNumberAño de fabricación
capacityNumberCapacidad de pasajeros
featuresObjectCaracterísticas: {airConditioning, wheelchair, wifi, gps}
routeIdStringID de ruta asignada
conductorIdStringID del conductor asignado
statusStringEstado: active, inactive, maintenance
currentLocationGeoPointUbicación actual: {lat, lng}
headingNumberDirección en grados (0-360)
speedNumberVelocidad en m/s
lastUpdatedTimestampÚltima actualización GPS

👨‍✈️ Colección: conductores

Campo Tipo Descripción
cedulaStringNúmero de cédula
nombreStringNombre del conductor
apellidosStringApellidos
emailStringCorreo electrónico
telefonoStringNúmero de teléfono
direccionStringDirección de domicilio
tipo_licenciaStringTipo de licencia: A, B, C, D, E
fecha_licenciaTimestampFecha de emisión licencia
fecha_vencimiento_licenciaTimestampFecha de vencimiento
estadoStringEstado: activo, inactivo, suspendido
experiencia_anosNumberAños de experiencia

🛣️ Colección: routes

Campo Tipo Descripción
nameStringNombre completo de la ruta
shortNameStringNombre corto (ej: L5)
descriptionStringDescripción de la ruta
colorStringColor en formato hexadecimal
textColorStringColor del texto
typeStringTipo de transporte: bus, minibus
stopIdsArray[String]IDs de paradas en orden
operatingStartTimeStringHora de inicio (HH:mm)
operatingEndTimeStringHora de fin (HH:mm)

🚏 Colección: stops

Campo Tipo Descripción
nameStringNombre de la parada
latNumberLatitud
lngNumberLongitud
codeStringCódigo de parada
routeIdsArray[String]IDs de rutas que pasan
amenitiesObjectComodidades: {shelter, bench, lighting, bin, wifi, realTimeDisplay}
operatorStringOperador: SITU, etc.
networkStringRed a la que pertenece

📅 Colección: calendars

Campo Tipo Descripción
nameStringNombre del horario
routeIdStringID de ruta asociada
monday - sundayBooleanDías operativos (7 campos)
startDateTimestampFecha de inicio
endDateTimestampFecha de fin
holidaysArray[String]Fechas de excepción
operatingStartTimeStringHora de inicio (HH:mm)
operatingEndTimeStringHora de fin (HH:mm)

📍 Colección: liveBuses

Campo Tipo Descripción
busIdStringID del bus
routeIdStringID de ruta actual
tripIdStringID del viaje actual
conductorIdStringID del conductor
latNumberLatitud actual
lngNumberLongitud actual
bearingNumberDirección en grados
speedNumberVelocidad en m/s
accuracyNumberPrecisión GPS en metros
statusStringEstado: moving, stopped, idle
timestampTimestampMarca de tiempo GPS

🗺️ Estructura de Datos OSM (OpenStreetMap)

Paradas de bus exportadas desde OpenStreetMap en formato GeoJSON FeatureCollection.

Estructura General

Campo Tipo Descripción
typeStringSiempre "FeatureCollection"
generatorStringHerramienta generadora: "overpass-turbo"
copyrightStringInformación de derechos OSM
timestampStringFecha de exportación (ISO 8601)
featuresArray[Feature]Array de features (paradas)

Estructura de cada Feature

Campo Tipo Descripción Ejemplo
typeStringSiempre "Feature""Feature"
idStringID del nodo OSM"node/663778211"
propertiesObjectPropiedades de la paradaVer tabla abajo
geometryObjectGeometría del punto{type: "Point", coordinates: [lng, lat]}

Propiedades de cada Parada (properties)

Propiedad Tipo Descripción Valores Posibles
@idStringID único de OSM"node/663778211"
nameStringNombre de la parada"Benjamín Carrión"
highwayStringTipo de elemento vial"bus_stop"
public_transportStringTipo de transporte público"platform", "stop_position"
busStringIndica si es parada de bus"yes"
operatorStringOperador del servicio"SITU", "todas"
networkStringRed de transporte"Red Municipal", "Linea 12"
benchStringDisponibilidad de banca"yes", "no"
shelterStringDisponibilidad de refugio"yes", "no"
binStringDisponibilidad de basurero"yes", "no"
litStringIluminación nocturna"yes", "no"
coveredStringIndica si está cubierta"yes", "no"
wheelchairStringAccesibilidad silla de ruedas"yes", "no", "limited"
refStringReferencia/código de línea"L10", "L2"

Geometría (geometry)

Campo Tipo Descripción Ejemplo
typeStringTipo de geometría"Point"
coordinatesArray[Number][longitud, latitud][-79.205295, -3.9946652]