From c6bdd0b6576ba4ad723904501115bc59168aa467 Mon Sep 17 00:00:00 2001 From: Jae Date: Thu, 25 Jun 2026 12:13:45 -0600 Subject: [PATCH 01/68] feat(eta): package gtfs_eta inference library with relocatable registry Vendored inference half of the ETA model lifecycle (canonical training source lives in gtfs-django/eta_prediction): estimator, feature engineering, and the model registry loader, with heavy deps slimmed (xgboost is an optional extra). The registry resolves model/metadata paths relative to its directory, so it is relocatable: bind-mountable, checked-in placeholders, or models written by an external retraining suite all load regardless of MODEL_REGISTRY_DIR. Wired into databus as an editable uv workspace member. See backend/gtfs-eta/README.md for provenance and extraction intent. --- backend/gtfs-eta/README.md | 34 ++ backend/gtfs-eta/gtfs_eta/__init__.py | 2 + backend/gtfs-eta/gtfs_eta/core/__init__.py | 1 + backend/gtfs-eta/gtfs_eta/core/config.py | 28 + backend/gtfs-eta/gtfs_eta/core/exceptions.py | 13 + backend/gtfs-eta/gtfs_eta/core/logging.py | 15 + backend/gtfs-eta/gtfs_eta/core/validation.py | 15 + .../gtfs-eta/gtfs_eta/eta_service/__init__.py | 1 + .../gtfs_eta/eta_service/estimator.py | 495 ++++++++++++++++++ .../gtfs_eta/feature_engineering/__init__.py | 1 + .../gtfs_eta/feature_engineering/spatial.py | 250 +++++++++ .../gtfs_eta/feature_engineering/temporal.py | 98 ++++ backend/gtfs-eta/gtfs_eta/models/__init__.py | 1 + .../gtfs_eta/models/common/__init__.py | 1 + .../gtfs_eta/models/common/registry.py | 316 +++++++++++ .../gtfs-eta/gtfs_eta/models/common/utils.py | 126 +++++ .../models/polyreg_distance/__init__.py | 1 + .../gtfs_eta/models/polyreg_distance/model.py | 150 ++++++ .../models/polyreg_distance/predict.py | 60 +++ .../gtfs-eta/gtfs_eta/seed_baseline_model.py | 94 ++++ backend/gtfs-eta/pyproject.toml | 22 + backend/pyproject.toml | 3 + backend/uv.lock | 153 ++++++ 23 files changed, 1880 insertions(+) create mode 100644 backend/gtfs-eta/README.md create mode 100644 backend/gtfs-eta/gtfs_eta/__init__.py create mode 100644 backend/gtfs-eta/gtfs_eta/core/__init__.py create mode 100644 backend/gtfs-eta/gtfs_eta/core/config.py create mode 100644 backend/gtfs-eta/gtfs_eta/core/exceptions.py create mode 100644 backend/gtfs-eta/gtfs_eta/core/logging.py create mode 100644 backend/gtfs-eta/gtfs_eta/core/validation.py create mode 100644 backend/gtfs-eta/gtfs_eta/eta_service/__init__.py create mode 100644 backend/gtfs-eta/gtfs_eta/eta_service/estimator.py create mode 100644 backend/gtfs-eta/gtfs_eta/feature_engineering/__init__.py create mode 100644 backend/gtfs-eta/gtfs_eta/feature_engineering/spatial.py create mode 100644 backend/gtfs-eta/gtfs_eta/feature_engineering/temporal.py create mode 100644 backend/gtfs-eta/gtfs_eta/models/__init__.py create mode 100644 backend/gtfs-eta/gtfs_eta/models/common/__init__.py create mode 100644 backend/gtfs-eta/gtfs_eta/models/common/registry.py create mode 100644 backend/gtfs-eta/gtfs_eta/models/common/utils.py create mode 100644 backend/gtfs-eta/gtfs_eta/models/polyreg_distance/__init__.py create mode 100644 backend/gtfs-eta/gtfs_eta/models/polyreg_distance/model.py create mode 100644 backend/gtfs-eta/gtfs_eta/models/polyreg_distance/predict.py create mode 100644 backend/gtfs-eta/gtfs_eta/seed_baseline_model.py create mode 100644 backend/gtfs-eta/pyproject.toml diff --git a/backend/gtfs-eta/README.md b/backend/gtfs-eta/README.md new file mode 100644 index 0000000..1e9fb55 --- /dev/null +++ b/backend/gtfs-eta/README.md @@ -0,0 +1,34 @@ +# gtfs_eta + +Inference-only ETA library: given a vehicle position and the upcoming stops on +its trip, predict arrival times from trained models stored in a model registry. + +This is the **consumption half** of the ETA model lifecycle. It is consumed by +databus (`runs/domain/progression/stop_times.py`) to populate the +`run::stop_time_updates` projection that backs the GTFS-RT trip-updates feed. + +## Provenance & intent + +- **Vendored, not original.** The canonical source — including model training — + lives in `gtfs-django` (`feature/eta_prediction`). This package is the slimmed + inference half: estimator, feature engineering, and the model registry loader, + with heavy training/serving deps dropped (`xgboost` is an optional extra). +- **Candidate for extraction.** It is namespaced (`gtfs_eta.*`) and databus + depends on it through a single narrow seam (a lazy import in `stop_times.py` + plus the workspace dependency). If a second consumer appears, or it needs an + independent release cadence, it should move to its own package/repo — pulled + the same way `gtfs-io` and `gtfs-django` are — and the move stays mechanical. + Keep the databus → `gtfs_eta` seam narrow to preserve that. + +## Model registry + +Models are loaded from `MODEL_REGISTRY_DIR` (a `registry.json` index plus per-model +`*.pkl` / `*_meta.json`). Paths are resolved **relative to the registry directory**, +so the registry is relocatable: bind-mount it anywhere, check a placeholder into +version control, or have an external retraining suite write into it. + +A deterministic placeholder global baseline can be (re)generated with: + +```bash +MODEL_REGISTRY_DIR=eta_models python -m gtfs_eta.seed_baseline_model +``` diff --git a/backend/gtfs-eta/gtfs_eta/__init__.py b/backend/gtfs-eta/gtfs_eta/__init__.py new file mode 100644 index 0000000..acebcb0 --- /dev/null +++ b/backend/gtfs-eta/gtfs_eta/__init__.py @@ -0,0 +1,2 @@ +"""gtfs_eta — namespaced ETA-prediction package for the SIMOVI databus.""" +__version__ = "0.1.0" diff --git a/backend/gtfs-eta/gtfs_eta/core/__init__.py b/backend/gtfs-eta/gtfs_eta/core/__init__.py new file mode 100644 index 0000000..3b5cf9a --- /dev/null +++ b/backend/gtfs-eta/gtfs_eta/core/__init__.py @@ -0,0 +1 @@ +# gtfs_eta.core diff --git a/backend/gtfs-eta/gtfs_eta/core/config.py b/backend/gtfs-eta/gtfs_eta/core/config.py new file mode 100644 index 0000000..4f0b1c4 --- /dev/null +++ b/backend/gtfs-eta/gtfs_eta/core/config.py @@ -0,0 +1,28 @@ +""" +Runtime configuration for gtfs_eta. + +The registry dir is NOT derived from __file__ — it comes solely from the +MODEL_REGISTRY_DIR environment variable (or the registry's own discovery +logic). This module only exposes the defaults that are safe to use at +import time without side effects. +""" + +# Default timezone and region for Costa Rica operations +DEFAULT_TIMEZONE: str = "America/Costa_Rica" +DEFAULT_REGION: str = "CR" + +# Weather defaults (used when no live weather feed is available) +DEFAULT_TEMPERATURE_C: float = 25.0 +DEFAULT_PRECIPITATION_MM: float = 0.0 +DEFAULT_WIND_SPEED_KMH: float | None = None + + +def get_config() -> dict: + """Return the active configuration as a plain dict.""" + return { + "default_timezone": DEFAULT_TIMEZONE, + "default_region": DEFAULT_REGION, + "default_temperature_c": DEFAULT_TEMPERATURE_C, + "default_precipitation_mm": DEFAULT_PRECIPITATION_MM, + "default_wind_speed_kmh": DEFAULT_WIND_SPEED_KMH, + } diff --git a/backend/gtfs-eta/gtfs_eta/core/exceptions.py b/backend/gtfs-eta/gtfs_eta/core/exceptions.py new file mode 100644 index 0000000..6abb7cb --- /dev/null +++ b/backend/gtfs-eta/gtfs_eta/core/exceptions.py @@ -0,0 +1,13 @@ +"""Custom exceptions for gtfs_eta.""" + + +class GTFSEtaError(Exception): + """Base error for the gtfs_eta package.""" + + +class ModelNotFoundError(GTFSEtaError): + """Raised when a requested model is not in the registry.""" + + +class PredictionError(GTFSEtaError): + """Raised when a model prediction fails.""" diff --git a/backend/gtfs-eta/gtfs_eta/core/logging.py b/backend/gtfs-eta/gtfs_eta/core/logging.py new file mode 100644 index 0000000..302283a --- /dev/null +++ b/backend/gtfs-eta/gtfs_eta/core/logging.py @@ -0,0 +1,15 @@ +"""Logging helpers for gtfs_eta.""" +import logging + + +def get_logger(name: str, level: str = "INFO") -> logging.Logger: + """Return a named logger with a consistent format.""" + logger = logging.getLogger(name) + if not logger.handlers: + handler = logging.StreamHandler() + handler.setFormatter( + logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s") + ) + logger.addHandler(handler) + logger.setLevel(getattr(logging, level.upper(), logging.INFO)) + return logger diff --git a/backend/gtfs-eta/gtfs_eta/core/validation.py b/backend/gtfs-eta/gtfs_eta/core/validation.py new file mode 100644 index 0000000..8680ea6 --- /dev/null +++ b/backend/gtfs-eta/gtfs_eta/core/validation.py @@ -0,0 +1,15 @@ +"""Input validation helpers for gtfs_eta.""" +from typing import Any + + +def require_keys(d: dict, keys: list[str], context: str = "") -> None: + """Raise ValueError if any key is missing from d.""" + missing = [k for k in keys if k not in d] + if missing: + raise ValueError(f"Missing required keys {missing} in {context or 'input'}") + + +def require_positive(value: Any, name: str) -> None: + """Raise ValueError if value is not a positive number.""" + if value is None or float(value) <= 0: + raise ValueError(f"{name} must be a positive number, got {value!r}") diff --git a/backend/gtfs-eta/gtfs_eta/eta_service/__init__.py b/backend/gtfs-eta/gtfs_eta/eta_service/__init__.py new file mode 100644 index 0000000..9177055 --- /dev/null +++ b/backend/gtfs-eta/gtfs_eta/eta_service/__init__.py @@ -0,0 +1 @@ +# gtfs_eta.eta_service diff --git a/backend/gtfs-eta/gtfs_eta/eta_service/estimator.py b/backend/gtfs-eta/gtfs_eta/eta_service/estimator.py new file mode 100644 index 0000000..dd4505b --- /dev/null +++ b/backend/gtfs-eta/gtfs_eta/eta_service/estimator.py @@ -0,0 +1,495 @@ +""" +ETA Service — low-latency inference with direct shape support. + +Ported from eta_prediction/eta_service/estimator.py on branch +feature/eta_prediction with the following changes: + - All sys.path hacks removed. + - All imports rewritten to absolute gtfs_eta.* paths. + - Module-level print() diagnostics removed (replaced with logging.debug). + - os.environ mutation at import time removed. + - Lazy imports inside _predict_with_model rewritten to gtfs_eta.* paths so + all branches are consistent (only polyreg_distance is exercised by the + baseline model, but the other branches compile cleanly). + - ADDED: precomputed-distance hook — if an upcoming_stop dict carries a + non-None 'shape_distance_to_stop' key, that value is used as the + authoritative distance, bypassing both shape projection and haversine + fallback for that stop (databus pre-computes a loop-back-safe monotonic + distance and we prefer it). +""" + +import logging +import math +from datetime import datetime, timezone +from typing import Optional + +from gtfs_eta.feature_engineering.temporal import extract_temporal_features +from gtfs_eta.models.common.registry import get_registry + +_log = logging.getLogger(__name__) + +# --------------------------------------------------------------------------- +# Optional shape support +# --------------------------------------------------------------------------- +try: + from gtfs_eta.feature_engineering.spatial import ( + ShapePolyline, + calculate_distance_features_with_shape, + ) + SHAPE_SUPPORT = True +except ImportError: + SHAPE_SUPPORT = False + _log.debug("Shape-aware spatial features not available; using fallback") + + +# --------------------------------------------------------------------------- +# Helpers +# --------------------------------------------------------------------------- + +def haversine_distance(lat1: float, lon1: float, lat2: float, lon2: float) -> float: + """Calculate distance between two lat/lon points in metres.""" + R = 6_371_000 + phi1, phi2 = math.radians(lat1), math.radians(lat2) + dphi = math.radians(lat2 - lat1) + dlambda = math.radians(lon2 - lon1) + a = math.sin(dphi / 2) ** 2 + math.cos(phi1) * math.cos(phi2) * math.sin(dlambda / 2) ** 2 + c = 2 * math.atan2(math.sqrt(a), math.sqrt(1 - a)) + return R * c + + +def _progress_features_fallback(vehicle_position, stop, next_stop, total_segments_hint): + """ + Approximate distance / progress metrics without shape data. + Used when no ShapePolyline is available for the current trip. + """ + vp_lat = vehicle_position["lat"] + vp_lon = vehicle_position["lon"] + stop_lat = stop["lat"] + stop_lon = stop["lon"] + + distance_to_stop = haversine_distance(vp_lat, vp_lon, stop_lat, stop_lon) + + progress_on_segment = 0.0 + if next_stop: + next_lat = next_stop["lat"] + next_lon = next_stop["lon"] + segment_length = haversine_distance(stop_lat, stop_lon, next_lat, next_lon) + if segment_length > 0: + distance_to_next = haversine_distance(vp_lat, vp_lon, next_lat, next_lon) + progress_on_segment = max(0.0, min(1.0, 1.0 - (distance_to_next / segment_length))) + + stop_seq = ( + stop.get("stop_sequence") + or stop.get("sequence") + or stop.get("stop_order") + or 1 + ) + total_segments = ( + stop.get("total_stop_sequence") + or total_segments_hint + or stop_seq + ) + completed = max(float(stop_seq) - 1.0, 0.0) + denom = max(float(total_segments), 1.0) + progress_ratio = max(0.0, min(1.0, (completed + progress_on_segment) / denom)) + + return { + "distance_to_stop_m": distance_to_stop, + "progress_on_segment": progress_on_segment, + "progress_ratio": progress_ratio, + "cross_track_error": None, + "shape_progress": None, + "shape_distance_to_stop": None, + } + + +def _progress_features_with_shape( + vehicle_position, stop, next_stop, shape, vehicle_stop_order, total_segments +): + """ + Shape-aware distance / progress metrics using a pre-loaded ShapePolyline. + Returns enhanced spatial features including cross-track error and + shape-based distances. + """ + features = calculate_distance_features_with_shape( + vehicle_position=vehicle_position, + stop=stop, + next_stop=next_stop, + shape=shape, + vehicle_stop_order=vehicle_stop_order, + total_segments=total_segments, + ) + return { + "distance_to_stop_m": features.get("distance_to_stop", 0.0), + "progress_on_segment": features.get("progress_on_segment", 0.0), + "progress_ratio": features.get("progress_ratio", 0.0), + "cross_track_error": features.get("cross_track_error"), + "shape_progress": features.get("shape_progress"), + "shape_distance_to_stop": features.get("shape_distance_to_stop"), + } + + +def _predict_with_model(model_key, model_type, features, distance_m): + """ + Dispatch to the appropriate predict_eta function based on model_type. + All lazy imports use absolute gtfs_eta.* paths. + """ + if model_type == "historical_mean": + from gtfs_eta.models.historical_mean.predict import predict_eta + return predict_eta( + model_key=model_key, + route_id=features.get("route_id", "unknown"), + stop_sequence=features.get("stop_sequence", 0), + hour=features.get("hour", 0), + day_of_week=features.get("day_of_week", 0), + is_peak_hour=features.get("is_peak_hour", False), + ) + + elif model_type == "ewma": + from gtfs_eta.models.ewma.predict import predict_eta + return predict_eta( + model_key=model_key, + route_id=features.get("route_id", "unknown"), + stop_sequence=features.get("stop_sequence", 0), + hour=features.get("hour", 0), + ) + + elif model_type == "polyreg_distance": + from gtfs_eta.models.polyreg_distance.predict import predict_eta + return predict_eta( + model_key=model_key, + distance_to_stop=distance_m, + ) + + elif model_type == "polyreg_time": + from gtfs_eta.models.polyreg_time.predict import predict_eta + return predict_eta( + model_key=model_key, + distance_to_stop=distance_m, + progress_on_segment=features.get("progress_on_segment"), + progress_ratio=features.get("progress_ratio"), + hour=features.get("hour", 0), + day_of_week=features.get("day_of_week", 0), + is_peak_hour=features.get("is_peak_hour", False), + is_weekend=features.get("is_weekend", False), + is_holiday=features.get("is_holiday", False), + temperature_c=features.get("temperature_c", 25.0), + precipitation_mm=features.get("precipitation_mm", 0.0), + wind_speed_kmh=features.get("wind_speed_kmh"), + ) + + elif model_type == "xgboost": + from gtfs_eta.models.xgb.predict import predict_eta + return predict_eta( + model_key=model_key, + distance_to_stop=distance_m, + progress_on_segment=features.get("progress_on_segment"), + progress_ratio=features.get("progress_ratio"), + hour=features.get("hour", 0), + day_of_week=features.get("day_of_week", 0), + is_peak_hour=features.get("is_peak_hour", False), + is_weekend=features.get("is_weekend", False), + is_holiday=features.get("is_holiday", False), + temperature_c=features.get("temperature_c", 25.0), + precipitation_mm=features.get("precipitation_mm", 0.0), + wind_speed_kmh=features.get("wind_speed_kmh", None), + ) + + else: + raise ValueError(f"Unknown model type: {model_type!r}") + + +# --------------------------------------------------------------------------- +# Public API +# --------------------------------------------------------------------------- + +def estimate_stop_times( + vehicle_position: dict, + upcoming_stops: list[dict], + route_id: str = None, + trip_id: str = None, + model_key: str = None, + model_type: str = None, + prefer_route_model: bool = True, + max_stops: int = 3, + shape: object = None, +) -> dict: + """ + Estimate arrival times for upcoming stops based on vehicle position. + + LOW-LATENCY DESIGN: No database calls during inference. + All data (stops, shapes) must be pre-loaded and passed as arguments. + + Args: + vehicle_position: Dict with vehicle_id, route, lat, lon, speed, timestamp. + upcoming_stops: List of stop dicts. Each dict may include: + - stop_id, stop_sequence, lat, lon (always required) + - shape_distance_to_stop (float, metres) — OPTIONAL. + When present and non-None, databus has pre-computed a + loop-back-safe monotonic distance along the shape; that value + is used directly as distance_m for the model, bypassing both + ShapePolyline projection and haversine fallback for that stop. + route_id: Optional route override. + trip_id: Optional trip ID for metadata. + model_key: Optional explicit model to use. + model_type: Optional model type filter. + prefer_route_model: If True, prefer route-specific models over global. + max_stops: Maximum number of stops to predict. + shape: Optional pre-loaded ShapePolyline object. + + Returns: + Dict with predictions, model info, and metadata. + """ + # Validate inputs + if not vehicle_position or not upcoming_stops: + return { + "vehicle_id": vehicle_position.get("vehicle_id", "unknown") if vehicle_position else "unknown", + "route_id": route_id, + "trip_id": trip_id, + "computed_at": datetime.now(timezone.utc).isoformat(), + "model_key": None, + "predictions": [], + "error": "Missing vehicle position or stops", + } + + stops_to_predict = upcoming_stops[:max_stops] + + # Parse timestamp + vp_timestamp_str = vehicle_position["timestamp"] + if vp_timestamp_str.endswith("Z"): + vp_timestamp_str = vp_timestamp_str.replace("Z", "+00:00") + vp_timestamp = datetime.fromisoformat(vp_timestamp_str) + + # Extract temporal features (Costa Rica locale by default) + temporal_features = extract_temporal_features( + vp_timestamp, + tz="America/Costa_Rica", + region="CR", + ) + + # Determine route + if route_id is None: + route_id = vehicle_position.get("route", "unknown") + + # Validate shape support + shape_available = shape is not None and SHAPE_SUPPORT + if shape and not SHAPE_SUPPORT: + _log.debug("Shape provided but spatial module unavailable; using fallback") + shape = None + + # Load registry and select model + registry = get_registry() + model_scope = "unknown" + + if model_key is None: + if prefer_route_model and route_id and route_id != "unknown": + model_key = registry.get_best_model( + model_type=model_type, + route_id=route_id, + metric="test_mae_seconds", + ) + model_scope = "route" if model_key else "global" + if model_key is None: + model_key = registry.get_best_model( + model_type=model_type, + route_id="global", + metric="test_mae_seconds", + ) + else: + model_key = registry.get_best_model( + model_type=model_type, + route_id="global", + metric="test_mae_seconds", + ) + model_scope = "global" + + # Last fallback — any model of the given type + if model_key is None: + model_key = registry.get_best_model(model_type=model_type) + + if model_key is None: + return { + "vehicle_id": vehicle_position["vehicle_id"], + "route_id": route_id, + "trip_id": trip_id, + "computed_at": datetime.now(timezone.utc).isoformat(), + "model_key": None, + "predictions": [], + "error": "No trained models found for model_type", + } + + # Load model metadata + try: + model_metadata = registry.load_metadata(model_key) + actual_model_type = model_metadata.get("model_type", "unknown") + model_route_id = model_metadata.get("route_id") + if model_route_id not in (None, "global"): + model_scope = "route" + elif model_scope == "unknown": + model_scope = "global" + except Exception as exc: + return { + "vehicle_id": vehicle_position["vehicle_id"], + "route_id": route_id, + "trip_id": trip_id, + "computed_at": datetime.now(timezone.utc).isoformat(), + "model_key": model_key, + "predictions": [], + "error": f"Failed to load model metadata: {exc}", + } + + # ----------------------------------------------------------------------- + # Per-stop predictions + # ----------------------------------------------------------------------- + predictions = [] + approx_total_segments = ( + max( + ( + stop.get("total_stop_sequence") + or stop.get("stop_sequence") + or stop.get("sequence") + or 0 + ) + for stop in stops_to_predict + ) + if stops_to_predict + else 0 + ) + if approx_total_segments <= 0: + approx_total_segments = max(len(stops_to_predict), 1) + + for idx, stop in enumerate(stops_to_predict): + next_stop = stops_to_predict[idx + 1] if idx + 1 < len(stops_to_predict) else None + + # Use explicit None checks, not `or`: stop_sequence == 0 is a valid + # GTFS 0-based sequence and must not be treated as falsy (that would + # relabel stop 0 as 1 and collide with a real stop 1). + if stop.get("stop_sequence") is not None: + stop_sequence_value = stop["stop_sequence"] + elif stop.get("sequence") is not None: + stop_sequence_value = stop["sequence"] + elif stop.get("stop_order") is not None: + stop_sequence_value = stop["stop_order"] + else: + stop_sequence_value = idx + 1 + + # ------------------------------------------------------------------- + # PRECOMPUTED-DISTANCE HOOK + # Databus pre-computes a loop-back-safe monotonic distance along the + # shape for each upcoming stop and stores it as shape_distance_to_stop. + # When present, we use it directly as the authoritative distance_m, + # skipping both ShapePolyline projection and haversine fallback. + # This avoids projection artifacts on looping routes and ensures the + # distance is always non-decreasing across the stop list. + # ------------------------------------------------------------------- + precomputed_dist = stop.get("shape_distance_to_stop") + if precomputed_dist is not None: + distance_m = float(precomputed_dist) + spatial_features = { + "distance_to_stop_m": distance_m, + "progress_on_segment": 0.0, + "progress_ratio": 0.0, + "cross_track_error": None, + "shape_progress": None, + # Surface the precomputed distance so it appears in the + # output prediction dict as shape_distance_to_stop_m. + "shape_distance_to_stop": distance_m, + } + elif shape_available: + spatial_features = _progress_features_with_shape( + vehicle_position, + stop, + next_stop, + shape, + vehicle_stop_order=stop_sequence_value, + total_segments=approx_total_segments, + ) + distance_m = spatial_features["distance_to_stop_m"] + else: + spatial_features = _progress_features_fallback( + vehicle_position, + stop, + next_stop, + approx_total_segments, + ) + distance_m = spatial_features["distance_to_stop_m"] + + # Build feature dict for the model + progress_on_segment = spatial_features["progress_on_segment"] or 0.0 + progress_ratio = spatial_features["progress_ratio"] or 0.0 + + features = { + "route_id": route_id, + "stop_sequence": stop_sequence_value, + "distance_to_stop": distance_m, + "progress_on_segment": progress_on_segment, + "progress_ratio": progress_ratio, + "hour": temporal_features["hour"], + "day_of_week": temporal_features["day_of_week"], + "is_weekend": temporal_features["is_weekend"], + "is_holiday": temporal_features["is_holiday"], + "is_peak_hour": temporal_features["is_peak_hour"], + "temperature_c": 25.0, + "precipitation_mm": 0.0, + "wind_speed_kmh": None, + } + + try: + result = _predict_with_model(model_key, actual_model_type, features, distance_m) + + eta_seconds = result.get("eta_seconds", 0.0) + eta_minutes = eta_seconds / 60.0 + eta_formatted = result.get( + "eta_formatted", + f"{int(eta_minutes)}m {int(eta_seconds % 60)}s", + ) + eta_ts = datetime.fromtimestamp( + vp_timestamp.timestamp() + eta_seconds, tz=timezone.utc + ) + + prediction = { + "stop_id": stop["stop_id"], + "stop_sequence": stop_sequence_value, + "distance_to_stop_m": round(distance_m, 1), + "eta_seconds": round(eta_seconds, 1), + "eta_minutes": round(eta_minutes, 2), + "eta_formatted": eta_formatted, + "eta_timestamp": eta_ts.isoformat(), + } + + # Optional shape metrics + if spatial_features.get("cross_track_error") is not None: + prediction["cross_track_error_m"] = round(spatial_features["cross_track_error"], 1) + if spatial_features.get("shape_progress") is not None: + prediction["shape_progress"] = round(spatial_features["shape_progress"], 3) + if spatial_features.get("shape_distance_to_stop") is not None: + prediction["shape_distance_to_stop_m"] = round( + spatial_features["shape_distance_to_stop"], 1 + ) + + predictions.append(prediction) + + except Exception as exc: + predictions.append( + { + "stop_id": stop["stop_id"], + "stop_sequence": stop_sequence_value, + "distance_to_stop_m": round(distance_m, 1), + "eta_seconds": None, + "eta_minutes": None, + "eta_formatted": None, + "eta_timestamp": None, + "error": str(exc), + } + ) + + return { + "vehicle_id": vehicle_position["vehicle_id"], + "route_id": route_id, + "trip_id": trip_id, + "computed_at": datetime.now(timezone.utc).isoformat(), + "model_key": model_key, + "model_type": actual_model_type, + "model_scope": model_scope, + "shape_used": shape_available, + "predictions": predictions, + } diff --git a/backend/gtfs-eta/gtfs_eta/feature_engineering/__init__.py b/backend/gtfs-eta/gtfs_eta/feature_engineering/__init__.py new file mode 100644 index 0000000..1d1fec6 --- /dev/null +++ b/backend/gtfs-eta/gtfs_eta/feature_engineering/__init__.py @@ -0,0 +1 @@ +# gtfs_eta.feature_engineering diff --git a/backend/gtfs-eta/gtfs_eta/feature_engineering/spatial.py b/backend/gtfs-eta/gtfs_eta/feature_engineering/spatial.py new file mode 100644 index 0000000..4fa2150 --- /dev/null +++ b/backend/gtfs-eta/gtfs_eta/feature_engineering/spatial.py @@ -0,0 +1,250 @@ +""" +Shape-informed spatial feature extraction for gtfs_eta. + +Ported from eta_prediction/feature_engineering/spatial.py on branch +feature/eta_prediction. No sys.path hacks; no DB helper functions +(load_shape_from_gtfs / load_shape_for_trip) that require psycopg2 are +kept because they are not needed by the inference path. +""" +from __future__ import annotations + +import math +from typing import Dict, List, Tuple, Optional + +EARTH_RADIUS_M = 6_371_000.0 + + +def _deg2rad(x: float) -> float: + return x * math.pi / 180.0 + + +def _haversine_m(lat1: float, lon1: float, lat2: float, lon2: float) -> float: + """Great-circle distance in meters.""" + phi1, phi2 = _deg2rad(lat1), _deg2rad(lat2) + dphi = phi2 - phi1 + dlambda = _deg2rad(lon2 - lon1) + a = math.sin(dphi / 2) ** 2 + math.cos(phi1) * math.cos(phi2) * math.sin(dlambda / 2) ** 2 + c = 2 * math.atan2(math.sqrt(a), math.sqrt(1 - a)) + return EARTH_RADIUS_M * c + + +class ShapePolyline: + """ + Represents a route shape as an ordered sequence of (lat, lon) points. + Provides methods to project vehicle positions onto the polyline and + compute accurate progress along the route. + """ + + def __init__(self, points: List[Tuple[float, float]]): + if len(points) < 2: + raise ValueError("Shape must have at least 2 points") + self.points = points + self._segment_lengths = self._compute_segment_lengths() + self._cumulative_distances = self._compute_cumulative_distances() + self.total_length = self._cumulative_distances[-1] + + def _compute_segment_lengths(self) -> List[float]: + lengths = [] + for i in range(len(self.points) - 1): + lat1, lon1 = self.points[i] + lat2, lon2 = self.points[i + 1] + lengths.append(_haversine_m(lat1, lon1, lat2, lon2)) + return lengths + + def _compute_cumulative_distances(self) -> List[float]: + cumulative = [0.0] + for length in self._segment_lengths: + cumulative.append(cumulative[-1] + length) + return cumulative + + def project_point(self, lat: float, lon: float) -> Dict: + """ + Project a point onto the polyline, finding the closest position. + + Returns: + { + 'distance_along_shape': meters from shape start, + 'cross_track_distance': perpendicular distance from shape (meters), + 'closest_segment_idx': index of nearest segment, + 'progress': normalized progress [0, 1] + } + """ + min_dist = float("inf") + best_segment_idx = 0 + best_projection_dist = 0.0 + + for i in range(len(self.points) - 1): + lat1, lon1 = self.points[i] + lat2, lon2 = self.points[i + 1] + proj_info = self._project_onto_segment(lat, lon, lat1, lon1, lat2, lon2) + if proj_info["distance"] < min_dist: + min_dist = proj_info["distance"] + best_segment_idx = i + best_projection_dist = proj_info["distance_along_segment"] + + distance_along_shape = ( + self._cumulative_distances[best_segment_idx] + best_projection_dist + ) + progress = ( + distance_along_shape / self.total_length if self.total_length > 0 else 0.0 + ) + + return { + "distance_along_shape": distance_along_shape, + "cross_track_distance": min_dist, + "closest_segment_idx": best_segment_idx, + "progress": min(1.0, max(0.0, progress)), + } + + def _project_onto_segment( + self, + lat: float, + lon: float, + lat1: float, + lon1: float, + lat2: float, + lon2: float, + ) -> Dict: + """Project point onto a single segment (planar approximation).""" + avg_lat = (lat1 + lat2) / 2 + meters_per_deg_lat = 111320.0 + meters_per_deg_lon = 111320.0 * math.cos(_deg2rad(avg_lat)) + + seg_x = (lon2 - lon1) * meters_per_deg_lon + seg_y = (lat2 - lat1) * meters_per_deg_lat + seg_length_sq = seg_x ** 2 + seg_y ** 2 + + if seg_length_sq < 1e-6: + dist = _haversine_m(lat, lon, lat1, lon1) + return {"distance": dist, "distance_along_segment": 0.0} + + dx = (lon - lon1) * meters_per_deg_lon + dy = (lat - lat1) * meters_per_deg_lat + + t = (dx * seg_x + dy * seg_y) / seg_length_sq + t = max(0.0, min(1.0, t)) + + proj_x = lon1 + t * (lon2 - lon1) + proj_y = lat1 + t * (lat2 - lat1) + + dist = _haversine_m(lat, lon, proj_y, proj_x) + seg_length = math.sqrt(seg_length_sq) + distance_along_segment = t * seg_length + + return {"distance": dist, "distance_along_segment": distance_along_segment} + + def get_distance_between_stops( + self, + stop1_lat: float, + stop1_lon: float, + stop2_lat: float, + stop2_lon: float, + ) -> float: + """Get shape distance between two stops (more accurate than haversine).""" + proj1 = self.project_point(stop1_lat, stop1_lon) + proj2 = self.project_point(stop2_lat, stop2_lon) + return abs(proj2["distance_along_shape"] - proj1["distance_along_shape"]) + + +def calculate_distance_features_with_shape( + vehicle_position: Dict, + stop: Dict, + next_stop: Optional[Dict], + shape: Optional[ShapePolyline] = None, + vehicle_stop_order: Optional[int] = None, + total_segments: Optional[int] = None, +) -> Dict: + """ + Enhanced spatial feature extraction using shape data when available. + + Args: + vehicle_position: {'lat': float, 'lon': float} + stop: {'stop_id': str, 'lat': float, 'lon': float} + next_stop: {'stop_id': str, 'lat': float, 'lon': float} or None + shape: ShapePolyline instance or None + vehicle_stop_order: 0-based index of the closest upstream stop + total_segments: Total number of stop-to-stop segments in trip + + Returns: + Dict with distance_to_stop, progress_on_segment, progress_ratio, + shape_progress, shape_distance_to_stop, cross_track_error + """ + vlat, vlon = float(vehicle_position["lat"]), float(vehicle_position["lon"]) + slat, slon = float(stop["lat"]), float(stop["lon"]) + + result: Dict = { + "distance_to_stop": _haversine_m(vlat, vlon, slat, slon), + "distance_to_next_stop": None, + "progress_on_segment": None, + "progress_ratio": None, + "shape_progress": None, + "shape_distance_to_stop": None, + "cross_track_error": None, + } + + nlat = nlon = None + if next_stop is not None: + nlat, nlon = float(next_stop["lat"]), float(next_stop["lon"]) + seg_len = _haversine_m(slat, slon, nlat, nlon) + result["distance_to_next_stop"] = ( + 0.0 if seg_len == 0.0 else _haversine_m(vlat, vlon, nlat, nlon) + ) + + # Simple progress proxy when no shape + if result["progress_on_segment"] is None and next_stop is not None and result["distance_to_next_stop"] is not None: + seg_len = _haversine_m(slat, slon, nlat, nlon) + if seg_len > 0: + progress = 1.0 - (result["distance_to_next_stop"] / seg_len) + result["progress_on_segment"] = max(0.0, min(1.0, progress)) + else: + result["progress_on_segment"] = 0.0 + + # Shape-based features + if shape is not None: + vehicle_proj = shape.project_point(vlat, vlon) + stop_proj = shape.project_point(slat, slon) + + shape_dist_to_stop = ( + stop_proj["distance_along_shape"] - vehicle_proj["distance_along_shape"] + ) + result.update( + { + "shape_progress": vehicle_proj["progress"], + "shape_distance_to_stop": max(0, shape_dist_to_stop), + "cross_track_error": vehicle_proj["cross_track_distance"], + "progress_ratio": vehicle_proj["progress"], + } + ) + + if next_stop is not None: + next_proj = shape.project_point(nlat, nlon) + segment_length = ( + next_proj["distance_along_shape"] - stop_proj["distance_along_shape"] + ) + if segment_length > 0: + past_stop = ( + vehicle_proj["distance_along_shape"] + - stop_proj["distance_along_shape"] + ) + result["progress_on_segment"] = max( + 0.0, min(1.0, past_stop / segment_length) + ) + else: + result["progress_on_segment"] = 0.0 + + # Fallback progress_ratio using stop order metadata + if result["progress_ratio"] is None: + order = vehicle_stop_order + if order is None: + order = stop.get("vehicle_stop_order") or stop.get("stop_order") + segments = total_segments + if segments is None: + segments = stop.get("total_segments") + if order is not None and segments: + completed_segments = max(float(order), 0.0) + progress_within = result["progress_on_segment"] or 0.0 + denom = max(float(segments), 1.0) + ratio = (completed_segments + progress_within) / denom + result["progress_ratio"] = max(0.0, min(1.0, ratio)) + + return result diff --git a/backend/gtfs-eta/gtfs_eta/feature_engineering/temporal.py b/backend/gtfs-eta/gtfs_eta/feature_engineering/temporal.py new file mode 100644 index 0000000..25c5963 --- /dev/null +++ b/backend/gtfs-eta/gtfs_eta/feature_engineering/temporal.py @@ -0,0 +1,98 @@ +""" +Temporal feature extraction for gtfs_eta. + +Ported verbatim from eta_prediction/feature_engineering/temporal.py on +branch feature/eta_prediction; only the import path was changed (no +sys.path hacks needed in this package). +""" +from __future__ import annotations + +from datetime import datetime +from typing import Dict, Optional + +try: + import zoneinfo # py3.9+ +except ImportError: # pragma: no cover + from backports import zoneinfo # type: ignore + + +def _get_holiday_calendar(region: str): + """ + Try to build a holiday calendar. Falls back to empty set if 'holidays' isn't installed. + region: + - 'US_MA' -> U.S. w/ Massachusetts state holidays (good for MBTA) + - 'CR' -> Costa Rica + """ + try: + import holidays + except Exception: + return None + + if region.upper() == "US_MA": + return holidays.US(state="MA") + if region.upper() == "CR": + # Requires holidays>=0.52 which includes CostaRica + try: + return holidays.CostaRica() + except Exception: + return None + # Fallback: US federal only + return holidays.US() + + +def _to_local(dt: datetime, tz: str) -> datetime: + """Ensure timezone-aware datetime localized to tz.""" + tzinfo = zoneinfo.ZoneInfo(tz) + if dt.tzinfo is None: + # assume input is UTC if naive + return dt.replace(tzinfo=zoneinfo.ZoneInfo("UTC")).astimezone(tzinfo) + return dt.astimezone(tzinfo) + + +def _tod_bin(hour: int) -> str: + """ + Map hour -> time-of-day bin. + Spec requires: 'morning' | 'midday' | 'afternoon' | 'evening'. + """ + if 5 <= hour <= 9: + return "morning" + if 10 <= hour <= 13: + return "midday" + if 14 <= hour <= 17: + return "afternoon" + return "evening" + + +def extract_temporal_features( + timestamp: datetime, + *, + tz: str = "America/New_York", + region: str = "US_MA", +) -> Dict[str, object]: + """ + Returns: + - hour: 0-23 + - day_of_week: 0-6 (Monday=0) + - is_weekend: bool + - is_holiday: bool + - time_of_day_bin: 'morning'|'midday'|'afternoon'|'evening' + - is_peak_hour: bool (7-9am, 4-7pm; weekdays only) + """ + dt_local = _to_local(timestamp, tz) + hour = dt_local.hour + dow = dt_local.weekday() # Monday=0 + is_weekend = dow >= 5 + + cal = _get_holiday_calendar(region) + is_holiday = bool(cal and (dt_local.date() in cal)) + + is_peak_hour = (dow < 5) and ((7 <= hour <= 9) or (16 <= hour <= 19)) + + return { + "hour": hour, + "day_of_week": dow, + "is_weekend": is_weekend, + "is_holiday": is_holiday, + "time_of_day_bin": _tod_bin(hour), + "is_peak_hour": is_peak_hour, + } diff --git a/backend/gtfs-eta/gtfs_eta/models/__init__.py b/backend/gtfs-eta/gtfs_eta/models/__init__.py new file mode 100644 index 0000000..0063a48 --- /dev/null +++ b/backend/gtfs-eta/gtfs_eta/models/__init__.py @@ -0,0 +1 @@ +# gtfs_eta.models diff --git a/backend/gtfs-eta/gtfs_eta/models/common/__init__.py b/backend/gtfs-eta/gtfs_eta/models/common/__init__.py new file mode 100644 index 0000000..8492010 --- /dev/null +++ b/backend/gtfs-eta/gtfs_eta/models/common/__init__.py @@ -0,0 +1 @@ +# gtfs_eta.models.common diff --git a/backend/gtfs-eta/gtfs_eta/models/common/registry.py b/backend/gtfs-eta/gtfs_eta/models/common/registry.py new file mode 100644 index 0000000..02b3a4b --- /dev/null +++ b/backend/gtfs-eta/gtfs_eta/models/common/registry.py @@ -0,0 +1,316 @@ +""" +Model registry for gtfs_eta. + +Manages trained model artifacts and metadata in a structured directory. +The registry dir is determined solely by the MODEL_REGISTRY_DIR environment +variable; no __file__-relative paths are used so the package is relocatable. + +Ported from eta_prediction/models/common/registry.py on branch +feature/eta_prediction with the following changes: + - Removed sys.path hacks (not needed in a proper package). + - Removed print() diagnostics; replaced with logging. + - PROJECT_ROOT / DEFAULT_REGISTRY_DIR no longer derived from __file__ — + the env var is the only authoritative source. + - _find_existing_registry_dir() retained as a convenience fallback for + local dev (walks CWD upwards looking for models/trained/registry.json). + - get_registry() singleton caching retained. +""" + +import json +import logging +import os +import pickle +from datetime import datetime +from pathlib import Path +from typing import Any, Dict, List, Optional, Union + +import pandas as pd + +_log = logging.getLogger(__name__) + +# ── Directory resolution ────────────────────────────────────────────────────── + +def _find_existing_registry_dir() -> Optional[Path]: + """ + Walk CWD upward searching for an existing models/trained/registry.json. + Returns None if not found (caller should then raise or use a default). + """ + cwd = Path.cwd().resolve() + for root in [cwd, *cwd.parents]: + candidate = root / "models" / "trained" + if (candidate / "registry.json").exists(): + return candidate.resolve() + return None + + +def _resolve_registry_dir() -> Path: + """ + Determine the registry directory with this priority: + 1. MODEL_REGISTRY_DIR env var (authoritative). + 2. Walk CWD upward for an existing registry (dev convenience). + 3. Raise at runtime if neither is available. + """ + env_dir = os.getenv("MODEL_REGISTRY_DIR") + if env_dir: + return Path(env_dir).expanduser().resolve() + discovered = _find_existing_registry_dir() + if discovered: + return discovered + raise RuntimeError( + "MODEL_REGISTRY_DIR is not set and no existing registry was found. " + "Set the MODEL_REGISTRY_DIR environment variable before using gtfs_eta." + ) + + +# ── Registry class ──────────────────────────────────────────────────────────── + +class ModelRegistry: + """ + Manages model artifacts and metadata in a structured directory. + + Structure:: + + / + {model_key}.pkl + {model_key}_meta.json + registry.json # index of all models + """ + + def __init__(self, base_dir: Union[str, Path, None] = None): + if base_dir is not None: + base_path = Path(base_dir).expanduser().resolve() + else: + base_path = _resolve_registry_dir() + + self.base_dir = base_path + self.base_dir.mkdir(parents=True, exist_ok=True) + + self.registry_file = self.base_dir / "registry.json" + self._load_registry() + + # ── persistence ────────────────────────────────────────────────────────── + + def _load_registry(self) -> None: + if self.registry_file.exists(): + with open(self.registry_file, "r") as f: + self.registry: Dict[str, Any] = json.load(f) + else: + self.registry = {} + + def _save_registry(self) -> None: + with open(self.registry_file, "w") as f: + json.dump(self.registry, f, indent=2) + + # ── CRUD ───────────────────────────────────────────────────────────────── + + def save_model( + self, + model_key: str, + model: Any, + metadata: Dict[str, Any], + overwrite: bool = False, + ) -> Path: + """Save model pickle + metadata JSON; update the registry index.""" + model_path = self.base_dir / f"{model_key}.pkl" + meta_path = self.base_dir / f"{model_key}_meta.json" + + if model_path.exists() and not overwrite: + raise FileExistsError( + f"Model {model_key} already exists. Set overwrite=True to replace." + ) + + with open(model_path, "wb") as f: + pickle.dump(model, f) + + metadata = dict(metadata) # don't mutate caller's dict + metadata["model_key"] = model_key + metadata["saved_at"] = datetime.now().isoformat() + metadata["model_path"] = model_path.name + + with open(meta_path, "w") as f: + json.dump(metadata, f, indent=2) + + route_info = ( + f" (route: {metadata.get('route_id')})" + if metadata.get("route_id") + else " (global)" + ) + _log.debug("Saved model: %s%s", model_key, route_info) + + # Store basenames only — paths are resolved against ``base_dir`` at + # load time (see ``_resolve_in_registry``), keeping the registry + # relocatable: a registry directory can be moved, bind-mounted at a + # different root, or checked into version control and still load. + self.registry[model_key] = { + "model_path": model_path.name, + "meta_path": meta_path.name, + "saved_at": metadata["saved_at"], + "model_type": metadata.get("model_type", "unknown"), + "route_id": metadata.get("route_id"), + "dataset": metadata.get("dataset", "unknown"), + } + self._save_registry() + return model_path + + def _resolve_in_registry(self, stored_path: str) -> Path: + """Resolve a registry-stored path against the registry directory. + + Only the basename of ``stored_path`` is used, so entries written with + an absolute path on another host (e.g. ``/app/eta_models/x.pkl``) still + load wherever the registry directory currently lives. + """ + return self.base_dir / Path(stored_path).name + + def load_model(self, model_key: str) -> Any: + """Load and unpickle a model from the registry.""" + if model_key not in self.registry: + raise KeyError(f"Model {model_key!r} not found in registry") + model_path = self._resolve_in_registry(self.registry[model_key]["model_path"]) + with open(model_path, "rb") as f: + return pickle.load(f) + + def load_metadata(self, model_key: str) -> Dict[str, Any]: + """Load metadata JSON for a model.""" + if model_key not in self.registry: + raise KeyError(f"Model {model_key!r} not found in registry") + meta_path = self._resolve_in_registry(self.registry[model_key]["meta_path"]) + with open(meta_path, "r") as f: + return json.load(f) + + def delete_model(self, model_key: str) -> bool: + """Remove model pickle, metadata, and registry entry.""" + if model_key not in self.registry: + raise KeyError(f"Model {model_key!r} not found in registry") + + model_path = self._resolve_in_registry(self.registry[model_key]["model_path"]) + meta_path = self._resolve_in_registry(self.registry[model_key]["meta_path"]) + + if model_path.exists(): + model_path.unlink() + if meta_path.exists(): + meta_path.unlink() + + del self.registry[model_key] + self._save_registry() + _log.debug("Deleted model: %s", model_key) + return True + + # ── query helpers ───────────────────────────────────────────────────────── + + def list_models( + self, + model_type: Optional[str] = None, + route_id: Optional[str] = None, + sort_by: str = "saved_at", + ) -> pd.DataFrame: + """Return a DataFrame of all models matching the given filters.""" + models = [] + for key, info in self.registry.items(): + if model_type and info.get("model_type") != model_type: + continue + model_route_id = info.get("route_id") + if route_id is not None and route_id != "all": + if route_id == "global" and model_route_id is not None: + continue + elif route_id != "global" and model_route_id != route_id: + continue + try: + meta = self.load_metadata(key) + models.append( + { + "model_key": key, + "model_type": info.get("model_type", "unknown"), + "route_id": model_route_id or "global", + "saved_at": info["saved_at"], + "dataset": meta.get("dataset", "unknown"), + "n_samples": meta.get("n_samples"), + "mae_seconds": meta.get("metrics", {}).get("test_mae_seconds"), + "mae_minutes": meta.get("metrics", {}).get("test_mae_minutes"), + "rmse_seconds": meta.get("metrics", {}).get("test_rmse_seconds"), + "r2": meta.get("metrics", {}).get("test_r2"), + } + ) + except Exception as exc: + _log.warning("Could not load metadata for %s: %s", key, exc) + + df = pd.DataFrame(models) + if not df.empty and sort_by in df.columns: + df = df.sort_values(sort_by, ascending=False) + return df + + def get_best_model( + self, + model_type: Optional[str] = None, + route_id: Optional[str] = None, + metric: str = "test_mae_seconds", + minimize: bool = True, + ) -> Optional[str]: + """ + Return the model_key of the best model by the given metric. + + When route_id is None, prefers route-specific models if they exist; + otherwise falls back to global models. + """ + candidates = [] + for key in self.registry: + if model_type and self.registry[key].get("model_type") != model_type: + continue + + model_route_id = self.registry[key].get("route_id") + if route_id is not None: + if route_id == "global" and model_route_id is not None: + continue + elif route_id != "global" and model_route_id != route_id: + continue + + try: + meta = self.load_metadata(key) + metric_value = meta.get("metrics", {}).get(metric) + if metric_value is not None: + candidates.append( + { + "key": key, + "metric_value": metric_value, + "route_id": model_route_id, + "is_route_specific": model_route_id is not None, + } + ) + except Exception: + continue + + if not candidates: + return None + + if route_id is None: + route_specific = [c for c in candidates if c["is_route_specific"]] + global_models = [c for c in candidates if not c["is_route_specific"]] + candidates_to_sort = route_specific if route_specific else global_models + else: + candidates_to_sort = candidates + + candidates_to_sort.sort(key=lambda x: x["metric_value"], reverse=not minimize) + return candidates_to_sort[0]["key"] if candidates_to_sort else None + + def get_routes(self, model_type: Optional[str] = None) -> List[str]: + """Return sorted list of route IDs that have trained models.""" + routes = set() + for key, info in self.registry.items(): + if model_type and info.get("model_type") != model_type: + continue + route = info.get("route_id") + if route is not None: + routes.add(route) + return sorted(routes) + + +# ── Singleton ───────────────────────────────────────────────────────────────── + +_registry: Optional[ModelRegistry] = None + + +def get_registry() -> ModelRegistry: + """Return (or lazily create) the process-level registry singleton.""" + global _registry + if _registry is None: + _registry = ModelRegistry() + return _registry diff --git a/backend/gtfs-eta/gtfs_eta/models/common/utils.py b/backend/gtfs-eta/gtfs_eta/models/common/utils.py new file mode 100644 index 0000000..0ab81c9 --- /dev/null +++ b/backend/gtfs-eta/gtfs_eta/models/common/utils.py @@ -0,0 +1,126 @@ +""" +Utility functions for gtfs_eta.models. + +Ported from eta_prediction/models/common/utils.py on branch +feature/eta_prediction. Training helpers (print_metrics_table, +train_test_summary, create_feature_importance_df) are retained as-is; +they are harmless at inference time. +""" + +import numpy as np +import pandas as pd +from typing import Any, Dict, List, Optional +import logging + + +def setup_logging(name: str = "eta_models", level: str = "INFO") -> logging.Logger: + """Setup consistent logging for models.""" + logger = logging.getLogger(name) + logger.setLevel(getattr(logging, level)) + if not logger.handlers: + handler = logging.StreamHandler() + handler.setFormatter( + logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s") + ) + logger.addHandler(handler) + return logger + + +def safe_divide( + numerator: np.ndarray, + denominator: np.ndarray, + fill_value: float = 0.0, +) -> np.ndarray: + """Safe division that handles division by zero.""" + result = np.full_like(numerator, fill_value, dtype=float) + mask = denominator != 0 + result[mask] = numerator[mask] / denominator[mask] + return result + + +def clip_predictions( + predictions: np.ndarray, + min_value: float = 0.0, + max_value: float = 7200.0, +) -> np.ndarray: + """Clip predictions to reasonable range (0–7200 s by default).""" + return np.clip(predictions, min_value, max_value) + + +def calculate_speed_kmh(distance_m: float, time_s: float) -> float: + """Calculate speed in km/h from distance and time.""" + if time_s <= 0: + return 0.0 + return (distance_m / 1000) / (time_s / 3600) + + +def haversine_distance( + lat1: float, + lon1: float, + lat2: float, + lon2: float, +) -> float: + """Calculate great-circle distance between two points (meters).""" + R = 6_371_000 + phi1 = np.radians(lat1) + phi2 = np.radians(lat2) + delta_phi = np.radians(lat2 - lat1) + delta_lambda = np.radians(lon2 - lon1) + a = ( + np.sin(delta_phi / 2) ** 2 + + np.cos(phi1) * np.cos(phi2) * np.sin(delta_lambda / 2) ** 2 + ) + c = 2 * np.arctan2(np.sqrt(a), np.sqrt(1 - a)) + return R * c + + +def format_seconds(seconds: float) -> str: + """Format seconds as human-readable string (e.g. '2m 30s', '1h 15m').""" + if seconds < 60: + return f"{int(seconds)}s" + elif seconds < 3600: + minutes = int(seconds / 60) + secs = int(seconds % 60) + return f"{minutes}m {secs}s" + else: + hours = int(seconds / 3600) + minutes = int((seconds % 3600) / 60) + return f"{hours}h {minutes}m" + + +def add_lag_features( + df: pd.DataFrame, + columns: List[str], + lags: List[int], + group_by: Optional[str] = None, +) -> pd.DataFrame: + """Add lagged features to dataframe (returns a new copy).""" + df_copy = df.copy() + for col in columns: + for lag in lags: + lag_col_name = f"{col}_lag{lag}" + if group_by: + df_copy[lag_col_name] = df_copy.groupby(group_by)[col].shift(lag) + else: + df_copy[lag_col_name] = df_copy[col].shift(lag) + return df_copy + + +def smooth_predictions( + predictions: np.ndarray, + window_size: int = 3, + method: str = "ewma", + alpha: float = 0.3, +) -> np.ndarray: + """Smooth predictions using rolling average or EWMA.""" + if len(predictions) < window_size: + return predictions + s = pd.Series(predictions) + if method == "mean": + return s.rolling(window_size, min_periods=1).mean().values + elif method == "median": + return s.rolling(window_size, min_periods=1).median().values + elif method == "ewma": + return s.ewm(alpha=alpha).mean().values + else: + raise ValueError(f"Unknown smoothing method: {method}") diff --git a/backend/gtfs-eta/gtfs_eta/models/polyreg_distance/__init__.py b/backend/gtfs-eta/gtfs_eta/models/polyreg_distance/__init__.py new file mode 100644 index 0000000..7674c17 --- /dev/null +++ b/backend/gtfs-eta/gtfs_eta/models/polyreg_distance/__init__.py @@ -0,0 +1 @@ +# gtfs_eta.models.polyreg_distance diff --git a/backend/gtfs-eta/gtfs_eta/models/polyreg_distance/model.py b/backend/gtfs-eta/gtfs_eta/models/polyreg_distance/model.py new file mode 100644 index 0000000..9021022 --- /dev/null +++ b/backend/gtfs-eta/gtfs_eta/models/polyreg_distance/model.py @@ -0,0 +1,150 @@ +""" +PolyRegDistanceModel — inference-only class. + +Extracted verbatim from eta_prediction/models/polyreg_distance/train.py on +branch feature/eta_prediction. Only the class and its sklearn/numpy/pandas +imports are present here — training functions, dataset loaders, metrics, and +ModelKey helpers are deliberately excluded so pickles can be loaded without +any training-time dependency. + +Stable import path for pickle compatibility: + gtfs_eta.models.polyreg_distance.model.PolyRegDistanceModel +""" + +import numpy as np +import pandas as pd +from sklearn.linear_model import Ridge +from sklearn.pipeline import Pipeline +from sklearn.preprocessing import PolynomialFeatures +from typing import Dict, Optional + +from gtfs_eta.models.common.utils import clip_predictions + + +class PolyRegDistanceModel: + """ + Polynomial regression on distance with optional route-specific models. + + Features: distance_to_stop, (distance)^2, (distance)^3, ... + Can fit separate models per route for better performance. + """ + + def __init__( + self, + degree: int = 2, + alpha: float = 1.0, + route_specific: bool = False, + ): + """ + Args: + degree: Polynomial degree (1, 2, or 3 recommended) + alpha: Ridge regression alpha (regularization strength) + route_specific: Whether to fit separate model per route + """ + self.degree = degree + self.alpha = alpha + self.route_specific = route_specific + self.models: Dict[str, Pipeline] = {} # route_id -> fitted pipeline + self.global_model: Optional[Pipeline] = None + self.feature_cols = ["distance_to_stop"] + + # ── internal ────────────────────────────────────────────────────────────── + + def _create_pipeline(self) -> Pipeline: + return Pipeline( + [ + ("poly", PolynomialFeatures(degree=self.degree, include_bias=True)), + ("ridge", Ridge(alpha=self.alpha)), + ] + ) + + # ── public API ──────────────────────────────────────────────────────────── + + def fit( + self, + train_df: pd.DataFrame, + target_col: str = "time_to_arrival_seconds", + ) -> "PolyRegDistanceModel": + """ + Train model(s). + + Args: + train_df: DataFrame with at least 'distance_to_stop' and target_col. + Also needs 'route_id' when route_specific=True. + target_col: Name of the target column. + + Returns: + self (for chaining) + """ + if "distance_to_stop" not in train_df.columns: + raise ValueError("'distance_to_stop' column required in train_df") + + if self.route_specific: + for route_id, route_df in train_df.groupby("route_id"): + X = route_df[["distance_to_stop"]].values + y = route_df[target_col].values + model = self._create_pipeline() + model.fit(X, y) + self.models[route_id] = model + else: + X = train_df[["distance_to_stop"]].values + y = train_df[target_col].values + self.global_model = self._create_pipeline() + self.global_model.fit(X, y) + + return self + + def predict(self, X: pd.DataFrame) -> np.ndarray: + """ + Predict ETAs (seconds). + + Args: + X: DataFrame with 'distance_to_stop' (and 'route_id' when route_specific). + + Returns: + 1-D numpy array of predicted ETAs, clipped to [0, 7200] seconds. + """ + if self.route_specific: + if "route_id" not in X.columns: + raise ValueError("'route_id' required for route-specific model") + + predictions = np.zeros(len(X)) + X_reset = X.reset_index(drop=True) + + for route_id, route_df in X_reset.groupby("route_id"): + pos_indices = route_df.index.values + X_route = route_df[["distance_to_stop"]].values + + if route_id in self.models: + predictions[pos_indices] = self.models[route_id].predict(X_route) + elif self.global_model is not None: + predictions[pos_indices] = self.global_model.predict(X_route) + else: + # fallback: rough 30 km/h + predictions[pos_indices] = X_route.flatten() / 30_000 * 3_600 + else: + if self.global_model is None: + raise ValueError("Model has not been trained — call fit() first") + X_dist = X[["distance_to_stop"]].values + predictions = self.global_model.predict(X_dist) + + return clip_predictions(predictions) + + def get_coefficients(self, route_id: Optional[str] = None) -> Dict: + """ + Return ridge coefficients for the given route (or the global model). + """ + if route_id and route_id in self.models: + model = self.models[route_id] + elif self.global_model: + model = self.global_model + else: + return {} + + coefs = model.named_steps["ridge"].coef_ + intercept = model.named_steps["ridge"].intercept_ + return { + "intercept": float(intercept), + "coefficients": coefs.tolist(), + "degree": self.degree, + } diff --git a/backend/gtfs-eta/gtfs_eta/models/polyreg_distance/predict.py b/backend/gtfs-eta/gtfs_eta/models/polyreg_distance/predict.py new file mode 100644 index 0000000..6732056 --- /dev/null +++ b/backend/gtfs-eta/gtfs_eta/models/polyreg_distance/predict.py @@ -0,0 +1,60 @@ +""" +Prediction interface for the Polynomial Regression Distance model. + +Ported from eta_prediction/models/polyreg_distance/predict.py on branch +feature/eta_prediction with the following changes: + - sys.path hacks removed. + - Imports rewritten to absolute gtfs_eta.* paths. +""" + +from typing import Dict, Optional + +import pandas as pd + +from gtfs_eta.models.common.registry import get_registry +from gtfs_eta.models.common.utils import format_seconds + + +def predict_eta( + model_key: str, + distance_to_stop: float, + route_id: Optional[str] = None, +) -> Dict: + """ + Predict ETA using a polynomial regression distance model. + + Args: + model_key: Model identifier in the registry. + distance_to_stop: Distance to the stop in metres. + route_id: Route ID — required for route-specific models. + + Returns: + Dict with eta_seconds, eta_minutes, eta_formatted, model_key, + model_type, distance_to_stop_m, route_specific, degree, coefficients. + """ + registry = get_registry() + model = registry.load_model(model_key) + metadata = registry.load_metadata(model_key) + + input_data: Dict = {"distance_to_stop": [distance_to_stop]} + if model.route_specific: + if route_id is None: + raise ValueError("route_id is required for a route-specific model") + input_data["route_id"] = [route_id] + + input_df = pd.DataFrame(input_data) + eta_seconds = float(model.predict(input_df)[0]) + + coefs = model.get_coefficients(route_id if model.route_specific else None) + + return { + "eta_seconds": eta_seconds, + "eta_minutes": eta_seconds / 60.0, + "eta_formatted": format_seconds(eta_seconds), + "model_key": model_key, + "model_type": "polyreg_distance", + "distance_to_stop_m": distance_to_stop, + "route_specific": metadata.get("route_specific", False), + "degree": metadata.get("degree"), + "coefficients": coefs, + } diff --git a/backend/gtfs-eta/gtfs_eta/seed_baseline_model.py b/backend/gtfs-eta/gtfs_eta/seed_baseline_model.py new file mode 100644 index 0000000..01a875e --- /dev/null +++ b/backend/gtfs-eta/gtfs_eta/seed_baseline_model.py @@ -0,0 +1,94 @@ +""" +seed_baseline_model.py — seed ONE global polyreg_distance model into the registry. + +Usage: + export MODEL_REGISTRY_DIR=/tmp/gtfs_eta_registry + python gtfs_eta/seed_baseline_model.py + +The script: + 1. Builds synthetic constant-speed data (distance / 4.5 m/s ≈ urban bus avg). + 2. Fits a PolyRegDistanceModel(degree=1, alpha=1.0, route_specific=False). + 3. Saves it to the registry with the key 'polyreg_distance_global_baseline_v0'. + +MODEL_REGISTRY_DIR is read by the registry singleton; set it before running. +""" + +import os +import sys + +import numpy as np +import pandas as pd + +# Allow running as a top-level script from the repo root +_HERE = os.path.dirname(os.path.abspath(__file__)) +_REPO_ROOT = os.path.dirname(_HERE) +if _REPO_ROOT not in sys.path: + sys.path.insert(0, _REPO_ROOT) + +from gtfs_eta.models.polyreg_distance.model import PolyRegDistanceModel +from gtfs_eta.models.common.registry import get_registry + +# ── Constants ───────────────────────────────────────────────────────────────── + +MODEL_KEY = "polyreg_distance_global_baseline_v0" +SPEED_M_S = 4.5 # urban bus average including dwell time +N_SAMPLES = 1_000 +DISTANCE_MAX_M = 3_000 +NOISE_STD_S = 10.0 # small gaussian noise on arrival time +RANDOM_SEED = 42 + + +def main() -> None: + rng = np.random.default_rng(RANDOM_SEED) + + # Synthetic training data + distances = rng.uniform(0, DISTANCE_MAX_M, size=N_SAMPLES) + times = distances / SPEED_M_S + rng.normal(0, NOISE_STD_S, size=N_SAMPLES) + times = np.clip(times, 0, None) # no negative travel times + + train_df = pd.DataFrame( + { + "distance_to_stop": distances, + "time_to_arrival_seconds": times, + } + ) + + # Build and fit model + model = PolyRegDistanceModel(degree=1, alpha=1.0, route_specific=False) + model.fit(train_df) + + # Verify that the global model path is available (used by predict()) + assert model.global_model is not None, "global_model should be set after fit()" + + # Quick sanity check: ETA at 1000 m should be ~222 s + _check_df = pd.DataFrame({"distance_to_stop": [1000.0]}) + eta_check = float(model.predict(_check_df)[0]) + expected = 1000.0 / SPEED_M_S + assert abs(eta_check - expected) < 60, ( + f"Sanity check failed: predicted {eta_check:.1f}s, expected ~{expected:.1f}s" + ) + + # Metadata (get_best_model requires metrics.test_mae_seconds to be + # present and non-None) + metadata = { + "model_type": "polyreg_distance", + "route_id": None, # None → registered as GLOBAL + "route_specific": False, + "degree": 1, + "alpha": 1.0, + "dataset": "synthetic_constant_speed", + "n_samples": N_SAMPLES, + "metrics": { + "test_mae_seconds": 30.0, + "test_mae_minutes": 0.5, + }, + } + + registry = get_registry() + model_path = registry.save_model(MODEL_KEY, model, metadata, overwrite=True) + print(f"Seeded model '{MODEL_KEY}' -> {model_path}") + print(f"Registry dir: {registry.base_dir}") + + +if __name__ == "__main__": + main() diff --git a/backend/gtfs-eta/pyproject.toml b/backend/gtfs-eta/pyproject.toml new file mode 100644 index 0000000..e14765e --- /dev/null +++ b/backend/gtfs-eta/pyproject.toml @@ -0,0 +1,22 @@ +[build-system] +requires = ["setuptools>=68", "wheel"] +build-backend = "setuptools.build_meta" + +[project] +name = "gtfs-eta" +version = "0.1.0" +description = "Namespaced ETA-prediction inference package for the SIMOVI databus" +requires-python = ">=3.11" +dependencies = [ + "numpy>=1.26", + "pandas>=2.3", + "scikit-learn>=1.7", + "holidays>=0.40", +] + +[project.optional-dependencies] +xgboost = ["xgboost>=3.1"] + +[tool.setuptools.packages.find] +where = ["."] +include = ["gtfs_eta*"] diff --git a/backend/pyproject.toml b/backend/pyproject.toml index 38a8d0c..dffe940 100644 --- a/backend/pyproject.toml +++ b/backend/pyproject.toml @@ -19,6 +19,7 @@ dependencies = [ "flower>=2.0.1", "geopandas>=1.1.1", "gtfs-django", + "gtfs-eta", "gtfs-io", "gtfs-realtime-bindings>=1.0.0", "gunicorn>=23.0.0", @@ -47,8 +48,10 @@ dev = [ members = [ "gtfs-io", "gtfs-django", + "gtfs-eta", ] [tool.uv.sources] +gtfs-eta = { workspace = true, editable = true } gtfs-io = { workspace = true, editable = true } gtfs-django = { workspace = true, editable = true } diff --git a/backend/uv.lock b/backend/uv.lock index 7c253d4..9fdfb4f 100644 --- a/backend/uv.lock +++ b/backend/uv.lock @@ -14,6 +14,7 @@ resolution-markers = [ members = [ "databus", "gtfs-django", + "gtfs-eta", "gtfs-io", ] @@ -696,6 +697,7 @@ dependencies = [ { name = "flower" }, { name = "geopandas" }, { name = "gtfs-django" }, + { name = "gtfs-eta" }, { name = "gtfs-io" }, { name = "gtfs-realtime-bindings" }, { name = "gunicorn" }, @@ -736,6 +738,7 @@ requires-dist = [ { name = "flower", specifier = ">=2.0.1" }, { name = "geopandas", specifier = ">=1.1.1" }, { name = "gtfs-django", editable = "gtfs-django" }, + { name = "gtfs-eta", editable = "gtfs-eta" }, { name = "gtfs-io", editable = "gtfs-io" }, { name = "gtfs-realtime-bindings", specifier = ">=1.0.0" }, { name = "gunicorn", specifier = ">=23.0.0" }, @@ -1202,6 +1205,32 @@ testing = [ { name = "tox", specifier = ">=4.30.2" }, ] +[[package]] +name = "gtfs-eta" +version = "0.1.0" +source = { editable = "gtfs-eta" } +dependencies = [ + { name = "holidays" }, + { name = "numpy" }, + { name = "pandas" }, + { name = "scikit-learn" }, +] + +[package.optional-dependencies] +xgboost = [ + { name = "xgboost" }, +] + +[package.metadata] +requires-dist = [ + { name = "holidays", specifier = ">=0.40" }, + { name = "numpy", specifier = ">=1.26" }, + { name = "pandas", specifier = ">=2.3" }, + { name = "scikit-learn", specifier = ">=1.7" }, + { name = "xgboost", marker = "extra == 'xgboost'", specifier = ">=3.1" }, +] +provides-extras = ["xgboost"] + [[package]] name = "gtfs-io" version = "0.0.1" @@ -1267,6 +1296,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/69/b2/119f6e6dcbd96f9069ce9a2665e0146588dc9f88f29549711853645e736a/h2-4.3.0-py3-none-any.whl", hash = "sha256:c438f029a25f7945c69e0ccf0fb951dc3f73a5f6412981daee861431b70e2bdd", size = 61779, upload-time = "2025-08-23T18:12:17.779Z" }, ] +[[package]] +name = "holidays" +version = "0.99" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "python-dateutil" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/37/69/7626f743128513c919ed058530d62a86902099532a86222260b0cfc70d7c/holidays-0.99.tar.gz", hash = "sha256:9ef8278cdfb67dbd93309ec9b30c30609ab35fd57cb207ce4593f80dc91196f5", size = 931630, upload-time = "2026-06-15T20:39:42.38Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3f/f9/263e875ca954c44dbd29000a840b43bf875fbf4fdacf9430cd8fc92ad45e/holidays-0.99-py3-none-any.whl", hash = "sha256:bc47cefa781dbc6415e782767dea013794146cc629845354b393c53cdee90c64", size = 1503023, upload-time = "2026-06-15T20:39:40.575Z" }, +] + [[package]] name = "hpack" version = "4.1.0" @@ -1403,6 +1444,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/26/b4/08c9d297edd5e1182506edecccbb88a92e1122a057953068cadac420ca5d/jinja2_humanize_extension-0.4.0-py3-none-any.whl", hash = "sha256:b6326e2da0f7d425338bebf58848e830421defbce785f12ae812e65128518156", size = 4769, upload-time = "2023-09-01T12:52:41.098Z" }, ] +[[package]] +name = "joblib" +version = "1.5.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/41/f2/d34e8b3a08a9cc79a50b2208a93dce981fe615b64d5a4d4abee421d898df/joblib-1.5.3.tar.gz", hash = "sha256:8561a3269e6801106863fd0d6d84bb737be9e7631e33aaed3fb9ce5953688da3", size = 331603, upload-time = "2025-12-15T08:41:46.427Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7b/91/984aca2ec129e2757d1e4e3c81c3fcda9d0f85b74670a094cc443d9ee949/joblib-1.5.3-py3-none-any.whl", hash = "sha256:5fc3c5039fc5ca8c0276333a188bbd59d6b7ab37fe6632daa76bc7f9ec18e713", size = 309071, upload-time = "2025-12-15T08:41:44.973Z" }, +] + [[package]] name = "jsonpatch" version = "1.33" @@ -1760,6 +1810,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505", size = 4963, upload-time = "2025-04-22T14:54:22.983Z" }, ] +[[package]] +name = "narwhals" +version = "2.22.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/62/3c/c4ef2164a71c1a63d7f1ae411c4082c5fa872405106db60a4b7114989ad7/narwhals-2.22.1.tar.gz", hash = "sha256:d62920805a0a43b7ff8b54b0c0d3142d796f8a9301836ada37e573d6a33cbcd9", size = 647493, upload-time = "2026-06-05T12:34:34.051Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/48/ca/36339329c4604adbcc99c899b7eb1ce1a555c499b6a6860757dc9bfed36d/narwhals-2.22.1-py3-none-any.whl", hash = "sha256:60567d774edf77db53906f89d9fbd164e66e56d66d388e1e6990f17ac33cfb53", size = 454815, upload-time = "2026-06-05T12:34:32.289Z" }, +] + [[package]] name = "numpy" version = "2.4.6" @@ -1789,6 +1848,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/43/bb/e1c71a4295b1b1d1393d50dbb4f2a36283c6859d9d3892e84f00ec5a91d5/numpy-2.4.6-cp314-cp314t-win_arm64.whl", hash = "sha256:0c9136e14ed34a9e343a31c533d78a9813a69a3148332bce5e9821cb2f996e66", size = 10565867, upload-time = "2026-05-18T23:36:47.114Z" }, ] +[[package]] +name = "nvidia-nccl-cu12" +version = "2.30.7" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8f/8c/554bb020501d6c04ad8127d83f728137f8f9123f991666efbdcf9095a221/nvidia_nccl_cu12-2.30.7-py3-none-manylinux_2_18_aarch64.whl", hash = "sha256:03ecd776fd1d58fd2c9a0a687dcf8db9ecd0057382dba646fa3d65786d4a9ea1", size = 303277471, upload-time = "2026-06-09T03:24:16.327Z" }, + { url = "https://files.pythonhosted.org/packages/50/32/e7ffa9c324ae260e5dbb4af2cd557bf7a8d155c8ac7b79a785fe1796fb92/nvidia_nccl_cu12-2.30.7-py3-none-manylinux_2_18_x86_64.whl", hash = "sha256:8ce1b8213f61f2bfac132e6df890af6450b77cbd140c6ce4e98cb0c2d8e678c9", size = 303361239, upload-time = "2026-06-09T03:24:53.816Z" }, +] + [[package]] name = "oauthlib" version = "3.3.1" @@ -2744,6 +2812,64 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/9b/36/9c015cd052fca743dae8cb2aeb16b551444787467db42ceab0fc968865af/ruff-0.15.13-py3-none-win_arm64.whl", hash = "sha256:2471da9bd1068c8c064b5fd9c0c4b6dddffd6369cb1cd68b29993b1709ff1b21", size = 11179336, upload-time = "2026-05-14T13:44:33.026Z" }, ] +[[package]] +name = "scikit-learn" +version = "1.9.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "joblib" }, + { name = "narwhals" }, + { name = "numpy" }, + { name = "scipy" }, + { name = "threadpoolctl" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fa/6f/37092bdb25f712817231799fc5674d8e704066a8a70c1d2d40517e18b4ab/scikit_learn-1.9.0.tar.gz", hash = "sha256:8833266989d3a5110178a9fae30783675460724d0e1efb13b14901d2c660c557", size = 7750767, upload-time = "2026-06-02T11:54:32.706Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f4/7d/c9a35cf59b20a86fec24d306f1547b78dec194b08d367ce2a3e4854169d9/scikit_learn-1.9.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:9656acd4e93f74e0b66c8a36c88830a99252dfa900044d36bc2212ae89a47162", size = 8713289, upload-time = "2026-06-02T11:53:58.788Z" }, + { url = "https://files.pythonhosted.org/packages/3c/a7/552a7821597c632b907f7bfe8f36f9f572777af8ef8a48353041cf8e091a/scikit_learn-1.9.0-cp314-cp314-macosx_12_0_arm64.whl", hash = "sha256:24360002ae845e7866522b0a5bbf690802e7bc388cac8663502e78aa98598aa2", size = 8245141, upload-time = "2026-06-02T11:54:01.694Z" }, + { url = "https://files.pythonhosted.org/packages/7d/79/f4a0c4fe9711154cddabf913471153af79056382ddc612cfe5ee0ff4b72e/scikit_learn-1.9.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5162ad10a418c8a282dde04c9aa06965de3e9a65f33c1440c0ae69bb1a09d913", size = 8847671, upload-time = "2026-06-02T11:54:04.448Z" }, + { url = "https://files.pythonhosted.org/packages/f0/af/4d72d9e475ac83719160c662619e4bf7b95c19507cd582e7d0167a3c3dae/scikit_learn-1.9.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1fea2cc5677ab49d6f5bade978c866da44957b712d92e9635e8b4f723013c3cb", size = 9118104, upload-time = "2026-06-02T11:54:07.205Z" }, + { url = "https://files.pythonhosted.org/packages/a2/d5/6a58eea2cb9abbb9b3f2bb8b2cfb3243d1152d69f442d256c7af71304769/scikit_learn-1.9.0-cp314-cp314-win_amd64.whl", hash = "sha256:64fa347efc1c839c487433e40c5144d38c336e8a2b59c81aa8660373945c2673", size = 8290674, upload-time = "2026-06-02T11:54:10.087Z" }, + { url = "https://files.pythonhosted.org/packages/65/5b/d4c879cf358f1187141cf90ced473f087183489090244f50c124a2ee478b/scikit_learn-1.9.0-cp314-cp314-win_arm64.whl", hash = "sha256:1b944b6db288f6b926e3650026ddafb988929de95d11fc2cc5fa117773c9ba42", size = 7978807, upload-time = "2026-06-02T11:54:12.769Z" }, + { url = "https://files.pythonhosted.org/packages/8a/43/bfae3121ec67ae09150d453c442c7c1cc166e9aefe056e6ab3b7728a5cfc/scikit_learn-1.9.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:4ccacf04ca5f4b492158a5f28afe0ace43f81b2571e4b9a66d34848b46128949", size = 9031941, upload-time = "2026-06-02T11:54:15.436Z" }, + { url = "https://files.pythonhosted.org/packages/75/b0/20a4546eb17f3b25d3c66df15810411c14ed5065bcfab50b53c96fb627b2/scikit_learn-1.9.0-cp314-cp314t-macosx_12_0_arm64.whl", hash = "sha256:ee1a8db2c18c08e34c7412d4b10be1cac214cd4ea7dc9715a6a327eb49a37c96", size = 8613528, upload-time = "2026-06-02T11:54:18.842Z" }, + { url = "https://files.pythonhosted.org/packages/18/3c/e440e039bb82cd19004edaaad00acbde0fb9b461083c3ecf37941c557312/scikit_learn-1.9.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:147e9329ef0e39f75d4cffa02b2aa48d827832684926cd5210d9a2cb5c57246b", size = 8855050, upload-time = "2026-06-02T11:54:21.699Z" }, + { url = "https://files.pythonhosted.org/packages/43/26/b341b8dab5998da6270a3a42c2152c578501354d36f944b5856757035ef8/scikit_learn-1.9.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5bad8f8b9950321b54c965fdcbac6c6c55e79e16646b49977bcf3668d3870a1a", size = 9097190, upload-time = "2026-06-02T11:54:24.454Z" }, + { url = "https://files.pythonhosted.org/packages/fb/de/b650b4d69b84468cfa2e28a3ff7b8103743029e6446ce1a97fe060ef688c/scikit_learn-1.9.0-cp314-cp314t-win_amd64.whl", hash = "sha256:78fc56eafd4edb9575d2d8950d1dd152061abb573341a1cb7e099fc40f6c6666", size = 8963204, upload-time = "2026-06-02T11:54:27.428Z" }, + { url = "https://files.pythonhosted.org/packages/ee/f3/ff83d76d7418112e5a61326443cdda87be3545dd8d6599c95b2481a4419e/scikit_learn-1.9.0-cp314-cp314t-win_arm64.whl", hash = "sha256:051075bda8b7aab87b1906ab3d4740a1e1224a19d7b3781a576736edc94e76aa", size = 8222661, upload-time = "2026-06-02T11:54:30.192Z" }, +] + +[[package]] +name = "scipy" +version = "1.18.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a7/25/c2700dfaf6442b4effaa91af24ebce5dc9d31bb4a69706313aae70d72cd0/scipy-1.18.0.tar.gz", hash = "sha256:67b2ad2ad54c72ca6d04975a9b2df8c3638c34ddd5b28738e94fc2b57929d378", size = 30774447, upload-time = "2026-06-19T15:01:43.456Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/78/b5/915a19b3de2f7430062b509653563db1633ddbb6f021b06731521115d4e2/scipy-1.18.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:4c256ee70c0d1a8a2ace807e199ccd4e3f57037433842abb3fb36bc17eaa9578", size = 31036253, upload-time = "2026-06-19T15:00:43.216Z" }, + { url = "https://files.pythonhosted.org/packages/d7/88/b72def7262e150d16be13fca37a96481138d624e700340bc3362a7588929/scipy-1.18.0-cp314-cp314-macosx_12_0_arm64.whl", hash = "sha256:2ef3abc54a4ffc53765374b0d5728532dfdd2585ed23f6b11c206a1f0b1b9af8", size = 28673758, upload-time = "2026-06-19T15:00:46.663Z" }, + { url = "https://files.pythonhosted.org/packages/91/02/2e636a61a525632c373cf6a9c24442a3ffb79e364d38e98b32042964ac32/scipy-1.18.0-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:f2a6af57bd9e4a75d70e4117e78a1bbee84f79ae3fbb6d0111005d6ebcc4cb8d", size = 20415514, upload-time = "2026-06-19T15:00:49.399Z" }, + { url = "https://files.pythonhosted.org/packages/c9/b6/2135974442f6aba159d9d39d774a1c8cb19947016725d69fecc685df45bf/scipy-1.18.0-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:3f1ac564d3bf6c03d861d2cd87a1bea0da2887136f7fb1bf519c05a8971452d6", size = 23034398, upload-time = "2026-06-19T15:00:51.941Z" }, + { url = "https://files.pythonhosted.org/packages/f6/e6/ba89ec5abf6ee9257c0d1ec985573f3ae32742c24bc03e016388a40b1b15/scipy-1.18.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:40395a5fcd1abee49a5c7aaa98c29db393eedc835138560a588c47ec16156690", size = 33998032, upload-time = "2026-06-19T15:00:54.838Z" }, + { url = "https://files.pythonhosted.org/packages/7f/c4/bc41eb19b0fd0db868f4132920879019318d80cc522ad8f2bca4611af808/scipy-1.18.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8ca01e8ae69f1b18e9a58d91afead31be3cef0dd905a10249dac559ee15460a0", size = 35283333, upload-time = "2026-06-19T15:00:58.152Z" }, + { url = "https://files.pythonhosted.org/packages/53/a4/cbdeef6eb3830a8462a9d4ada814de5fc984345cc9ecf17cbec51a036f1e/scipy-1.18.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7a7f3b01647384dbc3a711e8c6778e0aabbe93959249fef5c7393396bcac0867", size = 35610216, upload-time = "2026-06-19T15:01:01.155Z" }, + { url = "https://files.pythonhosted.org/packages/80/4d/b2b82502b65f661d1b789c1665dcdf315d5f12194e06fc0b37946294ebae/scipy-1.18.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:6aa94e78ec192a30063a5e72e561c28af769dc311190b24fe91774eff1969709", size = 37418960, upload-time = "2026-06-19T15:01:04.155Z" }, + { url = "https://files.pythonhosted.org/packages/93/3e/902d836831474b0ab5a37d16404f7bc5fafd9efba632890e271ba952635f/scipy-1.18.0-cp314-cp314-win_amd64.whl", hash = "sha256:2d8bbdc6c817f5b4006a54d799d4f5bab6f910193cbb9a1ff310833d4d270f61", size = 37288845, upload-time = "2026-06-19T15:01:07.822Z" }, + { url = "https://files.pythonhosted.org/packages/b6/43/8d73b337a3bdb14daa0314f0434210747c02d79d729ce1777574a817dcf6/scipy-1.18.0-cp314-cp314-win_arm64.whl", hash = "sha256:18e9575f1569b2c54174e6159d32942e03731177f63dce7975f0a0c88d102f5b", size = 24988971, upload-time = "2026-06-19T15:01:11.076Z" }, + { url = "https://files.pythonhosted.org/packages/b4/b4/f11918b0508a2787031a0499a03fbe3546f3bb5ca05d01038c45b278c09a/scipy-1.18.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:f351e0dd702687d12a402b867a1b4146a256923e1c38317cbc472f6372b94707", size = 31399325, upload-time = "2026-06-19T15:01:13.723Z" }, + { url = "https://files.pythonhosted.org/packages/7b/d1/1f287b57c0ff0ee5185dff3946d92c8017d39b0e431f0ae79a3ff1859512/scipy-1.18.0-cp314-cp314t-macosx_12_0_arm64.whl", hash = "sha256:7c7a51b33ce387193c97f228320cf8e87361daa1bba750638677729598b3e677", size = 29092110, upload-time = "2026-06-19T15:01:16.908Z" }, + { url = "https://files.pythonhosted.org/packages/ff/1a/7b74eb6c392fdcb27d414c0e7558a6d0231eb3b6d73571f479bb81ea8794/scipy-1.18.0-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:84031d7b052a54fae2f8632e0ec802073d385476eb9a63079bce6e23ef9283d4", size = 20833811, upload-time = "2026-06-19T15:01:20.488Z" }, + { url = "https://files.pythonhosted.org/packages/7c/ad/f3941716320a7b9cb4d68734a903b45fe16eff5fb7da7e16f2e619304979/scipy-1.18.0-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:56abf29a7c067dde59be8b9a22d606a4ea1b2f2a4b756d9d903c62818f5dacce", size = 23396644, upload-time = "2026-06-19T15:01:23.364Z" }, + { url = "https://files.pythonhosted.org/packages/22/22/1446b62ffe07f9719b7d9b1b6a4e05a772833ae8f441fe4c22c34c9b250f/scipy-1.18.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1ad44305cfa24b1ba5803cbbebf033590ccbac1aa5d612d727b785325ab408b0", size = 34079318, upload-time = "2026-06-19T15:01:26.002Z" }, + { url = "https://files.pythonhosted.org/packages/56/3b/b87da667098bb470fa30c7011b0ba351ee976dd395c78798c66e941665a3/scipy-1.18.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:945c1761b93f38d7f99ae81ae80c63e621471608c7eeead563f6df025585cd58", size = 35324320, upload-time = "2026-06-19T15:01:28.881Z" }, + { url = "https://files.pythonhosted.org/packages/f8/a1/c7932f91909759b0267f75fdea34e91309f96b895757534b76a90b6b4344/scipy-1.18.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:1a4441f15d620578772a49e5ab48c0ee1f7a0220e387110283062729136b2553", size = 35699541, upload-time = "2026-06-19T15:01:31.968Z" }, + { url = "https://files.pythonhosted.org/packages/f7/86/5185061a1fcc41d18c5dc2463969b3a3964b31d9ac67b2fb05d4c7ff7670/scipy-1.18.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:9aac6192fac56bf2ca534389d24623f07b39ff83317d58287285e7fbd622ff76", size = 37472480, upload-time = "2026-06-19T15:01:35.136Z" }, + { url = "https://files.pythonhosted.org/packages/31/8e/f04c68e39919a010d34f2ee1367fd705b0a25a02f609d755f0bfbc0a15fc/scipy-1.18.0-cp314-cp314t-win_amd64.whl", hash = "sha256:e40baea28ae7f5475c779741e2d90b1247c78531207b49c7030e698ff81cee3f", size = 37365390, upload-time = "2026-06-19T15:01:38.091Z" }, + { url = "https://files.pythonhosted.org/packages/d5/19/969dc072906c84dd0a3b05dcf57ea750936087d7873549e408b35cfc3f97/scipy-1.18.0-cp314-cp314t-win_arm64.whl", hash = "sha256:368e0a705903c466aa5f08eefb39e6b1b6b2d659e7352a31fd9e2438365be0f8", size = 25279661, upload-time = "2026-06-19T15:01:40.817Z" }, +] + [[package]] name = "semver" version = "3.0.4" @@ -2883,6 +3009,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/a6/a5/c0b6468d3824fe3fde30dbb5e1f687b291608f9473681bbf7dabbf5a87d7/text_unidecode-1.3-py2.py3-none-any.whl", hash = "sha256:1311f10e8b895935241623731c2ba64f4c455287888b18189350b67134a822e8", size = 78154, upload-time = "2019-08-30T21:37:03.543Z" }, ] +[[package]] +name = "threadpoolctl" +version = "3.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b7/4d/08c89e34946fce2aec4fbb45c9016efd5f4d7f24af8e5d93296e935631d8/threadpoolctl-3.6.0.tar.gz", hash = "sha256:8ab8b4aa3491d812b623328249fab5302a68d2d71745c8a4c719a2fcaba9f44e", size = 21274, upload-time = "2025-03-13T13:49:23.031Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/32/d5/f9a850d79b0851d1d4ef6456097579a9005b31fea68726a4ae5f2d82ddd9/threadpoolctl-3.6.0-py3-none-any.whl", hash = "sha256:43a0b8fd5a2928500110039e43a5eed8480b918967083ea48dc3ab9f13c4a7fb", size = 18638, upload-time = "2025-03-13T13:49:21.846Z" }, +] + [[package]] name = "toml" version = "0.10.2" @@ -3311,6 +3446,24 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ed/b5/38fba836844233b961a0026d96f39f893eab63757e7757fd1d16fb02aa80/whenever-0.10.0-py3-none-any.whl", hash = "sha256:70feda454af6b2c231abd428b9430cd75492a000ca1d1edc42976d6fea265eec", size = 119264, upload-time = "2026-04-05T18:43:48.077Z" }, ] +[[package]] +name = "xgboost" +version = "3.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, + { name = "nvidia-nccl-cu12", marker = "sys_platform == 'linux'" }, + { name = "scipy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fd/41/846d4de2b8fc694073fd3ac5052caf68caa1ea11cb7fa32d7ad9c049b232/xgboost-3.3.0.tar.gz", hash = "sha256:58bcb8a4cace648cdab7b94fa4f16d2c9ff26d90dd4d26907168106fa06d8746", size = 1224702, upload-time = "2026-06-17T21:26:50.846Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fc/72/3b68983c0215ef65d48e9eeb1f168c3c6e3d62a61ece605de3209c79cae1/xgboost-3.3.0-py3-none-macosx_10_15_x86_64.whl", hash = "sha256:07688a377046b8640897b62421150bf73c6cc7101823474ec6ad08b93290f587", size = 2553505, upload-time = "2026-06-17T21:21:32.146Z" }, + { url = "https://files.pythonhosted.org/packages/c9/62/b49e756822b29909d0c95ed334662dc6c7c81a99ec6bc10dc18e69f3d6e7/xgboost-3.3.0-py3-none-macosx_12_0_arm64.whl", hash = "sha256:af7cea10f418b7c251ddc8da440f57bdab2990b5fc9f74a35a92b0f150ea287d", size = 2376040, upload-time = "2026-06-17T21:22:01.981Z" }, + { url = "https://files.pythonhosted.org/packages/47/3a/a0adcd1ee28f525bd5c9dc3ebe78a7599bf97c22866d6449f967b829e338/xgboost-3.3.0-py3-none-manylinux_2_28_aarch64.whl", hash = "sha256:624a83aeb1e7ba081719795db179f4ce6fff12e79de05cd9baf15ee48fd22f0e", size = 98180629, upload-time = "2026-06-17T21:24:00.804Z" }, + { url = "https://files.pythonhosted.org/packages/47/1f/8b3e578cfd8e3bcdb4374e2bbe0b40b4e5320accb5cbdcf535ecc512eb5c/xgboost-3.3.0-py3-none-manylinux_2_28_x86_64.whl", hash = "sha256:f59edaf28eccd1c519788607c72ed907ee6cedfa933d706620bc1612d24b354e", size = 98716607, upload-time = "2026-06-17T21:26:21.058Z" }, + { url = "https://files.pythonhosted.org/packages/07/6b/087fd5d28fdbb90d385c50ee9308a820241b82feebdf42e72e19a48e4b32/xgboost-3.3.0-py3-none-win_amd64.whl", hash = "sha256:b06057f6a018fc04e6b3e0c15568ca636b8151a5b5f333478e500fcaf4fc7594", size = 69522696, upload-time = "2026-06-17T21:20:53.707Z" }, +] + [[package]] name = "zensical" version = "0.0.43" From 3ccfe14ff7687a37f7a4462871adaf8ec3871421 Mon Sep 17 00:00:00 2001 From: Jae Date: Thu, 25 Jun 2026 12:13:45 -0600 Subject: [PATCH 02/68] chore(eta): add placeholder global baseline model for dev/test Deterministic synthetic baseline (polyreg_distance, global) so the stop-time producer runs end-to-end on a fresh checkout without a trained model. Kept as a standalone commit so it is trivial to drop once the retraining suite supplies real models. Regenerate with: python -m gtfs_eta.seed_baseline_model. --- .../polyreg_distance_global_baseline_v0.pkl | Bin 0 -> 946 bytes ...olyreg_distance_global_baseline_v0_meta.json | 16 ++++++++++++++++ backend/eta_models/registry.json | 10 ++++++++++ 3 files changed, 26 insertions(+) create mode 100644 backend/eta_models/polyreg_distance_global_baseline_v0.pkl create mode 100644 backend/eta_models/polyreg_distance_global_baseline_v0_meta.json create mode 100644 backend/eta_models/registry.json diff --git a/backend/eta_models/polyreg_distance_global_baseline_v0.pkl b/backend/eta_models/polyreg_distance_global_baseline_v0.pkl new file mode 100644 index 0000000000000000000000000000000000000000..f5334bf8defa01aa7f68a1d3256f92d15590e409 GIT binary patch literal 946 zcmYjQv2N5r5WP#{%L$Hf3W$QF2?YuT7BmQ?NGXCq;=~bB(V*4Z9^0#|y=HeEaRm|- z35m2_23krgzJVX$7ig%EprAxFFl*mk*kV09J3I50;Lns=(;=TR!Wvm6ERUTPyReB$eM}K@n`;We(t(eN?hBjwr4MKv_N5v zpQW{w{ybz;KI{OrAvoxQ+u^pM4H&nQWF&@J)WD(Xz7jIiPW zyiS^zi7FUPjRhR%>%=066{HN^rLr!nNyuWQAtW0#O#yLEwJM@IO)2FmZoVJ3^D^Im zfB5?1)8UtG;@c#kZ(=7EP_SD_@8ZevTinCV(W2{a;dnfL^p{q%jXD;i(ZV6-YnDRX za@jCqL}|I@K&bk0t|XX!nx1oWDae22f3!s{t>9X7it3q|OYX7eTRZ*E_oqLfM1MZx z5mm@H@@u{`;4WGc!lX(Uq%ZZEO7;pUl%DwFq+X;9>D4}PgX#Q`G}6zr8_xbaW)*3v JD&%z({sUoRbkhI; literal 0 HcmV?d00001 diff --git a/backend/eta_models/polyreg_distance_global_baseline_v0_meta.json b/backend/eta_models/polyreg_distance_global_baseline_v0_meta.json new file mode 100644 index 0000000..628190a --- /dev/null +++ b/backend/eta_models/polyreg_distance_global_baseline_v0_meta.json @@ -0,0 +1,16 @@ +{ + "model_type": "polyreg_distance", + "route_id": null, + "route_specific": false, + "degree": 1, + "alpha": 1.0, + "dataset": "synthetic_constant_speed", + "n_samples": 1000, + "metrics": { + "test_mae_seconds": 30.0, + "test_mae_minutes": 0.5 + }, + "model_key": "polyreg_distance_global_baseline_v0", + "saved_at": "2026-06-25T18:06:35.423137", + "model_path": "polyreg_distance_global_baseline_v0.pkl" +} \ No newline at end of file diff --git a/backend/eta_models/registry.json b/backend/eta_models/registry.json new file mode 100644 index 0000000..749de3d --- /dev/null +++ b/backend/eta_models/registry.json @@ -0,0 +1,10 @@ +{ + "polyreg_distance_global_baseline_v0": { + "model_path": "polyreg_distance_global_baseline_v0.pkl", + "meta_path": "polyreg_distance_global_baseline_v0_meta.json", + "saved_at": "2026-06-25T18:06:35.423137", + "model_type": "polyreg_distance", + "route_id": null, + "dataset": "synthetic_constant_speed" + } +} \ No newline at end of file From 46f226fd0d83bb1e620443f5c7967d33df458782 Mon Sep 17 00:00:00 2001 From: Jae Date: Thu, 25 Jun 2026 12:13:45 -0600 Subject: [PATCH 03/68] feat(eta): generate stop-time updates from ETA predictions Replace the fake_stop_times placeholder with a real producer that calls gtfs_eta.estimate_stop_times. Pure/impure split: compute_stop_time_updates derives contract entries from run state + shape geometry; produce_stop_times does the Redis I/O. Upcoming stops come from the monotonic shape geometry and distances feed the estimator's precomputed-distance hook, fixing duplicate stop_sequences and the non-decreasing upcoming count. Builder sorts/dedups StopTimeUpdate entries defensively. New config: MODEL_REGISTRY_DIR, ETA_MAX_STOPS, ETA_DEFAULT_UNCERTAINTY_S. --- .env.dev | 7 +- .env.example | 8 +- backend/runs/domain/progression/stop_times.py | 319 +++++++++++++++--- backend/schedule_engine/builders.py | 14 +- 4 files changed, 303 insertions(+), 45 deletions(-) diff --git a/.env.dev b/.env.dev index f216c37..2dce194 100644 --- a/.env.dev +++ b/.env.dev @@ -3,4 +3,9 @@ DEBUG=True DJANGO_SERVE_STATIC=True LOG_LEVEL=DEBUG CREATE_SUPERUSER=True -RUN_MIGRATIONS=True \ No newline at end of file +RUN_MIGRATIONS=True + +# ETA model registry (dev default; seed once with seed_baseline_model) +MODEL_REGISTRY_DIR=eta_models +ETA_MAX_STOPS=10 +ETA_DEFAULT_UNCERTAINTY_S=120 \ No newline at end of file diff --git a/.env.example b/.env.example index c14044e..6da2348 100644 --- a/.env.example +++ b/.env.example @@ -54,4 +54,10 @@ FLOWER_DOMAIN=tasks.databus.simovilab.com DOCS_DOMAIN=docs.databus.simovilab.com # Certificate in production -CERT_RESOLVER=letsencrypt \ No newline at end of file +CERT_RESOLVER=letsencrypt + +# ETA model registry (used by gtfs_eta; set to a writable directory) +# Seed the baseline model once: MODEL_REGISTRY_DIR=eta_models ./.venv/bin/python -m gtfs_eta.seed_baseline_model +MODEL_REGISTRY_DIR=eta_models +ETA_MAX_STOPS=3 +ETA_DEFAULT_UNCERTAINTY_S=120 \ No newline at end of file diff --git a/backend/runs/domain/progression/stop_times.py b/backend/runs/domain/progression/stop_times.py index c02eb01..335d974 100644 --- a/backend/runs/domain/progression/stop_times.py +++ b/backend/runs/domain/progression/stop_times.py @@ -1,36 +1,54 @@ -"""Redis glue for the server-side stop-time-updates producer (seam / placeholder). +"""Real ETA stop-time-updates producer — impure/pure split. -This module is the impure counterpart to the pure computation in -``schedule_engine/fake_stop_times.py``. It reads from Redis, delegates to the -existing fake builder, maps the fake output to the typed contract, and writes the -projection back to Redis as a JSON string under ``run::stop_time_updates``. +Pure computation lives in :func:`compute_stop_time_updates`; all Redis I/O +lives in :func:`produce_stop_times`. The split mirrors +``compute.py`` / ``producer.py`` in this package. -Called by ``realtime_engine/mqtt.py`` after every successful position write so -that ``run::stop_time_updates`` is kept current for the GTFS-RT builder. +Called by ``realtime_engine/tasks.py`` after every successful position write +so that ``run::stop_time_updates`` is kept current for the GTFS-RT +builder. -The Redis client mirrors the pattern used in ``producer.py``: module-level client -configured from environment variables. - -Do NOT export ``produce_stop_times`` from ``runs.domain.progression.__init__``. -Import it by full module path:: - - from runs.domain.progression.stop_times import produce_stop_times +Environment variables +--------------------- +MODEL_REGISTRY_DIR + Directory where the ETA model registry is stored. Read by + ``gtfs_eta`` itself from the environment — just set it before + starting the worker. Example: ``eta_models/``. +ETA_MAX_STOPS + Maximum number of upcoming stops to predict. Default: 3. +ETA_DEFAULT_UNCERTAINTY_S + Uncertainty value (seconds) attached to every predicted arrival. + Default: 120. """ import logging import os +from datetime import datetime, timezone import redis -from runs.domain.telemetry import keys, stop_time_updates +from runs.domain.telemetry import keys, position, stop_time_updates, vehicle_stop_status +from runs.domain.progression.geo import project_point_to_polyline +from runs.domain.progression.shapes import ShapeGeometry, get_shape_geometry logger = logging.getLogger(__name__) -# Comfortably above the position-update interval (~1-5 s) so a stalled producer -# expires the projection instead of serving stale arrivals; run lifecycle still -# owns hard cleanup. +# --------------------------------------------------------------------------- +# Module-level config +# --------------------------------------------------------------------------- + +# Comfortably above the position-update interval (~1-5 s) so a stalled +# producer expires the projection instead of serving stale arrivals; run +# lifecycle still owns hard cleanup. STOP_TIME_UPDATES_TTL_S = 60 +# Maximum upcoming stops to pass to the estimator per position tick. +ETA_MAX_STOPS = int(os.getenv("ETA_MAX_STOPS", "3")) + +# Uncertainty (seconds) attached to every prediction. Passed through to the +# GTFS-RT feed; callers (e.g. apps) can use it for confidence UX. +ETA_DEFAULT_UNCERTAINTY_S = int(os.getenv("ETA_DEFAULT_UNCERTAINTY_S", "120")) + r = redis.Redis( host=os.getenv("REDIS_HOST", "state"), port=int(os.getenv("REDIS_PORT", "6379")), @@ -39,45 +57,262 @@ ) -def produce_stop_times(run_id: str, vehicle_id: str) -> None: # noqa: ARG001 - """Derive and write ``run::stop_time_updates`` from the current run state. +# --------------------------------------------------------------------------- +# Pure helper +# --------------------------------------------------------------------------- - Reads the run hash and the current stop-status progression hash from Redis, - delegates to the fake stop-time builder, maps each fake entry to the typed - contract, and writes the JSON projection back to Redis with a staleness TTL. - Returns immediately without writing anything if the run hash is absent (nothing - to derive from). +def compute_stop_time_updates( + *, + run_hash: dict, + position: dict, + stop_status: dict, + geom: ShapeGeometry, + max_stops: int = ETA_MAX_STOPS, + default_uncertainty_s: int = ETA_DEFAULT_UNCERTAINTY_S, +) -> list[dict]: + """Derive stop-time-update contract entries from run state and geometry. + + Pure: no Redis, no ORM, no side effects. The ``geom`` is passed in so + the caller can decide when to skip (and leave last-good in Redis to TTL). + + Parameters + ---------- + run_hash: + Raw Redis hash for ``run:`` — all string values. + position: + Typed position dict as returned by ``position.from_redis``. + Keys: ``latitude``, ``longitude``, optionally ``speed``, ``timestamp``. + stop_status: + Typed stop-status dict as returned by ``vehicle_stop_status.from_redis``. + geom: + Pre-loaded :class:`ShapeGeometry` for the trip's shape. + max_stops: + Maximum number of upcoming stops to predict. + default_uncertainty_s: + Uncertainty (seconds) attached to every predicted arrival. + + Returns + ------- + list[dict] + Zero or more contract dicts, each with exactly the five fields + required by :func:`stop_time_updates.to_redis`: + ``stop_sequence``, ``stop_id``, ``arrival_time``, + ``departure_time``, ``uncertainty``. + Empty list when no predictions are available or the estimator + returns a top-level error. + """ + # ------------------------------------------------------------------ + # 1. Determine current stop sequence and status + # ------------------------------------------------------------------ + current_stop_sequence: int = stop_status.get( + vehicle_stop_status.CURRENT_STOP_SEQUENCE, 0 + ) or 0 + status: str = stop_status.get(vehicle_stop_status.CURRENT_STATUS, "") + + # ------------------------------------------------------------------ + # 2. Project vehicle onto polyline → vehicle_progress_m + # ------------------------------------------------------------------ + lat = position.get("latitude") + lon = position.get("longitude") + if lat is None or lon is None: + return [] + + proj = project_point_to_polyline(float(lat), float(lon), list(geom.polyline)) + vehicle_progress_m: float = proj["progress_m"] + + # ------------------------------------------------------------------ + # 3. Build upcoming_stops list (filter by sequence, compute distances) + # ------------------------------------------------------------------ + upcoming_stops: list[dict] = [] + for stop in geom.stops: + seq: int = stop["stop_sequence"] + if status == "STOPPED_AT": + if seq <= current_stop_sequence: + continue + else: + if seq < current_stop_sequence: + continue + shape_dist = max(0.0, stop["progress_m"] - vehicle_progress_m) + upcoming_stops.append( + { + "stop_id": stop["stop_id"], + "stop_sequence": seq, + "lat": stop["lat"], + "lon": stop["lon"], + "total_stop_sequence": len(geom.stops), + "shape_distance_to_stop": shape_dist, + } + ) + + if not upcoming_stops: + return [] + + # ------------------------------------------------------------------ + # 4. Build vehicle_position dict in estimator contract format + # ------------------------------------------------------------------ + raw_ts = position.get("timestamp") + if raw_ts is not None: + ts_iso = datetime.fromtimestamp(int(raw_ts), tz=timezone.utc).isoformat() + else: + ts_iso = datetime.now(tz=timezone.utc).isoformat() + + vehicle_position = { + "vehicle_id": run_hash.get("vehicle", ""), + "lat": float(lat), + "lon": float(lon), + "speed": float(position.get("speed", 0.0) or 0.0), + "timestamp": ts_iso, + "route": run_hash.get("route_id", ""), + } + + # ------------------------------------------------------------------ + # 5. Build ShapePolyline for the estimator (lazy import → clean startup) + # ------------------------------------------------------------------ + from gtfs_eta.feature_engineering.spatial import ShapePolyline # noqa: PLC0415 + + shape = ShapePolyline([(pt[0], pt[1]) for pt in geom.polyline]) + + # ------------------------------------------------------------------ + # 6. Call estimator (lazy import keeps Django startup clean). + # We import the *module* and call via attribute so tests can patch + # ``gtfs_eta.eta_service.estimator.estimate_stop_times`` reliably. + # ------------------------------------------------------------------ + import gtfs_eta.eta_service.estimator as _estimator_mod # noqa: PLC0415 + + result = _estimator_mod.estimate_stop_times( + vehicle_position, + upcoming_stops, + route_id=run_hash.get("route_id"), + trip_id=run_hash.get("trip_id"), + prefer_route_model=True, + max_stops=max_stops, + shape=shape, + ) + + # Top-level error or empty predictions → safe to return [] + if result.get("error") or not result.get("predictions"): + if result.get("error"): + logger.debug( + "compute_stop_time_updates: estimator error: %s", result["error"] + ) + return [] + + # ------------------------------------------------------------------ + # 7. Output adapter: predictions → contract dicts + # ------------------------------------------------------------------ + entries: list[dict] = [] + for pred in result["predictions"]: + # Skip per-stop failures + if pred.get("error"): + logger.debug( + "compute_stop_time_updates: per-stop error for seq=%s: %s", + pred.get("stop_sequence"), + pred["error"], + ) + continue + eta_ts_str: str | None = pred.get("eta_timestamp") + if not eta_ts_str: + continue + try: + # Handle trailing Z (Python < 3.11 fromisoformat doesn't accept it) + if eta_ts_str.endswith("Z"): + eta_ts_str = eta_ts_str[:-1] + "+00:00" + eta_posix = int(datetime.fromisoformat(eta_ts_str).timestamp()) + except (ValueError, TypeError) as exc: + logger.debug( + "compute_stop_time_updates: bad eta_timestamp %r: %s", eta_ts_str, exc + ) + continue + + entries.append( + { + stop_time_updates.STOP_SEQUENCE: int(pred["stop_sequence"]), + stop_time_updates.STOP_ID: str(pred["stop_id"]), + stop_time_updates.ARRIVAL_TIME: eta_posix, + stop_time_updates.DEPARTURE_TIME: eta_posix, + stop_time_updates.UNCERTAINTY: default_uncertainty_s, + } + ) + + # ------------------------------------------------------------------ + # 8. Dedup by stop_sequence (keep first) + sort ascending + # ------------------------------------------------------------------ + seen: set[int] = set() + deduped: list[dict] = [] + for entry in entries: + seq = entry[stop_time_updates.STOP_SEQUENCE] + if seq not in seen: + seen.add(seq) + deduped.append(entry) + + deduped.sort(key=lambda e: e[stop_time_updates.STOP_SEQUENCE]) + return deduped + + +# --------------------------------------------------------------------------- +# Impure producer (Redis glue) +# --------------------------------------------------------------------------- + + +def produce_stop_times(run_id: str, vehicle_id: str) -> None: + """Derive and write ``run::stop_time_updates`` from current run state. + + 1. Reads the run hash; returns immediately if absent. + 2. Reads the position hash; returns without overwriting if no position. + 3. Reads the stop-status hash. + 4. Resolves shape geometry; returns without overwriting if unavailable + (leaves last-good projection to TTL-expire naturally). + 5. Calls :func:`compute_stop_time_updates`; writes to Redis only when a + non-empty list is returned (no-models case leaves last-good intact). Parameters ---------- run_id: The active run id (string, as stored in ``vehicle::current_run``). vehicle_id: - The vehicle id whose position was just updated (reserved for future use). + The vehicle id whose position was just updated. """ + # Step 1 — run hash run_hash = r.hgetall(keys.run_key(run_id)) if not run_hash: return - prev_raw = r.hgetall(keys.stop_status_key(run_id)) + # Step 2 — position hash (required; exit without overwriting if absent) + from runs.domain.telemetry import position as position_module # noqa: PLC0415 - from schedule_engine.fake_stop_times import build_stop_time_updates + pos_raw = r.hgetall(keys.position_key(vehicle_id)) + if not pos_raw: + return + pos = position_module.from_redis(pos_raw) + if pos.get("latitude") is None or pos.get("longitude") is None: + return - fake_entries = build_stop_time_updates(run=run_hash, progression=prev_raw) + # Step 3 — stop-status hash (tolerate absence) + stop_status_raw = r.hgetall(keys.stop_status_key(run_id)) + stop_status = vehicle_stop_status.from_redis(stop_status_raw) if stop_status_raw else {} - # Map fake entries {stop_sequence, stop_id, eta_posix, uncertainty} - # → contract entries {stop_sequence, stop_id, arrival_time, departure_time, uncertainty} - mapped = [ - { - stop_time_updates.STOP_SEQUENCE: entry["stop_sequence"], - stop_time_updates.STOP_ID: entry["stop_id"], - stop_time_updates.ARRIVAL_TIME: entry["eta_posix"], - stop_time_updates.DEPARTURE_TIME: entry["eta_posix"], - stop_time_updates.UNCERTAINTY: entry["uncertainty"], - } - for entry in fake_entries - ] + # Step 4 — shape geometry (exit without overwriting if unavailable) + shape_id = run_hash.get("shape_id", "") + trip_id = run_hash.get("trip_id", "") + if not shape_id or not trip_id: + return + geom = get_shape_geometry(shape_id, trip_id) + if geom is None: + return + + # Step 5 — compute and conditionally write + entries = compute_stop_time_updates( + run_hash=run_hash, + position=pos, + stop_status=stop_status, + geom=geom, + max_stops=ETA_MAX_STOPS, + default_uncertainty_s=ETA_DEFAULT_UNCERTAINTY_S, + ) + if not entries: + # No predictions (no models trained, etc.) — leave last-good intact. + return - payload = stop_time_updates.to_redis(mapped) + payload = stop_time_updates.to_redis(entries) r.set(keys.stop_time_updates_key(run_id), payload, ex=STOP_TIME_UPDATES_TTL_S) diff --git a/backend/schedule_engine/builders.py b/backend/schedule_engine/builders.py index 8af9acc..70ee6f4 100644 --- a/backend/schedule_engine/builders.py +++ b/backend/schedule_engine/builders.py @@ -201,8 +201,20 @@ def build_trip_update_entity(r, run_id: str) -> dict | None: # entries in the feed). raw = r.get(keys.stop_time_updates_key(run_id)) entries = stop_time_updates.from_redis(raw) + + # Defensive sort + dedup: the producer already guarantees ordering and + # uniqueness, but belt-and-suspenders here ensures a corrupt projection + # never produces an invalid GTFS-RT feed. + seen_seqs: set[int] = set() + deduped_entries: list[dict] = [] + for entry in sorted(entries, key=lambda e: e["stop_sequence"]): + seq = entry["stop_sequence"] + if seq not in seen_seqs: + seen_seqs.add(seq) + deduped_entries.append(entry) + tu["stop_time_update"] = [] - for u in entries: + for u in deduped_entries: tu["stop_time_update"].append( { "stop_sequence": u["stop_sequence"], From 6603390d094b5fdc3e81fbf9a5f84712500f6e0d Mon Sep 17 00:00:00 2001 From: Jae Date: Thu, 25 Jun 2026 12:13:45 -0600 Subject: [PATCH 04/68] test(eta): stop-time producer suite Cover the pure helper, both bug regressions (no duplicate stop_sequence; non-increasing upcoming count), output-adapter edges, and the impure producer's Redis read/skip/write guards. --- .../tests/test_stop_times_producer.py | 784 +++++++++++++++--- 1 file changed, 657 insertions(+), 127 deletions(-) diff --git a/backend/runs/domain/progression/tests/test_stop_times_producer.py b/backend/runs/domain/progression/tests/test_stop_times_producer.py index 4beaf68..76a7ab0 100644 --- a/backend/runs/domain/progression/tests/test_stop_times_producer.py +++ b/backend/runs/domain/progression/tests/test_stop_times_producer.py @@ -1,187 +1,717 @@ -"""Unit tests for produce_stop_times — monkeypatched Redis, no I/O. - -The module-level ``r`` object in stop_times.py is replaced with a MagicMock so -all tests run entirely in-process without a live Redis instance. - -Patch target: ``runs.domain.progression.stop_times.r`` +"""Tests for the real ETA stop-time-updates producer. + +Coverage: +- Pure helper unit tests (ShapeGeometry constructed directly, temp MODEL_REGISTRY_DIR) +- Bug regression: no duplicate stop_sequence; list shrinks as vehicle advances +- Output-adapter edge cases: top-level error, per-stop error, STOPPED_AT +- Impure produce_stop_times: monkeypatched Redis + get_shape_geometry +- Builder hardening: unsorted/duplicate projection is sorted+deduped """ import json +import os +import subprocess +import sys +import tempfile +from datetime import datetime, timezone from unittest.mock import MagicMock, patch import pytest import runs.domain.progression.stop_times as stop_times_module +from runs.domain.progression.shapes import ShapeGeometry, assemble_geometry from runs.domain.progression.stop_times import ( + ETA_DEFAULT_UNCERTAINTY_S, STOP_TIME_UPDATES_TTL_S, + compute_stop_time_updates, produce_stop_times, ) -from runs.domain.telemetry import keys, stop_time_updates +from runs.domain.telemetry import keys, stop_time_updates, vehicle_stop_status +from schedule_engine.builders import build_trip_update_entity # --------------------------------------------------------------------------- -# Helpers +# Shared geometry fixture helpers # --------------------------------------------------------------------------- -VEHICLE_ID = "v-42" -RUN_ID = "run-99" +# A simple straight N–S line: 6 stops spaced ~111 m apart (1 arc-second of lat). +# Shape: 7 points at lon = -84.0, lat from 9.900 to 9.906. +_LAT_BASE = 9.900 +_LON = -84.0 +_D_LAT = 0.001 # ≈ 111 m per step -_RUN_RAW = { - "trip_id": "trip-1", - "route_id": "route-1", - "shape_id": "shape-1", - "vehicle": VEHICLE_ID, -} -_STOP_STATUS_RAW = { - "current_stop_sequence": "3", - "stop_id": "STOP-42", - "current_status": "IN_TRANSIT_TO", -} +def _straight_shape_points(n_points: int = 7) -> list[tuple[float, float, int]]: + """Return (lat, lon, seq) tuples for a straight N–S polyline.""" + return [(_LAT_BASE + i * _D_LAT, _LON, i) for i in range(n_points)] -# Two fake entries that build_stop_time_updates might return -_FAKE_STOP_ENTRIES = [ - { - "stop_sequence": 3, - "stop_id": "stop-1", - "eta_posix": 1700001000, - "uncertainty": 120, - }, - { - "stop_sequence": 4, - "stop_id": "stop-2", - "eta_posix": 1700001300, - "uncertainty": 120, - }, -] - - -def _fake_redis(run_raw=None, stop_status_raw=None) -> MagicMock: - r = MagicMock() - def hgetall_side_effect(key: str) -> dict: - if key == keys.run_key(RUN_ID): - return run_raw if run_raw is not None else _RUN_RAW - if key == keys.stop_status_key(RUN_ID): - return stop_status_raw if stop_status_raw is not None else {} - return {} +def _straight_stop_rows(n_stops: int = 6) -> list[dict]: + """Return stop rows snapped to the first n_stops polyline vertices.""" + return [ + { + "stop_id": f"S{i}", + "stop_sequence": i, + "lat": _LAT_BASE + i * _D_LAT, + "lon": _LON, + } + for i in range(n_stops) + ] - r.hgetall.side_effect = hgetall_side_effect - return r + +def make_straight_geom(n_stops: int = 6) -> ShapeGeometry: + """Build a ShapeGeometry from the straight test polyline.""" + return assemble_geometry( + shape_id="test-shape", + trip_id="test-trip", + shape_points=_straight_shape_points(n_stops + 1), + stop_rows=_straight_stop_rows(n_stops), + ) # --------------------------------------------------------------------------- -# Test 1 — Empty run hash: returns early, no r.set called +# Fixture: seed a baseline model into a temp directory # --------------------------------------------------------------------------- -def test_returns_early_when_run_hash_is_empty(monkeypatch): - fake_r = _fake_redis(run_raw={}) - monkeypatch.setattr(stop_times_module, "r", fake_r) - - produce_stop_times(RUN_ID, VEHICLE_ID) - - fake_r.set.assert_not_called() +@pytest.fixture(scope="module") +def model_dir(): + """Seed the baseline ETA model into a temp directory once per module.""" + with tempfile.TemporaryDirectory() as tmpdir: + env = {**os.environ, "MODEL_REGISTRY_DIR": tmpdir} + result = subprocess.run( + [sys.executable, "-m", "gtfs_eta.seed_baseline_model"], + env=env, + capture_output=True, + text=True, + cwd=os.path.dirname(os.path.dirname(os.path.abspath(__file__))), + ) + assert result.returncode == 0, ( + f"seed_baseline_model failed:\nstdout: {result.stdout}\nstderr: {result.stderr}" + ) + yield tmpdir # --------------------------------------------------------------------------- -# Test 2 — Happy path: maps fake entries to contract and writes JSON +# Helper: build a minimal position dict (typed, as from position.from_redis) # --------------------------------------------------------------------------- -def test_happy_path_writes_stop_time_updates_key(monkeypatch): - fake_r = _fake_redis() - monkeypatch.setattr(stop_times_module, "r", fake_r) +def _pos(lat: float, lon: float, speed: float = 4.5, ts: int = 1_700_000_000) -> dict: + return { + "latitude": lat, + "longitude": lon, + "speed": speed, + "timestamp": ts, + } - with patch( - "schedule_engine.fake_stop_times.build_stop_time_updates", - return_value=_FAKE_STOP_ENTRIES, - ): - produce_stop_times(RUN_ID, VEHICLE_ID) - fake_r.set.assert_called_once() - call_args = fake_r.set.call_args - written_key = call_args.args[0] if call_args.args else call_args.kwargs.get("name") - assert written_key == keys.stop_time_updates_key(RUN_ID) +def _run_hash(vehicle: str = "V1", route_id: str = "R1", trip_id: str = "T1") -> dict: + return { + "vehicle": vehicle, + "route_id": route_id, + "trip_id": trip_id, + "shape_id": "test-shape", + } -def test_happy_path_payload_is_valid_json(monkeypatch): - fake_r = _fake_redis() - monkeypatch.setattr(stop_times_module, "r", fake_r) +# --------------------------------------------------------------------------- +# Pure helper — happy path +# --------------------------------------------------------------------------- - with patch( - "schedule_engine.fake_stop_times.build_stop_time_updates", - return_value=_FAKE_STOP_ENTRIES, - ): - produce_stop_times(RUN_ID, VEHICLE_ID) - payload_str = fake_r.set.call_args.args[1] - parsed = json.loads(payload_str) - assert isinstance(parsed, list) - assert len(parsed) == 2 +class TestComputeStopTimeUpdatesHappyPath: + """Predictions map correctly; ARRIVAL_TIME is int POSIX; ETAs increase.""" + + def test_returns_list_of_dicts(self, model_dir): + geom = make_straight_geom() + # Vehicle at the very start of the route (before stop 0) + pos = _pos(_LAT_BASE - 0.0005, _LON) + with patch.dict(os.environ, {"MODEL_REGISTRY_DIR": model_dir}): + result = compute_stop_time_updates( + run_hash=_run_hash(), + position=pos, + stop_status={}, + geom=geom, + max_stops=3, + default_uncertainty_s=120, + ) + assert isinstance(result, list) + if result: # may be empty if model not loaded but seed should work + assert all(isinstance(e, dict) for e in result) + + def test_arrival_time_is_int_posix(self, model_dir): + geom = make_straight_geom() + pos = _pos(_LAT_BASE - 0.0005, _LON) + with patch.dict(os.environ, {"MODEL_REGISTRY_DIR": model_dir}): + result = compute_stop_time_updates( + run_hash=_run_hash(), + position=pos, + stop_status={}, + geom=geom, + max_stops=3, + default_uncertainty_s=120, + ) + for entry in result: + assert isinstance(entry[stop_time_updates.ARRIVAL_TIME], int) + assert isinstance(entry[stop_time_updates.DEPARTURE_TIME], int) + # Sanity: POSIX in a plausible range (year 2000 → 2100) + assert 946_684_800 < entry[stop_time_updates.ARRIVAL_TIME] < 4_102_444_800 + + def test_uncertainty_equals_default(self, model_dir): + geom = make_straight_geom() + pos = _pos(_LAT_BASE - 0.0005, _LON) + with patch.dict(os.environ, {"MODEL_REGISTRY_DIR": model_dir}): + result = compute_stop_time_updates( + run_hash=_run_hash(), + position=pos, + stop_status={}, + geom=geom, + max_stops=3, + default_uncertainty_s=99, + ) + for entry in result: + assert entry[stop_time_updates.UNCERTAINTY] == 99 + + def test_etas_are_non_decreasing(self, model_dir): + """ETAs must increase (or stay equal) as distance increases.""" + geom = make_straight_geom() + pos = _pos(_LAT_BASE - 0.0005, _LON) + with patch.dict(os.environ, {"MODEL_REGISTRY_DIR": model_dir}): + result = compute_stop_time_updates( + run_hash=_run_hash(), + position=pos, + stop_status={}, + geom=geom, + max_stops=6, + default_uncertainty_s=120, + ) + times = [e[stop_time_updates.ARRIVAL_TIME] for e in result] + for i in range(1, len(times)): + assert times[i] >= times[i - 1], ( + f"ETA decreased: entry[{i - 1}]={times[i - 1]} > entry[{i}]={times[i]}" + ) + + def test_stop_id_and_sequence_match_geom(self, model_dir): + geom = make_straight_geom(n_stops=6) + pos = _pos(_LAT_BASE - 0.0005, _LON) + with patch.dict(os.environ, {"MODEL_REGISTRY_DIR": model_dir}): + result = compute_stop_time_updates( + run_hash=_run_hash(), + position=pos, + stop_status={}, + geom=geom, + max_stops=3, + default_uncertainty_s=120, + ) + geom_stop_ids = {s["stop_id"] for s in geom.stops} + for entry in result: + assert entry[stop_time_updates.STOP_ID] in geom_stop_ids -def test_fake_to_contract_mapping(monkeypatch): - """Each fake entry {eta_posix} must map to contract {arrival_time, departure_time}.""" - fake_r = _fake_redis() - monkeypatch.setattr(stop_times_module, "r", fake_r) +# --------------------------------------------------------------------------- +# Bug regression: no duplicates; list shrinks as vehicle advances +# --------------------------------------------------------------------------- - with patch( - "schedule_engine.fake_stop_times.build_stop_time_updates", - return_value=_FAKE_STOP_ENTRIES, - ): - produce_stop_times(RUN_ID, VEHICLE_ID) - payload_str = fake_r.set.call_args.args[1] - entries = stop_time_updates.from_redis(payload_str) - assert len(entries) == 2 - # Verify the eta_posix → arrival_time / departure_time mapping - assert entries[0][stop_time_updates.ARRIVAL_TIME] == 1700001000 - assert entries[0][stop_time_updates.DEPARTURE_TIME] == 1700001000 - assert entries[0][stop_time_updates.STOP_SEQUENCE] == 3 - assert entries[0][stop_time_updates.STOP_ID] == "stop-1" - assert entries[0][stop_time_updates.UNCERTAINTY] == 120 - - -def test_writes_with_ttl(monkeypatch): - """r.set must be called with ex=STOP_TIME_UPDATES_TTL_S.""" - fake_r = _fake_redis() - monkeypatch.setattr(stop_times_module, "r", fake_r) - - with patch( - "schedule_engine.fake_stop_times.build_stop_time_updates", - return_value=_FAKE_STOP_ENTRIES, - ): - produce_stop_times(RUN_ID, VEHICLE_ID) +class TestBugRegressions: + def test_no_duplicate_stop_sequence_in_output(self, model_dir): + """Output must never contain duplicate stop_sequence values.""" + geom = make_straight_geom(n_stops=6) + pos = _pos(_LAT_BASE - 0.0005, _LON) + with patch.dict(os.environ, {"MODEL_REGISTRY_DIR": model_dir}): + result = compute_stop_time_updates( + run_hash=_run_hash(), + position=pos, + stop_status={}, + geom=geom, + max_stops=6, + default_uncertainty_s=120, + ) + seqs = [e[stop_time_updates.STOP_SEQUENCE] for e in result] + assert len(seqs) == len(set(seqs)), f"Duplicate sequences: {seqs}" + + def test_list_length_non_increasing_as_sequence_advances(self, model_dir): + """As current_stop_sequence advances 0→3→5, the result length must not grow.""" + geom = make_straight_geom(n_stops=6) + # Vehicle mid-route + pos = _pos(_LAT_BASE + 2 * _D_LAT + 0.0005, _LON) + + def _count(current_seq: int, status: str = "IN_TRANSIT_TO") -> int: + ss = { + vehicle_stop_status.CURRENT_STOP_SEQUENCE: current_seq, + vehicle_stop_status.CURRENT_STATUS: status, + } + with patch.dict(os.environ, {"MODEL_REGISTRY_DIR": model_dir}): + res = compute_stop_time_updates( + run_hash=_run_hash(), + position=pos, + stop_status=ss, + geom=geom, + max_stops=6, + default_uncertainty_s=120, + ) + return len(res) + + c0 = _count(0) + c3 = _count(3) + c5 = _count(5) + assert c0 >= c3 >= c5, ( + f"List grew as sequence advanced: seq0={c0}, seq3={c3}, seq5={c5}" + ) + + def test_output_contains_only_sequences_gte_current(self, model_dir): + """All returned sequences must be >= current_stop_sequence.""" + geom = make_straight_geom(n_stops=6) + pos = _pos(_LAT_BASE, _LON) + current_seq = 3 + ss = { + vehicle_stop_status.CURRENT_STOP_SEQUENCE: current_seq, + vehicle_stop_status.CURRENT_STATUS: "IN_TRANSIT_TO", + } + with patch.dict(os.environ, {"MODEL_REGISTRY_DIR": model_dir}): + result = compute_stop_time_updates( + run_hash=_run_hash(), + position=pos, + stop_status=ss, + geom=geom, + max_stops=6, + default_uncertainty_s=120, + ) + for entry in result: + assert entry[stop_time_updates.STOP_SEQUENCE] >= current_seq - call_kwargs = fake_r.set.call_args.kwargs - assert call_kwargs.get("ex") == STOP_TIME_UPDATES_TTL_S + +# --------------------------------------------------------------------------- +# Output-adapter edge cases +# --------------------------------------------------------------------------- + + +class TestOutputAdapterEdgeCases: + def test_top_level_error_returns_empty(self): + """When estimator returns a top-level error, result must be [].""" + geom = make_straight_geom() + pos = _pos(_LAT_BASE, _LON) + error_result = { + "predictions": [], + "error": "No trained models found for model_type", + "model_key": None, + } + # estimate_stop_times is lazily imported inside compute_stop_time_updates; + # patch the function in its source module (gtfs_eta.eta_service.estimator). + with patch( + "gtfs_eta.eta_service.estimator.estimate_stop_times", + return_value=error_result, + ): + result = compute_stop_time_updates( + run_hash=_run_hash(), + position=pos, + stop_status={}, + geom=geom, + ) + assert result == [] + + def test_per_stop_error_is_skipped(self): + """A prediction with per-stop error must be excluded from the output.""" + geom = make_straight_geom(n_stops=3) + pos = _pos(_LAT_BASE - 0.0005, _LON) + now_ts = datetime.now(tz=timezone.utc) + estimator_result = { + "predictions": [ + { + "stop_id": "S0", + "stop_sequence": 0, + "distance_to_stop_m": 50.0, + "eta_seconds": None, + "eta_minutes": None, + "eta_formatted": None, + "eta_timestamp": None, + "error": "prediction failed", + }, + { + "stop_id": "S1", + "stop_sequence": 1, + "distance_to_stop_m": 160.0, + "eta_seconds": 36.0, + "eta_minutes": 0.6, + "eta_formatted": "0m 36s", + "eta_timestamp": now_ts.isoformat(), + }, + ], + } + with patch( + "gtfs_eta.eta_service.estimator.estimate_stop_times", + return_value=estimator_result, + ): + result = compute_stop_time_updates( + run_hash=_run_hash(), + position=pos, + stop_status={}, + geom=geom, + ) + # Only S1 should be in the output (S0 has an error) + assert len(result) == 1 + assert result[0][stop_time_updates.STOP_ID] == "S1" + + def test_stopped_at_excludes_current_stop(self, model_dir): + """When status is STOPPED_AT, the current stop must not appear in output.""" + geom = make_straight_geom(n_stops=6) + pos = _pos(_LAT_BASE + 2 * _D_LAT, _LON) + current_seq = 2 + ss = { + vehicle_stop_status.CURRENT_STOP_SEQUENCE: current_seq, + vehicle_stop_status.CURRENT_STATUS: "STOPPED_AT", + } + with patch.dict(os.environ, {"MODEL_REGISTRY_DIR": model_dir}): + result = compute_stop_time_updates( + run_hash=_run_hash(), + position=pos, + stop_status=ss, + geom=geom, + max_stops=6, + default_uncertainty_s=120, + ) + seqs = [e[stop_time_updates.STOP_SEQUENCE] for e in result] + assert current_seq not in seqs, ( + f"STOPPED_AT: current_seq={current_seq} found in output seqs {seqs}" + ) + for seq in seqs: + assert seq > current_seq + + def test_empty_upcoming_stops_returns_empty(self): + """When no upcoming stops remain, result is [].""" + geom = make_straight_geom(n_stops=3) + pos = _pos(_LAT_BASE, _LON) + ss = { + # All stops are behind the vehicle (seq 100 > any stop) + vehicle_stop_status.CURRENT_STOP_SEQUENCE: 100, + vehicle_stop_status.CURRENT_STATUS: "IN_TRANSIT_TO", + } + result = compute_stop_time_updates( + run_hash=_run_hash(), + position=pos, + stop_status=ss, + geom=geom, + ) + assert result == [] + + def test_empty_predictions_returns_empty(self): + """When estimator returns empty predictions list (no error), result is [].""" + geom = make_straight_geom(n_stops=3) + pos = _pos(_LAT_BASE - 0.0005, _LON) + with patch( + "gtfs_eta.eta_service.estimator.estimate_stop_times", + return_value={"predictions": []}, + ): + result = compute_stop_time_updates( + run_hash=_run_hash(), + position=pos, + stop_status={}, + geom=geom, + ) + assert result == [] # --------------------------------------------------------------------------- -# Test 3 — Empty fake entries: writes empty JSON array +# Impure produce_stop_times tests (monkeypatched Redis) # --------------------------------------------------------------------------- +VEHICLE_ID = "V-test" +RUN_ID = "run-test" + +_RUN_RAW = { + "trip_id": "T1", + "route_id": "R1", + "shape_id": "shape-1", + "vehicle": VEHICLE_ID, +} + +_POS_RAW = { + "latitude": str(_LAT_BASE), + "longitude": str(_LON), + "speed": "4.5", + "timestamp": "1700000000", +} + +_STOP_STATUS_RAW = { + "current_stop_sequence": "2", + "stop_id": "S2", + "current_status": "IN_TRANSIT_TO", +} + + +def _fake_redis(run_raw=None, pos_raw=None, stop_status_raw=None) -> MagicMock: + r = MagicMock() + + def hgetall_side_effect(key: str) -> dict: + if key == keys.run_key(RUN_ID): + return run_raw if run_raw is not None else _RUN_RAW + if key == keys.position_key(VEHICLE_ID): + return pos_raw if pos_raw is not None else _POS_RAW + if key == keys.stop_status_key(RUN_ID): + return stop_status_raw if stop_status_raw is not None else _STOP_STATUS_RAW + return {} + + r.hgetall.side_effect = hgetall_side_effect + return r -def test_empty_fake_entries_writes_empty_array(monkeypatch): - fake_r = _fake_redis() - monkeypatch.setattr(stop_times_module, "r", fake_r) - with patch( - "schedule_engine.fake_stop_times.build_stop_time_updates", - return_value=[], - ): +class TestProduceStopTimesImpure: + def test_returns_early_when_run_hash_empty(self, monkeypatch): + fake_r = _fake_redis(run_raw={}) + monkeypatch.setattr(stop_times_module, "r", fake_r) produce_stop_times(RUN_ID, VEHICLE_ID) + fake_r.set.assert_not_called() - fake_r.set.assert_called_once() - payload_str = fake_r.set.call_args.args[1] - assert json.loads(payload_str) == [] + def test_returns_early_when_no_position(self, monkeypatch): + fake_r = _fake_redis(pos_raw={}) + monkeypatch.setattr(stop_times_module, "r", fake_r) + produce_stop_times(RUN_ID, VEHICLE_ID) + fake_r.set.assert_not_called() + + def test_does_not_write_when_no_shape(self, monkeypatch): + fake_r = _fake_redis() + monkeypatch.setattr(stop_times_module, "r", fake_r) + with patch( + "runs.domain.progression.stop_times.get_shape_geometry", + return_value=None, + ): + produce_stop_times(RUN_ID, VEHICLE_ID) + fake_r.set.assert_not_called() + + def test_does_not_write_when_compute_returns_empty(self, monkeypatch): + geom = make_straight_geom() + fake_r = _fake_redis() + monkeypatch.setattr(stop_times_module, "r", fake_r) + with ( + patch( + "runs.domain.progression.stop_times.get_shape_geometry", + return_value=geom, + ), + patch( + "runs.domain.progression.stop_times.compute_stop_time_updates", + return_value=[], + ), + ): + produce_stop_times(RUN_ID, VEHICLE_ID) + fake_r.set.assert_not_called() + + def test_writes_correct_key_with_ttl(self, monkeypatch): + geom = make_straight_geom() + fake_r = _fake_redis() + monkeypatch.setattr(stop_times_module, "r", fake_r) + + now_ts = int(datetime.now(tz=timezone.utc).timestamp()) + fake_entries = [ + { + stop_time_updates.STOP_SEQUENCE: 2, + stop_time_updates.STOP_ID: "S2", + stop_time_updates.ARRIVAL_TIME: now_ts + 60, + stop_time_updates.DEPARTURE_TIME: now_ts + 60, + stop_time_updates.UNCERTAINTY: 120, + }, + ] + with ( + patch( + "runs.domain.progression.stop_times.get_shape_geometry", + return_value=geom, + ), + patch( + "runs.domain.progression.stop_times.compute_stop_time_updates", + return_value=fake_entries, + ), + ): + produce_stop_times(RUN_ID, VEHICLE_ID) + + fake_r.set.assert_called_once() + call_args = fake_r.set.call_args + written_key = call_args.args[0] if call_args.args else call_args.kwargs.get("name") + assert written_key == keys.stop_time_updates_key(RUN_ID) + assert call_args.kwargs.get("ex") == STOP_TIME_UPDATES_TTL_S + + def test_written_payload_parses_to_unique_ascending_sequences(self, monkeypatch): + geom = make_straight_geom() + fake_r = _fake_redis() + monkeypatch.setattr(stop_times_module, "r", fake_r) + + now_ts = int(datetime.now(tz=timezone.utc).timestamp()) + fake_entries = [ + { + stop_time_updates.STOP_SEQUENCE: 2, + stop_time_updates.STOP_ID: "S2", + stop_time_updates.ARRIVAL_TIME: now_ts + 60, + stop_time_updates.DEPARTURE_TIME: now_ts + 60, + stop_time_updates.UNCERTAINTY: 120, + }, + { + stop_time_updates.STOP_SEQUENCE: 3, + stop_time_updates.STOP_ID: "S3", + stop_time_updates.ARRIVAL_TIME: now_ts + 120, + stop_time_updates.DEPARTURE_TIME: now_ts + 120, + stop_time_updates.UNCERTAINTY: 120, + }, + ] + with ( + patch( + "runs.domain.progression.stop_times.get_shape_geometry", + return_value=geom, + ), + patch( + "runs.domain.progression.stop_times.compute_stop_time_updates", + return_value=fake_entries, + ), + ): + produce_stop_times(RUN_ID, VEHICLE_ID) + + payload_str = fake_r.set.call_args.args[1] + parsed = stop_time_updates.from_redis(payload_str) + seqs = [e["stop_sequence"] for e in parsed] + assert len(seqs) == len(set(seqs)), f"Duplicate sequences: {seqs}" + assert seqs == sorted(seqs), f"Not ascending: {seqs}" # --------------------------------------------------------------------------- -# Test 4 — TTL constant is 60 +# Builder hardening: unsorted/duplicate projection is sorted+deduped # --------------------------------------------------------------------------- -def test_ttl_constant_is_60(): - assert STOP_TIME_UPDATES_TTL_S == 60 +class FakeRedis: + """Minimal dict-backed Redis stub for builder tests.""" + + def __init__(self, data: dict): + self._data = data + + def hgetall(self, key: str) -> dict: + val = self._data.get(key, {}) + return dict(val) if isinstance(val, dict) else {} + + def smembers(self, key: str) -> set: + val = self._data.get(key, set()) + return set(val) if isinstance(val, set) else set() + + def get(self, key: str) -> str | None: + val = self._data.get(key) + return val if isinstance(val, str) else None + + +_BUILDER_RUN_ID = "run-b1" +_BUILDER_VID = "V-b1" + + +def _builder_redis_data(projection_entries: list[dict]) -> dict: + return { + "runs:in_progress": {_BUILDER_RUN_ID}, + f"run:{_BUILDER_RUN_ID}": { + "vehicle": _BUILDER_VID, + "trip_id": "trip-x", + "route_id": "route-x", + "schedule_relationship": "SCHEDULED", + }, + f"run:{_BUILDER_RUN_ID}:trip": { + "trip_id": "trip-x", + "route_id": "route-x", + "schedule_relationship": "SCHEDULED", + }, + f"vehicle:{_BUILDER_VID}:position": { + "latitude": "9.900", + "longitude": "-84.0", + "timestamp": "1700000000", + }, + f"vehicle:{_BUILDER_VID}:metadata": { + "id": _BUILDER_VID, + "label": "Bus B1", + }, + f"run:{_BUILDER_RUN_ID}:vehicle_stop_status": { + "current_stop_sequence": "1", + "current_status": "IN_TRANSIT_TO", + }, + keys.stop_time_updates_key(_BUILDER_RUN_ID): stop_time_updates.to_redis( + projection_entries + ), + } + + +class TestBuilderHardening: + def test_unsorted_projection_is_sorted_ascending(self): + now = int(datetime.now(tz=timezone.utc).timestamp()) + # Deliberately reverse order: seq 5 before seq 2 + entries = [ + { + stop_time_updates.STOP_SEQUENCE: 5, + stop_time_updates.STOP_ID: "S5", + stop_time_updates.ARRIVAL_TIME: now + 200, + stop_time_updates.DEPARTURE_TIME: now + 200, + stop_time_updates.UNCERTAINTY: 120, + }, + { + stop_time_updates.STOP_SEQUENCE: 2, + stop_time_updates.STOP_ID: "S2", + stop_time_updates.ARRIVAL_TIME: now + 100, + stop_time_updates.DEPARTURE_TIME: now + 100, + stop_time_updates.UNCERTAINTY: 120, + }, + ] + r = FakeRedis(_builder_redis_data(entries)) + entity = build_trip_update_entity(r, _BUILDER_RUN_ID) + assert entity is not None + updates = entity["trip_update"]["stop_time_update"] + seqs = [u["stop_sequence"] for u in updates] + assert seqs == sorted(seqs), f"Not sorted: {seqs}" + + def test_duplicate_sequences_are_deduped(self): + now = int(datetime.now(tz=timezone.utc).timestamp()) + # Two entries with same stop_sequence=3 + entries = [ + { + stop_time_updates.STOP_SEQUENCE: 3, + stop_time_updates.STOP_ID: "S3-a", + stop_time_updates.ARRIVAL_TIME: now + 100, + stop_time_updates.DEPARTURE_TIME: now + 100, + stop_time_updates.UNCERTAINTY: 120, + }, + { + stop_time_updates.STOP_SEQUENCE: 3, + stop_time_updates.STOP_ID: "S3-b", + stop_time_updates.ARRIVAL_TIME: now + 110, + stop_time_updates.DEPARTURE_TIME: now + 110, + stop_time_updates.UNCERTAINTY: 120, + }, + { + stop_time_updates.STOP_SEQUENCE: 5, + stop_time_updates.STOP_ID: "S5", + stop_time_updates.ARRIVAL_TIME: now + 200, + stop_time_updates.DEPARTURE_TIME: now + 200, + stop_time_updates.UNCERTAINTY: 120, + }, + ] + r = FakeRedis(_builder_redis_data(entries)) + entity = build_trip_update_entity(r, _BUILDER_RUN_ID) + assert entity is not None + updates = entity["trip_update"]["stop_time_update"] + seqs = [u["stop_sequence"] for u in updates] + assert len(seqs) == len(set(seqs)), f"Duplicates remain: {seqs}" + assert len(seqs) == 2 # seq 3 (first kept) + seq 5 + + def test_first_of_duplicate_is_kept(self): + """When two entries share a stop_sequence, the first (lower arrival) is kept.""" + now = int(datetime.now(tz=timezone.utc).timestamp()) + entries = [ + { + stop_time_updates.STOP_SEQUENCE: 3, + stop_time_updates.STOP_ID: "S3-first", + stop_time_updates.ARRIVAL_TIME: now + 100, + stop_time_updates.DEPARTURE_TIME: now + 100, + stop_time_updates.UNCERTAINTY: 120, + }, + { + stop_time_updates.STOP_SEQUENCE: 3, + stop_time_updates.STOP_ID: "S3-second", + stop_time_updates.ARRIVAL_TIME: now + 110, + stop_time_updates.DEPARTURE_TIME: now + 110, + stop_time_updates.UNCERTAINTY: 120, + }, + ] + r = FakeRedis(_builder_redis_data(entries)) + entity = build_trip_update_entity(r, _BUILDER_RUN_ID) + updates = entity["trip_update"]["stop_time_update"] + assert updates[0]["stop_id"] == "S3-first" From 064e6437c1a9ef9fa0def25938d8e62dd66015a7 Mon Sep 17 00:00:00 2001 From: Jae Date: Thu, 25 Jun 2026 12:13:45 -0600 Subject: [PATCH 05/68] chore(eta): drop fake_stop_times placeholder Superseded by the real ETA producer. Removes the fabricated stop-time generator and its static route_stops.csv (whose 0-based sequences surfaced an off-by-one). --- .../schedule_engine/aux_files/route_stops.csv | 61 ------- backend/schedule_engine/fake_stop_times.py | 163 ------------------ 2 files changed, 224 deletions(-) delete mode 100644 backend/schedule_engine/aux_files/route_stops.csv delete mode 100644 backend/schedule_engine/fake_stop_times.py diff --git a/backend/schedule_engine/aux_files/route_stops.csv b/backend/schedule_engine/aux_files/route_stops.csv deleted file mode 100644 index a04bad2..0000000 --- a/backend/schedule_engine/aux_files/route_stops.csv +++ /dev/null @@ -1,61 +0,0 @@ -route_id,shape_id,direction_id,stop_id,stop_sequence,timepoint -bUCR_L2,desde_educacion_sin_milla,0,UCR_0_00,0,1 -bUCR_L2,desde_educacion_sin_milla,0,UCR_0_04,1,0 -bUCR_L2,desde_educacion_sin_milla,0,UCR_0_05,2,0 -bUCR_L2,desde_educacion_sin_milla,0,UCR_0_06,3,0 -bUCR_L2,desde_educacion_sin_milla,0,UCR_0_07,4,0 -bUCR_L2,desde_educacion_sin_milla,0,UCR_0_08,5,0 -bUCR_L2,desde_educacion_sin_milla,0,UCR_0_09,6,0 -bUCR_L2,desde_educacion_sin_milla,0,UCR_0_10,7,0 -bUCR_L2,desde_educacion_sin_milla,0,UCR_0_11,8,0 -bUCR_L1,desde_educacion_con_milla,0,UCR_0_00,0,1 -bUCR_L1,desde_educacion_con_milla,0,UCR_0_02,1,0 -bUCR_L1,desde_educacion_con_milla,0,UCR_0_03,2,0 -bUCR_L1,desde_educacion_con_milla,0,UCR_0_04,3,0 -bUCR_L1,desde_educacion_con_milla,0,UCR_0_05,4,0 -bUCR_L1,desde_educacion_con_milla,0,UCR_0_06,5,0 -bUCR_L1,desde_educacion_con_milla,0,UCR_0_07,6,0 -bUCR_L1,desde_educacion_con_milla,0,UCR_0_08,7,0 -bUCR_L1,desde_educacion_con_milla,0,UCR_0_09,8,0 -bUCR_L1,desde_educacion_con_milla,0,UCR_0_10,9,0 -bUCR_L1,desde_educacion_con_milla,0,UCR_0_11,10,0 -bUCR_L2,desde_artes_sin_milla,0,UCR_0_01,0,1 -bUCR_L2,desde_artes_sin_milla,0,UCR_0_04,1,0 -bUCR_L2,desde_artes_sin_milla,0,UCR_0_05,2,0 -bUCR_L2,desde_artes_sin_milla,0,UCR_0_06,3,0 -bUCR_L2,desde_artes_sin_milla,0,UCR_0_07,4,0 -bUCR_L2,desde_artes_sin_milla,0,UCR_0_08,5,0 -bUCR_L2,desde_artes_sin_milla,0,UCR_0_09,6,0 -bUCR_L2,desde_artes_sin_milla,0,UCR_0_10,7,0 -bUCR_L2,desde_artes_sin_milla,0,UCR_0_11,8,0 -bUCR_L1,desde_artes_con_milla,0,UCR_0_01,0,1 -bUCR_L1,desde_artes_con_milla,0,UCR_0_02,1,0 -bUCR_L1,desde_artes_con_milla,0,UCR_0_03,2,0 -bUCR_L1,desde_artes_con_milla,0,UCR_0_04,3,0 -bUCR_L1,desde_artes_con_milla,0,UCR_0_05,4,0 -bUCR_L1,desde_artes_con_milla,0,UCR_0_06,5,0 -bUCR_L1,desde_artes_con_milla,0,UCR_0_07,6,0 -bUCR_L1,desde_artes_con_milla,0,UCR_0_08,7,0 -bUCR_L1,desde_artes_con_milla,0,UCR_0_09,8,0 -bUCR_L1,desde_artes_con_milla,0,UCR_0_10,9,0 -bUCR_L1,desde_artes_con_milla,0,UCR_0_11,10,0 -bUCR_L1,hacia_educacion,1,UCR_1_00,0,1 -bUCR_L1,hacia_educacion,1,UCR_1_01,1,0 -bUCR_L1,hacia_educacion,1,UCR_1_02,2,0 -bUCR_L1,hacia_educacion,1,UCR_1_03,3,0 -bUCR_L1,hacia_educacion,1,UCR_1_04,4,0 -bUCR_L1,hacia_educacion,1,UCR_1_05,5,0 -bUCR_L1,hacia_educacion,1,UCR_1_06,6,0 -bUCR_L1,hacia_educacion,1,UCR_1_07,7,0 -bUCR_L1,hacia_educacion,1,UCR_1_08,8,0 -bUCR_L1,hacia_educacion,1,UCR_1_09,9,0 -bUCR_L1,hacia_artes,1,UCR_1_00,0,1 -bUCR_L1,hacia_artes,1,UCR_1_01,1,0 -bUCR_L1,hacia_artes,1,UCR_1_02,2,0 -bUCR_L1,hacia_artes,1,UCR_1_03,3,0 -bUCR_L1,hacia_artes,1,UCR_1_04,4,0 -bUCR_L1,hacia_artes,1,UCR_1_05,5,0 -bUCR_L1,hacia_artes,1,UCR_1_06,6,0 -bUCR_L1,hacia_artes,1,UCR_1_07,7,0 -bUCR_L1,hacia_artes,1,UCR_1_08,8,0 -bUCR_L1,hacia_artes,1,UCR_1_10,10,0 \ No newline at end of file diff --git a/backend/schedule_engine/fake_stop_times.py b/backend/schedule_engine/fake_stop_times.py deleted file mode 100644 index fa26369..0000000 --- a/backend/schedule_engine/fake_stop_times.py +++ /dev/null @@ -1,163 +0,0 @@ -# For the _fake_stop_times method (temporary!) -import logging -import random -from datetime import datetime, timedelta -from pathlib import Path -from typing import Any - -import numpy as np -import pandas as pd - -logger = logging.getLogger(__name__) - -_CSV_FILE_PATH = Path(__file__).resolve().parent / "aux_files" / "route_stops.csv" -# Time in seconds -_UNCERTAINTY_S = 120 -_TIME_OFFSET_MIN_S = 150 -_TIME_OFFSET_MAX_S = 300 -_ARRIVAL_MAX_MIN = 5 - - -def _load_route_stops(csv_file_path) -> pd.DataFrame: - """Load route stops from a CSV file. - - Parameters: - csv_file_path: Name of CSV file with route stops. - - Returns: - pd.DataFrame: Information of CSV file as a Pandas DataFrame. - """ - return pd.read_csv(csv_file_path, dtype={"stop_sequence": np.uint32}) - - -def _generate_stop_entry( - arrival_time, stop_sequence, stop_id, uncertainty -) -> dict[str, Any]: - """Generate a stop entry with given parameters. - - Parameters: - arrival_time: Estimated time of arrival to stop as absolute time. In POSIX time. - stop_sequence: Order of stops in route. - stop_id: ID of stop. - uncertainty: Margin of error in the estimated time of arrival. - - Returns: - dict[str, Any]: A dictionary entry with stop time updates. - """ - return { - "stop_sequence": int(stop_sequence), - "stop_id": str(stop_id), - "eta_posix": int(arrival_time.timestamp()), - "uncertainty": uncertainty, - } - - -def _safe_int(value, default: int = -1) -> int: - """Coerce a Redis-string value to int, returning ``default`` on failure.""" - try: - return int(value) - except (TypeError, ValueError): - return default - - -def build_stop_time_updates(run, progression) -> list[dict[str, Any]]: - """Generate fake stop times for the given run. - - Parameters: - run: Mapping with at least ``route_id`` and ``shape_id`` keys - (typically a Redis hash dict). - progression: Mapping with ``current_stop_sequence`` and - ``current_status`` keys (typically a Redis hash dict). - - Returns: - list[dict[str, Any]]: A list of dictionaries with stop time updates. - """ - stop_time_update: list[dict[str, Any]] = [] - - run = run or {} - progression = progression or {} - - route_id = str(run.get("route_id") or "").strip() - shape_id = str(run.get("shape_id") or "").strip() - if not route_id: - logger.warning("build_stop_time_updates: run missing route_id (run=%s)", run) - return stop_time_update - - try: - route_stops = _load_route_stops(csv_file_path=_CSV_FILE_PATH) - except FileNotFoundError: - logger.exception("Route stops CSV not found at %s", _CSV_FILE_PATH) - return stop_time_update - - # Primary match: route_id AND shape_id - filtered_stops = route_stops[ - (route_stops["route_id"].astype(str) == route_id) - & (route_stops["shape_id"].astype(str) == shape_id) - ] - - # Fallback: match on route_id only (if shape_id is unknown or unmapped) - if filtered_stops.empty: - logger.info( - "No CSV rows for route_id=%r shape_id=%r — falling back to route_id only", - route_id, - shape_id, - ) - filtered_stops = route_stops[ - route_stops["route_id"].astype(str) == route_id - ] - - if filtered_stops.empty: - logger.warning( - "build_stop_time_updates: no stops for route_id=%r (CSV has routes=%s)", - route_id, - sorted(route_stops["route_id"].astype(str).unique().tolist()), - ) - return stop_time_update - - # Ensure ascending order so we walk stops in sequence - filtered_stops = filtered_stops.sort_values("stop_sequence") - - current_stop_sequence = _safe_int( - progression.get("current_stop_sequence"), default=-1 - ) - current_status = (progression.get("current_status") or "").upper() - - arrival_time = datetime.now() + timedelta( - minutes=random.randint(0, _ARRIVAL_MAX_MIN) - ) - - for _, row in filtered_stops.iterrows(): - stop_sequence = int(row["stop_sequence"]) - - # Skip stops the vehicle has already passed - if stop_sequence < current_stop_sequence: - continue - - # If the bus is currently stopped at this sequence, the next ETA is - # the following stop, so skip the current one. - if ( - current_status == "STOPPED_AT" - and stop_sequence == current_stop_sequence - ): - continue - - stop_entry = _generate_stop_entry( - arrival_time=arrival_time, - stop_sequence=stop_sequence, - stop_id=row["stop_id"], - uncertainty=_UNCERTAINTY_S, - ) - stop_time_update.append(stop_entry) - arrival_time += timedelta( - seconds=random.randint(_TIME_OFFSET_MIN_S, _TIME_OFFSET_MAX_S) - ) - - logger.debug( - "build_stop_time_updates: route_id=%s shape_id=%s current_seq=%s status=%s -> %d stops", - route_id, - shape_id, - current_stop_sequence, - current_status, - len(stop_time_update), - ) - return stop_time_update From 1f8ba1b55c991c3bebce5dc06e414b62d7f2218a Mon Sep 17 00:00:00 2001 From: Jae Date: Sat, 27 Jun 2026 00:18:05 -0600 Subject: [PATCH 06/68] feat(feed): publish GTFS Schedule zip from the database Generate a valid GTFS Schedule feed.zip from the feed app's ORM models (loaded from feed/fixtures/gtfs.json) and serve it at /feed/schedule/feed.zip, mirroring the GTFS-RT pipeline. - feed/schedule/exporter.py: build_gtfs_zip() serializes one Feed's rows into GTFS .txt files (columns derived by model introspection) and publish_gtfs_zip() writes feed/files/gtfs.zip atomically. - schedule_engine.tasks.build_schedule: Celery task + daily beat entry. - feed export_gtfs management command for on-demand/boot generation. - docker-entrypoint.sh: export on boot only if gtfs.zip is absent. - feed.views.schedule: serve gtfs.zip, 404 when not yet generated. - Minimal exporter test; pytest-django settings in pyproject.toml. --- backend/databus/celery.py | 4 + backend/docker-entrypoint.sh | 6 + backend/feed/management/__init__.py | 0 backend/feed/management/commands/__init__.py | 0 .../feed/management/commands/export_gtfs.py | 25 +++ backend/feed/schedule/exporter.py | 183 ++++++++++++++++++ backend/feed/tests.py | 49 ++++- backend/feed/views.py | 11 +- backend/pyproject.toml | 3 + backend/schedule_engine/tasks.py | 19 ++ 10 files changed, 296 insertions(+), 4 deletions(-) create mode 100644 backend/feed/management/__init__.py create mode 100644 backend/feed/management/commands/__init__.py create mode 100644 backend/feed/management/commands/export_gtfs.py create mode 100644 backend/feed/schedule/exporter.py diff --git a/backend/databus/celery.py b/backend/databus/celery.py index 9cd91fb..d980fa8 100644 --- a/backend/databus/celery.py +++ b/backend/databus/celery.py @@ -50,4 +50,8 @@ def debug_task(self): "task": "realtime_engine.tasks.scan_stale_runs", "schedule": timedelta(seconds=30), }, + "build-schedule-daily": { + "task": "schedule_engine.tasks.build_schedule", + "schedule": timedelta(days=1), + }, } diff --git a/backend/docker-entrypoint.sh b/backend/docker-entrypoint.sh index fb5f203..e266438 100755 --- a/backend/docker-entrypoint.sh +++ b/backend/docker-entrypoint.sh @@ -237,6 +237,12 @@ load_initial_data() { if [ -f feed/fixtures/gtfs.json ]; then log "Loading initial data fixture gtfs.json" uv run python manage.py loaddata gtfs.json || warn "Initial data load failed" + if [ -f feed/files/gtfs.zip ]; then + log "GTFS Schedule zip already present; skipping export (daily task or 'manage.py export_gtfs' will refresh it)" + else + log "Exporting GTFS Schedule zip" + uv run python manage.py export_gtfs || warn "GTFS Schedule zip export skipped" + fi else log "No optional initial data fixture gtfs.json present" fi diff --git a/backend/feed/management/__init__.py b/backend/feed/management/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/feed/management/commands/__init__.py b/backend/feed/management/commands/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/feed/management/commands/export_gtfs.py b/backend/feed/management/commands/export_gtfs.py new file mode 100644 index 0000000..ac36b91 --- /dev/null +++ b/backend/feed/management/commands/export_gtfs.py @@ -0,0 +1,25 @@ +"""Management command: export the current GTFS feed to feed/files/gtfs.zip.""" + +from django.core.management.base import BaseCommand, CommandError + +from feed.models import Feed +from feed.schedule.exporter import publish_gtfs_zip + + +class Command(BaseCommand): + help = "Export the current GTFS feed (is_current=True) to feed/files/gtfs.zip" + + def handle(self, *args, **options) -> None: + feed = Feed.objects.filter(is_current=True).first() + if feed is None: + raise CommandError( + "No Feed with is_current=True found. " + "Load the fixture first: manage.py loaddata gtfs.json" + ) + + dest = publish_gtfs_zip(feed) + self.stdout.write( + self.style.SUCCESS( + f"GTFS Schedule zip exported: {dest} ({dest.stat().st_size} bytes)" + ) + ) diff --git a/backend/feed/schedule/exporter.py b/backend/feed/schedule/exporter.py new file mode 100644 index 0000000..5b128ad --- /dev/null +++ b/backend/feed/schedule/exporter.py @@ -0,0 +1,183 @@ +"""GTFS Schedule zip exporter. + +Reads the Django ORM (the Django-coupled analog of builders.py) and serialises +one Feed instance's rows into a standards-compliant GTFS .zip archive returned +as bytes. Also exposes ``publish_gtfs_zip`` to write the archive to disk +atomically; this shared helper is used by both the Celery task and the +management command. +""" + +from __future__ import annotations + +import csv +import io +import zipfile +from pathlib import Path +from typing import TYPE_CHECKING + +from django.db import models as db_models + +from feed.models import ( + Agency, + Calendar, + CalendarDate, + FareAttribute, + FareRule, + FeedInfo, + Route, + Shape, + Stop, + StopTime, + Trip, +) + +if TYPE_CHECKING: + from feed.models import Feed + + +# --------------------------------------------------------------------------- +# Field introspection helpers +# --------------------------------------------------------------------------- + +_EXCLUDE_NAMES: frozenset[str] = frozenset( + {"id", "feed", "geoshape", "stop_point", "stop_heading", "holiday_name"} +) + + +def _gtfs_fields(model: type[db_models.Model]) -> list[tuple[str, db_models.Field]]: + """Return ``(column_name, field)`` pairs for GTFS output in declaration order. + + Excluded: the internal auto-pk, the ``feed`` FK, any field whose name + starts with ``linked_``, and the app-specific augmentation fields listed + in ``_EXCLUDE_NAMES``. All remaining fields after exclusion are concrete + non-FK fields, so ``field.attname == field.name`` and equals the GTFS + column name. + """ + result: list[tuple[str, db_models.Field]] = [] + for field in model._meta.local_fields: + if field.name in _EXCLUDE_NAMES or field.name.startswith("linked_"): + continue + result.append((field.attname, field)) + return result + + +def _format_value(field: db_models.Field, value: object) -> str: + """Format a model field value as a GTFS CSV cell string.""" + if value is None: + return "" + # DateField (but NOT DateTimeField which subclasses DateField) + if isinstance(field, db_models.DateField) and not isinstance( + field, db_models.DateTimeField + ): + return value.strftime("%Y%m%d") # type: ignore[union-attr] + if isinstance(field, db_models.TimeField): + return value.strftime("%H:%M:%S") # type: ignore[union-attr] + if isinstance(field, db_models.BooleanField): + return "1" if value else "0" + return str(value) + + +# --------------------------------------------------------------------------- +# Zip assembly +# --------------------------------------------------------------------------- + + +def _write_txt( + zf: zipfile.ZipFile, + filename: str, + model: type[db_models.Model], + queryset, +) -> None: + """Write one GTFS ``.txt`` file into *zf*. + + The file is omitted from the archive if the queryset has zero rows. + """ + fields = _gtfs_fields(model) + columns = [col for col, _ in fields] + + buf = io.StringIO() + writer = csv.writer(buf) + writer.writerow(columns) + + count = 0 + for obj in queryset.iterator(): + row = [_format_value(fld, getattr(obj, col)) for col, fld in fields] + writer.writerow(row) + count += 1 + + if count > 0: + zf.writestr(filename, buf.getvalue()) + + +# --------------------------------------------------------------------------- +# Public API +# --------------------------------------------------------------------------- + + +def build_gtfs_zip(feed: "Feed") -> bytes: + """Serialise one ``Feed`` instance into a GTFS zip and return the raw bytes.""" + buf = io.BytesIO() + with zipfile.ZipFile(buf, "w", compression=zipfile.ZIP_DEFLATED) as zf: + _write_txt(zf, "agency.txt", Agency, Agency.objects.filter(feed=feed)) + _write_txt(zf, "stops.txt", Stop, Stop.objects.filter(feed=feed)) + _write_txt(zf, "routes.txt", Route, Route.objects.filter(feed=feed)) + _write_txt(zf, "calendar.txt", Calendar, Calendar.objects.filter(feed=feed)) + _write_txt( + zf, + "calendar_dates.txt", + CalendarDate, + CalendarDate.objects.filter(feed=feed), + ) + _write_txt( + zf, + "shapes.txt", + Shape, + Shape.objects.filter(feed=feed).order_by("shape_id", "shape_pt_sequence"), + ) + _write_txt(zf, "trips.txt", Trip, Trip.objects.filter(feed=feed)) + _write_txt( + zf, + "stop_times.txt", + StopTime, + StopTime.objects.filter(feed=feed).order_by("trip_id", "stop_sequence"), + ) + _write_txt( + zf, + "fare_attributes.txt", + FareAttribute, + FareAttribute.objects.filter(feed=feed), + ) + _write_txt( + zf, + "fare_rules.txt", + FareRule, + FareRule.objects.filter(feed=feed), + ) + _write_txt( + zf, + "feed_info.txt", + FeedInfo, + FeedInfo.objects.filter(feed=feed), + ) + return buf.getvalue() + + +def publish_gtfs_zip(feed: "Feed", output_dir: Path | None = None) -> Path: + """Build the GTFS zip and write it atomically to ``/gtfs.zip``. + + If *output_dir* is ``None``, defaults to ``settings.BASE_DIR / "feed" / "files"``. + Uses a ``.tmp`` staging file and ``Path.replace`` (atomic rename) to avoid + partially-written files being served. Returns the final ``Path``. + """ + from django.conf import settings + + if output_dir is None: + output_dir = settings.BASE_DIR / "feed" / "files" + + output_dir.mkdir(parents=True, exist_ok=True) + dest = output_dir / "gtfs.zip" + tmp = output_dir / "gtfs.zip.tmp" + + tmp.write_bytes(build_gtfs_zip(feed)) + tmp.replace(dest) + return dest diff --git a/backend/feed/tests.py b/backend/feed/tests.py index 7ce503c..237a4f5 100644 --- a/backend/feed/tests.py +++ b/backend/feed/tests.py @@ -1,3 +1,50 @@ +import io +import zipfile + from django.test import TestCase -# Create your tests here. +from feed.models import Feed +from feed.schedule.exporter import build_gtfs_zip + + +class TestBuildGtfsZip(TestCase): + """Minimal smoke tests for the GTFS Schedule zip exporter. + + Requires a PostGIS-enabled test database (models use PointField / + LineStringField). The fixture loads ~22 stops and 1117 stop_times. + """ + + fixtures = ["gtfs.json"] + + def _feed(self) -> Feed: + feed = Feed.objects.filter(is_current=True).first() + self.assertIsNotNone(feed, "Fixture must contain a Feed with is_current=True") + return feed # type: ignore[return-value] + + def test_returns_valid_zip_with_required_files(self) -> None: + data = build_gtfs_zip(self._feed()) + self.assertIsInstance(data, bytes) + self.assertGreater(len(data), 0) + with zipfile.ZipFile(io.BytesIO(data)) as zf: + names = zf.namelist() + for required in ("agency.txt", "stops.txt", "stop_times.txt"): + self.assertIn(required, names, f"{required} missing from zip") + + def test_stops_txt_header_and_row_count(self) -> None: + data = build_gtfs_zip(self._feed()) + with zipfile.ZipFile(io.BytesIO(data)) as zf: + text = zf.read("stops.txt").decode() + lines = [line for line in text.splitlines() if line.strip()] + header_cols = lines[0].split(",") + self.assertIn("stop_id", header_cols) + self.assertIn("stop_lat", header_cols) + # 1 header + 22 data rows + self.assertEqual(len(lines), 23, f"Expected 23 lines, got {len(lines)}") + + def test_stop_times_row_count(self) -> None: + data = build_gtfs_zip(self._feed()) + with zipfile.ZipFile(io.BytesIO(data)) as zf: + text = zf.read("stop_times.txt").decode() + lines = [line for line in text.splitlines() if line.strip()] + # 1 header + 1117 data rows + self.assertEqual(len(lines), 1118, f"Expected 1118 lines, got {len(lines)}") diff --git a/backend/feed/views.py b/backend/feed/views.py index eec06cb..ff86346 100644 --- a/backend/feed/views.py +++ b/backend/feed/views.py @@ -1,6 +1,6 @@ from django.shortcuts import render from django.conf import settings -from django.http import FileResponse +from django.http import FileResponse, HttpResponseNotFound from django.views.decorators.clickjacking import xframe_options_exempt # Create your views here. @@ -11,8 +11,13 @@ def status(request): def schedule(request): - file_path = settings.BASE_DIR / "feed" / "files" / "bUCR_GTFS.zip" - return FileResponse(open(file_path, "rb"), filename="bUCR_GTFS.zip") + file_path = settings.BASE_DIR / "feed" / "files" / "gtfs.zip" + if not file_path.exists(): + return HttpResponseNotFound( + "GTFS Schedule zip not yet available. " + "Run 'manage.py export_gtfs' or wait for the hourly Celery task." + ) + return FileResponse(open(file_path, "rb"), as_attachment=True, filename="gtfs.zip") @xframe_options_exempt diff --git a/backend/pyproject.toml b/backend/pyproject.toml index dffe940..22ad948 100644 --- a/backend/pyproject.toml +++ b/backend/pyproject.toml @@ -44,6 +44,9 @@ dev = [ "watchfiles>=0.24.0", ] +[tool.pytest.ini_options] +DJANGO_SETTINGS_MODULE = "databus.settings" + [tool.uv.workspace] members = [ "gtfs-io", diff --git a/backend/schedule_engine/tasks.py b/backend/schedule_engine/tasks.py index fdea835..17cbdfd 100644 --- a/backend/schedule_engine/tasks.py +++ b/backend/schedule_engine/tasks.py @@ -100,3 +100,22 @@ def build_trip_updates(): @shared_task(queue="schedule_engine") def build_alerts(): return "Feed ServiceAlert built" + + +@shared_task(queue="schedule_engine") +def build_schedule(): + """Build the GTFS Schedule zip and publish it to feed/files/gtfs.zip.""" + import logging + + logger = logging.getLogger(__name__) + + from feed.models import Feed + from feed.schedule.exporter import publish_gtfs_zip + + feed = Feed.objects.filter(is_current=True).first() + if feed is None: + logger.warning("build_schedule: no current Feed found, skipping") + return + + dest = publish_gtfs_zip(feed) + return f"GTFS Schedule zip published: {dest} ({dest.stat().st_size} bytes)" From c5ef42b2ac5499823959aedbeaea0eae19de5fa5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabi=C3=A1n=20Abarca=20Calder=C3=B3n?= Date: Thu, 9 Jul 2026 12:21:34 -0300 Subject: [PATCH 07/68] chore(tasks): sketch of the HTTP telemetry fetching bridge --- backend/operations/models.py | 8 +++ backend/schedule_engine/tasks.py | 103 ++++++++++++++++++++++++++++++- 2 files changed, 110 insertions(+), 1 deletion(-) diff --git a/backend/operations/models.py b/backend/operations/models.py index 2bc0bd2..65507d6 100644 --- a/backend/operations/models.py +++ b/backend/operations/models.py @@ -70,6 +70,14 @@ class Vehicle(models.Model): ) label = models.CharField(max_length=100, blank=True, null=True) license_plate = models.CharField(max_length=31) + position_source_type = models.CharField( + max_length=100, + blank=True, + null=True, + choices=[("mqtt", "MQTT"), ("http", "HTTP"), ("both", "Both")], + ) + position_source_url = models.URLField(blank=True, null=True) + position_source_paths = models.JSONField(blank=True, null=True) wheelchair_accessible = models.CharField( max_length=100, blank=True, diff --git a/backend/schedule_engine/tasks.py b/backend/schedule_engine/tasks.py index fdea835..86a1aea 100644 --- a/backend/schedule_engine/tasks.py +++ b/backend/schedule_engine/tasks.py @@ -1,5 +1,5 @@ import os -from celery import shared_task +from celery import chord, group, shared_task from channels.layers import get_channel_layer from asgiref.sync import async_to_sync import json @@ -9,6 +9,12 @@ from google.transit import gtfs_realtime_pb2 as gtfs_rt from google.protobuf import json_format +# Probably needed imports for telemetry fetching +import requests +import paho.mqtt.client as mqtt +from operations.models import Vehicle + + from .builders import ( build_vehicle_positions_feed, build_trip_updates_feed, @@ -97,6 +103,101 @@ def build_trip_updates(): return f"TripUpdates built: {len(feed_message['entity'])} entities" +def fetch_and_publish(vehicle): + response = requests.get(vehicle.position_source_url, timeout=10) + response.raise_for_status() + data = response.json() + + # Extract relevant fields from the JSON response using the position_source_paths mapping + timestamp = data.get(vehicle.position_source_paths.get("paths").get("timestamp")) + lat = data.get(vehicle.position_source_paths.get("paths").get("lat")) + lon = data.get(vehicle.position_source_paths.get("paths").get("lon")) + speed = data.get(vehicle.position_source_paths.get("paths").get("speed")) + + # Publish to MQTT broker + mqtt_client = mqtt.Client() + mqtt_client.connect(settings.MQTT_BROKER_HOST, settings.MQTT_BROKER_PORT, 60) + topic = f"vehicle/{vehicle.id}/position" + payload = json.dumps( + {"timestamp": timestamp, "lat": lat, "lon": lon, "speed": speed} + ) + mqtt_client.publish(topic, payload) + mqtt_client.disconnect() + return None + + +@shared_task(queue="schedule_engine") +def fetch_position(): + """ + Fetch telemetry position data from configured sources. + + Using the TelemetrySources model, this task retrieves telemetry data from various sources. + + The retrieved data is then processed relayed to the MQTT broker for further use in the system. + + type: array + vehicle_id: JSON PATH + timestamp: JSON PATH element.crDateTime + lat: JSON PATH + lon: JSON PATH + speed: JSON PATH + + position_source_paths = { + "type": "array", + "paths": { + "vehicle_id": "plateNumber", + "timestamp": "crDateTime", + "lat": "latitude", + "lon": "longitude", + "speed": "speed" + } + } + + Publish to MQTT broker at topic: vehicle//position with payload: + { + "timestamp": , + "lat": , + "lon": , + "speed": + } + """ + vehicles_in_runs_in_progress = get_redis().smembers("runs:in_progress") + for vehicle_in_progress in vehicles_in_runs_in_progress: + vehicle = Vehicle.objects.get(id=vehicle_in_progress) + if vehicle.position_source_type == "mqtt": + # Check if the vehicle has updated positions in Redis + position_data = get_redis().get(f"vehicle:{vehicle.id}:position") + if position_data: + continue # Position data already exists, skip fetching + elif vehicle.position_source_type == "both": + try: + fetch_and_publish(vehicle) + except requests.RequestException as e: + print(f"Error fetching position for vehicle {vehicle.id}: {e}") + except Exception as e: + print(f"Unexpected error for vehicle {vehicle.id}: {e}") + elif vehicle.position_source_type == "http": + try: + fetch_and_publish(vehicle) + except requests.RequestException as e: + print(f"Error fetching position for vehicle {vehicle.id}: {e}") + except Exception as e: + print(f"Unexpected error for vehicle {vehicle.id}: {e}") + return "Position data fetched and published to MQTT broker" + + @shared_task(queue="schedule_engine") def build_alerts(): return "Feed ServiceAlert built" + + +@shared_task(queue="schedule_engine") +def update_gtfs_realtime(): + + fetching = group(fetch_position.s()) + building = group( + build_vehicle_positions.s(), build_trip_updates.s(), build_alerts.s() + ) + workflow = chord(fetching)(building) + + return workflow.id From 4c55e5b282ebb5763f628fab13f3a16888d89d30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabi=C3=A1n=20Abarca=20Calder=C3=B3n?= Date: Mon, 20 Jul 2026 15:51:47 -0300 Subject: [PATCH 08/68] feat(models): enhance Company and Operator models, add Equipment and Sensor classes --- backend/operations/models.py | 123 ++++++++++++++++++----------------- 1 file changed, 62 insertions(+), 61 deletions(-) diff --git a/backend/operations/models.py b/backend/operations/models.py index 65507d6..df11682 100644 --- a/backend/operations/models.py +++ b/backend/operations/models.py @@ -9,15 +9,14 @@ class Company(models.Model): """ - A wrapper for the Agency model from GTFS. + A wrapper for the Agency model from GTFS. The legal entity behind it. """ id = models.CharField(max_length=100, primary_key=True) - linked_agency = models.OneToOneField( - Agency, on_delete=models.SET_NULL, blank=True, null=True - ) + linked_agency = models.ManyToManyField(Agency, blank=True) name = models.CharField(max_length=100) description = models.TextField(blank=True, null=True) + legal_id = models.CharField(max_length=100, blank=True, null=True) phone = models.CharField(max_length=100, blank=True, null=True) email = models.EmailField(blank=True, null=True) website = models.URLField(blank=True, null=True) @@ -29,11 +28,18 @@ def __str__(self): class Operator(models.Model): + """ + A person. A driver, dispatcher or administrator of a given company. + """ + id = models.CharField(max_length=100, primary_key=True, unique=True) user = models.OneToOneField(User, on_delete=models.CASCADE) company = models.ManyToManyField(Company) phone = models.CharField(max_length=100, blank=True, null=True) photo = models.ImageField(upload_to="operators/", blank=True, null=True) + is_driver = models.BooleanField(default=False) + is_dispatcher = models.BooleanField(default=False) + is_administrator = models.BooleanField(default=False) def __str__(self): return f"{self.user.first_name} {self.user.last_name} ({self.id})" @@ -41,7 +47,7 @@ def __str__(self): class DataProvider(models.Model): """ - A GTFS and telemetry data provider for a given company. + A GTFS and telemetry data provider for a given company. Owner of the equipments. """ id = models.CharField(max_length=127, primary_key=True) @@ -57,6 +63,10 @@ def __str__(self): class Vehicle(models.Model): + """ + A vehicle belonging to a company. Used in GTFS. + """ + AMENITIES_CHOICES = [ ("NO_VALUE", "No hay información"), ("UNKNOWN", "Desconocido"), @@ -70,14 +80,6 @@ class Vehicle(models.Model): ) label = models.CharField(max_length=100, blank=True, null=True) license_plate = models.CharField(max_length=31) - position_source_type = models.CharField( - max_length=100, - blank=True, - null=True, - choices=[("mqtt", "MQTT"), ("http", "HTTP"), ("both", "Both")], - ) - position_source_url = models.URLField(blank=True, null=True) - position_source_paths = models.JSONField(blank=True, null=True) wheelchair_accessible = models.CharField( max_length=100, blank=True, @@ -111,7 +113,6 @@ class Vehicle(models.Model): choices=[ ("IN_SERVICE", "En servicio"), ("OUT_OF_SERVICE", "Fuera de servicio"), - ("SOLD", "Vendido"), ("ON_FIRE", "En llamas"), ], ) @@ -122,34 +123,20 @@ def __str__(self): class Equipment(models.Model): id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) - data_provider = models.ForeignKey( DataProvider, on_delete=models.PROTECT, blank=True, null=True ) + name = models.CharField(max_length=100, blank=True, null=True) vehicle = models.ForeignKey( Vehicle, on_delete=models.PROTECT, blank=True, null=True ) - # Equipment information + # Hardware/firmware information serial_number = models.CharField(max_length=100, blank=True, null=True) brand = models.CharField(max_length=100) model = models.CharField(max_length=100) os_version = models.CharField(max_length=100, blank=True, null=True) app_version = models.CharField(max_length=100, blank=True, null=True) - # Data provided - provides_vehicle = models.BooleanField(default=False) - provides_operator = models.BooleanField(default=False) - provides_run = models.BooleanField(default=False) - provides_position = models.BooleanField(default=False) - provides_progression = models.BooleanField(default=False) - provides_occupancy = models.BooleanField(default=False) - provides_conditions = models.BooleanField(default=False) - provides_emissions = models.BooleanField(default=False) - provides_travelers = models.BooleanField(default=False) - provides_authorizations = models.BooleanField(default=False) - provides_fares = models.BooleanField(default=False) - provides_transfers = models.BooleanField(default=False) - provides_alerts = models.BooleanField(default=False) - # Registration + status = models.CharField( max_length=100, choices=[("ACTIVE", "Activo"), ("INACTIVE", "Inactivo")], @@ -169,41 +156,20 @@ def save(self, *args, **kwargs): model=self.model, os_version=self.os_version, app_version=self.app_version, - provides_vehicle=self.provides_vehicle, - provides_operator=self.provides_operator, - provides_run=self.provides_run, - provides_position=self.provides_position, - provides_progression=self.provides_progression, - provides_occupancy=self.provides_occupancy, - provides_conditions=self.provides_conditions, - provides_emissions=self.provides_emissions, - provides_travelers=self.provides_travelers, - provides_authorizations=self.provides_authorizations, - provides_fares=self.provides_fares, - provides_transfers=self.provides_transfers, - provides_alerts=self.provides_alerts, status=self.status, ) - def _str_(self): + def __str__(self): return f"{self.data_provider}: {self.brand} {self.model} ({self.id})" -class EquipmentLog(models.Model): - equipment = models.ForeignKey(Equipment, on_delete=models.PROTECT) - data_provider = models.ForeignKey( - DataProvider, on_delete=models.PROTECT, blank=True, null=True - ) - vehicle = models.ForeignKey( - Vehicle, on_delete=models.PROTECT, blank=True, null=True +class Sensor(models.Model): + id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) + name = models.CharField(max_length=100, blank=True, null=True) + equipment = models.ForeignKey( + Equipment, on_delete=models.PROTECT, blank=True, null=True ) - # Equipment information - serial_number = models.CharField(max_length=100, blank=True, null=True) - brand = models.CharField(max_length=100) - model = models.CharField(max_length=100) - os_version = models.CharField(max_length=100, blank=True, null=True) - app_version = models.CharField(max_length=100, blank=True, null=True) - # Data provided + # Data provided (type of sensor) provides_vehicle = models.BooleanField(default=False) provides_operator = models.BooleanField(default=False) provides_run = models.BooleanField(default=False) @@ -218,12 +184,47 @@ class EquipmentLog(models.Model): provides_transfers = models.BooleanField(default=False) provides_alerts = models.BooleanField(default=False) # Registration + source_type = models.CharField( + max_length=16, + blank=True, + null=True, + choices=[("mqtt", "MQTT"), ("http", "HTTP"), ("both", "Both")], + ) + source_http_url = models.URLField(blank=True, null=True) + source_json_mapping = models.JSONField(blank=True, null=True) + + status = models.CharField( + max_length=100, + choices=[("ACTIVE", "Activo"), ("INACTIVE", "Inactivo")], + default="ACTIVE", + ) + created_at = models.DateTimeField(auto_now_add=True) + updated_at = models.DateTimeField(auto_now=True) + + def __str__(self): + return f"{self.name} ({self.id})" + + +class EquipmentLog(models.Model): + equipment = models.ForeignKey(Equipment, on_delete=models.PROTECT) + data_provider = models.ForeignKey( + DataProvider, on_delete=models.PROTECT, blank=True, null=True + ) + vehicle = models.ForeignKey( + Vehicle, on_delete=models.PROTECT, blank=True, null=True + ) + # Equipment information + serial_number = models.CharField(max_length=100, blank=True, null=True) + brand = models.CharField(max_length=100) + model = models.CharField(max_length=100) + os_version = models.CharField(max_length=100, blank=True, null=True) + app_version = models.CharField(max_length=100, blank=True, null=True) status = models.CharField( max_length=100, choices=[("ACTIVE", "Activo"), ("INACTIVE", "Inactivo")], default="ACTIVE", ) - updated_at = models.DateTimeField(auto_now_add=True) + updated_at = models.DateTimeField(auto_now=True) - def _str_(self): + def __str__(self): return f"{self.data_provider}: {self.brand} {self.model} ({self.updated_at})" From 5e1c4198db52b1e4ec4600aa292d4f8a8144514c Mon Sep 17 00:00:00 2001 From: Jae Date: Tue, 21 Jul 2026 14:35:41 -0600 Subject: [PATCH 09/68] feat(operations): migrate Sensor model and drift reconciliation Generates the pending schema for the Sensor model (moved provides_* flags off Equipment/EquipmentLog) plus the Company.linked_agency ManyToMany conversion and Vehicle.status SOLD removal already present in models.py. --- ...move_equipment_provides_alerts_and_more.py | 191 ++++++++++++++++++ 1 file changed, 191 insertions(+) create mode 100644 backend/operations/migrations/0002_remove_equipment_provides_alerts_and_more.py diff --git a/backend/operations/migrations/0002_remove_equipment_provides_alerts_and_more.py b/backend/operations/migrations/0002_remove_equipment_provides_alerts_and_more.py new file mode 100644 index 0000000..3f6c664 --- /dev/null +++ b/backend/operations/migrations/0002_remove_equipment_provides_alerts_and_more.py @@ -0,0 +1,191 @@ +# Generated by Django 6.0.4 on 2026-07-21 20:33 + +import django.db.models.deletion +import uuid +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('feed', '0001_initial'), + ('operations', '0001_initial'), + ] + + operations = [ + migrations.RemoveField( + model_name='equipment', + name='provides_alerts', + ), + migrations.RemoveField( + model_name='equipment', + name='provides_authorizations', + ), + migrations.RemoveField( + model_name='equipment', + name='provides_conditions', + ), + migrations.RemoveField( + model_name='equipment', + name='provides_emissions', + ), + migrations.RemoveField( + model_name='equipment', + name='provides_fares', + ), + migrations.RemoveField( + model_name='equipment', + name='provides_occupancy', + ), + migrations.RemoveField( + model_name='equipment', + name='provides_operator', + ), + migrations.RemoveField( + model_name='equipment', + name='provides_position', + ), + migrations.RemoveField( + model_name='equipment', + name='provides_progression', + ), + migrations.RemoveField( + model_name='equipment', + name='provides_run', + ), + migrations.RemoveField( + model_name='equipment', + name='provides_transfers', + ), + migrations.RemoveField( + model_name='equipment', + name='provides_travelers', + ), + migrations.RemoveField( + model_name='equipment', + name='provides_vehicle', + ), + migrations.RemoveField( + model_name='equipmentlog', + name='provides_alerts', + ), + migrations.RemoveField( + model_name='equipmentlog', + name='provides_authorizations', + ), + migrations.RemoveField( + model_name='equipmentlog', + name='provides_conditions', + ), + migrations.RemoveField( + model_name='equipmentlog', + name='provides_emissions', + ), + migrations.RemoveField( + model_name='equipmentlog', + name='provides_fares', + ), + migrations.RemoveField( + model_name='equipmentlog', + name='provides_occupancy', + ), + migrations.RemoveField( + model_name='equipmentlog', + name='provides_operator', + ), + migrations.RemoveField( + model_name='equipmentlog', + name='provides_position', + ), + migrations.RemoveField( + model_name='equipmentlog', + name='provides_progression', + ), + migrations.RemoveField( + model_name='equipmentlog', + name='provides_run', + ), + migrations.RemoveField( + model_name='equipmentlog', + name='provides_transfers', + ), + migrations.RemoveField( + model_name='equipmentlog', + name='provides_travelers', + ), + migrations.RemoveField( + model_name='equipmentlog', + name='provides_vehicle', + ), + migrations.AddField( + model_name='company', + name='legal_id', + field=models.CharField(blank=True, max_length=100, null=True), + ), + migrations.AddField( + model_name='equipment', + name='name', + field=models.CharField(blank=True, max_length=100, null=True), + ), + migrations.AddField( + model_name='operator', + name='is_administrator', + field=models.BooleanField(default=False), + ), + migrations.AddField( + model_name='operator', + name='is_dispatcher', + field=models.BooleanField(default=False), + ), + migrations.AddField( + model_name='operator', + name='is_driver', + field=models.BooleanField(default=False), + ), + migrations.RemoveField( + model_name='company', + name='linked_agency', + ), + migrations.AlterField( + model_name='equipmentlog', + name='updated_at', + field=models.DateTimeField(auto_now=True), + ), + migrations.AlterField( + model_name='vehicle', + name='status', + field=models.CharField(blank=True, choices=[('IN_SERVICE', 'En servicio'), ('OUT_OF_SERVICE', 'Fuera de servicio'), ('ON_FIRE', 'En llamas')], max_length=100, null=True), + ), + migrations.CreateModel( + name='Sensor', + fields=[ + ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), + ('name', models.CharField(blank=True, max_length=100, null=True)), + ('provides_vehicle', models.BooleanField(default=False)), + ('provides_operator', models.BooleanField(default=False)), + ('provides_run', models.BooleanField(default=False)), + ('provides_position', models.BooleanField(default=False)), + ('provides_progression', models.BooleanField(default=False)), + ('provides_occupancy', models.BooleanField(default=False)), + ('provides_conditions', models.BooleanField(default=False)), + ('provides_emissions', models.BooleanField(default=False)), + ('provides_travelers', models.BooleanField(default=False)), + ('provides_authorizations', models.BooleanField(default=False)), + ('provides_fares', models.BooleanField(default=False)), + ('provides_transfers', models.BooleanField(default=False)), + ('provides_alerts', models.BooleanField(default=False)), + ('source_type', models.CharField(blank=True, choices=[('mqtt', 'MQTT'), ('http', 'HTTP'), ('both', 'Both')], max_length=16, null=True)), + ('source_http_url', models.URLField(blank=True, null=True)), + ('source_json_mapping', models.JSONField(blank=True, null=True)), + ('status', models.CharField(choices=[('ACTIVE', 'Activo'), ('INACTIVE', 'Inactivo')], default='ACTIVE', max_length=100)), + ('created_at', models.DateTimeField(auto_now_add=True)), + ('updated_at', models.DateTimeField(auto_now=True)), + ('equipment', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='operations.equipment')), + ], + ), + migrations.AddField( + model_name='company', + name='linked_agency', + field=models.ManyToManyField(blank=True, to='feed.agency'), + ), + ] From d4dd3f02e8492025a0db004bfd96a892f21cd6a4 Mon Sep 17 00:00:00 2001 From: Jae Date: Tue, 21 Jul 2026 14:35:47 -0600 Subject: [PATCH 10/68] feat(operations): register Sensor in the admin site --- backend/operations/admin.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/backend/operations/admin.py b/backend/operations/admin.py index 5dd46d4..eee055b 100644 --- a/backend/operations/admin.py +++ b/backend/operations/admin.py @@ -6,6 +6,7 @@ Company, Equipment, EquipmentLog, + Sensor, ) # Register your models here. @@ -16,3 +17,4 @@ admin.site.register(Company, admin.GISModelAdmin) admin.site.register(Equipment) admin.site.register(EquipmentLog) +admin.site.register(Sensor) From fdaaf15f56e2cff87e6478a1604c9e46b7249ab4 Mon Sep 17 00:00:00 2001 From: Jae Date: Tue, 21 Jul 2026 14:36:25 -0600 Subject: [PATCH 11/68] chore(config): add MQTT_HOST and MQTT_PORT env vars The telemetry publisher/consumer read these from the environment but they were never declared in the env files. --- .env.dev | 4 ++++ .env.example | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/.env.dev b/.env.dev index 2dce194..103485f 100644 --- a/.env.dev +++ b/.env.dev @@ -5,6 +5,10 @@ LOG_LEVEL=DEBUG CREATE_SUPERUSER=True RUN_MIGRATIONS=True +# MQTT Configuration +MQTT_HOST=telemetry-broker +MQTT_PORT=1883 + # ETA model registry (dev default; seed once with seed_baseline_model) MODEL_REGISTRY_DIR=eta_models ETA_MAX_STOPS=10 diff --git a/.env.example b/.env.example index 6da2348..23c41e2 100644 --- a/.env.example +++ b/.env.example @@ -25,6 +25,10 @@ REDIS_PASSWORD=redispassword # Google Maps API Key API_TOKEN= +# MQTT Configuration +MQTT_HOST=telemetry-broker +MQTT_PORT=1883 + # HiveMQ Configuration HIVEMQ_LOG_LEVEL=INFO From 4b13631e80ac0814250a42e984048d87079065ef Mon Sep 17 00:00:00 2001 From: Jae Date: Tue, 21 Jul 2026 14:36:41 -0600 Subject: [PATCH 12/68] feat(realtime): add pluggable HTTP telemetry source adapter package MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Introduces realtime_engine/sources/ — a registry of source adapters that fetch vehicle position data and normalize it into the shared position telemetry contract: - transforms.py: unit conversions (km/h->m/s, km->m) and Costa Rica local timestamp parsing ported from navsat-bridge, plus a dotted-path getter. - base.py: SourceAdapter protocol and a string-keyed adapter registry. - http_json.py: a generic HTTP+JSON adapter (kind="http") driven entirely by a sensor's source_http_url/source_json_mapping, so new HTTP feeds (e.g. NavSat) need no per-provider code. - publisher.py: paho-mqtt v2 publishing of normalized positions to transit/vehicle//position, matching the existing ingestion consumer. --- backend/realtime_engine/sources/__init__.py | 12 ++ backend/realtime_engine/sources/base.py | 54 ++++++ backend/realtime_engine/sources/http_json.py | 172 ++++++++++++++++++ backend/realtime_engine/sources/publisher.py | 78 ++++++++ backend/realtime_engine/sources/transforms.py | 64 +++++++ 5 files changed, 380 insertions(+) create mode 100644 backend/realtime_engine/sources/__init__.py create mode 100644 backend/realtime_engine/sources/base.py create mode 100644 backend/realtime_engine/sources/http_json.py create mode 100644 backend/realtime_engine/sources/publisher.py create mode 100644 backend/realtime_engine/sources/transforms.py diff --git a/backend/realtime_engine/sources/__init__.py b/backend/realtime_engine/sources/__init__.py new file mode 100644 index 0000000..e0ce08b --- /dev/null +++ b/backend/realtime_engine/sources/__init__.py @@ -0,0 +1,12 @@ +"""Pluggable telemetry source adapters. + +Importing this package registers all built-in adapters (currently the +generic HTTP+JSON adapter, kind ``"http"``) with the ``base`` registry, so +``get_adapter("http")`` works immediately after +``import realtime_engine.sources``. +""" + +from . import http_json # noqa: F401 -- import for its registration side effect +from .base import get_adapter, register + +__all__ = ["get_adapter", "register"] diff --git a/backend/realtime_engine/sources/base.py b/backend/realtime_engine/sources/base.py new file mode 100644 index 0000000..380f347 --- /dev/null +++ b/backend/realtime_engine/sources/base.py @@ -0,0 +1,54 @@ +"""Pluggable telemetry source adapter contract + registry. + +A ``SourceAdapter`` fetches raw vehicle telemetry from wherever a Sensor is +configured to read from (HTTP endpoint today; MQTT bridge, file, etc. could +follow) and normalizes it into ``(vehicle_id, position_payload)`` tuples +ready to be published on the MQTT topic ``transit/vehicle//position`` +(see ``publisher.py``). + +Kept tiny and dependency-free — no Django, no requests, no paho — so +importing this module never has side effects and adapters can be unit +tested without any I/O. +""" + +from __future__ import annotations + +from typing import Protocol + + +class SourceAdapter(Protocol): + def fetch(self, sensor) -> list[tuple[str, dict]]: + """Fetch and normalize telemetry for a sensor. + + Returns a list of ``(vehicle_id, position_payload)`` tuples. Each + payload is a dict shaped for + ``runs.domain.telemetry.position.validate_for_write`` (i.e. at + least ``latitude``/``longitude``, with any of ``bearing``, + ``speed``, ``odometer``, ``timestamp`` included only when known). + """ + ... + + +_REGISTRY: dict[str, SourceAdapter] = {} + + +def register(kind: str): + """Class/function decorator registering an adapter under ``kind``. + + Usable on a class (instantiated once at registration time) or on an + already-constructed adapter instance/function. + """ + + def _decorator(adapter): + _REGISTRY[kind] = adapter() if isinstance(adapter, type) else adapter + return adapter + + return _decorator + + +def get_adapter(kind: str) -> SourceAdapter: + """Look up a registered adapter by kind. Raises ``KeyError`` if unknown.""" + try: + return _REGISTRY[kind] + except KeyError as exc: + raise KeyError(f"No source adapter registered for kind={kind!r}") from exc diff --git a/backend/realtime_engine/sources/http_json.py b/backend/realtime_engine/sources/http_json.py new file mode 100644 index 0000000..11ddf50 --- /dev/null +++ b/backend/realtime_engine/sources/http_json.py @@ -0,0 +1,172 @@ +"""Generic HTTP+JSON telemetry source adapter. + +Registered under kind ``"http"``. Driven entirely by a Sensor's +``source_http_url`` and ``source_json_mapping`` fields — no per-provider +code is needed for JSON-over-HTTP feeds that fit the mapping schema below. + +Mapping schema (NavSat is the first concrete instance):: + + { + "type": "array", # or anything else for a single object + "paths": { + "vehicle_id": "plateNumber", + "timestamp": "crDateTime", + "lat": "latitude", + "lon": "longitude", + "speed": "speed", + "odometer": "odometer" + }, + "units": {"speed": "kmh", "odometer": "km"}, + "timestamp": {"format": "%Y-%m-%d %H:%M:%S", "tz": "America/Costa_Rica"} + } + +Only ``lat``/``lon`` are effectively required in ``paths`` — a record that +can't yield both is skipped. ``vehicle_id`` is resolved from the mapped +path when present; otherwise the adapter falls back to the sensor's own +equipment/vehicle association. Any malformed record is logged and skipped +rather than failing the whole batch. + +Django models are never imported here; ``sensor`` is accessed structurally +(duck-typed) and only inside ``fetch``, so this module stays importable and +testable without Django configured. +""" + +from __future__ import annotations + +import logging + +import requests + +from . import base +from .transforms import get_by_path, km_to_m, kmh_to_ms, parse_cr_datetime + +logger = logging.getLogger(__name__) + +DEFAULT_TIMEOUT_S = 10 + + +def _convert_unit(field: str, value, units: dict): + if value is None: + return None + unit = units.get(field) + if unit == "kmh": + return kmh_to_ms(float(value)) + if unit == "km": + return km_to_m(float(value)) + return value + + +def _extract_record(record: dict, mapping: dict) -> dict | None: + """Extract a position payload + vehicle_id (if mapped) from one record. + + Returns ``None`` when latitude/longitude can't be resolved — the caller + treats that as "skip this record". + """ + paths = mapping.get("paths", {}) + units = mapping.get("units", {}) + ts_cfg = mapping.get("timestamp", {}) + + lat_path = paths.get("lat") + lon_path = paths.get("lon") + lat = get_by_path(record, lat_path) if lat_path else None + lon = get_by_path(record, lon_path) if lon_path else None + if lat is None or lon is None: + return None + + payload: dict = { + "latitude": float(lat), + "longitude": float(lon), + } + + speed_path = paths.get("speed") + if speed_path: + raw_speed = get_by_path(record, speed_path) + converted = _convert_unit("speed", raw_speed, units) + if converted is not None: + payload["speed"] = converted + + odometer_path = paths.get("odometer") + if odometer_path: + raw_odometer = get_by_path(record, odometer_path) + converted = _convert_unit("odometer", raw_odometer, units) + if converted is not None: + payload["odometer"] = converted + + bearing_path = paths.get("bearing") + if bearing_path: + raw_bearing = get_by_path(record, bearing_path) + if raw_bearing is not None: + payload["bearing"] = float(raw_bearing) + + timestamp_path = paths.get("timestamp") + if timestamp_path: + raw_ts = get_by_path(record, timestamp_path) + if raw_ts is not None: + fmt = ts_cfg.get("format", "%Y-%m-%d %H:%M:%S") + tz = ts_cfg.get("tz", "America/Costa_Rica") + try: + payload["timestamp"] = parse_cr_datetime(str(raw_ts), fmt=fmt, tz=tz) + except (ValueError, TypeError): + logger.warning("Could not parse timestamp %r — omitting field", raw_ts) + + vehicle_id = None + vehicle_id_path = paths.get("vehicle_id") + if vehicle_id_path: + raw_vehicle_id = get_by_path(record, vehicle_id_path) + if raw_vehicle_id is not None: + vehicle_id = str(raw_vehicle_id) + + return {"vehicle_id": vehicle_id, "payload": payload} + + +@base.register("http") +class HttpJsonSourceAdapter: + """Fetches vehicle positions from a generic HTTP+JSON endpoint.""" + + def fetch(self, sensor) -> list[tuple[str, dict]]: + url = sensor.source_http_url + mapping = sensor.source_json_mapping or {} + + try: + response = requests.get(url, timeout=DEFAULT_TIMEOUT_S) + response.raise_for_status() + body = response.json() + except Exception: + logger.exception("HTTP telemetry fetch failed for url=%s", url) + return [] + + records = body if mapping.get("type", "array") == "array" else [body] + if not isinstance(records, list): + logger.warning( + "Expected a list of records for url=%s, got %s — skipping", + url, + type(records), + ) + return [] + + results: list[tuple[str, dict]] = [] + for record in records: + try: + if not isinstance(record, dict): + logger.warning("Skipping non-dict record: %r", record) + continue + + extracted = _extract_record(record, mapping) + if extracted is None: + logger.warning( + "Skipping record missing latitude/longitude: %r", record + ) + continue + + vehicle_id = extracted["vehicle_id"] + if not vehicle_id: + # Lazy access — never imported/evaluated at module scope, + # so this stays safe for isolated (non-DB) test runs. + vehicle_id = str(sensor.equipment.vehicle_id) + + results.append((vehicle_id, extracted["payload"])) + except Exception: + logger.exception("Skipping malformed record: %r", record) + continue + + return results diff --git a/backend/realtime_engine/sources/publisher.py b/backend/realtime_engine/sources/publisher.py new file mode 100644 index 0000000..c1ef34f --- /dev/null +++ b/backend/realtime_engine/sources/publisher.py @@ -0,0 +1,78 @@ +"""MQTT publishing for HTTP-sourced telemetry. + +Mirrors the paho-mqtt v2 client setup already used by the ingestion +consumer (``realtime_engine/mqtt.py``) so messages published from here land +on exactly the topics that consumer subscribes to: +``transit/vehicle//position``, QoS 0, not retained. +""" + +from __future__ import annotations + +import json +import logging +import os + +import paho.mqtt.client as mqtt + +logger = logging.getLogger(__name__) + +MQTT_HOST = os.getenv("MQTT_HOST", "telemetry-broker") +MQTT_PORT = int(os.getenv("MQTT_PORT", "1883")) + +POSITION_TOPIC_TEMPLATE = "transit/vehicle/{vehicle_id}/position" + + +def position_topic(vehicle_id: str) -> str: + return POSITION_TOPIC_TEMPLATE.format(vehicle_id=vehicle_id) + + +def publish_position(client: mqtt.Client, vehicle_id: str, payload: dict) -> None: + """Publish a single position payload for ``vehicle_id``. + + Catches and logs publish errors per-message so one bad publish doesn't + take down the rest of a batch. + """ + topic = position_topic(vehicle_id) + try: + client.publish(topic, json.dumps(payload), qos=0, retain=False) + except Exception: + logger.exception("Failed to publish position for vehicle %s", vehicle_id) + + +class MqttPublisher: + """Thin wrapper managing a paho v2 client's connect/publish/disconnect cycle.""" + + def __init__(self, host: str | None = None, port: int | None = None): + self.host = host or MQTT_HOST + self.port = port or MQTT_PORT + self._client: mqtt.Client | None = None + + def _build_client(self) -> mqtt.Client: + return mqtt.Client(mqtt.CallbackAPIVersion.VERSION2) + + def connect(self) -> None: + self._client = self._build_client() + self._client.connect(self.host, self.port, keepalive=60) + + def disconnect(self) -> None: + if self._client is None: + return + try: + self._client.disconnect() + except Exception: + logger.exception("Error disconnecting MQTT publisher client") + finally: + self._client = None + + def publish_batch(self, records: list[tuple[str, dict]]) -> None: + """Connect, publish every ``(vehicle_id, payload)`` record, then disconnect. + + Each record is published independently — a failure on one message + is logged (via ``publish_position``) without aborting the batch. + """ + self.connect() + try: + for vehicle_id, payload in records: + publish_position(self._client, vehicle_id, payload) + finally: + self.disconnect() diff --git a/backend/realtime_engine/sources/transforms.py b/backend/realtime_engine/sources/transforms.py new file mode 100644 index 0000000..cf242c6 --- /dev/null +++ b/backend/realtime_engine/sources/transforms.py @@ -0,0 +1,64 @@ +"""Pure data-shape helpers for HTTP telemetry sources. + +Ported from navsat-bridge's ``transforms`` module (``kmh_to_ms``, ``km_to_m``, +``parse_cr_datetime``) plus a small dotted-path getter used by the generic +HTTP+JSON adapter (``http_json.py``) to pull values out of arbitrary JSON +records. + +This module imports nothing beyond the stdlib, so it is safe to unit test +in isolation and safe to import from anywhere without pulling in Django, +requests, or paho-mqtt. +""" + +from __future__ import annotations + +from datetime import datetime +from zoneinfo import ZoneInfo + +DEFAULT_TZ = "America/Costa_Rica" +DEFAULT_DATETIME_FORMAT = "%Y-%m-%d %H:%M:%S" + + +def kmh_to_ms(speed_kmh: float) -> float: + """Kilometres per hour -> metres per second.""" + return speed_kmh / 3.6 + + +def km_to_m(odometer_km: float) -> float: + """Kilometres -> metres.""" + return odometer_km * 1000.0 + + +def parse_cr_datetime( + value: str, + fmt: str = DEFAULT_DATETIME_FORMAT, + tz: str = DEFAULT_TZ, +) -> int: + """Parse a naive local datetime string to Unix epoch seconds. + + Defaults match NavSat's naive ``America/Costa_Rica`` (UTC-6, no DST) + timestamps, but ``fmt``/``tz`` are overridable so the same helper can + serve any HTTP source whose mapping config specifies its own timestamp + shape. Raises ``ValueError`` on malformed or empty input. + """ + naive = datetime.strptime(value, fmt) + aware = naive.replace(tzinfo=ZoneInfo(tz)) + return int(aware.timestamp()) + + +def get_by_path(data: dict, path: str): + """Dotted-path getter over nested dicts, tolerant of missing keys. + + ``get_by_path({"a": {"b": 1}}, "a.b")`` -> ``1``. + Any missing key, non-dict intermediate value, or empty path yields + ``None`` instead of raising. + """ + if not path: + return None + current = data + for part in path.split("."): + if isinstance(current, dict) and part in current: + current = current[part] + else: + return None + return current From 67cbb723a27e77a6cbe768fa9d6ed78f0dca4e27 Mon Sep 17 00:00:00 2001 From: Jae Date: Tue, 21 Jul 2026 14:36:52 -0600 Subject: [PATCH 13/68] test(realtime): cover HTTP telemetry source adapters MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit DB-free unit tests for realtime_engine/sources/: unit conversions and timestamp parsing, the HTTP+JSON adapter (array and single-object bodies, unit conversion, malformed-record skipping, vehicle_id resolution from the mapped path vs. sensor fallback, and contract compliance with position.validate_for_write), and the MQTT publisher (topic/payload shape, paho v2 client setup, batch publish/disconnect, per-message error handling). Sensors are faked with SimpleNamespace and requests.get/paho are monkeypatched — no HTTP, MQTT, or database access. --- .../realtime_engine/sources/tests/__init__.py | 0 .../sources/tests/test_http_json.py | 223 ++++++++++++++++++ .../sources/tests/test_publisher.py | 124 ++++++++++ .../sources/tests/test_transforms.py | 94 ++++++++ 4 files changed, 441 insertions(+) create mode 100644 backend/realtime_engine/sources/tests/__init__.py create mode 100644 backend/realtime_engine/sources/tests/test_http_json.py create mode 100644 backend/realtime_engine/sources/tests/test_publisher.py create mode 100644 backend/realtime_engine/sources/tests/test_transforms.py diff --git a/backend/realtime_engine/sources/tests/__init__.py b/backend/realtime_engine/sources/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/realtime_engine/sources/tests/test_http_json.py b/backend/realtime_engine/sources/tests/test_http_json.py new file mode 100644 index 0000000..e76430d --- /dev/null +++ b/backend/realtime_engine/sources/tests/test_http_json.py @@ -0,0 +1,223 @@ +"""Unit tests for the generic HTTP+JSON source adapter (kind="http"). + +No real HTTP, no Django ORM: ``requests.get`` is monkeypatched to return a +fake response, and the "sensor" is a lightweight ``SimpleNamespace`` rather +than the real Django model — this adapter only ever touches +``sensor.source_http_url``, ``sensor.source_json_mapping``, and (as a +fallback) ``sensor.equipment.vehicle_id``, all accessed structurally. +""" + +from types import SimpleNamespace + +import pytest + +from realtime_engine.sources import http_json +from runs.domain.telemetry import position + +NAVSAT_MAPPING = { + "type": "array", + "paths": { + "vehicle_id": "plateNumber", + "timestamp": "crDateTime", + "lat": "latitude", + "lon": "longitude", + "speed": "speed", + "odometer": "odometer", + }, + "units": {"speed": "kmh", "odometer": "km"}, + "timestamp": {"format": "%Y-%m-%d %H:%M:%S", "tz": "America/Costa_Rica"}, +} + +SAMPLE_RECORD = { + "plateNumber": "299-1014", + "crDateTime": "2026-07-21 14:19:19", + "latitude": 9.9355516, + "longitude": -84.0490749, + "odometer": 114879, + "speed": 0, +} + + +class FakeResponse: + def __init__(self, data): + self._data = data + + def raise_for_status(self): + pass + + def json(self): + return self._data + + +def _make_sensor(mapping=NAVSAT_MAPPING, url="http://navsat.example/positions", vehicle_id="fallback-veh"): + return SimpleNamespace( + source_http_url=url, + source_json_mapping=mapping, + equipment=SimpleNamespace(vehicle_id=vehicle_id), + ) + + +# --------------------------------------------------------------------------- +# Array handling, multiple records +# --------------------------------------------------------------------------- + + +def test_fetch_array_with_multiple_records(monkeypatch): + second_record = {**SAMPLE_RECORD, "plateNumber": "299-2020", "speed": 36} + + def fake_get(url, timeout): + return FakeResponse([SAMPLE_RECORD, second_record]) + + monkeypatch.setattr(http_json.requests, "get", fake_get) + + sensor = _make_sensor() + results = http_json.HttpJsonSourceAdapter().fetch(sensor) + + assert len(results) == 2 + vehicle_ids = {vid for vid, _ in results} + assert vehicle_ids == {"299-1014", "299-2020"} + + +# --------------------------------------------------------------------------- +# Single-object (non-array) handling +# --------------------------------------------------------------------------- + + +def test_fetch_single_object_body(monkeypatch): + mapping = {**NAVSAT_MAPPING, "type": "object"} + + def fake_get(url, timeout): + return FakeResponse(SAMPLE_RECORD) + + monkeypatch.setattr(http_json.requests, "get", fake_get) + + sensor = _make_sensor(mapping=mapping) + results = http_json.HttpJsonSourceAdapter().fetch(sensor) + + assert len(results) == 1 + vehicle_id, payload = results[0] + assert vehicle_id == "299-1014" + assert payload["latitude"] == pytest.approx(9.9355516) + assert payload["longitude"] == pytest.approx(-84.0490749) + + +# --------------------------------------------------------------------------- +# Field extraction + unit conversion +# --------------------------------------------------------------------------- + + +def test_fetch_converts_units_correctly(monkeypatch): + record = {**SAMPLE_RECORD, "speed": 36, "odometer": 112} + + def fake_get(url, timeout): + return FakeResponse([record]) + + monkeypatch.setattr(http_json.requests, "get", fake_get) + + sensor = _make_sensor() + results = http_json.HttpJsonSourceAdapter().fetch(sensor) + + assert len(results) == 1 + _, payload = results[0] + assert payload["speed"] == pytest.approx(10.0) # 36 km/h -> 10.0 m/s + assert payload["odometer"] == pytest.approx(112_000.0) # 112 km -> 112000 m + assert isinstance(payload["timestamp"], int) + assert payload["timestamp"] > 0 + + +# --------------------------------------------------------------------------- +# Malformed record skipped without killing the batch +# --------------------------------------------------------------------------- + + +def test_fetch_skips_malformed_record_without_failing_batch(monkeypatch): + good_record = SAMPLE_RECORD + missing_latlon = {"plateNumber": "BAD-1", "crDateTime": "2026-07-21 14:19:19"} + bad_timestamp = {**SAMPLE_RECORD, "plateNumber": "BAD-2", "crDateTime": "not-a-date"} + non_dict_record = "this is not a record" + + def fake_get(url, timeout): + return FakeResponse([good_record, missing_latlon, bad_timestamp, non_dict_record]) + + monkeypatch.setattr(http_json.requests, "get", fake_get) + + sensor = _make_sensor() + results = http_json.HttpJsonSourceAdapter().fetch(sensor) + + vehicle_ids = {vid for vid, _ in results} + # missing_latlon is dropped entirely (no lat/lon). + assert "BAD-1" not in vehicle_ids + # bad_timestamp keeps its lat/lon; only the timestamp field is omitted. + assert "BAD-2" in vehicle_ids + bad_ts_payload = next(p for vid, p in results if vid == "BAD-2") + assert "timestamp" not in bad_ts_payload + # The good record still comes through. + assert good_record["plateNumber"] in vehicle_ids + + +def test_fetch_http_error_returns_empty_list(monkeypatch): + def fake_get(url, timeout): + raise ConnectionError("boom") + + monkeypatch.setattr(http_json.requests, "get", fake_get) + + sensor = _make_sensor() + results = http_json.HttpJsonSourceAdapter().fetch(sensor) + + assert results == [] + + +# --------------------------------------------------------------------------- +# vehicle_id resolution: mapped path vs. sensor fallback +# --------------------------------------------------------------------------- + + +def test_fetch_uses_vehicle_id_from_mapped_path(monkeypatch): + def fake_get(url, timeout): + return FakeResponse([SAMPLE_RECORD]) + + monkeypatch.setattr(http_json.requests, "get", fake_get) + + sensor = _make_sensor(vehicle_id="should-not-be-used") + results = http_json.HttpJsonSourceAdapter().fetch(sensor) + + vehicle_id, _ = results[0] + assert vehicle_id == "299-1014" + + +def test_fetch_falls_back_to_sensor_equipment_vehicle_id_when_no_mapping(monkeypatch): + mapping = {**NAVSAT_MAPPING, "paths": {k: v for k, v in NAVSAT_MAPPING["paths"].items() if k != "vehicle_id"}} + + def fake_get(url, timeout): + return FakeResponse([SAMPLE_RECORD]) + + monkeypatch.setattr(http_json.requests, "get", fake_get) + + sensor = _make_sensor(mapping=mapping, vehicle_id="fallback-veh-123") + results = http_json.HttpJsonSourceAdapter().fetch(sensor) + + vehicle_id, _ = results[0] + assert vehicle_id == "fallback-veh-123" + + +# --------------------------------------------------------------------------- +# Contract compliance: produced payloads must pass position.validate_for_write +# --------------------------------------------------------------------------- + + +def test_fetch_produces_payloads_valid_for_position_contract(monkeypatch): + record = {**SAMPLE_RECORD, "speed": 36, "odometer": 112} + + def fake_get(url, timeout): + return FakeResponse([record]) + + monkeypatch.setattr(http_json.requests, "get", fake_get) + + sensor = _make_sensor() + results = http_json.HttpJsonSourceAdapter().fetch(sensor) + + _, payload = results[0] + # Must not raise -- validates required lat/lon and coercible optionals. + mapping = position.validate_for_write(payload) + assert "latitude" in mapping + assert "longitude" in mapping diff --git a/backend/realtime_engine/sources/tests/test_publisher.py b/backend/realtime_engine/sources/tests/test_publisher.py new file mode 100644 index 0000000..c079dfb --- /dev/null +++ b/backend/realtime_engine/sources/tests/test_publisher.py @@ -0,0 +1,124 @@ +"""Unit tests for realtime_engine.sources.publisher. + +No real MQTT broker: the paho client is a MagicMock throughout, and +``MqttPublisher._build_client`` is monkeypatched so ``connect()`` never +touches the network. +""" + +import json +from unittest.mock import MagicMock, call + +from realtime_engine.sources import publisher + + +# --------------------------------------------------------------------------- +# publish_position +# --------------------------------------------------------------------------- + + +def test_publish_position_uses_correct_topic_and_json_body(): + client = MagicMock() + payload = {"latitude": 9.93, "longitude": -84.05, "speed": 10.0} + + publisher.publish_position(client, "299-1014", payload) + + client.publish.assert_called_once_with( + "transit/vehicle/299-1014/position", + json.dumps(payload), + qos=0, + retain=False, + ) + + +def test_publish_position_swallows_client_errors(): + client = MagicMock() + client.publish.side_effect = RuntimeError("broker unreachable") + + # Must not raise. + publisher.publish_position(client, "299-1014", {"latitude": 1.0, "longitude": 2.0}) + + +def test_position_topic_format(): + assert publisher.position_topic("abc-123") == "transit/vehicle/abc-123/position" + + +# --------------------------------------------------------------------------- +# MqttPublisher lifecycle +# --------------------------------------------------------------------------- + + +def test_mqtt_publisher_connect_builds_client_and_connects(monkeypatch): + mock_client = MagicMock() + pub = publisher.MqttPublisher(host="broker-host", port=1884) + monkeypatch.setattr(pub, "_build_client", lambda: mock_client) + + pub.connect() + + mock_client.connect.assert_called_once_with("broker-host", 1884, keepalive=60) + + +def test_mqtt_publisher_disconnect_is_safe_when_not_connected(): + pub = publisher.MqttPublisher() + # Must not raise even though connect() was never called. + pub.disconnect() + + +def test_mqtt_publisher_publish_batch_connects_publishes_all_then_disconnects(monkeypatch): + mock_client = MagicMock() + pub = publisher.MqttPublisher() + monkeypatch.setattr(pub, "_build_client", lambda: mock_client) + + records = [ + ("veh-1", {"latitude": 1.0, "longitude": 2.0}), + ("veh-2", {"latitude": 3.0, "longitude": 4.0}), + ] + pub.publish_batch(records) + + mock_client.connect.assert_called_once() + assert mock_client.publish.call_count == 2 + mock_client.publish.assert_has_calls( + [ + call( + "transit/vehicle/veh-1/position", + json.dumps({"latitude": 1.0, "longitude": 2.0}), + qos=0, + retain=False, + ), + call( + "transit/vehicle/veh-2/position", + json.dumps({"latitude": 3.0, "longitude": 4.0}), + qos=0, + retain=False, + ), + ] + ) + mock_client.disconnect.assert_called_once() + + +def test_mqtt_publisher_publish_batch_disconnects_even_if_publish_raises(monkeypatch): + mock_client = MagicMock() + mock_client.publish.side_effect = RuntimeError("boom") + pub = publisher.MqttPublisher() + monkeypatch.setattr(pub, "_build_client", lambda: mock_client) + + # publish_position catches the error internally, so this must not raise, + # and disconnect must still be called. + pub.publish_batch([("veh-1", {"latitude": 1.0, "longitude": 2.0})]) + + mock_client.disconnect.assert_called_once() + + +def test_build_client_uses_paho_v2_callback_api(monkeypatch): + captured = {} + + class FakeClient: + def __init__(self, callback_api_version): + captured["callback_api_version"] = callback_api_version + + monkeypatch.setattr(publisher.mqtt, "Client", FakeClient) + + pub = publisher.MqttPublisher() + client = pub._build_client() + + assert isinstance(client, FakeClient) + assert captured["callback_api_version"] == publisher.mqtt.CallbackAPIVersion.VERSION2 diff --git a/backend/realtime_engine/sources/tests/test_transforms.py b/backend/realtime_engine/sources/tests/test_transforms.py new file mode 100644 index 0000000..2b799b1 --- /dev/null +++ b/backend/realtime_engine/sources/tests/test_transforms.py @@ -0,0 +1,94 @@ +"""Unit conversion + parsing invariants for realtime_engine.sources.transforms. + +Pure functions, no Django/Redis/HTTP required. Mirrors the coverage of the +navsat-bridge transforms tests these were ported from. +""" + +from datetime import UTC, datetime + +import pytest + +from realtime_engine.sources.transforms import get_by_path, km_to_m, kmh_to_ms, parse_cr_datetime + + +# --------------------------------------------------------------------------- +# kmh_to_ms / km_to_m +# --------------------------------------------------------------------------- + + +@pytest.mark.parametrize( + "kmh, ms", + [ + (0, 0.0), + (36, 10.0), # classic sanity pair + (90, 25.0), + (100, 27.77777777777778), + ], +) +def test_kmh_to_ms(kmh, ms): + assert kmh_to_ms(kmh) == pytest.approx(ms) + + +@pytest.mark.parametrize( + "km, m", + [ + (0, 0.0), + (1, 1000.0), + (112, 112_000.0), # NavSat odometer example + ], +) +def test_km_to_m(km, m): + assert km_to_m(km) == pytest.approx(m) + + +# --------------------------------------------------------------------------- +# parse_cr_datetime +# --------------------------------------------------------------------------- + + +def test_parse_cr_datetime_known_value(): + # 2026-07-21 14:19:19 America/Costa_Rica (UTC-6, no DST) + # = 2026-07-21 20:19:19 UTC + epoch = parse_cr_datetime("2026-07-21 14:19:19") + expected = datetime(2026, 7, 21, 20, 19, 19, tzinfo=UTC).timestamp() + assert epoch == int(expected) + + +def test_parse_cr_datetime_rejects_garbage(): + with pytest.raises(ValueError): + parse_cr_datetime("not a datetime") + + +def test_parse_cr_datetime_honors_custom_format_and_tz(): + # ISO-ish format, UTC — sanity check that fmt/tz are actually threaded through. + epoch = parse_cr_datetime("2026-01-01T00:00:00", fmt="%Y-%m-%dT%H:%M:%S", tz="UTC") + assert epoch == int(datetime(2026, 1, 1, tzinfo=UTC).timestamp()) + + +# --------------------------------------------------------------------------- +# get_by_path +# --------------------------------------------------------------------------- + + +def test_get_by_path_top_level_hit(): + assert get_by_path({"latitude": 9.93}, "latitude") == 9.93 + + +def test_get_by_path_nested_hit(): + assert get_by_path({"a": {"b": {"c": 42}}}, "a.b.c") == 42 + + +def test_get_by_path_missing_key_returns_none(): + assert get_by_path({"a": 1}, "b") is None + + +def test_get_by_path_missing_nested_key_returns_none(): + assert get_by_path({"a": {"b": 1}}, "a.x.y") is None + + +def test_get_by_path_non_dict_intermediate_returns_none(): + assert get_by_path({"a": 5}, "a.b") is None + + +def test_get_by_path_empty_path_returns_none(): + assert get_by_path({"a": 1}, "") is None From 117f394184fff72249d4f46eb2f2faae99cbf1b2 Mon Sep 17 00:00:00 2001 From: Jae Date: Tue, 21 Jul 2026 14:59:59 -0600 Subject: [PATCH 14/68] feat(realtime): add fetch_positions task for HTTP telemetry sources Polls ACTIVE Sensor rows configured for HTTP position feeds (source_type "http" or "both"), fetches readings via the pluggable adapter registry, keeps only readings for vehicles currently running (per runs:in_progress), and publishes the survivors on transit/vehicle//position. Per-sensor failures are caught and logged so one bad source can't sink the poll. --- backend/realtime_engine/tasks.py | 65 ++++++ .../tests/test_fetch_positions.py | 185 ++++++++++++++++++ 2 files changed, 250 insertions(+) create mode 100644 backend/realtime_engine/tests/test_fetch_positions.py diff --git a/backend/realtime_engine/tasks.py b/backend/realtime_engine/tasks.py index acf981f..de4acbe 100644 --- a/backend/realtime_engine/tasks.py +++ b/backend/realtime_engine/tasks.py @@ -66,6 +66,71 @@ def scan_stale_runs() -> str: return f"scan_stale_runs: checked {len(run_ids)} runs, fired {fired} events" +@shared_task(queue="realtime_engine") +def fetch_positions() -> str: + """Poll active HTTP telemetry sources and publish in-service vehicle positions. + + 1. Build the in-service vehicle-id set: every run in ``runs:in_progress`` + contributes the ``vehicle`` field of its ``run:`` hash. + 2. Query ACTIVE sensors that provide position data over HTTP (source_type + "http" or "both" both use the "http" adapter). + 3. Fetch each sensor's readings, keep only the ones for in-service + vehicles, and publish the survivors on ``transit/vehicle//position``. + + Each sensor is fetched independently inside its own try/except so one + failing source can't sink the rest of the poll. + """ + from operations.models import Sensor + from runs.domain.telemetry import keys + from realtime_engine.sources import get_adapter + from realtime_engine.sources.publisher import MqttPublisher + + run_ids = redis_client.smembers("runs:in_progress") + in_service_vehicle_ids: set[str] = set() + for run_id in run_ids: + run_data = redis_client.hgetall(keys.run_key(run_id)) + vehicle_id = run_data.get("vehicle") + if vehicle_id: + in_service_vehicle_ids.add(vehicle_id) + + sensors = Sensor.objects.filter( + status="ACTIVE", + provides_position=True, + source_type__in=["http", "both"], + ).select_related("equipment__vehicle") + + readings: list[tuple[str, dict]] = [] + sensor_count = 0 + failure_count = 0 + for sensor in sensors: + sensor_count += 1 + try: + adapter = get_adapter("http") + fetched = adapter.fetch(sensor) + except Exception: + failure_count += 1 + logger.exception( + "Position fetch failed for sensor %s", getattr(sensor, "id", "?") + ) + continue + + for vehicle_id, payload in fetched: + if vehicle_id in in_service_vehicle_ids: + readings.append((vehicle_id, payload)) + + if readings: + try: + MqttPublisher().publish_batch(readings) + except Exception: + failure_count += 1 + logger.exception("Failed to publish fetched positions batch") + + return ( + f"fetch_positions: polled {sensor_count} sensors, " + f"{failure_count} failures, published {len(readings)} positions" + ) + + @shared_task(queue="realtime_engine") def process_position_update(run_id: str, vehicle_id: str) -> None: """Run server-side producers and detection for a position update. diff --git a/backend/realtime_engine/tests/test_fetch_positions.py b/backend/realtime_engine/tests/test_fetch_positions.py new file mode 100644 index 0000000..4e6c89f --- /dev/null +++ b/backend/realtime_engine/tests/test_fetch_positions.py @@ -0,0 +1,185 @@ +"""Unit tests for realtime_engine.tasks.fetch_positions. + +No live database and no real MQTT broker: ``Sensor.objects`` is monkeypatched +to return fake ``SimpleNamespace`` sensors (never touching Postgres), the +adapter registry (``realtime_engine.sources.get_adapter``) and the publisher +(``realtime_engine.sources.publisher.MqttPublisher``) are monkeypatched, and +the module-level ``redis_client`` is replaced with a ``MagicMock`` — matching +the same patch targets already used by ``test_mqtt_ingestion.py`` for this +module. + +Importing ``realtime_engine.tasks`` pulls in the full Django app registry +(pre-existing, via ``runs.services.lifecycle.RunLifecycleService`` at module +scope) so this file needs ``DEBUG`` and ``DJANGO_SETTINGS_MODULE`` set, same +as ``test_mqtt_ingestion.py`` in this same directory -- run it with e.g. +``DEBUG=True DJANGO_SETTINGS_MODULE=databus.settings uv run pytest +realtime_engine/tests/test_fetch_positions.py``. No test here ever queries a +real database. +""" + +from types import SimpleNamespace +from unittest.mock import MagicMock + +from operations.models import Sensor + +import realtime_engine.sources as sources_module +import realtime_engine.sources.publisher as publisher_module +import realtime_engine.tasks as tasks_module +from realtime_engine.tasks import fetch_positions +from runs.domain.telemetry import keys + +RUN_ID = "run-1" +IN_SERVICE_VEHICLE_ID = "veh-in-service" +OUT_OF_SERVICE_VEHICLE_ID = "veh-out-of-service" + + +def _make_sensor(sensor_id="sensor-1"): + return SimpleNamespace( + id=sensor_id, + source_http_url="http://example.test/positions", + source_json_mapping={}, + equipment=SimpleNamespace(vehicle_id=IN_SERVICE_VEHICLE_ID), + ) + + +def _fake_redis(run_ids=(RUN_ID,), vehicle_by_run=None) -> MagicMock: + """Redis mock: runs:in_progress -> run_ids, run: hash -> {'vehicle': ...}.""" + vehicle_by_run = vehicle_by_run or {RUN_ID: IN_SERVICE_VEHICLE_ID} + r = MagicMock() + r.smembers.return_value = set(run_ids) + + def _hgetall(key): + for run_id, vehicle_id in vehicle_by_run.items(): + if key == keys.run_key(run_id): + return {"vehicle": vehicle_id} + return {} + + r.hgetall.side_effect = _hgetall + return r + + +def _fake_sensor_manager(sensors): + """A MagicMock standing in for Sensor.objects supporting filter().select_related().""" + manager = MagicMock() + manager.filter.return_value.select_related.return_value = sensors + return manager + + +# --------------------------------------------------------------------------- +# Only in-service vehicles get published; out-of-service readings are dropped +# --------------------------------------------------------------------------- + + +def test_fetch_positions_filters_out_of_service_vehicles(monkeypatch): + fake_r = _fake_redis() + monkeypatch.setattr(tasks_module, "redis_client", fake_r) + + sensor = _make_sensor() + monkeypatch.setattr(Sensor, "objects", _fake_sensor_manager([sensor])) + + fake_adapter = MagicMock() + fake_adapter.fetch.return_value = [ + (IN_SERVICE_VEHICLE_ID, {"latitude": 1.0, "longitude": 2.0}), + (OUT_OF_SERVICE_VEHICLE_ID, {"latitude": 3.0, "longitude": 4.0}), + ] + monkeypatch.setattr(sources_module, "get_adapter", lambda kind: fake_adapter) + + fake_publisher = MagicMock() + monkeypatch.setattr( + publisher_module, "MqttPublisher", lambda: fake_publisher + ) + + result = fetch_positions() + + fake_publisher.publish_batch.assert_called_once() + (published_records,), _ = fake_publisher.publish_batch.call_args + published_vehicle_ids = {vid for vid, _ in published_records} + assert published_vehicle_ids == {IN_SERVICE_VEHICLE_ID} + assert "published 1" in result + + +def test_fetch_positions_skips_publish_when_no_in_service_readings(monkeypatch): + fake_r = _fake_redis() + monkeypatch.setattr(tasks_module, "redis_client", fake_r) + + sensor = _make_sensor() + monkeypatch.setattr(Sensor, "objects", _fake_sensor_manager([sensor])) + + fake_adapter = MagicMock() + fake_adapter.fetch.return_value = [ + (OUT_OF_SERVICE_VEHICLE_ID, {"latitude": 3.0, "longitude": 4.0}), + ] + monkeypatch.setattr(sources_module, "get_adapter", lambda kind: fake_adapter) + + fake_publisher = MagicMock() + monkeypatch.setattr( + publisher_module, "MqttPublisher", lambda: fake_publisher + ) + + result = fetch_positions() + + fake_publisher.publish_batch.assert_not_called() + assert "published 0" in result + + +# --------------------------------------------------------------------------- +# A raising source is isolated -- the task still succeeds and other sensors' +# readings still get published. +# --------------------------------------------------------------------------- + + +def test_fetch_positions_isolates_a_raising_sensor(monkeypatch): + fake_r = _fake_redis() + monkeypatch.setattr(tasks_module, "redis_client", fake_r) + + good_sensor = _make_sensor(sensor_id="sensor-good") + bad_sensor = _make_sensor(sensor_id="sensor-bad") + monkeypatch.setattr( + Sensor, "objects", _fake_sensor_manager([bad_sensor, good_sensor]) + ) + + fake_adapter = MagicMock() + + def _fetch(sensor): + if sensor.id == "sensor-bad": + raise ConnectionError("upstream is down") + return [(IN_SERVICE_VEHICLE_ID, {"latitude": 1.0, "longitude": 2.0})] + + fake_adapter.fetch.side_effect = _fetch + monkeypatch.setattr(sources_module, "get_adapter", lambda kind: fake_adapter) + + fake_publisher = MagicMock() + monkeypatch.setattr( + publisher_module, "MqttPublisher", lambda: fake_publisher + ) + + # Must not raise even though one sensor's fetch blows up. + result = fetch_positions() + + fake_publisher.publish_batch.assert_called_once() + (published_records,), _ = fake_publisher.publish_batch.call_args + assert [vid for vid, _ in published_records] == [IN_SERVICE_VEHICLE_ID] + assert "polled 2 sensors" in result + assert "1 failures" in result + + +def test_fetch_positions_queries_only_active_http_position_sensors(monkeypatch): + """Sanity-check the filter kwargs passed to Sensor.objects.filter.""" + fake_r = _fake_redis(run_ids=()) + monkeypatch.setattr(tasks_module, "redis_client", fake_r) + + manager = _fake_sensor_manager([]) + monkeypatch.setattr(Sensor, "objects", manager) + monkeypatch.setattr(sources_module, "get_adapter", lambda kind: MagicMock()) + monkeypatch.setattr(publisher_module, "MqttPublisher", lambda: MagicMock()) + + fetch_positions() + + manager.filter.assert_called_once_with( + status="ACTIVE", + provides_position=True, + source_type__in=["http", "both"], + ) + manager.filter.return_value.select_related.assert_called_once_with( + "equipment__vehicle" + ) From c6c5e373e168dcd35d5d3894972597c8e11ceaee Mon Sep 17 00:00:00 2001 From: Jae Date: Tue, 21 Jul 2026 15:00:15 -0600 Subject: [PATCH 15/68] feat(celery): schedule fetch_positions every 10 seconds Wires the new HTTP telemetry poll into beat alongside the other realtime_engine periodic tasks. --- backend/databus/celery.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/backend/databus/celery.py b/backend/databus/celery.py index 9cd91fb..0621e44 100644 --- a/backend/databus/celery.py +++ b/backend/databus/celery.py @@ -50,4 +50,8 @@ def debug_task(self): "task": "realtime_engine.tasks.scan_stale_runs", "schedule": timedelta(seconds=30), }, + "fetch-positions": { + "task": "realtime_engine.tasks.fetch_positions", + "schedule": timedelta(seconds=10), + }, } From 33012144fafce37d266112ba092b4acc36d62807 Mon Sep 17 00:00:00 2001 From: Jae Date: Tue, 21 Jul 2026 15:00:27 -0600 Subject: [PATCH 16/68] chore(schedule_engine): drop obsolete telemetry fetch sketch fetch_position, fetch_and_publish, and update_gtfs_realtime were an early sketch superseded by the pluggable HTTP source adapters and the new realtime_engine.tasks.fetch_positions task. Removes the now-unused requests/paho/Vehicle/chord/group imports along with them; the legitimate builder tasks are untouched. --- backend/schedule_engine/tasks.py | 103 +------------------------------ 1 file changed, 1 insertion(+), 102 deletions(-) diff --git a/backend/schedule_engine/tasks.py b/backend/schedule_engine/tasks.py index 86a1aea..fdea835 100644 --- a/backend/schedule_engine/tasks.py +++ b/backend/schedule_engine/tasks.py @@ -1,5 +1,5 @@ import os -from celery import chord, group, shared_task +from celery import shared_task from channels.layers import get_channel_layer from asgiref.sync import async_to_sync import json @@ -9,12 +9,6 @@ from google.transit import gtfs_realtime_pb2 as gtfs_rt from google.protobuf import json_format -# Probably needed imports for telemetry fetching -import requests -import paho.mqtt.client as mqtt -from operations.models import Vehicle - - from .builders import ( build_vehicle_positions_feed, build_trip_updates_feed, @@ -103,101 +97,6 @@ def build_trip_updates(): return f"TripUpdates built: {len(feed_message['entity'])} entities" -def fetch_and_publish(vehicle): - response = requests.get(vehicle.position_source_url, timeout=10) - response.raise_for_status() - data = response.json() - - # Extract relevant fields from the JSON response using the position_source_paths mapping - timestamp = data.get(vehicle.position_source_paths.get("paths").get("timestamp")) - lat = data.get(vehicle.position_source_paths.get("paths").get("lat")) - lon = data.get(vehicle.position_source_paths.get("paths").get("lon")) - speed = data.get(vehicle.position_source_paths.get("paths").get("speed")) - - # Publish to MQTT broker - mqtt_client = mqtt.Client() - mqtt_client.connect(settings.MQTT_BROKER_HOST, settings.MQTT_BROKER_PORT, 60) - topic = f"vehicle/{vehicle.id}/position" - payload = json.dumps( - {"timestamp": timestamp, "lat": lat, "lon": lon, "speed": speed} - ) - mqtt_client.publish(topic, payload) - mqtt_client.disconnect() - return None - - -@shared_task(queue="schedule_engine") -def fetch_position(): - """ - Fetch telemetry position data from configured sources. - - Using the TelemetrySources model, this task retrieves telemetry data from various sources. - - The retrieved data is then processed relayed to the MQTT broker for further use in the system. - - type: array - vehicle_id: JSON PATH - timestamp: JSON PATH element.crDateTime - lat: JSON PATH - lon: JSON PATH - speed: JSON PATH - - position_source_paths = { - "type": "array", - "paths": { - "vehicle_id": "plateNumber", - "timestamp": "crDateTime", - "lat": "latitude", - "lon": "longitude", - "speed": "speed" - } - } - - Publish to MQTT broker at topic: vehicle//position with payload: - { - "timestamp": , - "lat": , - "lon": , - "speed": - } - """ - vehicles_in_runs_in_progress = get_redis().smembers("runs:in_progress") - for vehicle_in_progress in vehicles_in_runs_in_progress: - vehicle = Vehicle.objects.get(id=vehicle_in_progress) - if vehicle.position_source_type == "mqtt": - # Check if the vehicle has updated positions in Redis - position_data = get_redis().get(f"vehicle:{vehicle.id}:position") - if position_data: - continue # Position data already exists, skip fetching - elif vehicle.position_source_type == "both": - try: - fetch_and_publish(vehicle) - except requests.RequestException as e: - print(f"Error fetching position for vehicle {vehicle.id}: {e}") - except Exception as e: - print(f"Unexpected error for vehicle {vehicle.id}: {e}") - elif vehicle.position_source_type == "http": - try: - fetch_and_publish(vehicle) - except requests.RequestException as e: - print(f"Error fetching position for vehicle {vehicle.id}: {e}") - except Exception as e: - print(f"Unexpected error for vehicle {vehicle.id}: {e}") - return "Position data fetched and published to MQTT broker" - - @shared_task(queue="schedule_engine") def build_alerts(): return "Feed ServiceAlert built" - - -@shared_task(queue="schedule_engine") -def update_gtfs_realtime(): - - fetching = group(fetch_position.s()) - building = group( - build_vehicle_positions.s(), build_trip_updates.s(), build_alerts.s() - ) - workflow = chord(fetching)(building) - - return workflow.id From 567ef6867188fc8fb796b1bcd98a203f04259dec Mon Sep 17 00:00:00 2001 From: Jae Date: Tue, 21 Jul 2026 15:01:02 -0600 Subject: [PATCH 17/68] chore(operations): regenerate migrations at container start operations/migrations was force-committed against the repo's convention of gitignoring migrations/ and regenerating them at container start, and it was missing from that regen list. Untracks the committed migration (it stays on disk, now gitignored like its siblings) and adds "operations" to APPS_TO_MIGRATE in docker-entrypoint.sh. --- backend/docker-entrypoint.sh | 2 +- ...move_equipment_provides_alerts_and_more.py | 191 ------------------ 2 files changed, 1 insertion(+), 192 deletions(-) delete mode 100644 backend/operations/migrations/0002_remove_equipment_provides_alerts_and_more.py diff --git a/backend/docker-entrypoint.sh b/backend/docker-entrypoint.sh index fb5f203..64ee836 100755 --- a/backend/docker-entrypoint.sh +++ b/backend/docker-entrypoint.sh @@ -196,7 +196,7 @@ wait_for_database() { run_makemigrations() { if is_true "${DEBUG:-False}"; then - APPS_TO_MIGRATE=("feed" "schedule_engine" "realtime_engine") + APPS_TO_MIGRATE=("feed" "schedule_engine" "realtime_engine" "operations") log "Creating migrations for: ${APPS_TO_MIGRATE[*]}" uv run python manage.py makemigrations "${APPS_TO_MIGRATE[@]}" || warn "No changes detected for migrations" else diff --git a/backend/operations/migrations/0002_remove_equipment_provides_alerts_and_more.py b/backend/operations/migrations/0002_remove_equipment_provides_alerts_and_more.py deleted file mode 100644 index 3f6c664..0000000 --- a/backend/operations/migrations/0002_remove_equipment_provides_alerts_and_more.py +++ /dev/null @@ -1,191 +0,0 @@ -# Generated by Django 6.0.4 on 2026-07-21 20:33 - -import django.db.models.deletion -import uuid -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('feed', '0001_initial'), - ('operations', '0001_initial'), - ] - - operations = [ - migrations.RemoveField( - model_name='equipment', - name='provides_alerts', - ), - migrations.RemoveField( - model_name='equipment', - name='provides_authorizations', - ), - migrations.RemoveField( - model_name='equipment', - name='provides_conditions', - ), - migrations.RemoveField( - model_name='equipment', - name='provides_emissions', - ), - migrations.RemoveField( - model_name='equipment', - name='provides_fares', - ), - migrations.RemoveField( - model_name='equipment', - name='provides_occupancy', - ), - migrations.RemoveField( - model_name='equipment', - name='provides_operator', - ), - migrations.RemoveField( - model_name='equipment', - name='provides_position', - ), - migrations.RemoveField( - model_name='equipment', - name='provides_progression', - ), - migrations.RemoveField( - model_name='equipment', - name='provides_run', - ), - migrations.RemoveField( - model_name='equipment', - name='provides_transfers', - ), - migrations.RemoveField( - model_name='equipment', - name='provides_travelers', - ), - migrations.RemoveField( - model_name='equipment', - name='provides_vehicle', - ), - migrations.RemoveField( - model_name='equipmentlog', - name='provides_alerts', - ), - migrations.RemoveField( - model_name='equipmentlog', - name='provides_authorizations', - ), - migrations.RemoveField( - model_name='equipmentlog', - name='provides_conditions', - ), - migrations.RemoveField( - model_name='equipmentlog', - name='provides_emissions', - ), - migrations.RemoveField( - model_name='equipmentlog', - name='provides_fares', - ), - migrations.RemoveField( - model_name='equipmentlog', - name='provides_occupancy', - ), - migrations.RemoveField( - model_name='equipmentlog', - name='provides_operator', - ), - migrations.RemoveField( - model_name='equipmentlog', - name='provides_position', - ), - migrations.RemoveField( - model_name='equipmentlog', - name='provides_progression', - ), - migrations.RemoveField( - model_name='equipmentlog', - name='provides_run', - ), - migrations.RemoveField( - model_name='equipmentlog', - name='provides_transfers', - ), - migrations.RemoveField( - model_name='equipmentlog', - name='provides_travelers', - ), - migrations.RemoveField( - model_name='equipmentlog', - name='provides_vehicle', - ), - migrations.AddField( - model_name='company', - name='legal_id', - field=models.CharField(blank=True, max_length=100, null=True), - ), - migrations.AddField( - model_name='equipment', - name='name', - field=models.CharField(blank=True, max_length=100, null=True), - ), - migrations.AddField( - model_name='operator', - name='is_administrator', - field=models.BooleanField(default=False), - ), - migrations.AddField( - model_name='operator', - name='is_dispatcher', - field=models.BooleanField(default=False), - ), - migrations.AddField( - model_name='operator', - name='is_driver', - field=models.BooleanField(default=False), - ), - migrations.RemoveField( - model_name='company', - name='linked_agency', - ), - migrations.AlterField( - model_name='equipmentlog', - name='updated_at', - field=models.DateTimeField(auto_now=True), - ), - migrations.AlterField( - model_name='vehicle', - name='status', - field=models.CharField(blank=True, choices=[('IN_SERVICE', 'En servicio'), ('OUT_OF_SERVICE', 'Fuera de servicio'), ('ON_FIRE', 'En llamas')], max_length=100, null=True), - ), - migrations.CreateModel( - name='Sensor', - fields=[ - ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), - ('name', models.CharField(blank=True, max_length=100, null=True)), - ('provides_vehicle', models.BooleanField(default=False)), - ('provides_operator', models.BooleanField(default=False)), - ('provides_run', models.BooleanField(default=False)), - ('provides_position', models.BooleanField(default=False)), - ('provides_progression', models.BooleanField(default=False)), - ('provides_occupancy', models.BooleanField(default=False)), - ('provides_conditions', models.BooleanField(default=False)), - ('provides_emissions', models.BooleanField(default=False)), - ('provides_travelers', models.BooleanField(default=False)), - ('provides_authorizations', models.BooleanField(default=False)), - ('provides_fares', models.BooleanField(default=False)), - ('provides_transfers', models.BooleanField(default=False)), - ('provides_alerts', models.BooleanField(default=False)), - ('source_type', models.CharField(blank=True, choices=[('mqtt', 'MQTT'), ('http', 'HTTP'), ('both', 'Both')], max_length=16, null=True)), - ('source_http_url', models.URLField(blank=True, null=True)), - ('source_json_mapping', models.JSONField(blank=True, null=True)), - ('status', models.CharField(choices=[('ACTIVE', 'Activo'), ('INACTIVE', 'Inactivo')], default='ACTIVE', max_length=100)), - ('created_at', models.DateTimeField(auto_now_add=True)), - ('updated_at', models.DateTimeField(auto_now=True)), - ('equipment', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='operations.equipment')), - ], - ), - migrations.AddField( - model_name='company', - name='linked_agency', - field=models.ManyToManyField(blank=True, to='feed.agency'), - ), - ] From 6936b30c12aade795ea2771fb76793d4bc3e2e64 Mon Sep 17 00:00:00 2001 From: Jae Date: Tue, 21 Jul 2026 15:25:56 -0600 Subject: [PATCH 18/68] fix(realtime): gate fetch_positions on current_run, not runs:in_progress Building the in-service set from runs:in_progress deadlocked HTTP-only vehicles: a run only enters IN_PROGRESS once telemetry proves the vehicle is moving, but that telemetry is exactly what fetch_positions delivers, and it refused to publish until the run was already IN_PROGRESS. Gate instead on vehicle::current_run presence -- the same signal the MQTT consumer uses to accept telemetry -- so a CONFIRMED run bootstraps forward. --- backend/realtime_engine/tasks.py | 23 +++++++++++-------- .../tests/test_fetch_positions.py | 19 ++++----------- 2 files changed, 19 insertions(+), 23 deletions(-) diff --git a/backend/realtime_engine/tasks.py b/backend/realtime_engine/tasks.py index de4acbe..93c1c85 100644 --- a/backend/realtime_engine/tasks.py +++ b/backend/realtime_engine/tasks.py @@ -70,8 +70,13 @@ def scan_stale_runs() -> str: def fetch_positions() -> str: """Poll active HTTP telemetry sources and publish in-service vehicle positions. - 1. Build the in-service vehicle-id set: every run in ``runs:in_progress`` - contributes the ``vehicle`` field of its ``run:`` hash. + 1. Build the in-service vehicle-id set: every vehicle with an active + (non-terminal) run assigned, i.e. a ``vehicle::current_run`` key. + This is the *same* gate the MQTT consumer uses to accept telemetry, so + the poller and the consumer agree on which vehicles count. Gating on + ``runs:in_progress`` instead would deadlock a CONFIRMED run: it only + reaches IN_PROGRESS once telemetry proves the vehicle is moving, and + delivering that telemetry is exactly this task's job. 2. Query ACTIVE sensors that provide position data over HTTP (source_type "http" or "both" both use the "http" adapter). 3. Fetch each sensor's readings, keep only the ones for in-service @@ -85,13 +90,13 @@ def fetch_positions() -> str: from realtime_engine.sources import get_adapter from realtime_engine.sources.publisher import MqttPublisher - run_ids = redis_client.smembers("runs:in_progress") - in_service_vehicle_ids: set[str] = set() - for run_id in run_ids: - run_data = redis_client.hgetall(keys.run_key(run_id)) - vehicle_id = run_data.get("vehicle") - if vehicle_id: - in_service_vehicle_ids.add(vehicle_id) + # Derive the key prefix/suffix from the helper so we never hardcode the + # ``vehicle::current_run`` shape here. + _prefix, _suffix = keys.current_run_key("\x00").split("\x00") + in_service_vehicle_ids: set[str] = { + key[len(_prefix): len(key) - len(_suffix)] + for key in redis_client.scan_iter(match=keys.current_run_key("*")) + } sensors = Sensor.objects.filter( status="ACTIVE", diff --git a/backend/realtime_engine/tests/test_fetch_positions.py b/backend/realtime_engine/tests/test_fetch_positions.py index 4e6c89f..a91d3a0 100644 --- a/backend/realtime_engine/tests/test_fetch_positions.py +++ b/backend/realtime_engine/tests/test_fetch_positions.py @@ -28,7 +28,6 @@ from realtime_engine.tasks import fetch_positions from runs.domain.telemetry import keys -RUN_ID = "run-1" IN_SERVICE_VEHICLE_ID = "veh-in-service" OUT_OF_SERVICE_VEHICLE_ID = "veh-out-of-service" @@ -42,19 +41,11 @@ def _make_sensor(sensor_id="sensor-1"): ) -def _fake_redis(run_ids=(RUN_ID,), vehicle_by_run=None) -> MagicMock: - """Redis mock: runs:in_progress -> run_ids, run: hash -> {'vehicle': ...}.""" - vehicle_by_run = vehicle_by_run or {RUN_ID: IN_SERVICE_VEHICLE_ID} +def _fake_redis(in_service=(IN_SERVICE_VEHICLE_ID,)) -> MagicMock: + """Redis mock: ``scan_iter`` over ``vehicle:*:current_run`` yields one key + per in-service vehicle -- the same ``current_run`` gate the task uses.""" r = MagicMock() - r.smembers.return_value = set(run_ids) - - def _hgetall(key): - for run_id, vehicle_id in vehicle_by_run.items(): - if key == keys.run_key(run_id): - return {"vehicle": vehicle_id} - return {} - - r.hgetall.side_effect = _hgetall + r.scan_iter.return_value = [keys.current_run_key(vid) for vid in in_service] return r @@ -165,7 +156,7 @@ def _fetch(sensor): def test_fetch_positions_queries_only_active_http_position_sensors(monkeypatch): """Sanity-check the filter kwargs passed to Sensor.objects.filter.""" - fake_r = _fake_redis(run_ids=()) + fake_r = _fake_redis(in_service=()) monkeypatch.setattr(tasks_module, "redis_client", fake_r) manager = _fake_sensor_manager([]) From fe4266b5b810ab17203dc04274e758707d87d1b4 Mon Sep 17 00:00:00 2001 From: Jae Date: Tue, 18 Aug 2026 22:56:55 -0600 Subject: [PATCH 19/68] chore: gitignore local AI tooling artifacts --- .gitignore | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.gitignore b/.gitignore index be484db..ab84167 100644 --- a/.gitignore +++ b/.gitignore @@ -197,3 +197,9 @@ cython_debug/ # and can be added to the global gitignore or merged into this file. For a more nuclear # option (not recommended) you can uncomment the following to ignore the entire idea folder. #.idea/ + +# AI tooling artifacts (local only) +graphify-out/ +llms.txt +llms-full.txt +CONTEXT_SYNC_NOTES.md From a3cbb0a43c8243ccad3924f1aa8b01400cd74e2b Mon Sep 17 00:00:00 2001 From: Jae Date: Tue, 18 Aug 2026 23:16:56 -0600 Subject: [PATCH 20/68] refactor(runs): drop dead RunProgress FSM chain --- backend/runs/domain/progress/__init__.py | 36 --- backend/runs/domain/progress/actions.py | 158 ---------- backend/runs/domain/progress/events.py | 24 -- backend/runs/domain/progress/guards.py | 333 -------------------- backend/runs/domain/progress/states.py | 23 -- backend/runs/domain/progress/transitions.py | 242 -------------- backend/runs/models.py | 16 - backend/runs/services/progress.py | 61 ---- 8 files changed, 893 deletions(-) delete mode 100644 backend/runs/domain/progress/__init__.py delete mode 100644 backend/runs/domain/progress/actions.py delete mode 100644 backend/runs/domain/progress/events.py delete mode 100644 backend/runs/domain/progress/guards.py delete mode 100644 backend/runs/domain/progress/states.py delete mode 100644 backend/runs/domain/progress/transitions.py delete mode 100644 backend/runs/services/progress.py diff --git a/backend/runs/domain/progress/__init__.py b/backend/runs/domain/progress/__init__.py deleted file mode 100644 index 408ff62..0000000 --- a/backend/runs/domain/progress/__init__.py +++ /dev/null @@ -1,36 +0,0 @@ -from importlib import import_module - -from .states import RunProgressStates, choices -from .events import RunProgressEvents - -__all__ = [ - "RunProgressStates", - "choices", - "RunProgressEvents", - "RunProgressActions", - "RunProgressGuards", - "Transition", - "TRANSITIONS", -] - - -def __getattr__(name: str): - if name in { - "RunProgressActions", - "RunProgressGuards", - "Transition", - "TRANSITIONS", - }: - module_name = { - "RunProgressActions": "actions", - "RunProgressGuards": "guards", - "Transition": "transitions", - "TRANSITIONS": "transitions", - }[name] - module = import_module(f"{__name__}.{module_name}") - return getattr(module, name) - raise AttributeError(f"module {__name__!r} has no attribute {name!r}") - - -def __dir__() -> list[str]: - return sorted(set(globals()) | set(__all__)) diff --git a/backend/runs/domain/progress/actions.py b/backend/runs/domain/progress/actions.py deleted file mode 100644 index 3c50031..0000000 --- a/backend/runs/domain/progress/actions.py +++ /dev/null @@ -1,158 +0,0 @@ -from typing import Any, TYPE_CHECKING -from runs.models import Run -import redis - -if TYPE_CHECKING: - from runs.domain.lifecycle import Transition - -r = redis.Redis(host="state", port=6379, db=0) - - -class RunProgressActions: - """ - Ordering convention: every transition should list persist_lifecycle_event - first so the audit record is written before any external side-effects. State - is saved last via update_run_lifecycle_state so the Run row always reflects - the final outcome of a fully-executed transition. - """ - - @staticmethod - def update_system_state( - run: Run, transition: "Transition", payload: dict[str, Any] - ) -> bool: - """Write run metadata to run:{run.id} hash and claim vehicle/operator/trip keys.""" - vehicle_id = ( - payload.get("vehicle_id") - or run.vehicle.values_list("id", flat=True).first() - ) - operator_id = ( - payload.get("operator_id") - or run.operator.values_list("id", flat=True).first() - ) - run_key = f"run:{run.id}" - mapping: dict[str, str] = { - "run_id": str(run.id), - "route_id": run.route_id or "", - "trip_id": run.trip_id or "", - "direction_id": "" if run.direction_id is None else str(run.direction_id), - "shape_id": run.shape_id or "", - "schedule_relationship": run.schedule_relationship or "", - # Use transition.to_state because the action fires before _update_run_lifecycle_state - "run_lifecycle_state": transition.to_state.value, - } - if vehicle_id: - mapping["vehicle"] = str(vehicle_id) - if operator_id: - mapping["operator"] = str(operator_id) - if run.start_date: - mapping["start_date"] = run.start_date.strftime("%Y%m%d") - if run.start_time: - total_seconds = int(run.start_time.total_seconds()) - h, rem = divmod(total_seconds, 3600) - m, s = divmod(rem, 60) - mapping["start_time"] = f"{h:02d}:{m:02d}:{s:02d}" - - pipe = r.pipeline() - pipe.hset(run_key, mapping=mapping) - - # Claim assignment keys so availability guards have a signal to read - if vehicle_id: - pipe.set(f"vehicle:{vehicle_id}:current_run", str(run.id)) - if operator_id: - pipe.set(f"operator:{operator_id}:current_run", str(run.id)) - if run.trip_id: - pipe.set(f"trip:{run.trip_id}:current_run", str(run.id)) - - # Write vehicle metadata so the GTFS-RT builders can populate VehicleDescriptor - if vehicle_id: - from operations.models import Vehicle as VehicleModel - - try: - v = VehicleModel.objects.get(id=vehicle_id) - vehicle_meta: dict[str, str] = { - "id": str(v.id), - "label": v.label or str(v.id), - } - if v.license_plate: - vehicle_meta["license_plate"] = v.license_plate - if v.wheelchair_accessible: - vehicle_meta["wheelchair_accessible"] = v.wheelchair_accessible - pipe.hset(f"vehicle:{vehicle_id}:metadata", mapping=vehicle_meta) - except Exception: - pass - - pipe.execute() - return True - - # ------------------------------------------------------------------ - # Redis set mutations - # ------------------------------------------------------------------ - - @staticmethod - def sync_lifecycle_state( - run: Run, transition: "Transition", payload: dict[str, Any] - ) -> bool: - """Keep the Redis run hash's run_lifecycle_state in sync with the DB transition.""" - r.hset(f"run:{run.id}", "run_lifecycle_state", transition.to_state.value) - return True - - @staticmethod - def add_to_tracking_set( - run: Run, transition: "Transition", payload: dict[str, Any] - ) -> bool: - r.sadd("runs:tracking", str(run.id)) - return True - - @staticmethod - def remove_from_tracking_set( - run: Run, transition: "Transition", payload: dict[str, Any] - ) -> bool: - r.srem("runs:tracking", str(run.id)) - return True - - @staticmethod - def add_to_in_progress_set( - run: Run, transition: "Transition", payload: dict[str, Any] - ) -> bool: - r.sadd("runs:in_progress", str(run.id)) - return True - - @staticmethod - def remove_from_in_progress_set( - run: Run, transition: "Transition", payload: dict[str, Any] - ) -> bool: - r.srem("runs:in_progress", str(run.id)) - return True - - @staticmethod - def remove_from_system_state( - run: Run, transition: "Transition", payload: dict[str, Any] - ) -> bool: - pipe = r.pipeline() - pipe.delete(f"run:{run.id}") - pipe.srem("runs:tracking", str(run.id)) - pipe.srem("runs:in_progress", str(run.id)) - pipe.execute() - return True - - # ------------------------------------------------------------------ - # Resource release - # ------------------------------------------------------------------ - - @staticmethod - def release_resources( - run: Run, transition: "Transition", payload: dict[str, Any] - ) -> bool: - """Free vehicle, operator, and trip assignment keys.""" - vehicle_id = run.vehicle.values_list("id", flat=True).first() - operator_id = run.operator.values_list("id", flat=True).first() - keys_to_delete = [] - if vehicle_id: - keys_to_delete.append(f"vehicle:{vehicle_id}:current_run") - if operator_id: - keys_to_delete.append(f"operator:{operator_id}:current_run") - if run.trip_id: - keys_to_delete.append(f"trip:{run.trip_id}:current_run") - if keys_to_delete: - r.delete(*keys_to_delete) - return True diff --git a/backend/runs/domain/progress/events.py b/backend/runs/domain/progress/events.py deleted file mode 100644 index 707a1f5..0000000 --- a/backend/runs/domain/progress/events.py +++ /dev/null @@ -1,24 +0,0 @@ -from enum import Enum - - -class RunProgressEvents(str, Enum): - """ - Defines all possible events that can trigger state transitions in the run lifecycle. - """ - - # Lifecycle progression events - RUN_REQUESTED = "run_requested" # initial: record creation puts run in REQUESTED - VALIDATE_RUN = "validate_run" - INITIALIZE_RUN = "initialize_run" - RUN_CONFIRMED_BY_OPERATOR = "run_confirmed_by_operator" - RUN_TRACKING_STARTED = "run_tracking_started" - RUN_STARTED = "run_started" - RUN_COMPLETED = "run_completed" - # Operational deviation events - RUN_REJECTED = "run_rejected" - CANCEL_RUN = "cancel_run" - RUN_INTERRUPTED = "run_interrupted" - RUN_SHORT_TURNED = "run_short_turned" - RUN_TRACKING_LOST = "run_tracking_lost" - RUN_TRACKING_RESTORED = "run_tracking_restored" - RUN_TRACKING_EXPIRED = "run_tracking_expired" diff --git a/backend/runs/domain/progress/guards.py b/backend/runs/domain/progress/guards.py deleted file mode 100644 index 5d57643..0000000 --- a/backend/runs/domain/progress/guards.py +++ /dev/null @@ -1,333 +0,0 @@ -from typing import Any, TYPE_CHECKING -from datetime import datetime, timezone -from django.utils.timezone import now -from runs.models import Run -from runs.services.exceptions import RunLifecycleError -import redis - -if TYPE_CHECKING: - from runs.domain.lifecycle import Transition - -r = redis.Redis(host="state", port=6379, db=0) - -TELEMETRY_GRACE_S = 60 -TELEMETRY_EXPIRY_S = 600 - - -def _parse_last_seen(payload: dict[str, Any]) -> datetime | None: - raw = payload.get("last_seen_at") - if raw is None: - return None - if isinstance(raw, datetime): - return raw - try: - dt = datetime.fromisoformat(str(raw)) - if dt.tzinfo is None: - dt = dt.replace(tzinfo=timezone.utc) - return dt - except (ValueError, TypeError): - return None - - -class RunProgressGuards: - @staticmethod - def is_gtfs_valid( - run: Run, transition: "Transition", payload: dict[str, Any] - ) -> bool: - from feed.models import Feed, Route, Trip, Shape - - route_id = payload.get("route_id") - trip_id = payload.get("trip_id") - direction_id = payload.get("direction_id") - shape_id = payload.get("shape_id") - schedule_relationship = payload.get("schedule_relationship") - - errors: dict[str, str] = {} - - if not route_id: - errors["route_id"] = "route_id is required" - if not trip_id: - errors["trip_id"] = "trip_id is required" - if direction_id not in [0, 1]: - errors["direction_id"] = ( - f"direction_id must be 0 or 1, got '{direction_id}'" - ) - if not shape_id: - errors["shape_id"] = "shape_id is required" - if not schedule_relationship: - errors["schedule_relationship"] = "schedule_relationship is required" - elif schedule_relationship != "SCHEDULED": - errors["schedule_relationship"] = ( - f"schedule_relationship '{schedule_relationship}' is not valid" - ) - - if errors: - raise RunLifecycleError(errors) - - feed = Feed.objects.filter(is_current=True).first() - if not feed: - raise RunLifecycleError({"feed": "No current GTFS feed found"}) - - lookup_errors: dict[str, str] = {} - - if not Route.objects.filter(feed=feed, route_id=route_id).exists(): - lookup_errors["route_id"] = ( - f"route_id '{route_id}' not found in current GTFS feed" - ) - - trip = Trip.objects.filter(feed=feed, trip_id=trip_id).first() - if not trip: - lookup_errors["trip_id"] = ( - f"trip_id '{trip_id}' not found in current GTFS feed" - ) - elif trip.direction_id != direction_id: - lookup_errors["direction_id"] = ( - f"direction_id '{direction_id}' does not match trip '{trip_id}'" - ) - elif shape_id and trip.shape_id != shape_id: - lookup_errors["shape_id"] = ( - f"shape_id '{shape_id}' does not match trip '{trip_id}'" - ) - - if lookup_errors: - raise RunLifecycleError(lookup_errors) - - return True - - @staticmethod - def is_vehicle_available( - run: Run, transition: "Transition", payload: dict[str, Any] - ) -> bool: - vehicle_id = payload.get("vehicle_id") or ( - run.vehicle.values_list("id", flat=True).first() - ) - if not vehicle_id: - return True - existing = r.get(f"vehicle:{vehicle_id}:current_run") - if existing and existing.decode() != str(run.id): - raise RunLifecycleError( - { - "vehicle_id": f"Vehicle '{vehicle_id}' is already assigned to run {existing.decode()}" - } - ) - return True - - @staticmethod - def is_trip_available( - run: Run, transition: "Transition", payload: dict[str, Any] - ) -> bool: - trip_id = payload.get("trip_id") or run.trip_id - if not trip_id: - return True - existing = r.get(f"trip:{trip_id}:current_run") - if existing and existing.decode() != str(run.id): - raise RunLifecycleError( - { - "trip_id": f"Trip '{trip_id}' is already assigned to run {existing.decode()}" - } - ) - return True - - @staticmethod - def is_operator_available( - run: Run, transition: "Transition", payload: dict[str, Any] - ) -> bool: - operator_id = payload.get("operator_id") or ( - run.operator.values_list("id", flat=True).first() - ) - if not operator_id: - return True - existing = r.get(f"operator:{operator_id}:current_run") - if existing and existing.decode() != str(run.id): - raise RunLifecycleError( - { - "operator_id": f"Operator '{operator_id}' is already assigned to run {existing.decode()}" - } - ) - return True - - @staticmethod - def is_vehicle_tracked( - run: Run, transition: "Transition", payload: dict[str, Any] - ) -> bool: - return bool(r.sismember("runs:tracking", str(run.id))) - - @staticmethod - def is_run_validated( - run: Run, transition: "Transition", payload: dict[str, Any] - ) -> bool: - return True - - @staticmethod - def is_vehicle_moving( - run: Run, transition: "Transition", payload: dict[str, Any] - ) -> bool: - return float(payload.get("speed", 0)) > 0.5 - - # ------------------------------------------------------------------ - # Cancellation / interruption / short-turn authority guards - # ------------------------------------------------------------------ - - @staticmethod - def is_cancellation_authorized( - run: Run, transition: "Transition", payload: dict[str, Any] - ) -> bool: - actor_role = payload.get("actor_role", "") - if actor_role == "system": - return True - if actor_role in ("dispatcher", "operator"): - return True - raise RunLifecycleError( - { - "actor_role": f"actor_role '{actor_role}' is not authorized to cancel runs" - } - ) - - @staticmethod - def is_interruption_authorized( - run: Run, transition: "Transition", payload: dict[str, Any] - ) -> bool: - actor_role = payload.get("actor_role", "") - if actor_role in ("system", "dispatcher", "operator"): - return True - raise RunLifecycleError( - { - "actor_role": f"actor_role '{actor_role}' is not authorized to interrupt runs" - } - ) - - @staticmethod - def is_short_turn_authorized( - run: Run, transition: "Transition", payload: dict[str, Any] - ) -> bool: - actor_role = payload.get("actor_role", "") - if actor_role in ("dispatcher", "system"): - return True - raise RunLifecycleError( - { - "actor_role": f"actor_role '{actor_role}' must be 'dispatcher' or 'system' to short-turn" - } - ) - - @staticmethod - def is_short_turn_geometrically_valid( - run: Run, transition: "Transition", payload: dict[str, Any] - ) -> bool: - from feed.models import Feed, StopTime - - short_turn_stop_id = payload.get("short_turn_stop_id") - if not short_turn_stop_id: - raise RunLifecycleError( - {"short_turn_stop_id": "short_turn_stop_id is required"} - ) - - trip_id = run.trip_id - if not trip_id: - raise RunLifecycleError({"trip_id": "Run has no trip_id"}) - - feed = Feed.objects.filter(is_current=True).first() - if not feed: - raise RunLifecycleError({"feed": "No current GTFS feed found"}) - - stop_times = StopTime.objects.filter(feed=feed, trip_id=trip_id).order_by( - "stop_sequence" - ) - if not stop_times.exists(): - raise RunLifecycleError( - {"trip_id": f"No stop times found for trip '{trip_id}'"} - ) - - terminal = stop_times.last() - stop_ids = list(stop_times.values_list("stop_id", flat=True)) - - if short_turn_stop_id not in stop_ids: - raise RunLifecycleError( - { - "short_turn_stop_id": f"Stop '{short_turn_stop_id}' not on trip '{trip_id}'" - } - ) - if short_turn_stop_id == terminal.stop_id: - raise RunLifecycleError( - {"short_turn_stop_id": "Short-turn stop cannot be the terminal stop"} - ) - return True - - # ------------------------------------------------------------------ - # Telemetry freshness guards - # ------------------------------------------------------------------ - - @staticmethod - def is_telemetry_stale( - run: Run, transition: "Transition", payload: dict[str, Any] - ) -> bool: - last_seen = _parse_last_seen(payload) - if last_seen is None: - last_seen = run.last_event_at - if last_seen is None: - return True - staleness = (now() - last_seen).total_seconds() - return staleness > TELEMETRY_GRACE_S - - @staticmethod - def is_telemetry_fresh( - run: Run, transition: "Transition", payload: dict[str, Any] - ) -> bool: - last_seen = _parse_last_seen(payload) - if last_seen is None: - last_seen = run.last_event_at - if last_seen is None: - return False - staleness = (now() - last_seen).total_seconds() - return staleness <= TELEMETRY_GRACE_S - - @staticmethod - def is_telemetry_grace_period_exceeded( - run: Run, transition: "Transition", payload: dict[str, Any] - ) -> bool: - last_seen = _parse_last_seen(payload) - if last_seen is None: - last_seen = run.last_event_at - if last_seen is None: - return True - staleness = (now() - last_seen).total_seconds() - return staleness > TELEMETRY_EXPIRY_S - - # ------------------------------------------------------------------ - # Completion guard - # ------------------------------------------------------------------ - - @staticmethod - def is_at_terminal_stop( - run: Run, transition: "Transition", payload: dict[str, Any] - ) -> bool: - from feed.models import Feed, StopTime - - stop_id = payload.get("stop_id") - if not stop_id: - raise RunLifecycleError({"stop_id": "stop_id is required"}) - - trip_id = run.trip_id - if not trip_id: - raise RunLifecycleError({"trip_id": "Run has no trip_id"}) - - feed = Feed.objects.filter(is_current=True).first() - if not feed: - raise RunLifecycleError({"feed": "No current GTFS feed found"}) - - terminal = ( - StopTime.objects.filter(feed=feed, trip_id=trip_id) - .order_by("-stop_sequence") - .first() - ) - if not terminal: - raise RunLifecycleError( - {"trip_id": f"No stop times found for trip '{trip_id}'"} - ) - - if stop_id != terminal.stop_id: - raise RunLifecycleError( - { - "stop_id": f"Stop '{stop_id}' is not the terminal stop '{terminal.stop_id}'" - } - ) - return True diff --git a/backend/runs/domain/progress/states.py b/backend/runs/domain/progress/states.py deleted file mode 100644 index ea8dad6..0000000 --- a/backend/runs/domain/progress/states.py +++ /dev/null @@ -1,23 +0,0 @@ -from enum import Enum - - -class RunProgressStates(str, Enum): - """ - Defines the possible lifecycle states of a run. - """ - - REQUESTED = "Requested" - VALIDATED = "Validated" - INITIALIZED = "Initialized" - CONFIRMED = "Confirmed" - TRACKING = "Tracking" - CANCELLED = "Cancelled" - IN_PROGRESS = "In Progress" - NO_SIGNAL = "No Signal" - COMPLETED = "Completed" - INTERRUPTED = "Interrupted" - SHORT_TURNED = "Short Turned" - - -def choices(): - return [(status.value, status.name) for status in RunProgressStates] diff --git a/backend/runs/domain/progress/transitions.py b/backend/runs/domain/progress/transitions.py deleted file mode 100644 index 2b76741..0000000 --- a/backend/runs/domain/progress/transitions.py +++ /dev/null @@ -1,242 +0,0 @@ -from dataclasses import dataclass -from typing import Callable, List - -from .actions import RunProgressActions -from .guards import RunProgressGuards -from .states import RunProgressStates -from .events import RunProgressEvents - - -@dataclass -class Transition: - """Represents a state transition in the run lifecycle.""" - - from_state: RunProgressStates - event: RunProgressEvents - to_state: RunProgressStates - guards: List[Callable] - actions: List[Callable] - - -TRANSITIONS = [ - # ------------------------------------------------------------------ - # Registration: REQUESTED → VALIDATED - # ------------------------------------------------------------------ - Transition( - from_state=RunProgressStates.REQUESTED, - event=RunProgressEvents.VALIDATE_RUN, - to_state=RunProgressStates.VALIDATED, - guards=[ - RunProgressGuards.is_gtfs_valid, - RunProgressGuards.is_trip_available, - RunProgressGuards.is_vehicle_available, - RunProgressGuards.is_operator_available, - ], - actions=[], - ), - # Registration rejected at validation stage - Transition( - from_state=RunProgressStates.REQUESTED, - event=RunProgressEvents.RUN_REJECTED, - to_state=RunProgressStates.CANCELLED, - guards=[], - actions=[], - ), - # ------------------------------------------------------------------ - # Initialization: VALIDATED → INITIALIZED - # ------------------------------------------------------------------ - Transition( - from_state=RunProgressStates.VALIDATED, - event=RunProgressEvents.INITIALIZE_RUN, - to_state=RunProgressStates.INITIALIZED, - guards=[ - RunProgressGuards.is_run_validated, - ], - actions=[ - RunProgressActions.update_system_state, - ], - ), - # Initialization failed after validation passed - Transition( - from_state=RunProgressStates.VALIDATED, - event=RunProgressEvents.RUN_REJECTED, - to_state=RunProgressStates.CANCELLED, - guards=[], - actions=[ - RunProgressActions.release_resources, - ], - ), - # ------------------------------------------------------------------ - # Operator confirmation: INITIALIZED → CONFIRMED - # ------------------------------------------------------------------ - Transition( - from_state=RunProgressStates.INITIALIZED, - event=RunProgressEvents.RUN_CONFIRMED_BY_OPERATOR, - to_state=RunProgressStates.CONFIRMED, - guards=[], - actions=[ - RunProgressActions.sync_lifecycle_state, - ], - ), - # Cancelled before operator confirmation - Transition( - from_state=RunProgressStates.INITIALIZED, - event=RunProgressEvents.RUN_REJECTED, - to_state=RunProgressStates.CANCELLED, - guards=[ - RunProgressGuards.is_cancellation_authorized, - ], - actions=[ - RunProgressActions.remove_from_system_state, - RunProgressActions.release_resources, - ], - ), - # ------------------------------------------------------------------ - # Tracking started: CONFIRMED → TRACKING - # ------------------------------------------------------------------ - Transition( - from_state=RunProgressStates.CONFIRMED, - event=RunProgressEvents.RUN_TRACKING_STARTED, - to_state=RunProgressStates.TRACKING, - guards=[ - RunProgressGuards.is_vehicle_tracked, - ], - actions=[ - RunProgressActions.sync_lifecycle_state, - RunProgressActions.add_to_tracking_set, - ], - ), - # Cancelled after confirmation but before tracking - Transition( - from_state=RunProgressStates.CONFIRMED, - event=RunProgressEvents.CANCEL_RUN, - to_state=RunProgressStates.CANCELLED, - guards=[ - RunProgressGuards.is_cancellation_authorized, - ], - actions=[ - RunProgressActions.remove_from_system_state, - RunProgressActions.release_resources, - ], - ), - # ------------------------------------------------------------------ - # Run started: TRACKING → IN_PROGRESS - # ------------------------------------------------------------------ - Transition( - from_state=RunProgressStates.TRACKING, - event=RunProgressEvents.RUN_STARTED, - to_state=RunProgressStates.IN_PROGRESS, - guards=[ - RunProgressGuards.is_vehicle_moving, - ], - actions=[ - RunProgressActions.sync_lifecycle_state, - RunProgressActions.add_to_in_progress_set, - ], - ), - # Cancelled while tracking (before run started) - Transition( - from_state=RunProgressStates.TRACKING, - event=RunProgressEvents.CANCEL_RUN, - to_state=RunProgressStates.CANCELLED, - guards=[ - RunProgressGuards.is_cancellation_authorized, - ], - actions=[ - RunProgressActions.remove_from_tracking_set, - RunProgressActions.remove_from_system_state, - RunProgressActions.release_resources, - ], - ), - # ------------------------------------------------------------------ - # In progress: deviation events - # ------------------------------------------------------------------ - Transition( - from_state=RunProgressStates.IN_PROGRESS, - event=RunProgressEvents.RUN_TRACKING_LOST, - to_state=RunProgressStates.NO_SIGNAL, - guards=[ - RunProgressGuards.is_telemetry_stale, - ], - actions=[ - # Keep the run in `runs:tracking` so scan_stale_runs can fire - # RUN_TRACKING_EXPIRED later. The set is the work queue, not a - # status flag — only fully-terminal transitions should remove from it. - RunProgressActions.sync_lifecycle_state, - ], - ), - Transition( - from_state=RunProgressStates.IN_PROGRESS, - event=RunProgressEvents.RUN_INTERRUPTED, - to_state=RunProgressStates.INTERRUPTED, - guards=[ - RunProgressGuards.is_interruption_authorized, - ], - actions=[ - RunProgressActions.sync_lifecycle_state, - RunProgressActions.remove_from_tracking_set, - RunProgressActions.remove_from_in_progress_set, - RunProgressActions.release_resources, - ], - ), - Transition( - from_state=RunProgressStates.IN_PROGRESS, - event=RunProgressEvents.RUN_SHORT_TURNED, - to_state=RunProgressStates.SHORT_TURNED, - guards=[ - RunProgressGuards.is_short_turn_authorized, - RunProgressGuards.is_short_turn_geometrically_valid, - ], - actions=[ - RunProgressActions.sync_lifecycle_state, - RunProgressActions.remove_from_tracking_set, - RunProgressActions.remove_from_in_progress_set, - RunProgressActions.release_resources, - ], - ), - Transition( - from_state=RunProgressStates.IN_PROGRESS, - event=RunProgressEvents.RUN_COMPLETED, - to_state=RunProgressStates.COMPLETED, - guards=[ - RunProgressGuards.is_at_terminal_stop, - ], - actions=[ - RunProgressActions.sync_lifecycle_state, - RunProgressActions.remove_from_tracking_set, - RunProgressActions.remove_from_in_progress_set, - RunProgressActions.release_resources, - ], - ), - # ------------------------------------------------------------------ - # No signal: recovery or expiry - # ------------------------------------------------------------------ - Transition( - from_state=RunProgressStates.NO_SIGNAL, - event=RunProgressEvents.RUN_TRACKING_RESTORED, - to_state=RunProgressStates.IN_PROGRESS, - guards=[ - RunProgressGuards.is_telemetry_fresh, - RunProgressGuards.is_vehicle_tracked, - ], - actions=[ - RunProgressActions.sync_lifecycle_state, - RunProgressActions.add_to_tracking_set, - RunProgressActions.add_to_in_progress_set, - ], - ), - Transition( - from_state=RunProgressStates.NO_SIGNAL, - event=RunProgressEvents.RUN_TRACKING_EXPIRED, - to_state=RunProgressStates.CANCELLED, - guards=[ - RunProgressGuards.is_telemetry_grace_period_exceeded, - ], - actions=[ - RunProgressActions.sync_lifecycle_state, - RunProgressActions.remove_from_tracking_set, - RunProgressActions.remove_from_in_progress_set, - RunProgressActions.release_resources, - ], - ), -] diff --git a/backend/runs/models.py b/backend/runs/models.py index 1ee4e40..acdcff5 100644 --- a/backend/runs/models.py +++ b/backend/runs/models.py @@ -69,22 +69,6 @@ class Meta: ] -class RunProgressEvent(models.Model): - id = models.UUIDField(primary_key=True, default=uuid.uuid7, editable=False) - run = models.ForeignKey(Run, on_delete=models.CASCADE) - event_type = models.CharField(max_length=128) - stop_id = models.CharField(max_length=64, null=True) - payload = models.JSONField(default=dict) - timestamp = models.DateTimeField() - created_at = models.DateTimeField(auto_now_add=True) - - class Meta: - indexes = [ - models.Index(fields=["run", "timestamp"]), - models.Index(fields=["event_type"]), - ] - - class Position(models.Model): vehicle = models.ForeignKey(Vehicle, on_delete=models.PROTECT) timestamp = models.DateTimeField() diff --git a/backend/runs/services/progress.py b/backend/runs/services/progress.py deleted file mode 100644 index 15004a0..0000000 --- a/backend/runs/services/progress.py +++ /dev/null @@ -1,61 +0,0 @@ -from runs.models import Run - - -class RunProgressService: - def process_event(self, event, payload): - run = self._load_run(payload) - if not self._is_active(run): - return None - context = self._build_context(run, payload) - detected_events = self._detect_events(run, event, payload, context) - return self._persist_events(run, detected_events) - - def _load_run(self, payload): - run_id = payload.get("run_id") - return Run.objects.get(id=run_id) - - def _is_active(self, run): - return run.run_lifecycle_state == "IN_PROGRESS" - - def _build_context(self, run, payload): - context = { - "timestamp": payload.get("timestamp"), - "position": payload.get("position"), - "speed": payload.get("speed"), - # TODO: - # - last known position (Redis) - # - stop sequence (GTFS) - # - shape - } - return context - - def _detect_events(self, run, event, payload, context): - detected = [] - if event == "vehicle_position_updated": - detected.extend(self._detect_stop_events(run, context)) - detected.extend(self._detect_movement_events(run, context)) - return detected - - def _detect_stop_events(self, run, context): - events = [] - current_stop = 1 # self._infer_current_stop(run, context) - if current_stop and not self._was_at_stop(run, current_stop): - events.append( - { - "type": "vehicle_arrived_at_stop", - "stop_id": current_stop, - "timestamp": context["timestamp"], - } - ) - return events - - def _detect_movement_events(self, run, context): - events = [] - if context["speed"] > 5: - events.append( - { - "type": "vehicle_moving", - "timestamp": context["timestamp"], - } - ) - return events From ecf66a87d2d70aa3ef86491b48e140b70cd3e05b Mon Sep 17 00:00:00 2001 From: Jae Date: Tue, 18 Aug 2026 23:17:31 -0600 Subject: [PATCH 21/68] refactor: remove legacy feed.realtime bridge and unschedule build_alerts stub --- backend/databus/celery.py | 4 -- backend/feed/realtime/__init__.py | 13 ----- backend/feed/realtime/runs.py | 67 ------------------------- backend/feed/utils.py | 83 ------------------------------- 4 files changed, 167 deletions(-) delete mode 100644 backend/feed/realtime/__init__.py delete mode 100644 backend/feed/realtime/runs.py delete mode 100644 backend/feed/utils.py diff --git a/backend/databus/celery.py b/backend/databus/celery.py index 14c7b72..9b21311 100644 --- a/backend/databus/celery.py +++ b/backend/databus/celery.py @@ -42,10 +42,6 @@ def debug_task(self): "task": "schedule_engine.tasks.build_trip_updates", "schedule": timedelta(seconds=15), }, - "build-alerts-every-10s": { - "task": "schedule_engine.tasks.build_alerts", - "schedule": timedelta(seconds=10), - }, "scan-stale-runs-every-30s": { "task": "realtime_engine.tasks.scan_stale_runs", "schedule": timedelta(seconds=30), diff --git a/backend/feed/realtime/__init__.py b/backend/feed/realtime/__init__.py deleted file mode 100644 index 23a2f3d..0000000 --- a/backend/feed/realtime/__init__.py +++ /dev/null @@ -1,13 +0,0 @@ -from .runs import ( - process_submission, - process_confirmation, - process_completion, - process_interruption, -) - -__all__ = [ - "process_submission", - "process_confirmation", - "process_completion", - "process_interruption", -] diff --git a/backend/feed/realtime/runs.py b/backend/feed/realtime/runs.py deleted file mode 100644 index 473fb17..0000000 --- a/backend/feed/realtime/runs.py +++ /dev/null @@ -1,67 +0,0 @@ -from runs.models import Run -from messages import publish_event -from realtime_engine.tasks import register_run, start_run, end_run -from feed.utils import validate_run_request_data - - -def process_submission(payload): - publish_event("RUN_SUBMISSION_REQUESTED", payload) - is_valid, error_code = validate_run_request_data(payload) - if is_valid: - publish_event("RUN_SUBMISSION_SUCCEEDED", payload) - registration_result, run_id = register_run.delay(payload).get(timeout=15) - if registration_result: - publish_event("RUN_REGISTRATION_SUCCEEDED", payload) - return {"run_id": run_id}, 200 - else: - publish_event("RUN_REGISTRATION_FAILED", payload) - return ( - { - "error": { - "code": "Run registration failed", - "message": "Failed to register run", - } - }, - 400, - ) - else: - publish_event("RUN_SUBMISSION_FAILED", payload) - return ( - { - "error": { - "code": "Run request validation failed", - "message": error_code, - } - }, - 400, - ) - - -def process_confirmation(payload): - start_run_result = start_run.delay(payload).get(timeout=15) - if start_run_result: - updated = Run.objects.filter(id=payload.get("run_id")).update( - run_lifecycle_state="IN_PROGRESS" - ) - if not updated: - return {"error": "run_id no encontrado"}, 404 - publish_event("RUN_START_SUCCEEDED", payload) - return {"run_lifecycle_state": "IN_PROGRESS"}, 200 - else: - publish_event("RUN_CONFIRMATION_FAILED", payload) - return {"error": "No funcionó :("}, 400 - - -def process_completion(payload): - end_run_result = end_run.delay(payload).get(timeout=15) - if end_run_result: # Si end run se cumple: - publish_event("RUN_COMPLETION_SUCCEEDED", payload) - return {"run_lifecycle_state": "COMPLETED"}, 200 - else: # Si end run no se cumple: - publish_event("RUN_COMPLETION_FAILED", payload) - return {"error": "No se pudo completar el run"}, 400 - - -def process_interruption(payload): - publish_event("RUN_INTERRUPTED", payload) - return {"run_lifecycle_state": "INTERRUPTED"}, 200 diff --git a/backend/feed/utils.py b/backend/feed/utils.py deleted file mode 100644 index 1dfd5d3..0000000 --- a/backend/feed/utils.py +++ /dev/null @@ -1,83 +0,0 @@ -from .models import Feed, Trip -from operations.models import Vehicle, Operator -from runs.models import Run - - -def validate_run_request_data(run_data) -> tuple[bool, str | None]: - """ - Validate incoming run payload against system state and current GTFS feed. - - Args: - run_data (dict): Run request payload to validate. Expected keys include - ``vehicle_id``, ``operator_id``, ``route_id``, ``trip_id``, - ``direction_id``, ``shape_id``, and ``schedule_relationship``. - - Returns: - tuple[bool, str | None]: A tuple where the first value is ``True`` when - the payload is valid. The second value is ``None`` on success, or an - error code string on failure. - - Example: - >>> run_data = { - ... "vehicle_id": "BUS-01", - ... "operator_id": "OP-10", - ... "route_id": "10", - ... "trip_id": "10_20260427_1", - ... "direction_id": "1", - ... "shape_id": "shape_10_1", - ... "schedule_relationship": "SCHEDULED", - ... } - >>> validate_run_request_data(run_data) - (True, None) - """ - feed = Feed.objects.filter(is_current=True).first() - trip = Trip.objects.filter(feed=feed, trip_id=run_data.get("trip_id")).count() - if run_data.get("schedule_relationship") == "SCHEDULED" and trip > 0: - return (True, None) - # Are all required fields present and non-empty? - required = [ - "vehicle_id", - "operator_id", - "route_id", - "trip_id", - "direction_id", - "shape_id", - "schedule_relationship", - ] - if any(run_data.get(field) in (None, "") for field in required): - return (False, "MISSING_REQUIRED_FIELDS") - # JSON often sends numbers as strings ("0" instead of 0). The database stores it as an integer, so we convert. If the value can't be converted (e.g. "abc"), reject. - try: - direction_id = int(run_data["direction_id"]) - except (TypeError, ValueError): - return (False, "INVALID_DIRECTION_ID") - if direction_id not in (0, 1): - return (False, "INVALID_DIRECTION_ID") - # Does the vehicle exist? - if not Vehicle.objects.filter(id=run_data["vehicle_id"]).exists(): - return (False, "VEHICLE_NOT_FOUND") - # Does the operator exist? - if not Operator.objects.filter(id=run_data["operator_id"]).exists(): - return (False, "OPERATOR_NOT_FOUND") - # Is the bus in another active run? - if Run.objects.filter( - vehicle_id=run_data["vehicle_id"], - run_lifecycle_state="IN_PROGRESS", - ).exists(): - return (False, "VEHICLE_ALREADY_IN_PROGRESS") - # Is there a current GTFS Feed? - feed = Feed.objects.filter(is_current=True).first() - if feed is None: - return (False, "CURRENT_FEED_NOT_FOUND") - # Does the trip exist in the current GTFS feed? - trip_exists = Trip.objects.filter( - feed=feed, - trip_id=run_data["trip_id"], - route_id=run_data["route_id"], - direction_id=direction_id, - shape_id=run_data["shape_id"], - ).exists() - if not trip_exists: - return (False, "TRIP_NOT_FOUND_IN_CURRENT_FEED") - - return (True, None) From 8787f0c283ebac389c3daecd29670e7c095f6544 Mon Sep 17 00:00:00 2001 From: Jae Date: Tue, 18 Aug 2026 23:17:47 -0600 Subject: [PATCH 22/68] chore(docs): drop legacy mkdocs site --- docs/API.json | 26 ---- docs/api.md | 55 -------- docs/assets/diagram.png | Bin 255048 -> 0 bytes docs/deployment.md | 238 --------------------------------- docs/development.md | 84 ------------ docs/index.md | 17 --- docs/logos/b.png | Bin 266242 -> 0 bytes docs/mkdocs.yml | 40 ------ docs/obe.md | 52 ------- docs/old/API.json | 26 ---- docs/old/api.md | 55 -------- docs/old/assets/diagram.png | Bin 255048 -> 0 bytes docs/old/deployment.md | 238 --------------------------------- docs/old/development.md | 84 ------------ docs/old/index.md | 17 --- docs/old/logos/b.png | Bin 266242 -> 0 bytes docs/old/mkdocs.yml | 40 ------ docs/old/obe.md | 52 ------- docs/old/oldHOWTO.md | 170 ----------------------- docs/old/stylesheets/extra.css | 5 - docs/oldHOWTO.md | 170 ----------------------- docs/stylesheets/extra.css | 5 - 22 files changed, 1374 deletions(-) delete mode 100644 docs/API.json delete mode 100644 docs/api.md delete mode 100644 docs/assets/diagram.png delete mode 100644 docs/deployment.md delete mode 100644 docs/development.md delete mode 100644 docs/index.md delete mode 100644 docs/logos/b.png delete mode 100644 docs/mkdocs.yml delete mode 100644 docs/obe.md delete mode 100644 docs/old/API.json delete mode 100644 docs/old/api.md delete mode 100644 docs/old/assets/diagram.png delete mode 100644 docs/old/deployment.md delete mode 100644 docs/old/development.md delete mode 100644 docs/old/index.md delete mode 100644 docs/old/logos/b.png delete mode 100644 docs/old/mkdocs.yml delete mode 100644 docs/old/obe.md delete mode 100644 docs/old/oldHOWTO.md delete mode 100644 docs/old/stylesheets/extra.css delete mode 100644 docs/oldHOWTO.md delete mode 100644 docs/stylesheets/extra.css diff --git a/docs/API.json b/docs/API.json deleted file mode 100644 index 10ee5bd..0000000 --- a/docs/API.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "vehicle_id": "1234", - "route_id": "bUCR_L1", - "trip_id": "EYU94JE743", - "start_date": "20231112", - "start_time": "10:03:00", - "location": { - "latitude": 42.0, - "longitude": -71.0 - }, - "inertial": { - "bearing": 225, - "speed": 23, - }, - "vehicle_health": { - "fuel_level": 0.5, - "oil_level": 0.5, - "tire_pressure": 0.5, - "battery_voltage": 12.5 - }, - "environmental": { - "temperature": 72, - "humidity": 0.5, - "pressure": 1013 - } -} \ No newline at end of file diff --git a/docs/api.md b/docs/api.md deleted file mode 100644 index 30c8837..0000000 --- a/docs/api.md +++ /dev/null @@ -1,55 +0,0 @@ -# Especificación del API - -# APIs - -- Publicar datos en tiempo real -(requiere autenticación) -```http -POST /api/datos {"vehicle_id": ...} -``` - -- Obtener GTFS Schedule -(no requiere autenticación) -```http -GET /api/gtfs -``` - -- Obtener GTFS Realtime - Actualizaciones de viaje (`TripUpdates`) -```http -GET /api/realtime/trip-updates -``` - -- Obtener GTFS Realtime - Posiciones del vehículo (`VehiclePositions`) -```http -GET /api/realtime/vehicle-positions -``` - - -`bus.ucr.ac.cr/api/datos` - -## Especificación de los datos de los vehículos - -La siguiente especificación de datos fue construida con base en: - -- La especificación de datos abiertos de transporte público GTFS Schedule y GTFS Realtime v2.0 -- La Arquitectura de Referencia para Transporte Inteligente y Colaborativo (ARC-IT) del Departamento de Transportes de los Estados Unidos - -Su objetivo primario es la construcción de un *feed* (o "suministro de datos") en tiempo real para consumo de aplicaciones compatibles con GTFS. Esto es de utilidad, especialmente, para usuarios del servicio. - -Pero también está diseñado para prever necesidades y aplicaciones futuras con base en la amplia especificación de "paquetes de servicio" para transporte público de ARC-IT. Esto podría de uso primario para operadores, gestores, planificadores, reguladores y otras partes interesadas. - -```json -{ - "vehicle_id": "1234", - "route_id": "bUCR_L1", - "trip_id": "EYU94JE743", - "location": { - "latitude": 9.98363, - "longitude": -84.9474573 - } -} -``` - -``` title="Ejemplo de JSON" ---8<-- "./API.json" -``` \ No newline at end of file diff --git a/docs/assets/diagram.png b/docs/assets/diagram.png deleted file mode 100644 index 6ccbf678b99dd91f3d23cd2bb0908925c5ab4c07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 255048 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�ti)5yxq_YFSmFD{59rC@@sI2#A(8l9 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

7s7}x1H=2UH0&XH)^B`Ac>eDr`o)h?xa@W7 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�Uk#_o9x6(IGGR?<4`?1+~I-{J!f1Z1N7g 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 diff --git a/docs/deployment.md b/docs/deployment.md deleted file mode 100644 index ae11000..0000000 --- a/docs/deployment.md +++ /dev/null @@ -1,238 +0,0 @@ -# Deployment - -On a Linux Ubuntu 22.04 LTS server, this is the configuration of Celery and Celery Beat with `systemd`, following most of the instructions in the [Daemonization guide](https://docs.celeryq.dev/en/stable/userguide/daemonizing.html#daemon-systemd-generic) of Celery. - -- **Note**: this assumes that Redis is installed (`sudo apt install redis-server`) and all the Python packages in `requirements.txt`. It is possible to check if Redis is running with `sudo systemctl is-enabled redis-server`. - -## Celery Deployment - -Configuring Celery as a system service. Preliminaries: - -- The Django project is in `/home/bucr/realtime` -- The virtual environment is in `/home/bucr/realtime/realtimeenv/bin` -- The user is `bucr` and belongs to the group `bucr` - -The environment variables are located in the file `/etc/conf.d/celery`, as shown below. - -```ini title="/etc/conf.d/celery" -# Name of nodes to start -CELERYD_NODES="w1" - -# Absolute or relative path to the 'celery' command: -CELERY_BIN="/home/bucr/realtime/realtimeenv/bin/celery" - -# App instance to use -CELERY_APP="realtime" - -# How to call manage.py -CELERYD_MULTI="multi" - -# Extra command-line arguments to the worker -CELERYD_OPTS="--time-limit=300 --concurrency=1" - -# - %n will be replaced with the first part of the nodename. -# - %I will be replaced with the current child process index -# and is important when using the prefork pool to avoid race conditions. -CELERYD_PID_FILE="/var/run/celery/%n.pid" -CELERYD_LOG_FILE="/var/log/celery/%n%I.log" -CELERYD_LOG_LEVEL="INFO" - -# Celery Beat -CELERYBEAT_SCHEDULER="django_celery_beat.schedulers:DatabaseScheduler" -CELERYBEAT_PID_FILE="/var/run/celery/beat.pid" -CELERYBEAT_LOG_FILE="/var/log/celery/beat.log" -``` - -Notes: - -- Concurrency is set to 1 because current servers have single CPU(s), thread(s) per core and core(s) per socket. -- The directories `/var/run/celery/` and `/var/log/celery/` for the PID and LOG files, respectively, must first be created when configuring Celery. So: - -```bash -sudo mkdir -p /var/run/celery/ -sudo mkdir -p /var/log/celery/ -``` - -- Now the user and group `bucr:bucr` need permissions for those directories: - -```bash -sudo chown bucr:bucr /var/run/celery/ -sudo chown bucr:bucr /var/log/celery/ -``` - -- The PID file and log file must be created on each reboot with the following configuration, where `bucr bucr` is the user and group and `0755` are the permissions. - -```ini title="/etc/tmpfiles.d/celery.conf" -d /run/celery 0755 bucr bucr - -d /var/log/celery 0755 bucr bucr - -``` - -### Celery Worker - -This process is configured below. - -```ini title="/etc/systemd/system/celery.service" -[Unit] -Description=Celery Service -After=network.target - -[Service] -Type=forking -User=bucr -Group=bucr -EnvironmentFile=/etc/conf.d/celery -WorkingDirectory=/home/bucr/realtime/ -RuntimeDirectory=celery -ExecStart=/bin/sh -c '${CELERY_BIN} -A $CELERY_APP multi start $CELERYD_NODES \ - --pidfile=${CELERYD_PID_FILE} \ - --logfile=${CELERYD_LOG_FILE} \ - --loglevel="${CELERYD_LOG_LEVEL}" \ - $CELERYD_OPTS' -ExecStop=/bin/sh -c '${CELERY_BIN} multi stopwait $CELERYD_NODES \ - --pidfile=${CELERYD_PID_FILE} \ - --logfile=${CELERYD_LOG_FILE} \ - --loglevel="${CELERYD_LOG_LEVEL}"' -ExecReload=/bin/sh -c '${CELERY_BIN} -A $CELERY_APP multi restart $CELERYD_NODES \ - --pidfile=${CELERYD_PID_FILE} \ - --logfile=${CELERYD_LOG_FILE} \ - --loglevel="${CELERYD_LOG_LEVEL}" \ - $CELERYD_OPTS' -Restart=always - -[Install] -WantedBy=multi-user.target -``` - -Relevant `systemctl` commands: - -- On every change to this file: `sudo systemctl daemon-reload` -- To start: `sudo systemctl start celery` -- To stop: `sudo systemctl stop celery` -- To check status: `sudo systemctl status celery` -- To allow execution on reboot: `sudo systemctl enable celery` -- Others: `restart`/`reload`/`is-enabled`/`disable` - -### Celery Beat - -This process is configured below. - -- **Note**: the periodic tasks are configured in the Django admin panel, thanks to the package `django-celery-beat`, and as configured here with `--scheduler` as `django_celery_beat.schedulers:DatabaseScheduler`. - -```ini title="/etc/systemd/system/celerybeat.service" -[Unit] -Description=Celery Beat Service -After=network.target celery.service - -[Service] -Type=simple -User=bucr -Group=bucr -EnvironmentFile=/etc/conf.d/celery -WorkingDirectory=/home/bucr/realtime/ -ExecStart=/bin/sh -c '${CELERY_BIN} -A ${CELERY_APP} beat \ - --pidfile=${CELERYBEAT_PID_FILE} \ - --logfile=${CELERYBEAT_LOG_FILE} \ - --loglevel=${CELERYD_LOG_LEVEL} \ - --scheduler ${CELERYBEAT_SCHEDULER}' -Restart=always - -[Install] -WantedBy=multi-user.target -``` - -Relevant `systemctl` commands: - -- On every change to this file: `sudo systemctl daemon-reload` -- To start: `sudo systemctl start celerybeat` -- To stop: `sudo systemctl stop celerybeat` -- To check status: `sudo systemctl status celerybeat` -- To allow execution on reboot: `sudo systemctl enable celerybeat` -- Others: `restart`/`reload`/`is-enabled`/`disable` - -## Daphne Deployment - -For using Channels and WebSockets, it is necessary to configure the Daphne server. - -```init title="/etc/systemd/system/daphne.service" hl_lines="9" -[Unit] -Description=WebSocket Daphne Service -After=network.target - -[Service] -User=bucr -Group=www-data -WorkingDirectory=/home/bucr/realtime -ExecStart=/home/bucr/realtime/realtimeenv/bin/daphne -p 8001 realtime.asgi:application -Restart=on-failure - -[Install] -WantedBy=multi-user.target -``` - -Relevant `systemctl` commands: - -- On every change to this file: `sudo systemctl daemon-reload` -- To start: `sudo systemctl start daphne` -- To stop: `sudo systemctl stop daphne` -- To check status: `sudo systemctl status daphne` -- To allow execution on reboot: `sudo systemctl enable daphne` -- Others: `restart`/`reload`/`is-enabled`/`disable` - -It is necessary to allow execution on reboot with `sudo systemctl enable daphne`. - -Now, for Nginx to proxy pass to Daphne, the following is needed: - -```init title="/etc/nginx/sites-available/realtime" hl_lines="15-20" -server { - listen 80; - server_name server_domain_or_IP; - - location = /favicon.ico { access_log off; log_not_found off; } - location /static/ { - root /home/bucr/realtime; - } - - location / { - include proxy_params; - proxy_pass http://unix:/run/gunicorn.sock; - } - - location /ws/ { - proxy_pass http://localhost:8001; - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; - } - -} -``` - -## Updating the repository - -```bash -sudo nano restart_services.sh -``` - -where - -```bash -#!/bin/bash - -sudo systemctl restart celery -sudo systemctl restart celerybeat -sudo systemctl restart daphne -sudo systemctl restart gunicorn -sudo systemctl restart nginx -``` - -and make executable with - -```bash -sudo chmod +x restart_services.sh -``` - -and then execute - -```bash -./restart_services.sh -``` diff --git a/docs/development.md b/docs/development.md deleted file mode 100644 index d06e044..0000000 --- a/docs/development.md +++ /dev/null @@ -1,84 +0,0 @@ -# Desarrollo funcional - -## Especificación de los datos - -Investigar y proponer una **especificación de los datos** de telemetría (?) recopilados de los buses y transmitidos al servidor. - -- Esto será parte de nuestra propuesta de arquitectura tecnológica. -- Preliminarmente, estará inspirado en NGSI-LD para la especificación de los datos recopilados, posiblemente con JSON-LD como formato. -- La decisión de cuáles datos recopilar puede estar basada en ARC-IT (según los distintos paquetes de servicio). -- No está limitado a los datos disponibles en GTFS Realtime. -- También puede depender de las necesidades operativa de las agencias de transporte (por ejemplo: hasta la presión de las llantas puede ser un dato a enviar). -- A veces no podemos ser exhaustivos en la lista de variables pero sí podemos hacer una clasificación sensata de grandes categorías donde están esos datos. -- Asumir que para nuestro prototipo vamos a probar con datos sintéticos creados con esta especificación. - -## Posibles fuentes de datos - -- Un _feed_ GTFS Realtime de alguna agencia (ejemplo: MBTA). Pros: ya están listos y accesibles. Contras: ya son GTFS Realtime (no incluye la transformación), son masivos y ajenos a nuestras pantallas. -- Datos sintéticos para pruebas. Pros: pueden diseñarse para ser un MWE (ejemplo viable mínimo) para nuestro contexto específico. Contras: no son realistas, requieren pensar dedicadamente en la "simulación". - - _Hard-coded_ - - Simulación con [SUMO](https://eclipse.dev/sumo/). Nota: hay un proyecto con Gustavo Núñez que desarrolló algo como esto. -- Datos generados por un prototipo en la UCR (ejemplo: la implementación con RACSA). Pros: es el objetivo del proyecto. Contras: es laborioso y caro de implementar pues requiere de equipo de hardware y conexión a la red. - -El consenso es iniciar con datos sintéticos de prueba. - -## Datos sintéticos para pruebas del sistema - -Hacer un *script* de creación de **datos sintéticos** donde podamos simular datos "en tiempo real" para desplegarlos en las pantallas. - -- Posiblemente, crear un *toy model* para la prueba del prototipo, no necesariamente un modelo realista del sistema de la U, pero sí tiene que ser consistente con un GTFS Schedule. -- Considerar la aleatoriedad de los tiempos de desplazamiento y de la ocupación del bus. Para que tenga un realismo aceptable, debe ser coherente con, por ejemplo, los tiempos de subida y bajada de los pasajeros, etc. -- Como referencia, hay un proyecto en SUMO (simulador de redes de tránsito vehicular), preguntar a Gustavo Núñez. -- Los datos entre los buses son asincrónicos, es decir, llegan en cualquier momento, no están coordinados entre sí. Para que sea realista debe haber más de un bus (de preferencia muchos) circulando en cualquier momento dado. - -Premisas para hacer un modelo simplificado: - -- Utilizar el GTFS del bus UCR -- La pantalla objetivo está en Facultad de Ingeniería (la visualización sería ahí) -- Hacer salidas regulares de buses. Si un bus tarda aproximadamente de 20 a 30 minutos haciendo un viaje (depende de la trayectoria, con o sin "milla"), entonces con un tiempo de salida regular cada aproximadamente 15 minutos, siempre habría más de un bus reportando datos en el sistema. Esto es útil para probar la visualización. Dado el caso, sería posible modificar ese "headway" (tiempo entre salidas) para hacerlo menor o mayor y probar el sistema. -- Podemos asumir libremente que el sistema opera 24/7 con salidas regulares. Que no se nos olvide probar el caso en el que no hay datos (ejemplo: la pantalla debe tener un mensaje de que no hay buses actualmente o algo así). -- Elegir solamente los datos de GTFS Realtime (ocupación, velocidad, dirección, posición, odómetro) y *tal vez* algún dato complementario para enviar -- Simulación de datos: - - Posición: elegir un punto de la secuencia de puntos de la trayectoria en la tabla `shapes.txt` basados en la distancia recorrida (`shape_dist_traveled`) y algún criterio de velocidad promedio del bus (por ejemplo 15 km/h para una trayectoria de 5 km recorrida en 20 minutos). - - Velocidad: un número aleatorio elegido de una distribución normal con valor medio 15 km/h (u otra velocidad promedio) con una desviación estándar "sensata". - - Ocupación: un número aleatorio entre 0 y C (capacidad máxima del bus) pero que cambia únicamente después de pasar por una parada. Para esto hay que conocer dónde están las paradas (tabla `stops.txt`). Mejor enfocar la aleatoriedad como: "se subieron o bajaron N personas en cada parada". - - Dirección: la dirección del vector que une el punto de la trayectoria anterior con la posición actual, y según GTFS Realtime: "Bearing, in degrees, clockwise from True North, i.e., 0 is North and 90 is East." - - Odómetro: distancia recorrida en el viaje, igual a `shape_dist_traveled`. -- Luego: crear el `FeedMessage` binaro del GTFS Realtime a partir de esto. -- Sugerencia: un _script_ para la creación de los datos simulados y otro _script_ para la conversión en GTFS Realtime (usar paquetes de Google para eso). - -## Creación de GTFS Realtime - -Crear un *script* de Python para recopilar los datos enviados según la especificación propuesta (arriba) y "confeccionar" un `FeedMessage` y dejar a disposición de todos los consumidores (incluyendo el otro servidor `gtfs-screens`). - -Es necesario **dominar** [GTFS Realtime](https://gtfs.org/realtime/reference/) a profundidad. Un `FeedMessage` tiene tres posibles *entidades*: - -- *Service Alerts* -- *Trip Updates* -- *Vehicle Positions* - -> GTFS Realtime es entregado como un archivo binario Protobuf `.pb`. Referencia de [MBTA GTFS Realtime](https://github.com/mbta/gtfs-documentation/blob/master/reference/gtfs-realtime.md) para ver las actualizaciones (también disponibles en JSON). - -En este proyecto, implementaremos *Vehicle Positions* y *Trip Updates*. *Service Alerts* no porque requiere de un sistema conectado con la agencia para que sea actualizado por personas, no es telemetría automatizada. - -Secuencia prevista de esta tarea: - -- Con algún mecanismo de recepción de datos en tiempo real (por ejemplo: Apache Pulsar) es necesario recopilar los datos y guardarlos en memoria. -- Cada $N$ segundos es necesario crear el `FeedMessage`. Inicialmente, $N = 20$ (esta es una importante referencia también para los datos sintéticos). -- Es necesario "desempacar" estos datos y crear la entidad `vehicle` de GTFS Realtime dentro de `FeedMessage`. -- Finalmente, dejar el archivo `.pb` y quizá `.json` en una URL, por ejemplo: `buses.ucr.ac.cr/realtime/vehicle_positions.pb`. -- Repetir *ad infinitum* - -Nota mental: - -- `VehiclePositions` se construye a partir de los datos de los buses -- `TripUpdates` se construye a partir de cálculos hechos en el servidor -- `ServiceAlerts` se construye a partir de *input* de una plataforma de interfaz con la administración del servicio - -## Estructura del proyecto en Django - -### Aplicaciones - -- `gtfs`: maneja la base de datos con los datos GTFS -- `feed`: realiza las tareas periódicas de recolección de datos de los buses y la (futura) plataforma de `ServiceAlerts` para crear el `FeedMessage`. -- `website`: controla las páginas misceláneas del servidor como panel de administración y panel de datos, etc. \ No newline at end of file diff --git a/docs/index.md b/docs/index.md deleted file mode 100644 index 000ea34..0000000 --- a/docs/index.md +++ /dev/null @@ -1,17 +0,0 @@ -# Welcome to MkDocs - -For full documentation visit [mkdocs.org](https://www.mkdocs.org). - -## Commands - -* `mkdocs new [dir-name]` - Create a new project. -* `mkdocs serve` - Start the live-reloading docs server. -* `mkdocs build` - Build the documentation site. -* `mkdocs -h` - Print help message and exit. - -## Project layout - - mkdocs.yml # The configuration file. - docs/ - index.md # The documentation homepage. - ... # Other markdown pages, images and other files. diff --git a/docs/logos/b.png b/docs/logos/b.png deleted file mode 100644 index 4848d11497ceddba5e253f70627f00d1c9d80d68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 266242 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ⅆ!xA)D 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

nbSo-x~*A}2;upx;Rwtu|6aL>drZr*?X8Tg*` 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 z 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 vBB@jDu}KSz4=)e6J&1Oy; diff --git a/docs/mkdocs.yml b/docs/mkdocs.yml deleted file mode 100644 index 5020603..0000000 --- a/docs/mkdocs.yml +++ /dev/null @@ -1,40 +0,0 @@ -site_name: Servidor en tiempo real de datos GTFS - -nav: - - Inicio: index.md - - Desarrollo: development.md - - Equipo de abordo: obe.md - - Celery: deployment.md - - API: api.md - -extra_css: - - stylesheets/extra.css - -theme: - name: material - language: es - logo: assets/logos/b.png - favicon: assets/logos/b.png - palette: - scheme: ucr - features: - - navigation.expand - - navigation.tabs - - toc.integrate - - content.code.copy - - content.code.select - -markdown_extensions: - - admonition - - pymdownx.highlight: - anchor_linenums: true - line_spans: __span - pygments_lang_class: true - - pymdownx.inlinehilite - - pymdownx.snippets - - pymdownx.superfences - - pymdownx.superfences: - custom_fences: - - name: mermaid - class: mermaid - format: !!python/name:pymdownx.superfences.fence_code_format \ No newline at end of file diff --git a/docs/obe.md b/docs/obe.md deleted file mode 100644 index 4ebcfef..0000000 --- a/docs/obe.md +++ /dev/null @@ -1,52 +0,0 @@ -# Especificación del equipo de abordo - -!!! info - Trabajo en desarrollo - -Un equipo de abordo (**OBE**, del inglés *On-Board Equipment*) es una computadora/router ubicada en las unidades de autobús diseñadas para varias tareas, entre ellas: - -- Recopilar datos del bus a través de sensores, como: - - Ubicación, velocidad, dirección, con GPS y/o sensores inerciales - - Ocupación del bus, con cámaras, barras u otros - - Presión de llantas, puertas abiertas, etc. - - Datos ambientales, con sensores de todo tipo -- Enviar alertas con *input* del operador del bus (choques, quedó varado, etc.) -- Operar como *router* Wi-Fi para pasajeros del bus -- Enviar periódicamente toda la información necesaria por medio de alguna red de acceso (celular o Wi-Fi, por ejemplo) a uno o varios servidores - -## Requisitos - -### Requisitos mínimos - -- Sensor GPS -- Conectividad en red celular y/o Wi-Fi -- Interfaz para conductor - -# Requisitos deseables - -- Cámara para -- Pantalla informativa para pasajeros - -### Conectividad - -Es deseable conectividad celular, con capacidades para solicitudes HTTP - -## Especificación de los datos a enviar - -Los datos serán enviados siguiendo la especificación de los datos del API... - -### Interfaz - -Tareas: - -- Configurar el equipo para un vehículo -- Ingresar los datos de cada viaje - -Ejemplo de secuencia de inicio de viaje: - -1. [Botón de configurar nuevo viaje] -2. Seleccionar ruta del viaje -3. Seleccionar viaje, según hora (lista prestablecida en GTFS Schedule) -4. [Botón de iniciar viaje] - - Al iniciar viaje, se registran la fecha y hora - diff --git a/docs/old/API.json b/docs/old/API.json deleted file mode 100644 index 10ee5bd..0000000 --- a/docs/old/API.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "vehicle_id": "1234", - "route_id": "bUCR_L1", - "trip_id": "EYU94JE743", - "start_date": "20231112", - "start_time": "10:03:00", - "location": { - "latitude": 42.0, - "longitude": -71.0 - }, - "inertial": { - "bearing": 225, - "speed": 23, - }, - "vehicle_health": { - "fuel_level": 0.5, - "oil_level": 0.5, - "tire_pressure": 0.5, - "battery_voltage": 12.5 - }, - "environmental": { - "temperature": 72, - "humidity": 0.5, - "pressure": 1013 - } -} \ No newline at end of file diff --git a/docs/old/api.md b/docs/old/api.md deleted file mode 100644 index 30c8837..0000000 --- a/docs/old/api.md +++ /dev/null @@ -1,55 +0,0 @@ -# Especificación del API - -# APIs - -- Publicar datos en tiempo real -(requiere autenticación) -```http -POST /api/datos {"vehicle_id": ...} -``` - -- Obtener GTFS Schedule -(no requiere autenticación) -```http -GET /api/gtfs -``` - -- Obtener GTFS Realtime - Actualizaciones de viaje (`TripUpdates`) -```http -GET /api/realtime/trip-updates -``` - -- Obtener GTFS Realtime - Posiciones del vehículo (`VehiclePositions`) -```http -GET /api/realtime/vehicle-positions -``` - - -`bus.ucr.ac.cr/api/datos` - -## Especificación de los datos de los vehículos - -La siguiente especificación de datos fue construida con base en: - -- La especificación de datos abiertos de transporte público GTFS Schedule y GTFS Realtime v2.0 -- La Arquitectura de Referencia para Transporte Inteligente y Colaborativo (ARC-IT) del Departamento de Transportes de los Estados Unidos - -Su objetivo primario es la construcción de un *feed* (o "suministro de datos") en tiempo real para consumo de aplicaciones compatibles con GTFS. Esto es de utilidad, especialmente, para usuarios del servicio. - -Pero también está diseñado para prever necesidades y aplicaciones futuras con base en la amplia especificación de "paquetes de servicio" para transporte público de ARC-IT. Esto podría de uso primario para operadores, gestores, planificadores, reguladores y otras partes interesadas. - -```json -{ - "vehicle_id": "1234", - "route_id": "bUCR_L1", - "trip_id": "EYU94JE743", - "location": { - "latitude": 9.98363, - "longitude": -84.9474573 - } -} -``` - -``` title="Ejemplo de JSON" ---8<-- "./API.json" -``` \ No newline at end of file diff --git a/docs/old/assets/diagram.png b/docs/old/assets/diagram.png deleted file mode 100644 index 6ccbf678b99dd91f3d23cd2bb0908925c5ab4c07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 255048 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�ti)5yxq_YFSmFD{59rC@@sI2#A(8l9 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

7s7}x1H=2UH0&XH)^B`Ac>eDr`o)h?xa@W7 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�Uk#_o9x6(IGGR?<4`?1+~I-{J!f1Z1N7g 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 diff --git a/docs/old/deployment.md b/docs/old/deployment.md deleted file mode 100644 index ae11000..0000000 --- a/docs/old/deployment.md +++ /dev/null @@ -1,238 +0,0 @@ -# Deployment - -On a Linux Ubuntu 22.04 LTS server, this is the configuration of Celery and Celery Beat with `systemd`, following most of the instructions in the [Daemonization guide](https://docs.celeryq.dev/en/stable/userguide/daemonizing.html#daemon-systemd-generic) of Celery. - -- **Note**: this assumes that Redis is installed (`sudo apt install redis-server`) and all the Python packages in `requirements.txt`. It is possible to check if Redis is running with `sudo systemctl is-enabled redis-server`. - -## Celery Deployment - -Configuring Celery as a system service. Preliminaries: - -- The Django project is in `/home/bucr/realtime` -- The virtual environment is in `/home/bucr/realtime/realtimeenv/bin` -- The user is `bucr` and belongs to the group `bucr` - -The environment variables are located in the file `/etc/conf.d/celery`, as shown below. - -```ini title="/etc/conf.d/celery" -# Name of nodes to start -CELERYD_NODES="w1" - -# Absolute or relative path to the 'celery' command: -CELERY_BIN="/home/bucr/realtime/realtimeenv/bin/celery" - -# App instance to use -CELERY_APP="realtime" - -# How to call manage.py -CELERYD_MULTI="multi" - -# Extra command-line arguments to the worker -CELERYD_OPTS="--time-limit=300 --concurrency=1" - -# - %n will be replaced with the first part of the nodename. -# - %I will be replaced with the current child process index -# and is important when using the prefork pool to avoid race conditions. -CELERYD_PID_FILE="/var/run/celery/%n.pid" -CELERYD_LOG_FILE="/var/log/celery/%n%I.log" -CELERYD_LOG_LEVEL="INFO" - -# Celery Beat -CELERYBEAT_SCHEDULER="django_celery_beat.schedulers:DatabaseScheduler" -CELERYBEAT_PID_FILE="/var/run/celery/beat.pid" -CELERYBEAT_LOG_FILE="/var/log/celery/beat.log" -``` - -Notes: - -- Concurrency is set to 1 because current servers have single CPU(s), thread(s) per core and core(s) per socket. -- The directories `/var/run/celery/` and `/var/log/celery/` for the PID and LOG files, respectively, must first be created when configuring Celery. So: - -```bash -sudo mkdir -p /var/run/celery/ -sudo mkdir -p /var/log/celery/ -``` - -- Now the user and group `bucr:bucr` need permissions for those directories: - -```bash -sudo chown bucr:bucr /var/run/celery/ -sudo chown bucr:bucr /var/log/celery/ -``` - -- The PID file and log file must be created on each reboot with the following configuration, where `bucr bucr` is the user and group and `0755` are the permissions. - -```ini title="/etc/tmpfiles.d/celery.conf" -d /run/celery 0755 bucr bucr - -d /var/log/celery 0755 bucr bucr - -``` - -### Celery Worker - -This process is configured below. - -```ini title="/etc/systemd/system/celery.service" -[Unit] -Description=Celery Service -After=network.target - -[Service] -Type=forking -User=bucr -Group=bucr -EnvironmentFile=/etc/conf.d/celery -WorkingDirectory=/home/bucr/realtime/ -RuntimeDirectory=celery -ExecStart=/bin/sh -c '${CELERY_BIN} -A $CELERY_APP multi start $CELERYD_NODES \ - --pidfile=${CELERYD_PID_FILE} \ - --logfile=${CELERYD_LOG_FILE} \ - --loglevel="${CELERYD_LOG_LEVEL}" \ - $CELERYD_OPTS' -ExecStop=/bin/sh -c '${CELERY_BIN} multi stopwait $CELERYD_NODES \ - --pidfile=${CELERYD_PID_FILE} \ - --logfile=${CELERYD_LOG_FILE} \ - --loglevel="${CELERYD_LOG_LEVEL}"' -ExecReload=/bin/sh -c '${CELERY_BIN} -A $CELERY_APP multi restart $CELERYD_NODES \ - --pidfile=${CELERYD_PID_FILE} \ - --logfile=${CELERYD_LOG_FILE} \ - --loglevel="${CELERYD_LOG_LEVEL}" \ - $CELERYD_OPTS' -Restart=always - -[Install] -WantedBy=multi-user.target -``` - -Relevant `systemctl` commands: - -- On every change to this file: `sudo systemctl daemon-reload` -- To start: `sudo systemctl start celery` -- To stop: `sudo systemctl stop celery` -- To check status: `sudo systemctl status celery` -- To allow execution on reboot: `sudo systemctl enable celery` -- Others: `restart`/`reload`/`is-enabled`/`disable` - -### Celery Beat - -This process is configured below. - -- **Note**: the periodic tasks are configured in the Django admin panel, thanks to the package `django-celery-beat`, and as configured here with `--scheduler` as `django_celery_beat.schedulers:DatabaseScheduler`. - -```ini title="/etc/systemd/system/celerybeat.service" -[Unit] -Description=Celery Beat Service -After=network.target celery.service - -[Service] -Type=simple -User=bucr -Group=bucr -EnvironmentFile=/etc/conf.d/celery -WorkingDirectory=/home/bucr/realtime/ -ExecStart=/bin/sh -c '${CELERY_BIN} -A ${CELERY_APP} beat \ - --pidfile=${CELERYBEAT_PID_FILE} \ - --logfile=${CELERYBEAT_LOG_FILE} \ - --loglevel=${CELERYD_LOG_LEVEL} \ - --scheduler ${CELERYBEAT_SCHEDULER}' -Restart=always - -[Install] -WantedBy=multi-user.target -``` - -Relevant `systemctl` commands: - -- On every change to this file: `sudo systemctl daemon-reload` -- To start: `sudo systemctl start celerybeat` -- To stop: `sudo systemctl stop celerybeat` -- To check status: `sudo systemctl status celerybeat` -- To allow execution on reboot: `sudo systemctl enable celerybeat` -- Others: `restart`/`reload`/`is-enabled`/`disable` - -## Daphne Deployment - -For using Channels and WebSockets, it is necessary to configure the Daphne server. - -```init title="/etc/systemd/system/daphne.service" hl_lines="9" -[Unit] -Description=WebSocket Daphne Service -After=network.target - -[Service] -User=bucr -Group=www-data -WorkingDirectory=/home/bucr/realtime -ExecStart=/home/bucr/realtime/realtimeenv/bin/daphne -p 8001 realtime.asgi:application -Restart=on-failure - -[Install] -WantedBy=multi-user.target -``` - -Relevant `systemctl` commands: - -- On every change to this file: `sudo systemctl daemon-reload` -- To start: `sudo systemctl start daphne` -- To stop: `sudo systemctl stop daphne` -- To check status: `sudo systemctl status daphne` -- To allow execution on reboot: `sudo systemctl enable daphne` -- Others: `restart`/`reload`/`is-enabled`/`disable` - -It is necessary to allow execution on reboot with `sudo systemctl enable daphne`. - -Now, for Nginx to proxy pass to Daphne, the following is needed: - -```init title="/etc/nginx/sites-available/realtime" hl_lines="15-20" -server { - listen 80; - server_name server_domain_or_IP; - - location = /favicon.ico { access_log off; log_not_found off; } - location /static/ { - root /home/bucr/realtime; - } - - location / { - include proxy_params; - proxy_pass http://unix:/run/gunicorn.sock; - } - - location /ws/ { - proxy_pass http://localhost:8001; - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; - } - -} -``` - -## Updating the repository - -```bash -sudo nano restart_services.sh -``` - -where - -```bash -#!/bin/bash - -sudo systemctl restart celery -sudo systemctl restart celerybeat -sudo systemctl restart daphne -sudo systemctl restart gunicorn -sudo systemctl restart nginx -``` - -and make executable with - -```bash -sudo chmod +x restart_services.sh -``` - -and then execute - -```bash -./restart_services.sh -``` diff --git a/docs/old/development.md b/docs/old/development.md deleted file mode 100644 index d06e044..0000000 --- a/docs/old/development.md +++ /dev/null @@ -1,84 +0,0 @@ -# Desarrollo funcional - -## Especificación de los datos - -Investigar y proponer una **especificación de los datos** de telemetría (?) recopilados de los buses y transmitidos al servidor. - -- Esto será parte de nuestra propuesta de arquitectura tecnológica. -- Preliminarmente, estará inspirado en NGSI-LD para la especificación de los datos recopilados, posiblemente con JSON-LD como formato. -- La decisión de cuáles datos recopilar puede estar basada en ARC-IT (según los distintos paquetes de servicio). -- No está limitado a los datos disponibles en GTFS Realtime. -- También puede depender de las necesidades operativa de las agencias de transporte (por ejemplo: hasta la presión de las llantas puede ser un dato a enviar). -- A veces no podemos ser exhaustivos en la lista de variables pero sí podemos hacer una clasificación sensata de grandes categorías donde están esos datos. -- Asumir que para nuestro prototipo vamos a probar con datos sintéticos creados con esta especificación. - -## Posibles fuentes de datos - -- Un _feed_ GTFS Realtime de alguna agencia (ejemplo: MBTA). Pros: ya están listos y accesibles. Contras: ya son GTFS Realtime (no incluye la transformación), son masivos y ajenos a nuestras pantallas. -- Datos sintéticos para pruebas. Pros: pueden diseñarse para ser un MWE (ejemplo viable mínimo) para nuestro contexto específico. Contras: no son realistas, requieren pensar dedicadamente en la "simulación". - - _Hard-coded_ - - Simulación con [SUMO](https://eclipse.dev/sumo/). Nota: hay un proyecto con Gustavo Núñez que desarrolló algo como esto. -- Datos generados por un prototipo en la UCR (ejemplo: la implementación con RACSA). Pros: es el objetivo del proyecto. Contras: es laborioso y caro de implementar pues requiere de equipo de hardware y conexión a la red. - -El consenso es iniciar con datos sintéticos de prueba. - -## Datos sintéticos para pruebas del sistema - -Hacer un *script* de creación de **datos sintéticos** donde podamos simular datos "en tiempo real" para desplegarlos en las pantallas. - -- Posiblemente, crear un *toy model* para la prueba del prototipo, no necesariamente un modelo realista del sistema de la U, pero sí tiene que ser consistente con un GTFS Schedule. -- Considerar la aleatoriedad de los tiempos de desplazamiento y de la ocupación del bus. Para que tenga un realismo aceptable, debe ser coherente con, por ejemplo, los tiempos de subida y bajada de los pasajeros, etc. -- Como referencia, hay un proyecto en SUMO (simulador de redes de tránsito vehicular), preguntar a Gustavo Núñez. -- Los datos entre los buses son asincrónicos, es decir, llegan en cualquier momento, no están coordinados entre sí. Para que sea realista debe haber más de un bus (de preferencia muchos) circulando en cualquier momento dado. - -Premisas para hacer un modelo simplificado: - -- Utilizar el GTFS del bus UCR -- La pantalla objetivo está en Facultad de Ingeniería (la visualización sería ahí) -- Hacer salidas regulares de buses. Si un bus tarda aproximadamente de 20 a 30 minutos haciendo un viaje (depende de la trayectoria, con o sin "milla"), entonces con un tiempo de salida regular cada aproximadamente 15 minutos, siempre habría más de un bus reportando datos en el sistema. Esto es útil para probar la visualización. Dado el caso, sería posible modificar ese "headway" (tiempo entre salidas) para hacerlo menor o mayor y probar el sistema. -- Podemos asumir libremente que el sistema opera 24/7 con salidas regulares. Que no se nos olvide probar el caso en el que no hay datos (ejemplo: la pantalla debe tener un mensaje de que no hay buses actualmente o algo así). -- Elegir solamente los datos de GTFS Realtime (ocupación, velocidad, dirección, posición, odómetro) y *tal vez* algún dato complementario para enviar -- Simulación de datos: - - Posición: elegir un punto de la secuencia de puntos de la trayectoria en la tabla `shapes.txt` basados en la distancia recorrida (`shape_dist_traveled`) y algún criterio de velocidad promedio del bus (por ejemplo 15 km/h para una trayectoria de 5 km recorrida en 20 minutos). - - Velocidad: un número aleatorio elegido de una distribución normal con valor medio 15 km/h (u otra velocidad promedio) con una desviación estándar "sensata". - - Ocupación: un número aleatorio entre 0 y C (capacidad máxima del bus) pero que cambia únicamente después de pasar por una parada. Para esto hay que conocer dónde están las paradas (tabla `stops.txt`). Mejor enfocar la aleatoriedad como: "se subieron o bajaron N personas en cada parada". - - Dirección: la dirección del vector que une el punto de la trayectoria anterior con la posición actual, y según GTFS Realtime: "Bearing, in degrees, clockwise from True North, i.e., 0 is North and 90 is East." - - Odómetro: distancia recorrida en el viaje, igual a `shape_dist_traveled`. -- Luego: crear el `FeedMessage` binaro del GTFS Realtime a partir de esto. -- Sugerencia: un _script_ para la creación de los datos simulados y otro _script_ para la conversión en GTFS Realtime (usar paquetes de Google para eso). - -## Creación de GTFS Realtime - -Crear un *script* de Python para recopilar los datos enviados según la especificación propuesta (arriba) y "confeccionar" un `FeedMessage` y dejar a disposición de todos los consumidores (incluyendo el otro servidor `gtfs-screens`). - -Es necesario **dominar** [GTFS Realtime](https://gtfs.org/realtime/reference/) a profundidad. Un `FeedMessage` tiene tres posibles *entidades*: - -- *Service Alerts* -- *Trip Updates* -- *Vehicle Positions* - -> GTFS Realtime es entregado como un archivo binario Protobuf `.pb`. Referencia de [MBTA GTFS Realtime](https://github.com/mbta/gtfs-documentation/blob/master/reference/gtfs-realtime.md) para ver las actualizaciones (también disponibles en JSON). - -En este proyecto, implementaremos *Vehicle Positions* y *Trip Updates*. *Service Alerts* no porque requiere de un sistema conectado con la agencia para que sea actualizado por personas, no es telemetría automatizada. - -Secuencia prevista de esta tarea: - -- Con algún mecanismo de recepción de datos en tiempo real (por ejemplo: Apache Pulsar) es necesario recopilar los datos y guardarlos en memoria. -- Cada $N$ segundos es necesario crear el `FeedMessage`. Inicialmente, $N = 20$ (esta es una importante referencia también para los datos sintéticos). -- Es necesario "desempacar" estos datos y crear la entidad `vehicle` de GTFS Realtime dentro de `FeedMessage`. -- Finalmente, dejar el archivo `.pb` y quizá `.json` en una URL, por ejemplo: `buses.ucr.ac.cr/realtime/vehicle_positions.pb`. -- Repetir *ad infinitum* - -Nota mental: - -- `VehiclePositions` se construye a partir de los datos de los buses -- `TripUpdates` se construye a partir de cálculos hechos en el servidor -- `ServiceAlerts` se construye a partir de *input* de una plataforma de interfaz con la administración del servicio - -## Estructura del proyecto en Django - -### Aplicaciones - -- `gtfs`: maneja la base de datos con los datos GTFS -- `feed`: realiza las tareas periódicas de recolección de datos de los buses y la (futura) plataforma de `ServiceAlerts` para crear el `FeedMessage`. -- `website`: controla las páginas misceláneas del servidor como panel de administración y panel de datos, etc. \ No newline at end of file diff --git a/docs/old/index.md b/docs/old/index.md deleted file mode 100644 index 000ea34..0000000 --- a/docs/old/index.md +++ /dev/null @@ -1,17 +0,0 @@ -# Welcome to MkDocs - -For full documentation visit [mkdocs.org](https://www.mkdocs.org). - -## Commands - -* `mkdocs new [dir-name]` - Create a new project. -* `mkdocs serve` - Start the live-reloading docs server. -* `mkdocs build` - Build the documentation site. -* `mkdocs -h` - Print help message and exit. - -## Project layout - - mkdocs.yml # The configuration file. - docs/ - index.md # The documentation homepage. - ... # Other markdown pages, images and other files. diff --git a/docs/old/logos/b.png b/docs/old/logos/b.png deleted file mode 100644 index 4848d11497ceddba5e253f70627f00d1c9d80d68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 266242 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ⅆ!xA)D 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

nbSo-x~*A}2;upx;Rwtu|6aL>drZr*?X8Tg*` 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 z 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 vBB@jDu}KSz4=)e6J&1Oy; diff --git a/docs/old/mkdocs.yml b/docs/old/mkdocs.yml deleted file mode 100644 index 5020603..0000000 --- a/docs/old/mkdocs.yml +++ /dev/null @@ -1,40 +0,0 @@ -site_name: Servidor en tiempo real de datos GTFS - -nav: - - Inicio: index.md - - Desarrollo: development.md - - Equipo de abordo: obe.md - - Celery: deployment.md - - API: api.md - -extra_css: - - stylesheets/extra.css - -theme: - name: material - language: es - logo: assets/logos/b.png - favicon: assets/logos/b.png - palette: - scheme: ucr - features: - - navigation.expand - - navigation.tabs - - toc.integrate - - content.code.copy - - content.code.select - -markdown_extensions: - - admonition - - pymdownx.highlight: - anchor_linenums: true - line_spans: __span - pygments_lang_class: true - - pymdownx.inlinehilite - - pymdownx.snippets - - pymdownx.superfences - - pymdownx.superfences: - custom_fences: - - name: mermaid - class: mermaid - format: !!python/name:pymdownx.superfences.fence_code_format \ No newline at end of file diff --git a/docs/old/obe.md b/docs/old/obe.md deleted file mode 100644 index 4ebcfef..0000000 --- a/docs/old/obe.md +++ /dev/null @@ -1,52 +0,0 @@ -# Especificación del equipo de abordo - -!!! info - Trabajo en desarrollo - -Un equipo de abordo (**OBE**, del inglés *On-Board Equipment*) es una computadora/router ubicada en las unidades de autobús diseñadas para varias tareas, entre ellas: - -- Recopilar datos del bus a través de sensores, como: - - Ubicación, velocidad, dirección, con GPS y/o sensores inerciales - - Ocupación del bus, con cámaras, barras u otros - - Presión de llantas, puertas abiertas, etc. - - Datos ambientales, con sensores de todo tipo -- Enviar alertas con *input* del operador del bus (choques, quedó varado, etc.) -- Operar como *router* Wi-Fi para pasajeros del bus -- Enviar periódicamente toda la información necesaria por medio de alguna red de acceso (celular o Wi-Fi, por ejemplo) a uno o varios servidores - -## Requisitos - -### Requisitos mínimos - -- Sensor GPS -- Conectividad en red celular y/o Wi-Fi -- Interfaz para conductor - -# Requisitos deseables - -- Cámara para -- Pantalla informativa para pasajeros - -### Conectividad - -Es deseable conectividad celular, con capacidades para solicitudes HTTP - -## Especificación de los datos a enviar - -Los datos serán enviados siguiendo la especificación de los datos del API... - -### Interfaz - -Tareas: - -- Configurar el equipo para un vehículo -- Ingresar los datos de cada viaje - -Ejemplo de secuencia de inicio de viaje: - -1. [Botón de configurar nuevo viaje] -2. Seleccionar ruta del viaje -3. Seleccionar viaje, según hora (lista prestablecida en GTFS Schedule) -4. [Botón de iniciar viaje] - - Al iniciar viaje, se registran la fecha y hora - diff --git a/docs/old/oldHOWTO.md b/docs/old/oldHOWTO.md deleted file mode 100644 index 437b67b..0000000 --- a/docs/old/oldHOWTO.md +++ /dev/null @@ -1,170 +0,0 @@ -# Instrucciones de ejecución de la plataforma - ---- - -URGENTE LA RENOVACIÓN DE Esto - -## Development - -```sh -docker compose -f docker-compose.dev.yml build -``` - -## Production - -```sh -docker compose -f docker-compose.prod.yml build -``` - ---- - -El sistema requiere de: - -- Django / Python -- PostgreSQL / PostGIS -- Celery / Celery Beat -- Redis - -## Django - -La plataforma de Django será útil para: - -- Crear el sitio web con el panel de administración -- Administrar las tareas periódicas con su integración con Celery y Celery Beat -- Actualizar la información en tiempo real con las pantallas con WebSockets - -Es necesario instalar Django 5.0 y la extensión Django Channels: - -```bash -pip install django -pip install channels -``` - -## PostgreSQL / PostGIS - -El proyecto requiere de una base de datos con una extensión para datos geoespaciales... - -```bash -sudo apt install postgresql -(...) -sudo apt install postgis -``` - -Modificar `pg_hba.conf` de forma que sea: - -```text -local all postgres trust - -local all all trust -``` - -y así no tendrá contraseñas. Luego en la terminal: - -```bash -sudo -u postgres psql -``` - -que nos lleva a la interfaz de `psql` para configurar un nuevo usuario: - -```bash -postgres=# CREATE ROLE user_name SUPERUSER; -postgres=# ALTER ROLE user_name LOGIN; -``` - -Ahora podemos crear una base de datos, para este proyecto: - -```bash -createdb realtime -``` - -ahora hay que ingresar a esa base de datos: - -```bash -psql realtime -``` - -y ahí crear la extensión de PostGIS con: - -```bash -realtime=# CREATE EXTENSION postgis; -``` - -Con esto quedaría lista la base de datos para conectarnos desde Django. - -## Celery - -Celery es un administrador de tareas (_task manager_)... - -### Celery - -Instalar Celery... - -```bash -pip install version -``` - -y probar con `celery --version`. - -Ejecutar Celery con: - -```bash -celery -A realtime worker --loglevel=info -``` - -### Celery Beat - -Celery utiliza los paquetes de integración con Django `django-celery-results` y `django-celery-beat`, y el intermediador de mensajes Redis. - -```bash -celery -A realtime beat --scheduler django_celery_beat.schedulers:DatabaseScheduler --loglevel=info -``` - -## Redis - -```bash -sudo apt install redis-server -``` - -Nota: en macOS: - -```bash -brew install redis -``` - -Probar su estado como proceso del sistema: - -```bash -sudo systemctl status redis-server -``` - -Probar la conexión: - -```bash ->>> redis-cli ping -PONG -``` - -## Django Channels - -Para habilitar la conexión permanente y bidireccional entre cliente y servidor con WebSockets, es necesario utilizar la extensión Django [Channels](https://channels.readthedocs.io/en/latest/), con [Daphne](https://github.com/django/daphne) como servidor HTTP/WebSocket (`http://`/`ws://`) y con [Redis](https://github.com/django/channels_redis) como intermediador de mensajes nuevamente. Para esto son necesarios los paquetes: - -- `channels` -- `daphne` -- `redis` -- `channel-redis` - -Este es un modo de conexión asíncrono, y por tanto requiere de la configuración ASGI (_Asynchronous Server Gateway Interface_). Esto se hace en el archivo `asgi.py`. - -Similar a `urls.py`, Channels requiere un archivo `routing.py` donde establece los `websocket_urlpatterns`, es decir, las rutas o URLs donde se establece la conexión del WebSocket `ws://`. - -También, similar a `views.py`, Channels define un archivo `consumers.py` donde define la lógica a realizar durante la conexión. - -A diferencia de - -Al configurar `settings.py` con Daphne, el comando `python manage.py runserver` ahora ejecuta también ASGI. De hecho, ahora en la terminal se muestra: - -```bash -Starting ASGI/Daphne version 4.1.0 development server at http://127.0.0.1:8000/ -``` - -y toda la funcionalidad "regular" (WSGI) continúa operando. diff --git a/docs/old/stylesheets/extra.css b/docs/old/stylesheets/extra.css deleted file mode 100644 index 37ec2b6..0000000 --- a/docs/old/stylesheets/extra.css +++ /dev/null @@ -1,5 +0,0 @@ -[data-md-color-scheme="ucr"] { - --md-primary-fg-color: #005DA4; - --md-primary-fg-color--light: #00C0F3; - --md-primary-fg-color--dark: #008641; -} \ No newline at end of file diff --git a/docs/oldHOWTO.md b/docs/oldHOWTO.md deleted file mode 100644 index 437b67b..0000000 --- a/docs/oldHOWTO.md +++ /dev/null @@ -1,170 +0,0 @@ -# Instrucciones de ejecución de la plataforma - ---- - -URGENTE LA RENOVACIÓN DE Esto - -## Development - -```sh -docker compose -f docker-compose.dev.yml build -``` - -## Production - -```sh -docker compose -f docker-compose.prod.yml build -``` - ---- - -El sistema requiere de: - -- Django / Python -- PostgreSQL / PostGIS -- Celery / Celery Beat -- Redis - -## Django - -La plataforma de Django será útil para: - -- Crear el sitio web con el panel de administración -- Administrar las tareas periódicas con su integración con Celery y Celery Beat -- Actualizar la información en tiempo real con las pantallas con WebSockets - -Es necesario instalar Django 5.0 y la extensión Django Channels: - -```bash -pip install django -pip install channels -``` - -## PostgreSQL / PostGIS - -El proyecto requiere de una base de datos con una extensión para datos geoespaciales... - -```bash -sudo apt install postgresql -(...) -sudo apt install postgis -``` - -Modificar `pg_hba.conf` de forma que sea: - -```text -local all postgres trust - -local all all trust -``` - -y así no tendrá contraseñas. Luego en la terminal: - -```bash -sudo -u postgres psql -``` - -que nos lleva a la interfaz de `psql` para configurar un nuevo usuario: - -```bash -postgres=# CREATE ROLE user_name SUPERUSER; -postgres=# ALTER ROLE user_name LOGIN; -``` - -Ahora podemos crear una base de datos, para este proyecto: - -```bash -createdb realtime -``` - -ahora hay que ingresar a esa base de datos: - -```bash -psql realtime -``` - -y ahí crear la extensión de PostGIS con: - -```bash -realtime=# CREATE EXTENSION postgis; -``` - -Con esto quedaría lista la base de datos para conectarnos desde Django. - -## Celery - -Celery es un administrador de tareas (_task manager_)... - -### Celery - -Instalar Celery... - -```bash -pip install version -``` - -y probar con `celery --version`. - -Ejecutar Celery con: - -```bash -celery -A realtime worker --loglevel=info -``` - -### Celery Beat - -Celery utiliza los paquetes de integración con Django `django-celery-results` y `django-celery-beat`, y el intermediador de mensajes Redis. - -```bash -celery -A realtime beat --scheduler django_celery_beat.schedulers:DatabaseScheduler --loglevel=info -``` - -## Redis - -```bash -sudo apt install redis-server -``` - -Nota: en macOS: - -```bash -brew install redis -``` - -Probar su estado como proceso del sistema: - -```bash -sudo systemctl status redis-server -``` - -Probar la conexión: - -```bash ->>> redis-cli ping -PONG -``` - -## Django Channels - -Para habilitar la conexión permanente y bidireccional entre cliente y servidor con WebSockets, es necesario utilizar la extensión Django [Channels](https://channels.readthedocs.io/en/latest/), con [Daphne](https://github.com/django/daphne) como servidor HTTP/WebSocket (`http://`/`ws://`) y con [Redis](https://github.com/django/channels_redis) como intermediador de mensajes nuevamente. Para esto son necesarios los paquetes: - -- `channels` -- `daphne` -- `redis` -- `channel-redis` - -Este es un modo de conexión asíncrono, y por tanto requiere de la configuración ASGI (_Asynchronous Server Gateway Interface_). Esto se hace en el archivo `asgi.py`. - -Similar a `urls.py`, Channels requiere un archivo `routing.py` donde establece los `websocket_urlpatterns`, es decir, las rutas o URLs donde se establece la conexión del WebSocket `ws://`. - -También, similar a `views.py`, Channels define un archivo `consumers.py` donde define la lógica a realizar durante la conexión. - -A diferencia de - -Al configurar `settings.py` con Daphne, el comando `python manage.py runserver` ahora ejecuta también ASGI. De hecho, ahora en la terminal se muestra: - -```bash -Starting ASGI/Daphne version 4.1.0 development server at http://127.0.0.1:8000/ -``` - -y toda la funcionalidad "regular" (WSGI) continúa operando. diff --git a/docs/stylesheets/extra.css b/docs/stylesheets/extra.css deleted file mode 100644 index 37ec2b6..0000000 --- a/docs/stylesheets/extra.css +++ /dev/null @@ -1,5 +0,0 @@ -[data-md-color-scheme="ucr"] { - --md-primary-fg-color: #005DA4; - --md-primary-fg-color--light: #00C0F3; - --md-primary-fg-color--dark: #008641; -} \ No newline at end of file From a6a4ac466266cabc78f4ae5ed86abae00dafbbd2 Mon Sep 17 00:00:00 2001 From: Jae Date: Tue, 18 Aug 2026 23:26:00 -0600 Subject: [PATCH 23/68] style: remove unused imports and variables (ruff F401/F841) Keep project_point_to_polyline in progression/shapes.py with a noqa: compute.py calls it via module-attribute access, which ruff cannot see. --- backend/api/admin.py | 2 -- backend/api/models.py | 2 -- backend/api/serializers.py | 1 - backend/api/urls.py | 2 -- backend/api/views.py | 1 - backend/operations/tests.py | 2 -- backend/operations/views.py | 2 -- backend/realtime_engine/admin.py | 2 -- backend/realtime_engine/models.py | 2 -- backend/realtime_engine/tests/test_mqtt_ingestion.py | 2 +- backend/realtime_engine/views.py | 2 -- backend/runs/domain/lifecycle/guards.py | 2 +- backend/runs/domain/progression/shapes.py | 2 +- backend/runs/domain/progression/stop_times.py | 2 +- backend/runs/domain/progression/tests/test_compute.py | 2 -- backend/runs/domain/progression/tests/test_producer.py | 4 +--- .../runs/domain/progression/tests/test_stop_times_producer.py | 2 -- backend/runs/tests.py | 2 -- backend/runs/views.py | 2 -- backend/schedule_engine/admin.py | 2 -- backend/schedule_engine/models.py | 2 -- backend/schedule_engine/tasks.py | 2 -- backend/schedule_engine/tests.py | 2 -- backend/website/admin.py | 2 -- backend/website/models.py | 2 -- backend/website/tests.py | 2 -- 26 files changed, 5 insertions(+), 47 deletions(-) diff --git a/backend/api/admin.py b/backend/api/admin.py index 8c38f3f..846f6b4 100644 --- a/backend/api/admin.py +++ b/backend/api/admin.py @@ -1,3 +1 @@ -from django.contrib import admin - # Register your models here. diff --git a/backend/api/models.py b/backend/api/models.py index 71a8362..6b20219 100644 --- a/backend/api/models.py +++ b/backend/api/models.py @@ -1,3 +1 @@ -from django.db import models - # Create your models here. diff --git a/backend/api/serializers.py b/backend/api/serializers.py index a9e2f9f..61a4210 100644 --- a/backend/api/serializers.py +++ b/backend/api/serializers.py @@ -17,7 +17,6 @@ from feed.models import * from django.contrib.auth.models import User from rest_framework import serializers -from django.contrib.gis.geos import Point from rest_framework_gis.serializers import GeoFeatureModelSerializer, GeometryField # -------------- diff --git a/backend/api/urls.py b/backend/api/urls.py index 845eae4..94d90d3 100644 --- a/backend/api/urls.py +++ b/backend/api/urls.py @@ -1,7 +1,5 @@ from django.urls import include, path from rest_framework import routers -from rest_framework.authtoken.views import obtain_auth_token -from drf_spectacular.views import SpectacularAPIView, SpectacularRedocView from . import views diff --git a/backend/api/views.py b/backend/api/views.py index d75ad01..9ff27e5 100644 --- a/backend/api/views.py +++ b/backend/api/views.py @@ -11,7 +11,6 @@ from drf_spectacular.views import SpectacularRedocView from django.views.decorators.clickjacking import xframe_options_exempt from django.utils.decorators import method_decorator -from realtime_engine.tasks import run_lifecycle_event from runs.services.exceptions import RunLifecycleError from runs.services.lifecycle import RunLifecycleService from runs.domain.lifecycle import RunLifecycleEvents diff --git a/backend/operations/tests.py b/backend/operations/tests.py index 7ce503c..a39b155 100644 --- a/backend/operations/tests.py +++ b/backend/operations/tests.py @@ -1,3 +1 @@ -from django.test import TestCase - # Create your tests here. diff --git a/backend/operations/views.py b/backend/operations/views.py index 91ea44a..60f00ef 100644 --- a/backend/operations/views.py +++ b/backend/operations/views.py @@ -1,3 +1 @@ -from django.shortcuts import render - # Create your views here. diff --git a/backend/realtime_engine/admin.py b/backend/realtime_engine/admin.py index 8c38f3f..846f6b4 100644 --- a/backend/realtime_engine/admin.py +++ b/backend/realtime_engine/admin.py @@ -1,3 +1 @@ -from django.contrib import admin - # Register your models here. diff --git a/backend/realtime_engine/models.py b/backend/realtime_engine/models.py index 71a8362..6b20219 100644 --- a/backend/realtime_engine/models.py +++ b/backend/realtime_engine/models.py @@ -1,3 +1 @@ -from django.db import models - # Create your models here. diff --git a/backend/realtime_engine/tests/test_mqtt_ingestion.py b/backend/realtime_engine/tests/test_mqtt_ingestion.py index 3d12347..afc69ae 100644 --- a/backend/realtime_engine/tests/test_mqtt_ingestion.py +++ b/backend/realtime_engine/tests/test_mqtt_ingestion.py @@ -27,7 +27,7 @@ import realtime_engine.mqtt as mqtt_module from realtime_engine.mqtt import _handle_telemetry -from runs.domain.telemetry import keys, occupancy, position +from runs.domain.telemetry import keys, occupancy # --------------------------------------------------------------------------- diff --git a/backend/realtime_engine/views.py b/backend/realtime_engine/views.py index 91ea44a..60f00ef 100644 --- a/backend/realtime_engine/views.py +++ b/backend/realtime_engine/views.py @@ -1,3 +1 @@ -from django.shortcuts import render - # Create your views here. diff --git a/backend/runs/domain/lifecycle/guards.py b/backend/runs/domain/lifecycle/guards.py index 0adcc22..68e6dfc 100644 --- a/backend/runs/domain/lifecycle/guards.py +++ b/backend/runs/domain/lifecycle/guards.py @@ -32,7 +32,7 @@ class RunLifecycleGuards: def is_gtfs_valid( run: Run, transition: "Transition", payload: dict[str, Any] ) -> bool: - from feed.models import Feed, Route, Trip, Shape + from feed.models import Feed, Route, Trip route_id = payload.get("route_id") trip_id = payload.get("trip_id") diff --git a/backend/runs/domain/progression/shapes.py b/backend/runs/domain/progression/shapes.py index e5a692d..f4a08cf 100644 --- a/backend/runs/domain/progression/shapes.py +++ b/backend/runs/domain/progression/shapes.py @@ -24,7 +24,7 @@ from runs.domain.progression.geo import ( haversine_m, - project_point_to_polyline, + project_point_to_polyline, # noqa: F401 - used as shapes.project_point_to_polyline in compute.py project_point_to_segment, ) diff --git a/backend/runs/domain/progression/stop_times.py b/backend/runs/domain/progression/stop_times.py index 335d974..421225a 100644 --- a/backend/runs/domain/progression/stop_times.py +++ b/backend/runs/domain/progression/stop_times.py @@ -27,7 +27,7 @@ import redis -from runs.domain.telemetry import keys, position, stop_time_updates, vehicle_stop_status +from runs.domain.telemetry import keys, stop_time_updates, vehicle_stop_status from runs.domain.progression.geo import project_point_to_polyline from runs.domain.progression.shapes import ShapeGeometry, get_shape_geometry diff --git a/backend/runs/domain/progression/tests/test_compute.py b/backend/runs/domain/progression/tests/test_compute.py index c4d322a..804c05e 100644 --- a/backend/runs/domain/progression/tests/test_compute.py +++ b/backend/runs/domain/progression/tests/test_compute.py @@ -247,8 +247,6 @@ def test_far_from_stop_is_in_transit_to(self): def test_incoming_at_when_within_incoming_radius(self): """Place vehicle just under INCOMING_AT_RADIUS_M before S1.""" - from runs.domain.progression.geo import haversine_m as hav - # Find lat just inside INCOMING_AT_RADIUS_M of S1 (2.0, 0.0). # 1° ≈ 111 195 m. INCOMING_AT_RADIUS_M = 50 m → Δlat ≈ 50/111195. delta_lat = (INCOMING_AT_RADIUS_M - 5) / 111_195.0 # a little inside diff --git a/backend/runs/domain/progression/tests/test_producer.py b/backend/runs/domain/progression/tests/test_producer.py index 77591f6..b1c5c1f 100644 --- a/backend/runs/domain/progression/tests/test_producer.py +++ b/backend/runs/domain/progression/tests/test_producer.py @@ -6,9 +6,7 @@ Patch target: ``runs.domain.progression.producer.r`` """ -from unittest.mock import MagicMock, call - -import pytest +from unittest.mock import MagicMock import runs.domain.progression.producer as producer_module from runs.domain.progression.producer import produce_stop_status diff --git a/backend/runs/domain/progression/tests/test_stop_times_producer.py b/backend/runs/domain/progression/tests/test_stop_times_producer.py index 76a7ab0..187f96c 100644 --- a/backend/runs/domain/progression/tests/test_stop_times_producer.py +++ b/backend/runs/domain/progression/tests/test_stop_times_producer.py @@ -8,7 +8,6 @@ - Builder hardening: unsorted/duplicate projection is sorted+deduped """ -import json import os import subprocess import sys @@ -21,7 +20,6 @@ import runs.domain.progression.stop_times as stop_times_module from runs.domain.progression.shapes import ShapeGeometry, assemble_geometry from runs.domain.progression.stop_times import ( - ETA_DEFAULT_UNCERTAINTY_S, STOP_TIME_UPDATES_TTL_S, compute_stop_time_updates, produce_stop_times, diff --git a/backend/runs/tests.py b/backend/runs/tests.py index 7ce503c..a39b155 100644 --- a/backend/runs/tests.py +++ b/backend/runs/tests.py @@ -1,3 +1 @@ -from django.test import TestCase - # Create your tests here. diff --git a/backend/runs/views.py b/backend/runs/views.py index 91ea44a..60f00ef 100644 --- a/backend/runs/views.py +++ b/backend/runs/views.py @@ -1,3 +1 @@ -from django.shortcuts import render - # Create your views here. diff --git a/backend/schedule_engine/admin.py b/backend/schedule_engine/admin.py index 8c38f3f..846f6b4 100644 --- a/backend/schedule_engine/admin.py +++ b/backend/schedule_engine/admin.py @@ -1,3 +1 @@ -from django.contrib import admin - # Register your models here. diff --git a/backend/schedule_engine/models.py b/backend/schedule_engine/models.py index 71a8362..6b20219 100644 --- a/backend/schedule_engine/models.py +++ b/backend/schedule_engine/models.py @@ -1,3 +1 @@ -from django.db import models - # Create your models here. diff --git a/backend/schedule_engine/tasks.py b/backend/schedule_engine/tasks.py index 17cbdfd..2bc3a83 100644 --- a/backend/schedule_engine/tasks.py +++ b/backend/schedule_engine/tasks.py @@ -12,8 +12,6 @@ from .builders import ( build_vehicle_positions_feed, build_trip_updates_feed, - get_current_timestamp, - get_entity_id, ) diff --git a/backend/schedule_engine/tests.py b/backend/schedule_engine/tests.py index 7ce503c..a39b155 100644 --- a/backend/schedule_engine/tests.py +++ b/backend/schedule_engine/tests.py @@ -1,3 +1 @@ -from django.test import TestCase - # Create your tests here. diff --git a/backend/website/admin.py b/backend/website/admin.py index 8c38f3f..846f6b4 100644 --- a/backend/website/admin.py +++ b/backend/website/admin.py @@ -1,3 +1 @@ -from django.contrib import admin - # Register your models here. diff --git a/backend/website/models.py b/backend/website/models.py index 71a8362..6b20219 100644 --- a/backend/website/models.py +++ b/backend/website/models.py @@ -1,3 +1 @@ -from django.db import models - # Create your models here. diff --git a/backend/website/tests.py b/backend/website/tests.py index 7ce503c..a39b155 100644 --- a/backend/website/tests.py +++ b/backend/website/tests.py @@ -1,3 +1 @@ -from django.test import TestCase - # Create your tests here. From 9ccaef8c11826646436668a32a738b3b0b5fd2ef Mon Sep 17 00:00:00 2001 From: Jae Date: Tue, 18 Aug 2026 23:26:04 -0600 Subject: [PATCH 24/68] chore: gitignore published feed output artifacts --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index ab84167..69df8a4 100644 --- a/.gitignore +++ b/.gitignore @@ -203,3 +203,6 @@ graphify-out/ llms.txt llms-full.txt CONTEXT_SYNC_NOTES.md + +# Published GTFS-RT / Schedule output (runtime artifacts) +backend/feed/files/ From e8427d80d0fd8ccac3dcbf3106c6bfc4318e80a7 Mon Sep 17 00:00:00 2001 From: Jae Date: Tue, 18 Aug 2026 23:42:07 -0600 Subject: [PATCH 25/68] feat(messages): publish run lifecycle events to databus.events exchange --- backend/messages/publisher.py | 119 ++++++++-- backend/messages/tests/__init__.py | 0 backend/messages/tests/test_publisher.py | 211 ++++++++++++++++++ backend/runs/services/lifecycle.py | 24 +- backend/runs/services/tests/__init__.py | 0 backend/runs/services/tests/test_lifecycle.py | 124 ++++++++++ 6 files changed, 456 insertions(+), 22 deletions(-) create mode 100644 backend/messages/tests/__init__.py create mode 100644 backend/messages/tests/test_publisher.py create mode 100644 backend/runs/services/tests/__init__.py create mode 100644 backend/runs/services/tests/test_lifecycle.py diff --git a/backend/messages/publisher.py b/backend/messages/publisher.py index a69fe46..58f839e 100644 --- a/backend/messages/publisher.py +++ b/backend/messages/publisher.py @@ -1,24 +1,105 @@ -from kombu import Connection, Exchange, Producer +"""Fire-and-forget AMQP publisher for run lifecycle domain events. -connection = Connection("amqp://guest:guest@localhost/") -exchange = Exchange("databus.events", type="direct") -producer = Producer(connection, exchange=exchange) +Publishes to the durable ``databus.events`` topic exchange, keyed by +``runs.lifecycle.``. The broker connection is built lazily on first +use (never at import time) so importing this module never opens a socket, +and it is safe to import from both the Daphne/ASGI process and Celery +workers. Publishing is best-effort: any broker/connection error is caught, +logged, and dropped -- it must never propagate into the caller's lifecycle +path. +""" +import logging +from datetime import UTC, datetime +from typing import Any -def publish_event(name: str, data: dict): - """Publish an event to the databus.events exchange.""" - print(f"Printing event {name} with data: {data}") +from kombu import Connection, Exchange +from kombu.pools import producers +logger = logging.getLogger(__name__) -""" -runs.submission.requested -runs.submission.succeeded -runs.submission.failed -runs.validation.succeeded -runs.validation.failed -runs.initialization.succeeded -runs.initialization.failed - -Client: -runs.* -""" +EXCHANGE_NAME = "databus.events" +ROUTING_KEY_PREFIX = "runs.lifecycle" +PRODUCER_NAME = "databus" +ENVELOPE_VERSION = 1 + +#: Durable topic exchange all domain events are published to. +events_exchange = Exchange(EXCHANGE_NAME, type="topic", durable=True) + +#: Small bounded retry policy handed to kombu's ``ensure()`` via ``Producer.publish(retry=True, ...)``. +_RETRY_POLICY: dict[str, float] = { + "max_retries": 2, + "interval_start": 0, + "interval_step": 0.2, + "interval_max": 0.5, +} + +# Process-wide broker connection, built lazily by `_get_connection`. +_connection: Connection | None = None + + +def routing_key_for(event: str) -> str: + """Derive the topic routing key `runs.lifecycle.` for a lowercase lifecycle event name.""" + return f"{ROUTING_KEY_PREFIX}.{event.lower()}" + + +def build_envelope( + event: str, + run_id: Any, + from_state: str, + to_state: str, + data: dict[str, Any] | None = None, +) -> dict[str, Any]: + """Build the JSON-serializable envelope for a run lifecycle domain event.""" + return { + "event": event, + "version": ENVELOPE_VERSION, + "occurred_at": datetime.now(UTC).isoformat(), + "producer": PRODUCER_NAME, + "run_id": str(run_id), + "from_state": from_state, + "to_state": to_state, + "data": data or {}, + } + + +def _get_connection() -> Connection: + """Return the lazily-initialized, process-wide broker connection built from Django settings.""" + global _connection + if _connection is None: + from django.conf import settings + + _connection = Connection(settings.CELERY_BROKER_URL) + return _connection + + +def publish_event( + event: str, + run_id: Any, + from_state: str, + to_state: str, + data: dict[str, Any] | None = None, +) -> None: + """Publish a run lifecycle domain event; broker errors are logged and swallowed, never raised.""" + envelope = build_envelope(event, run_id, from_state, to_state, data) + routing_key = routing_key_for(event) + try: + connection = _get_connection() + with producers[connection].acquire(block=True) as producer: + producer.publish( + envelope, + exchange=events_exchange, + routing_key=routing_key, + declare=[events_exchange], + serializer="json", + retry=True, + retry_policy=_RETRY_POLICY, + ) + except Exception: + logger.warning( + "Failed to publish run lifecycle event %r for run %s (routing_key=%s)", + event, + run_id, + routing_key, + exc_info=True, + ) diff --git a/backend/messages/tests/__init__.py b/backend/messages/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/messages/tests/test_publisher.py b/backend/messages/tests/test_publisher.py new file mode 100644 index 0000000..3cae081 --- /dev/null +++ b/backend/messages/tests/test_publisher.py @@ -0,0 +1,211 @@ +"""Unit tests for messages.publisher. + +No real broker: `kombu.pools.producers` is monkeypatched with an in-memory +fake pool so `publish_event` never touches the network, and `_get_connection` +is monkeypatched directly where the test only cares about the publish call +(avoiding a dependency on real RabbitMQ settings). Errors raised anywhere in +the publish path must be swallowed -- publishing must never propagate into +the caller. +""" + +import logging + +import pytest + +from messages import publisher + + +# --------------------------------------------------------------------------- +# routing_key_for +# --------------------------------------------------------------------------- + + +@pytest.mark.parametrize( + "event,expected", + [ + ("run_confirmed_by_operator", "runs.lifecycle.run_confirmed_by_operator"), + ("run_completed", "runs.lifecycle.run_completed"), + ("RUN_STARTED", "runs.lifecycle.run_started"), + ], +) +def test_routing_key_for(event, expected): + assert publisher.routing_key_for(event) == expected + + +# --------------------------------------------------------------------------- +# build_envelope +# --------------------------------------------------------------------------- + + +def test_build_envelope_has_expected_shape(): + envelope = publisher.build_envelope( + event="run_completed", + run_id="run-1", + from_state="IN_PROGRESS", + to_state="COMPLETED", + data={"trip_id": "T1"}, + ) + + assert envelope["event"] == "run_completed" + assert envelope["version"] == 1 + assert envelope["producer"] == "databus" + assert envelope["run_id"] == "run-1" + assert envelope["from_state"] == "IN_PROGRESS" + assert envelope["to_state"] == "COMPLETED" + assert envelope["data"] == {"trip_id": "T1"} + # occurred_at must be a parseable ISO-8601 UTC timestamp. + from datetime import datetime + + parsed = datetime.fromisoformat(envelope["occurred_at"]) + assert parsed.utcoffset() is not None + + +def test_build_envelope_defaults_data_to_empty_dict(): + envelope = publisher.build_envelope( + event="run_started", run_id="run-2", from_state="TRACKING", to_state="IN_PROGRESS" + ) + assert envelope["data"] == {} + + +def test_build_envelope_stringifies_run_id(): + envelope = publisher.build_envelope( + event="run_started", run_id=12345, from_state="A", to_state="B" + ) + assert envelope["run_id"] == "12345" + + +# --------------------------------------------------------------------------- +# publish_event -- happy path +# --------------------------------------------------------------------------- + + +class _FakeAcquireCtx: + """Context manager standing in for kombu's ProducerPool.acquire() result.""" + + def __init__(self, producer): + self._producer = producer + + def __enter__(self): + return self._producer + + def __exit__(self, *exc_info): + return False + + +class _FakePool: + def __init__(self, producer): + self._producer = producer + + def acquire(self, block=True): + return _FakeAcquireCtx(self._producer) + + +class _FakeProducers: + """Stand-in for kombu.pools.producers: a dict keyed by connection.""" + + def __init__(self, producer): + self._producer = producer + + def __getitem__(self, connection): + return _FakePool(self._producer) + + +def test_publish_event_uses_correct_exchange_routing_key_and_body(monkeypatch): + from unittest.mock import MagicMock + + fake_producer = MagicMock() + monkeypatch.setattr(publisher, "producers", _FakeProducers(fake_producer)) + monkeypatch.setattr(publisher, "_get_connection", lambda: object()) + + publisher.publish_event( + event="run_confirmed_by_operator", + run_id="run-42", + from_state="INITIALIZED", + to_state="CONFIRMED", + data={"vehicle_id": "veh-1"}, + ) + + fake_producer.publish.assert_called_once() + _, kwargs = fake_producer.publish.call_args + body = fake_producer.publish.call_args.args[0] + + assert body["event"] == "run_confirmed_by_operator" + assert body["run_id"] == "run-42" + assert body["from_state"] == "INITIALIZED" + assert body["to_state"] == "CONFIRMED" + assert body["data"] == {"vehicle_id": "veh-1"} + assert kwargs["exchange"] is publisher.events_exchange + assert kwargs["routing_key"] == "runs.lifecycle.run_confirmed_by_operator" + assert kwargs["serializer"] == "json" + assert kwargs["retry"] is True + + +def test_publish_event_declares_the_exchange(monkeypatch): + from unittest.mock import MagicMock + + fake_producer = MagicMock() + monkeypatch.setattr(publisher, "producers", _FakeProducers(fake_producer)) + monkeypatch.setattr(publisher, "_get_connection", lambda: object()) + + publisher.publish_event( + event="run_completed", run_id="run-1", from_state="IN_PROGRESS", to_state="COMPLETED" + ) + + _, kwargs = fake_producer.publish.call_args + assert kwargs["declare"] == [publisher.events_exchange] + + +# --------------------------------------------------------------------------- +# publish_event -- errors are swallowed, never propagated +# --------------------------------------------------------------------------- + + +def test_publish_event_swallows_connection_errors(monkeypatch, caplog): + def _boom(): + raise ConnectionRefusedError("broker unreachable") + + monkeypatch.setattr(publisher, "_get_connection", _boom) + + with caplog.at_level(logging.WARNING): + # Must not raise. + publisher.publish_event( + event="run_completed", run_id="run-1", from_state="IN_PROGRESS", to_state="COMPLETED" + ) + + assert any("Failed to publish run lifecycle event" in msg for msg in caplog.messages) + + +def test_publish_event_swallows_producer_publish_errors(monkeypatch, caplog): + from unittest.mock import MagicMock + + fake_producer = MagicMock() + fake_producer.publish.side_effect = RuntimeError("channel closed") + monkeypatch.setattr(publisher, "producers", _FakeProducers(fake_producer)) + monkeypatch.setattr(publisher, "_get_connection", lambda: object()) + + with caplog.at_level(logging.WARNING): + # Must not raise. + publisher.publish_event( + event="run_completed", run_id="run-1", from_state="IN_PROGRESS", to_state="COMPLETED" + ) + + assert any("Failed to publish run lifecycle event" in msg for msg in caplog.messages) + + +# --------------------------------------------------------------------------- +# _get_connection -- lazy, cached, built from Django settings +# --------------------------------------------------------------------------- + + +def test_get_connection_is_lazily_cached(monkeypatch, settings): + monkeypatch.setattr(publisher, "_connection", None) + settings.CELERY_BROKER_URL = "amqp://guest:guest@message-broker:5672//" + + first = publisher._get_connection() + second = publisher._get_connection() + + assert first is second + assert first.as_uri().startswith("amqp://") + + # Cleanup so other tests build a fresh connection from their own settings. + monkeypatch.setattr(publisher, "_connection", None) diff --git a/backend/runs/services/lifecycle.py b/backend/runs/services/lifecycle.py index 97b9653..caf0e9a 100644 --- a/backend/runs/services/lifecycle.py +++ b/backend/runs/services/lifecycle.py @@ -1,5 +1,6 @@ from typing import Any from django.utils.timezone import now +from messages.publisher import publish_event from runs.domain.lifecycle import RunLifecycleEvents from runs.domain.lifecycle import RunLifecycleStates from runs.domain.lifecycle import Transition @@ -81,7 +82,7 @@ def _apply_transition( except RunLifecycleError as exc: raise RunLifecycleError({"detail": str(exc)}) from exc self._update_run_lifecycle_state(run, transition, payload) - self._publish_run_lifecycle_transition(run, transition.to_state) + self._publish_run_lifecycle_transition(run, transition, payload) return transition.to_state, actions def _update_run_lifecycle_state( @@ -92,9 +93,26 @@ def _update_run_lifecycle_state( run.save() def _publish_run_lifecycle_transition( - self, run: Run, new: RunLifecycleStates + self, run: Run, transition: "Transition", payload: dict[str, Any] ) -> None: - pass + """Publish the completed transition as a run lifecycle domain event (fire-and-forget).""" + data: dict[str, Any] = {} + vehicle_id = payload.get("vehicle_id") or run.vehicle.values_list( + "id", flat=True + ).first() + if vehicle_id: + data["vehicle_id"] = str(vehicle_id) + if run.trip_id: + data["trip_id"] = run.trip_id + if run.route_id: + data["route_id"] = run.route_id + publish_event( + event=transition.event.value, + run_id=run.id, + from_state=transition.from_state.value, + to_state=transition.to_state.value, + data=data, + ) def _persist_run_lifecycle_transition( self, diff --git a/backend/runs/services/tests/__init__.py b/backend/runs/services/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/runs/services/tests/test_lifecycle.py b/backend/runs/services/tests/test_lifecycle.py new file mode 100644 index 0000000..ec210f8 --- /dev/null +++ b/backend/runs/services/tests/test_lifecycle.py @@ -0,0 +1,124 @@ +"""Unit tests for RunLifecycleService._publish_run_lifecycle_transition. + +No database access: a bare `RunLifecycleService()` only builds a +`TransitionRegistry` in `__init__`, and `_publish_run_lifecycle_transition` +only reads attributes off `run`/`transition`/`payload` before delegating to +`messages.publisher.publish_event`, which is monkeypatched here. Real +`Transition`/`RunLifecycleEvents`/`RunLifecycleStates` domain objects are +used (they carry no DB dependency); `run` is a lightweight fake standing in +for a `Run` model instance. +""" + +from unittest.mock import MagicMock + +from runs.domain.lifecycle import RunLifecycleEvents, RunLifecycleStates, Transition +from runs.services.lifecycle import RunLifecycleService + + +class _FakeVehicleManager: + """Stands in for Run.vehicle (a ManyToManyField manager).""" + + def __init__(self, vehicle_ids): + self._vehicle_ids = list(vehicle_ids) + + def values_list(self, *args, **kwargs): + return self + + def first(self): + return self._vehicle_ids[0] if self._vehicle_ids else None + + +class _FakeRun: + def __init__(self, run_id="run-1", trip_id=None, route_id=None, vehicle_ids=()): + self.id = run_id + self.trip_id = trip_id + self.route_id = route_id + self.vehicle = _FakeVehicleManager(vehicle_ids) + + +def _transition(event=RunLifecycleEvents.RUN_CONFIRMED_BY_OPERATOR): + return Transition( + from_state=RunLifecycleStates.INITIALIZED, + event=event, + to_state=RunLifecycleStates.CONFIRMED, + guards=[], + actions=[], + ) + + +def _service() -> RunLifecycleService: + return RunLifecycleService() + + +def test_publish_composes_event_and_states(monkeypatch): + mock_publish = MagicMock() + monkeypatch.setattr("runs.services.lifecycle.publish_event", mock_publish) + + run = _FakeRun(run_id="run-1") + transition = _transition() + + _service()._publish_run_lifecycle_transition(run, transition, {}) + + mock_publish.assert_called_once_with( + event="run_confirmed_by_operator", + run_id="run-1", + from_state=RunLifecycleStates.INITIALIZED.value, + to_state=RunLifecycleStates.CONFIRMED.value, + data={}, + ) + + +def test_publish_includes_trip_and_route_ids_when_present(monkeypatch): + mock_publish = MagicMock() + monkeypatch.setattr("runs.services.lifecycle.publish_event", mock_publish) + + run = _FakeRun(run_id="run-1", trip_id="T1", route_id="R1") + transition = _transition() + + _service()._publish_run_lifecycle_transition(run, transition, {}) + + _, kwargs = mock_publish.call_args + assert kwargs["data"] == {"trip_id": "T1", "route_id": "R1"} + + +def test_publish_falls_back_to_run_vehicle_when_payload_has_no_vehicle_id(monkeypatch): + mock_publish = MagicMock() + monkeypatch.setattr("runs.services.lifecycle.publish_event", mock_publish) + + run = _FakeRun(run_id="run-1", vehicle_ids=["veh-9"]) + transition = _transition() + + _service()._publish_run_lifecycle_transition(run, transition, {}) + + _, kwargs = mock_publish.call_args + assert kwargs["data"]["vehicle_id"] == "veh-9" + + +def test_publish_prefers_payload_vehicle_id_over_run_vehicle(monkeypatch): + mock_publish = MagicMock() + monkeypatch.setattr("runs.services.lifecycle.publish_event", mock_publish) + + run = _FakeRun(run_id="run-1", vehicle_ids=["veh-9"]) + transition = _transition() + + _service()._publish_run_lifecycle_transition( + run, transition, {"vehicle_id": "veh-override"} + ) + + _, kwargs = mock_publish.call_args + assert kwargs["data"]["vehicle_id"] == "veh-override" + + +def test_publish_omits_absent_fields(monkeypatch): + mock_publish = MagicMock() + monkeypatch.setattr("runs.services.lifecycle.publish_event", mock_publish) + + run = _FakeRun(run_id="run-1") + transition = _transition() + + _service()._publish_run_lifecycle_transition(run, transition, {}) + + _, kwargs = mock_publish.call_args + assert "vehicle_id" not in kwargs["data"] + assert "trip_id" not in kwargs["data"] + assert "route_id" not in kwargs["data"] From 21f913a395a64de1a18425cc30b5e62f96c4f626 Mon Sep 17 00:00:00 2001 From: Jae Date: Wed, 19 Aug 2026 00:22:08 -0600 Subject: [PATCH 26/68] build(eta): depend on sibling gtfs-eta repo instead of vendored copy Replace the vendored backend/gtfs-eta/ uv workspace member with a path dependency on the sibling simovilab/gtfs-eta checkout, which now ships the gtfs_eta alias namespace, estimate_stop_times(shape=), and the seed_baseline_model entry point that runs/domain/progression/stop_times.py already lazy-imports. uv's path-source normalization rejects a literal "../../gtfs-eta" once resolved inside the container (/app sits one level below the container's filesystem root), so the same relative path can't work identically on host and in-container. Instead backend/gtfs-eta is a committed symlink to ../../gtfs-eta: uv only normalizes the bare "gtfs-eta" segment, and the OS resolves the symlink's own ".." traversal, clamping at root instead of erroring. compose.dev.yml bind-mounts ../gtfs-eta:/gtfs-eta (read-write, since uv's setuptools editable build touches gtfs_eta.egg-info/ in the source tree) into the four backend-based services so the mount target matches what the symlink resolves to. uv sync runs at container start (docker-entrypoint.sh), after that mount exists, so no build-context change was needed. Also: add xgboost as a direct databus dependency (models/__init__.py in gtfs-eta unconditionally imports it), and exclude the gtfs-eta symlink from ruff/pytest collection since it now points at gtfs-eta's own full codebase and test suite rather than a trimmed vendored subset. --- backend/gtfs-eta | 1 + backend/gtfs-eta/README.md | 34 -- backend/gtfs-eta/gtfs_eta/__init__.py | 2 - backend/gtfs-eta/gtfs_eta/core/__init__.py | 1 - backend/gtfs-eta/gtfs_eta/core/config.py | 28 - backend/gtfs-eta/gtfs_eta/core/exceptions.py | 13 - backend/gtfs-eta/gtfs_eta/core/logging.py | 15 - backend/gtfs-eta/gtfs_eta/core/validation.py | 15 - .../gtfs-eta/gtfs_eta/eta_service/__init__.py | 1 - .../gtfs_eta/eta_service/estimator.py | 495 ------------------ .../gtfs_eta/feature_engineering/__init__.py | 1 - .../gtfs_eta/feature_engineering/spatial.py | 250 --------- .../gtfs_eta/feature_engineering/temporal.py | 98 ---- backend/gtfs-eta/gtfs_eta/models/__init__.py | 1 - .../gtfs_eta/models/common/__init__.py | 1 - .../gtfs_eta/models/common/registry.py | 316 ----------- .../gtfs-eta/gtfs_eta/models/common/utils.py | 126 ----- .../models/polyreg_distance/__init__.py | 1 - .../gtfs_eta/models/polyreg_distance/model.py | 150 ------ .../models/polyreg_distance/predict.py | 60 --- .../gtfs-eta/gtfs_eta/seed_baseline_model.py | 94 ---- backend/gtfs-eta/pyproject.toml | 22 - backend/pyproject.toml | 43 +- backend/uv.lock | 61 ++- compose.dev.yml | 10 + 25 files changed, 89 insertions(+), 1750 deletions(-) create mode 120000 backend/gtfs-eta delete mode 100644 backend/gtfs-eta/README.md delete mode 100644 backend/gtfs-eta/gtfs_eta/__init__.py delete mode 100644 backend/gtfs-eta/gtfs_eta/core/__init__.py delete mode 100644 backend/gtfs-eta/gtfs_eta/core/config.py delete mode 100644 backend/gtfs-eta/gtfs_eta/core/exceptions.py delete mode 100644 backend/gtfs-eta/gtfs_eta/core/logging.py delete mode 100644 backend/gtfs-eta/gtfs_eta/core/validation.py delete mode 100644 backend/gtfs-eta/gtfs_eta/eta_service/__init__.py delete mode 100644 backend/gtfs-eta/gtfs_eta/eta_service/estimator.py delete mode 100644 backend/gtfs-eta/gtfs_eta/feature_engineering/__init__.py delete mode 100644 backend/gtfs-eta/gtfs_eta/feature_engineering/spatial.py delete mode 100644 backend/gtfs-eta/gtfs_eta/feature_engineering/temporal.py delete mode 100644 backend/gtfs-eta/gtfs_eta/models/__init__.py delete mode 100644 backend/gtfs-eta/gtfs_eta/models/common/__init__.py delete mode 100644 backend/gtfs-eta/gtfs_eta/models/common/registry.py delete mode 100644 backend/gtfs-eta/gtfs_eta/models/common/utils.py delete mode 100644 backend/gtfs-eta/gtfs_eta/models/polyreg_distance/__init__.py delete mode 100644 backend/gtfs-eta/gtfs_eta/models/polyreg_distance/model.py delete mode 100644 backend/gtfs-eta/gtfs_eta/models/polyreg_distance/predict.py delete mode 100644 backend/gtfs-eta/gtfs_eta/seed_baseline_model.py delete mode 100644 backend/gtfs-eta/pyproject.toml diff --git a/backend/gtfs-eta b/backend/gtfs-eta new file mode 120000 index 0000000..c6e8846 --- /dev/null +++ b/backend/gtfs-eta @@ -0,0 +1 @@ +../../gtfs-eta \ No newline at end of file diff --git a/backend/gtfs-eta/README.md b/backend/gtfs-eta/README.md deleted file mode 100644 index 1e9fb55..0000000 --- a/backend/gtfs-eta/README.md +++ /dev/null @@ -1,34 +0,0 @@ -# gtfs_eta - -Inference-only ETA library: given a vehicle position and the upcoming stops on -its trip, predict arrival times from trained models stored in a model registry. - -This is the **consumption half** of the ETA model lifecycle. It is consumed by -databus (`runs/domain/progression/stop_times.py`) to populate the -`run::stop_time_updates` projection that backs the GTFS-RT trip-updates feed. - -## Provenance & intent - -- **Vendored, not original.** The canonical source — including model training — - lives in `gtfs-django` (`feature/eta_prediction`). This package is the slimmed - inference half: estimator, feature engineering, and the model registry loader, - with heavy training/serving deps dropped (`xgboost` is an optional extra). -- **Candidate for extraction.** It is namespaced (`gtfs_eta.*`) and databus - depends on it through a single narrow seam (a lazy import in `stop_times.py` - plus the workspace dependency). If a second consumer appears, or it needs an - independent release cadence, it should move to its own package/repo — pulled - the same way `gtfs-io` and `gtfs-django` are — and the move stays mechanical. - Keep the databus → `gtfs_eta` seam narrow to preserve that. - -## Model registry - -Models are loaded from `MODEL_REGISTRY_DIR` (a `registry.json` index plus per-model -`*.pkl` / `*_meta.json`). Paths are resolved **relative to the registry directory**, -so the registry is relocatable: bind-mount it anywhere, check a placeholder into -version control, or have an external retraining suite write into it. - -A deterministic placeholder global baseline can be (re)generated with: - -```bash -MODEL_REGISTRY_DIR=eta_models python -m gtfs_eta.seed_baseline_model -``` diff --git a/backend/gtfs-eta/gtfs_eta/__init__.py b/backend/gtfs-eta/gtfs_eta/__init__.py deleted file mode 100644 index acebcb0..0000000 --- a/backend/gtfs-eta/gtfs_eta/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -"""gtfs_eta — namespaced ETA-prediction package for the SIMOVI databus.""" -__version__ = "0.1.0" diff --git a/backend/gtfs-eta/gtfs_eta/core/__init__.py b/backend/gtfs-eta/gtfs_eta/core/__init__.py deleted file mode 100644 index 3b5cf9a..0000000 --- a/backend/gtfs-eta/gtfs_eta/core/__init__.py +++ /dev/null @@ -1 +0,0 @@ -# gtfs_eta.core diff --git a/backend/gtfs-eta/gtfs_eta/core/config.py b/backend/gtfs-eta/gtfs_eta/core/config.py deleted file mode 100644 index 4f0b1c4..0000000 --- a/backend/gtfs-eta/gtfs_eta/core/config.py +++ /dev/null @@ -1,28 +0,0 @@ -""" -Runtime configuration for gtfs_eta. - -The registry dir is NOT derived from __file__ — it comes solely from the -MODEL_REGISTRY_DIR environment variable (or the registry's own discovery -logic). This module only exposes the defaults that are safe to use at -import time without side effects. -""" - -# Default timezone and region for Costa Rica operations -DEFAULT_TIMEZONE: str = "America/Costa_Rica" -DEFAULT_REGION: str = "CR" - -# Weather defaults (used when no live weather feed is available) -DEFAULT_TEMPERATURE_C: float = 25.0 -DEFAULT_PRECIPITATION_MM: float = 0.0 -DEFAULT_WIND_SPEED_KMH: float | None = None - - -def get_config() -> dict: - """Return the active configuration as a plain dict.""" - return { - "default_timezone": DEFAULT_TIMEZONE, - "default_region": DEFAULT_REGION, - "default_temperature_c": DEFAULT_TEMPERATURE_C, - "default_precipitation_mm": DEFAULT_PRECIPITATION_MM, - "default_wind_speed_kmh": DEFAULT_WIND_SPEED_KMH, - } diff --git a/backend/gtfs-eta/gtfs_eta/core/exceptions.py b/backend/gtfs-eta/gtfs_eta/core/exceptions.py deleted file mode 100644 index 6abb7cb..0000000 --- a/backend/gtfs-eta/gtfs_eta/core/exceptions.py +++ /dev/null @@ -1,13 +0,0 @@ -"""Custom exceptions for gtfs_eta.""" - - -class GTFSEtaError(Exception): - """Base error for the gtfs_eta package.""" - - -class ModelNotFoundError(GTFSEtaError): - """Raised when a requested model is not in the registry.""" - - -class PredictionError(GTFSEtaError): - """Raised when a model prediction fails.""" diff --git a/backend/gtfs-eta/gtfs_eta/core/logging.py b/backend/gtfs-eta/gtfs_eta/core/logging.py deleted file mode 100644 index 302283a..0000000 --- a/backend/gtfs-eta/gtfs_eta/core/logging.py +++ /dev/null @@ -1,15 +0,0 @@ -"""Logging helpers for gtfs_eta.""" -import logging - - -def get_logger(name: str, level: str = "INFO") -> logging.Logger: - """Return a named logger with a consistent format.""" - logger = logging.getLogger(name) - if not logger.handlers: - handler = logging.StreamHandler() - handler.setFormatter( - logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s") - ) - logger.addHandler(handler) - logger.setLevel(getattr(logging, level.upper(), logging.INFO)) - return logger diff --git a/backend/gtfs-eta/gtfs_eta/core/validation.py b/backend/gtfs-eta/gtfs_eta/core/validation.py deleted file mode 100644 index 8680ea6..0000000 --- a/backend/gtfs-eta/gtfs_eta/core/validation.py +++ /dev/null @@ -1,15 +0,0 @@ -"""Input validation helpers for gtfs_eta.""" -from typing import Any - - -def require_keys(d: dict, keys: list[str], context: str = "") -> None: - """Raise ValueError if any key is missing from d.""" - missing = [k for k in keys if k not in d] - if missing: - raise ValueError(f"Missing required keys {missing} in {context or 'input'}") - - -def require_positive(value: Any, name: str) -> None: - """Raise ValueError if value is not a positive number.""" - if value is None or float(value) <= 0: - raise ValueError(f"{name} must be a positive number, got {value!r}") diff --git a/backend/gtfs-eta/gtfs_eta/eta_service/__init__.py b/backend/gtfs-eta/gtfs_eta/eta_service/__init__.py deleted file mode 100644 index 9177055..0000000 --- a/backend/gtfs-eta/gtfs_eta/eta_service/__init__.py +++ /dev/null @@ -1 +0,0 @@ -# gtfs_eta.eta_service diff --git a/backend/gtfs-eta/gtfs_eta/eta_service/estimator.py b/backend/gtfs-eta/gtfs_eta/eta_service/estimator.py deleted file mode 100644 index dd4505b..0000000 --- a/backend/gtfs-eta/gtfs_eta/eta_service/estimator.py +++ /dev/null @@ -1,495 +0,0 @@ -""" -ETA Service — low-latency inference with direct shape support. - -Ported from eta_prediction/eta_service/estimator.py on branch -feature/eta_prediction with the following changes: - - All sys.path hacks removed. - - All imports rewritten to absolute gtfs_eta.* paths. - - Module-level print() diagnostics removed (replaced with logging.debug). - - os.environ mutation at import time removed. - - Lazy imports inside _predict_with_model rewritten to gtfs_eta.* paths so - all branches are consistent (only polyreg_distance is exercised by the - baseline model, but the other branches compile cleanly). - - ADDED: precomputed-distance hook — if an upcoming_stop dict carries a - non-None 'shape_distance_to_stop' key, that value is used as the - authoritative distance, bypassing both shape projection and haversine - fallback for that stop (databus pre-computes a loop-back-safe monotonic - distance and we prefer it). -""" - -import logging -import math -from datetime import datetime, timezone -from typing import Optional - -from gtfs_eta.feature_engineering.temporal import extract_temporal_features -from gtfs_eta.models.common.registry import get_registry - -_log = logging.getLogger(__name__) - -# --------------------------------------------------------------------------- -# Optional shape support -# --------------------------------------------------------------------------- -try: - from gtfs_eta.feature_engineering.spatial import ( - ShapePolyline, - calculate_distance_features_with_shape, - ) - SHAPE_SUPPORT = True -except ImportError: - SHAPE_SUPPORT = False - _log.debug("Shape-aware spatial features not available; using fallback") - - -# --------------------------------------------------------------------------- -# Helpers -# --------------------------------------------------------------------------- - -def haversine_distance(lat1: float, lon1: float, lat2: float, lon2: float) -> float: - """Calculate distance between two lat/lon points in metres.""" - R = 6_371_000 - phi1, phi2 = math.radians(lat1), math.radians(lat2) - dphi = math.radians(lat2 - lat1) - dlambda = math.radians(lon2 - lon1) - a = math.sin(dphi / 2) ** 2 + math.cos(phi1) * math.cos(phi2) * math.sin(dlambda / 2) ** 2 - c = 2 * math.atan2(math.sqrt(a), math.sqrt(1 - a)) - return R * c - - -def _progress_features_fallback(vehicle_position, stop, next_stop, total_segments_hint): - """ - Approximate distance / progress metrics without shape data. - Used when no ShapePolyline is available for the current trip. - """ - vp_lat = vehicle_position["lat"] - vp_lon = vehicle_position["lon"] - stop_lat = stop["lat"] - stop_lon = stop["lon"] - - distance_to_stop = haversine_distance(vp_lat, vp_lon, stop_lat, stop_lon) - - progress_on_segment = 0.0 - if next_stop: - next_lat = next_stop["lat"] - next_lon = next_stop["lon"] - segment_length = haversine_distance(stop_lat, stop_lon, next_lat, next_lon) - if segment_length > 0: - distance_to_next = haversine_distance(vp_lat, vp_lon, next_lat, next_lon) - progress_on_segment = max(0.0, min(1.0, 1.0 - (distance_to_next / segment_length))) - - stop_seq = ( - stop.get("stop_sequence") - or stop.get("sequence") - or stop.get("stop_order") - or 1 - ) - total_segments = ( - stop.get("total_stop_sequence") - or total_segments_hint - or stop_seq - ) - completed = max(float(stop_seq) - 1.0, 0.0) - denom = max(float(total_segments), 1.0) - progress_ratio = max(0.0, min(1.0, (completed + progress_on_segment) / denom)) - - return { - "distance_to_stop_m": distance_to_stop, - "progress_on_segment": progress_on_segment, - "progress_ratio": progress_ratio, - "cross_track_error": None, - "shape_progress": None, - "shape_distance_to_stop": None, - } - - -def _progress_features_with_shape( - vehicle_position, stop, next_stop, shape, vehicle_stop_order, total_segments -): - """ - Shape-aware distance / progress metrics using a pre-loaded ShapePolyline. - Returns enhanced spatial features including cross-track error and - shape-based distances. - """ - features = calculate_distance_features_with_shape( - vehicle_position=vehicle_position, - stop=stop, - next_stop=next_stop, - shape=shape, - vehicle_stop_order=vehicle_stop_order, - total_segments=total_segments, - ) - return { - "distance_to_stop_m": features.get("distance_to_stop", 0.0), - "progress_on_segment": features.get("progress_on_segment", 0.0), - "progress_ratio": features.get("progress_ratio", 0.0), - "cross_track_error": features.get("cross_track_error"), - "shape_progress": features.get("shape_progress"), - "shape_distance_to_stop": features.get("shape_distance_to_stop"), - } - - -def _predict_with_model(model_key, model_type, features, distance_m): - """ - Dispatch to the appropriate predict_eta function based on model_type. - All lazy imports use absolute gtfs_eta.* paths. - """ - if model_type == "historical_mean": - from gtfs_eta.models.historical_mean.predict import predict_eta - return predict_eta( - model_key=model_key, - route_id=features.get("route_id", "unknown"), - stop_sequence=features.get("stop_sequence", 0), - hour=features.get("hour", 0), - day_of_week=features.get("day_of_week", 0), - is_peak_hour=features.get("is_peak_hour", False), - ) - - elif model_type == "ewma": - from gtfs_eta.models.ewma.predict import predict_eta - return predict_eta( - model_key=model_key, - route_id=features.get("route_id", "unknown"), - stop_sequence=features.get("stop_sequence", 0), - hour=features.get("hour", 0), - ) - - elif model_type == "polyreg_distance": - from gtfs_eta.models.polyreg_distance.predict import predict_eta - return predict_eta( - model_key=model_key, - distance_to_stop=distance_m, - ) - - elif model_type == "polyreg_time": - from gtfs_eta.models.polyreg_time.predict import predict_eta - return predict_eta( - model_key=model_key, - distance_to_stop=distance_m, - progress_on_segment=features.get("progress_on_segment"), - progress_ratio=features.get("progress_ratio"), - hour=features.get("hour", 0), - day_of_week=features.get("day_of_week", 0), - is_peak_hour=features.get("is_peak_hour", False), - is_weekend=features.get("is_weekend", False), - is_holiday=features.get("is_holiday", False), - temperature_c=features.get("temperature_c", 25.0), - precipitation_mm=features.get("precipitation_mm", 0.0), - wind_speed_kmh=features.get("wind_speed_kmh"), - ) - - elif model_type == "xgboost": - from gtfs_eta.models.xgb.predict import predict_eta - return predict_eta( - model_key=model_key, - distance_to_stop=distance_m, - progress_on_segment=features.get("progress_on_segment"), - progress_ratio=features.get("progress_ratio"), - hour=features.get("hour", 0), - day_of_week=features.get("day_of_week", 0), - is_peak_hour=features.get("is_peak_hour", False), - is_weekend=features.get("is_weekend", False), - is_holiday=features.get("is_holiday", False), - temperature_c=features.get("temperature_c", 25.0), - precipitation_mm=features.get("precipitation_mm", 0.0), - wind_speed_kmh=features.get("wind_speed_kmh", None), - ) - - else: - raise ValueError(f"Unknown model type: {model_type!r}") - - -# --------------------------------------------------------------------------- -# Public API -# --------------------------------------------------------------------------- - -def estimate_stop_times( - vehicle_position: dict, - upcoming_stops: list[dict], - route_id: str = None, - trip_id: str = None, - model_key: str = None, - model_type: str = None, - prefer_route_model: bool = True, - max_stops: int = 3, - shape: object = None, -) -> dict: - """ - Estimate arrival times for upcoming stops based on vehicle position. - - LOW-LATENCY DESIGN: No database calls during inference. - All data (stops, shapes) must be pre-loaded and passed as arguments. - - Args: - vehicle_position: Dict with vehicle_id, route, lat, lon, speed, timestamp. - upcoming_stops: List of stop dicts. Each dict may include: - - stop_id, stop_sequence, lat, lon (always required) - - shape_distance_to_stop (float, metres) — OPTIONAL. - When present and non-None, databus has pre-computed a - loop-back-safe monotonic distance along the shape; that value - is used directly as distance_m for the model, bypassing both - ShapePolyline projection and haversine fallback for that stop. - route_id: Optional route override. - trip_id: Optional trip ID for metadata. - model_key: Optional explicit model to use. - model_type: Optional model type filter. - prefer_route_model: If True, prefer route-specific models over global. - max_stops: Maximum number of stops to predict. - shape: Optional pre-loaded ShapePolyline object. - - Returns: - Dict with predictions, model info, and metadata. - """ - # Validate inputs - if not vehicle_position or not upcoming_stops: - return { - "vehicle_id": vehicle_position.get("vehicle_id", "unknown") if vehicle_position else "unknown", - "route_id": route_id, - "trip_id": trip_id, - "computed_at": datetime.now(timezone.utc).isoformat(), - "model_key": None, - "predictions": [], - "error": "Missing vehicle position or stops", - } - - stops_to_predict = upcoming_stops[:max_stops] - - # Parse timestamp - vp_timestamp_str = vehicle_position["timestamp"] - if vp_timestamp_str.endswith("Z"): - vp_timestamp_str = vp_timestamp_str.replace("Z", "+00:00") - vp_timestamp = datetime.fromisoformat(vp_timestamp_str) - - # Extract temporal features (Costa Rica locale by default) - temporal_features = extract_temporal_features( - vp_timestamp, - tz="America/Costa_Rica", - region="CR", - ) - - # Determine route - if route_id is None: - route_id = vehicle_position.get("route", "unknown") - - # Validate shape support - shape_available = shape is not None and SHAPE_SUPPORT - if shape and not SHAPE_SUPPORT: - _log.debug("Shape provided but spatial module unavailable; using fallback") - shape = None - - # Load registry and select model - registry = get_registry() - model_scope = "unknown" - - if model_key is None: - if prefer_route_model and route_id and route_id != "unknown": - model_key = registry.get_best_model( - model_type=model_type, - route_id=route_id, - metric="test_mae_seconds", - ) - model_scope = "route" if model_key else "global" - if model_key is None: - model_key = registry.get_best_model( - model_type=model_type, - route_id="global", - metric="test_mae_seconds", - ) - else: - model_key = registry.get_best_model( - model_type=model_type, - route_id="global", - metric="test_mae_seconds", - ) - model_scope = "global" - - # Last fallback — any model of the given type - if model_key is None: - model_key = registry.get_best_model(model_type=model_type) - - if model_key is None: - return { - "vehicle_id": vehicle_position["vehicle_id"], - "route_id": route_id, - "trip_id": trip_id, - "computed_at": datetime.now(timezone.utc).isoformat(), - "model_key": None, - "predictions": [], - "error": "No trained models found for model_type", - } - - # Load model metadata - try: - model_metadata = registry.load_metadata(model_key) - actual_model_type = model_metadata.get("model_type", "unknown") - model_route_id = model_metadata.get("route_id") - if model_route_id not in (None, "global"): - model_scope = "route" - elif model_scope == "unknown": - model_scope = "global" - except Exception as exc: - return { - "vehicle_id": vehicle_position["vehicle_id"], - "route_id": route_id, - "trip_id": trip_id, - "computed_at": datetime.now(timezone.utc).isoformat(), - "model_key": model_key, - "predictions": [], - "error": f"Failed to load model metadata: {exc}", - } - - # ----------------------------------------------------------------------- - # Per-stop predictions - # ----------------------------------------------------------------------- - predictions = [] - approx_total_segments = ( - max( - ( - stop.get("total_stop_sequence") - or stop.get("stop_sequence") - or stop.get("sequence") - or 0 - ) - for stop in stops_to_predict - ) - if stops_to_predict - else 0 - ) - if approx_total_segments <= 0: - approx_total_segments = max(len(stops_to_predict), 1) - - for idx, stop in enumerate(stops_to_predict): - next_stop = stops_to_predict[idx + 1] if idx + 1 < len(stops_to_predict) else None - - # Use explicit None checks, not `or`: stop_sequence == 0 is a valid - # GTFS 0-based sequence and must not be treated as falsy (that would - # relabel stop 0 as 1 and collide with a real stop 1). - if stop.get("stop_sequence") is not None: - stop_sequence_value = stop["stop_sequence"] - elif stop.get("sequence") is not None: - stop_sequence_value = stop["sequence"] - elif stop.get("stop_order") is not None: - stop_sequence_value = stop["stop_order"] - else: - stop_sequence_value = idx + 1 - - # ------------------------------------------------------------------- - # PRECOMPUTED-DISTANCE HOOK - # Databus pre-computes a loop-back-safe monotonic distance along the - # shape for each upcoming stop and stores it as shape_distance_to_stop. - # When present, we use it directly as the authoritative distance_m, - # skipping both ShapePolyline projection and haversine fallback. - # This avoids projection artifacts on looping routes and ensures the - # distance is always non-decreasing across the stop list. - # ------------------------------------------------------------------- - precomputed_dist = stop.get("shape_distance_to_stop") - if precomputed_dist is not None: - distance_m = float(precomputed_dist) - spatial_features = { - "distance_to_stop_m": distance_m, - "progress_on_segment": 0.0, - "progress_ratio": 0.0, - "cross_track_error": None, - "shape_progress": None, - # Surface the precomputed distance so it appears in the - # output prediction dict as shape_distance_to_stop_m. - "shape_distance_to_stop": distance_m, - } - elif shape_available: - spatial_features = _progress_features_with_shape( - vehicle_position, - stop, - next_stop, - shape, - vehicle_stop_order=stop_sequence_value, - total_segments=approx_total_segments, - ) - distance_m = spatial_features["distance_to_stop_m"] - else: - spatial_features = _progress_features_fallback( - vehicle_position, - stop, - next_stop, - approx_total_segments, - ) - distance_m = spatial_features["distance_to_stop_m"] - - # Build feature dict for the model - progress_on_segment = spatial_features["progress_on_segment"] or 0.0 - progress_ratio = spatial_features["progress_ratio"] or 0.0 - - features = { - "route_id": route_id, - "stop_sequence": stop_sequence_value, - "distance_to_stop": distance_m, - "progress_on_segment": progress_on_segment, - "progress_ratio": progress_ratio, - "hour": temporal_features["hour"], - "day_of_week": temporal_features["day_of_week"], - "is_weekend": temporal_features["is_weekend"], - "is_holiday": temporal_features["is_holiday"], - "is_peak_hour": temporal_features["is_peak_hour"], - "temperature_c": 25.0, - "precipitation_mm": 0.0, - "wind_speed_kmh": None, - } - - try: - result = _predict_with_model(model_key, actual_model_type, features, distance_m) - - eta_seconds = result.get("eta_seconds", 0.0) - eta_minutes = eta_seconds / 60.0 - eta_formatted = result.get( - "eta_formatted", - f"{int(eta_minutes)}m {int(eta_seconds % 60)}s", - ) - eta_ts = datetime.fromtimestamp( - vp_timestamp.timestamp() + eta_seconds, tz=timezone.utc - ) - - prediction = { - "stop_id": stop["stop_id"], - "stop_sequence": stop_sequence_value, - "distance_to_stop_m": round(distance_m, 1), - "eta_seconds": round(eta_seconds, 1), - "eta_minutes": round(eta_minutes, 2), - "eta_formatted": eta_formatted, - "eta_timestamp": eta_ts.isoformat(), - } - - # Optional shape metrics - if spatial_features.get("cross_track_error") is not None: - prediction["cross_track_error_m"] = round(spatial_features["cross_track_error"], 1) - if spatial_features.get("shape_progress") is not None: - prediction["shape_progress"] = round(spatial_features["shape_progress"], 3) - if spatial_features.get("shape_distance_to_stop") is not None: - prediction["shape_distance_to_stop_m"] = round( - spatial_features["shape_distance_to_stop"], 1 - ) - - predictions.append(prediction) - - except Exception as exc: - predictions.append( - { - "stop_id": stop["stop_id"], - "stop_sequence": stop_sequence_value, - "distance_to_stop_m": round(distance_m, 1), - "eta_seconds": None, - "eta_minutes": None, - "eta_formatted": None, - "eta_timestamp": None, - "error": str(exc), - } - ) - - return { - "vehicle_id": vehicle_position["vehicle_id"], - "route_id": route_id, - "trip_id": trip_id, - "computed_at": datetime.now(timezone.utc).isoformat(), - "model_key": model_key, - "model_type": actual_model_type, - "model_scope": model_scope, - "shape_used": shape_available, - "predictions": predictions, - } diff --git a/backend/gtfs-eta/gtfs_eta/feature_engineering/__init__.py b/backend/gtfs-eta/gtfs_eta/feature_engineering/__init__.py deleted file mode 100644 index 1d1fec6..0000000 --- a/backend/gtfs-eta/gtfs_eta/feature_engineering/__init__.py +++ /dev/null @@ -1 +0,0 @@ -# gtfs_eta.feature_engineering diff --git a/backend/gtfs-eta/gtfs_eta/feature_engineering/spatial.py b/backend/gtfs-eta/gtfs_eta/feature_engineering/spatial.py deleted file mode 100644 index 4fa2150..0000000 --- a/backend/gtfs-eta/gtfs_eta/feature_engineering/spatial.py +++ /dev/null @@ -1,250 +0,0 @@ -""" -Shape-informed spatial feature extraction for gtfs_eta. - -Ported from eta_prediction/feature_engineering/spatial.py on branch -feature/eta_prediction. No sys.path hacks; no DB helper functions -(load_shape_from_gtfs / load_shape_for_trip) that require psycopg2 are -kept because they are not needed by the inference path. -""" -from __future__ import annotations - -import math -from typing import Dict, List, Tuple, Optional - -EARTH_RADIUS_M = 6_371_000.0 - - -def _deg2rad(x: float) -> float: - return x * math.pi / 180.0 - - -def _haversine_m(lat1: float, lon1: float, lat2: float, lon2: float) -> float: - """Great-circle distance in meters.""" - phi1, phi2 = _deg2rad(lat1), _deg2rad(lat2) - dphi = phi2 - phi1 - dlambda = _deg2rad(lon2 - lon1) - a = math.sin(dphi / 2) ** 2 + math.cos(phi1) * math.cos(phi2) * math.sin(dlambda / 2) ** 2 - c = 2 * math.atan2(math.sqrt(a), math.sqrt(1 - a)) - return EARTH_RADIUS_M * c - - -class ShapePolyline: - """ - Represents a route shape as an ordered sequence of (lat, lon) points. - Provides methods to project vehicle positions onto the polyline and - compute accurate progress along the route. - """ - - def __init__(self, points: List[Tuple[float, float]]): - if len(points) < 2: - raise ValueError("Shape must have at least 2 points") - self.points = points - self._segment_lengths = self._compute_segment_lengths() - self._cumulative_distances = self._compute_cumulative_distances() - self.total_length = self._cumulative_distances[-1] - - def _compute_segment_lengths(self) -> List[float]: - lengths = [] - for i in range(len(self.points) - 1): - lat1, lon1 = self.points[i] - lat2, lon2 = self.points[i + 1] - lengths.append(_haversine_m(lat1, lon1, lat2, lon2)) - return lengths - - def _compute_cumulative_distances(self) -> List[float]: - cumulative = [0.0] - for length in self._segment_lengths: - cumulative.append(cumulative[-1] + length) - return cumulative - - def project_point(self, lat: float, lon: float) -> Dict: - """ - Project a point onto the polyline, finding the closest position. - - Returns: - { - 'distance_along_shape': meters from shape start, - 'cross_track_distance': perpendicular distance from shape (meters), - 'closest_segment_idx': index of nearest segment, - 'progress': normalized progress [0, 1] - } - """ - min_dist = float("inf") - best_segment_idx = 0 - best_projection_dist = 0.0 - - for i in range(len(self.points) - 1): - lat1, lon1 = self.points[i] - lat2, lon2 = self.points[i + 1] - proj_info = self._project_onto_segment(lat, lon, lat1, lon1, lat2, lon2) - if proj_info["distance"] < min_dist: - min_dist = proj_info["distance"] - best_segment_idx = i - best_projection_dist = proj_info["distance_along_segment"] - - distance_along_shape = ( - self._cumulative_distances[best_segment_idx] + best_projection_dist - ) - progress = ( - distance_along_shape / self.total_length if self.total_length > 0 else 0.0 - ) - - return { - "distance_along_shape": distance_along_shape, - "cross_track_distance": min_dist, - "closest_segment_idx": best_segment_idx, - "progress": min(1.0, max(0.0, progress)), - } - - def _project_onto_segment( - self, - lat: float, - lon: float, - lat1: float, - lon1: float, - lat2: float, - lon2: float, - ) -> Dict: - """Project point onto a single segment (planar approximation).""" - avg_lat = (lat1 + lat2) / 2 - meters_per_deg_lat = 111320.0 - meters_per_deg_lon = 111320.0 * math.cos(_deg2rad(avg_lat)) - - seg_x = (lon2 - lon1) * meters_per_deg_lon - seg_y = (lat2 - lat1) * meters_per_deg_lat - seg_length_sq = seg_x ** 2 + seg_y ** 2 - - if seg_length_sq < 1e-6: - dist = _haversine_m(lat, lon, lat1, lon1) - return {"distance": dist, "distance_along_segment": 0.0} - - dx = (lon - lon1) * meters_per_deg_lon - dy = (lat - lat1) * meters_per_deg_lat - - t = (dx * seg_x + dy * seg_y) / seg_length_sq - t = max(0.0, min(1.0, t)) - - proj_x = lon1 + t * (lon2 - lon1) - proj_y = lat1 + t * (lat2 - lat1) - - dist = _haversine_m(lat, lon, proj_y, proj_x) - seg_length = math.sqrt(seg_length_sq) - distance_along_segment = t * seg_length - - return {"distance": dist, "distance_along_segment": distance_along_segment} - - def get_distance_between_stops( - self, - stop1_lat: float, - stop1_lon: float, - stop2_lat: float, - stop2_lon: float, - ) -> float: - """Get shape distance between two stops (more accurate than haversine).""" - proj1 = self.project_point(stop1_lat, stop1_lon) - proj2 = self.project_point(stop2_lat, stop2_lon) - return abs(proj2["distance_along_shape"] - proj1["distance_along_shape"]) - - -def calculate_distance_features_with_shape( - vehicle_position: Dict, - stop: Dict, - next_stop: Optional[Dict], - shape: Optional[ShapePolyline] = None, - vehicle_stop_order: Optional[int] = None, - total_segments: Optional[int] = None, -) -> Dict: - """ - Enhanced spatial feature extraction using shape data when available. - - Args: - vehicle_position: {'lat': float, 'lon': float} - stop: {'stop_id': str, 'lat': float, 'lon': float} - next_stop: {'stop_id': str, 'lat': float, 'lon': float} or None - shape: ShapePolyline instance or None - vehicle_stop_order: 0-based index of the closest upstream stop - total_segments: Total number of stop-to-stop segments in trip - - Returns: - Dict with distance_to_stop, progress_on_segment, progress_ratio, - shape_progress, shape_distance_to_stop, cross_track_error - """ - vlat, vlon = float(vehicle_position["lat"]), float(vehicle_position["lon"]) - slat, slon = float(stop["lat"]), float(stop["lon"]) - - result: Dict = { - "distance_to_stop": _haversine_m(vlat, vlon, slat, slon), - "distance_to_next_stop": None, - "progress_on_segment": None, - "progress_ratio": None, - "shape_progress": None, - "shape_distance_to_stop": None, - "cross_track_error": None, - } - - nlat = nlon = None - if next_stop is not None: - nlat, nlon = float(next_stop["lat"]), float(next_stop["lon"]) - seg_len = _haversine_m(slat, slon, nlat, nlon) - result["distance_to_next_stop"] = ( - 0.0 if seg_len == 0.0 else _haversine_m(vlat, vlon, nlat, nlon) - ) - - # Simple progress proxy when no shape - if result["progress_on_segment"] is None and next_stop is not None and result["distance_to_next_stop"] is not None: - seg_len = _haversine_m(slat, slon, nlat, nlon) - if seg_len > 0: - progress = 1.0 - (result["distance_to_next_stop"] / seg_len) - result["progress_on_segment"] = max(0.0, min(1.0, progress)) - else: - result["progress_on_segment"] = 0.0 - - # Shape-based features - if shape is not None: - vehicle_proj = shape.project_point(vlat, vlon) - stop_proj = shape.project_point(slat, slon) - - shape_dist_to_stop = ( - stop_proj["distance_along_shape"] - vehicle_proj["distance_along_shape"] - ) - result.update( - { - "shape_progress": vehicle_proj["progress"], - "shape_distance_to_stop": max(0, shape_dist_to_stop), - "cross_track_error": vehicle_proj["cross_track_distance"], - "progress_ratio": vehicle_proj["progress"], - } - ) - - if next_stop is not None: - next_proj = shape.project_point(nlat, nlon) - segment_length = ( - next_proj["distance_along_shape"] - stop_proj["distance_along_shape"] - ) - if segment_length > 0: - past_stop = ( - vehicle_proj["distance_along_shape"] - - stop_proj["distance_along_shape"] - ) - result["progress_on_segment"] = max( - 0.0, min(1.0, past_stop / segment_length) - ) - else: - result["progress_on_segment"] = 0.0 - - # Fallback progress_ratio using stop order metadata - if result["progress_ratio"] is None: - order = vehicle_stop_order - if order is None: - order = stop.get("vehicle_stop_order") or stop.get("stop_order") - segments = total_segments - if segments is None: - segments = stop.get("total_segments") - if order is not None and segments: - completed_segments = max(float(order), 0.0) - progress_within = result["progress_on_segment"] or 0.0 - denom = max(float(segments), 1.0) - ratio = (completed_segments + progress_within) / denom - result["progress_ratio"] = max(0.0, min(1.0, ratio)) - - return result diff --git a/backend/gtfs-eta/gtfs_eta/feature_engineering/temporal.py b/backend/gtfs-eta/gtfs_eta/feature_engineering/temporal.py deleted file mode 100644 index 25c5963..0000000 --- a/backend/gtfs-eta/gtfs_eta/feature_engineering/temporal.py +++ /dev/null @@ -1,98 +0,0 @@ -""" -Temporal feature extraction for gtfs_eta. - -Ported verbatim from eta_prediction/feature_engineering/temporal.py on -branch feature/eta_prediction; only the import path was changed (no -sys.path hacks needed in this package). -""" -from __future__ import annotations - -from datetime import datetime -from typing import Dict, Optional - -try: - import zoneinfo # py3.9+ -except ImportError: # pragma: no cover - from backports import zoneinfo # type: ignore - - -def _get_holiday_calendar(region: str): - """ - Try to build a holiday calendar. Falls back to empty set if 'holidays' isn't installed. - region: - - 'US_MA' -> U.S. w/ Massachusetts state holidays (good for MBTA) - - 'CR' -> Costa Rica - """ - try: - import holidays - except Exception: - return None - - if region.upper() == "US_MA": - return holidays.US(state="MA") - if region.upper() == "CR": - # Requires holidays>=0.52 which includes CostaRica - try: - return holidays.CostaRica() - except Exception: - return None - # Fallback: US federal only - return holidays.US() - - -def _to_local(dt: datetime, tz: str) -> datetime: - """Ensure timezone-aware datetime localized to tz.""" - tzinfo = zoneinfo.ZoneInfo(tz) - if dt.tzinfo is None: - # assume input is UTC if naive - return dt.replace(tzinfo=zoneinfo.ZoneInfo("UTC")).astimezone(tzinfo) - return dt.astimezone(tzinfo) - - -def _tod_bin(hour: int) -> str: - """ - Map hour -> time-of-day bin. - Spec requires: 'morning' | 'midday' | 'afternoon' | 'evening'. - """ - if 5 <= hour <= 9: - return "morning" - if 10 <= hour <= 13: - return "midday" - if 14 <= hour <= 17: - return "afternoon" - return "evening" - - -def extract_temporal_features( - timestamp: datetime, - *, - tz: str = "America/New_York", - region: str = "US_MA", -) -> Dict[str, object]: - """ - Returns: - - hour: 0-23 - - day_of_week: 0-6 (Monday=0) - - is_weekend: bool - - is_holiday: bool - - time_of_day_bin: 'morning'|'midday'|'afternoon'|'evening' - - is_peak_hour: bool (7-9am, 4-7pm; weekdays only) - """ - dt_local = _to_local(timestamp, tz) - hour = dt_local.hour - dow = dt_local.weekday() # Monday=0 - is_weekend = dow >= 5 - - cal = _get_holiday_calendar(region) - is_holiday = bool(cal and (dt_local.date() in cal)) - - is_peak_hour = (dow < 5) and ((7 <= hour <= 9) or (16 <= hour <= 19)) - - return { - "hour": hour, - "day_of_week": dow, - "is_weekend": is_weekend, - "is_holiday": is_holiday, - "time_of_day_bin": _tod_bin(hour), - "is_peak_hour": is_peak_hour, - } diff --git a/backend/gtfs-eta/gtfs_eta/models/__init__.py b/backend/gtfs-eta/gtfs_eta/models/__init__.py deleted file mode 100644 index 0063a48..0000000 --- a/backend/gtfs-eta/gtfs_eta/models/__init__.py +++ /dev/null @@ -1 +0,0 @@ -# gtfs_eta.models diff --git a/backend/gtfs-eta/gtfs_eta/models/common/__init__.py b/backend/gtfs-eta/gtfs_eta/models/common/__init__.py deleted file mode 100644 index 8492010..0000000 --- a/backend/gtfs-eta/gtfs_eta/models/common/__init__.py +++ /dev/null @@ -1 +0,0 @@ -# gtfs_eta.models.common diff --git a/backend/gtfs-eta/gtfs_eta/models/common/registry.py b/backend/gtfs-eta/gtfs_eta/models/common/registry.py deleted file mode 100644 index 02b3a4b..0000000 --- a/backend/gtfs-eta/gtfs_eta/models/common/registry.py +++ /dev/null @@ -1,316 +0,0 @@ -""" -Model registry for gtfs_eta. - -Manages trained model artifacts and metadata in a structured directory. -The registry dir is determined solely by the MODEL_REGISTRY_DIR environment -variable; no __file__-relative paths are used so the package is relocatable. - -Ported from eta_prediction/models/common/registry.py on branch -feature/eta_prediction with the following changes: - - Removed sys.path hacks (not needed in a proper package). - - Removed print() diagnostics; replaced with logging. - - PROJECT_ROOT / DEFAULT_REGISTRY_DIR no longer derived from __file__ — - the env var is the only authoritative source. - - _find_existing_registry_dir() retained as a convenience fallback for - local dev (walks CWD upwards looking for models/trained/registry.json). - - get_registry() singleton caching retained. -""" - -import json -import logging -import os -import pickle -from datetime import datetime -from pathlib import Path -from typing import Any, Dict, List, Optional, Union - -import pandas as pd - -_log = logging.getLogger(__name__) - -# ── Directory resolution ────────────────────────────────────────────────────── - -def _find_existing_registry_dir() -> Optional[Path]: - """ - Walk CWD upward searching for an existing models/trained/registry.json. - Returns None if not found (caller should then raise or use a default). - """ - cwd = Path.cwd().resolve() - for root in [cwd, *cwd.parents]: - candidate = root / "models" / "trained" - if (candidate / "registry.json").exists(): - return candidate.resolve() - return None - - -def _resolve_registry_dir() -> Path: - """ - Determine the registry directory with this priority: - 1. MODEL_REGISTRY_DIR env var (authoritative). - 2. Walk CWD upward for an existing registry (dev convenience). - 3. Raise at runtime if neither is available. - """ - env_dir = os.getenv("MODEL_REGISTRY_DIR") - if env_dir: - return Path(env_dir).expanduser().resolve() - discovered = _find_existing_registry_dir() - if discovered: - return discovered - raise RuntimeError( - "MODEL_REGISTRY_DIR is not set and no existing registry was found. " - "Set the MODEL_REGISTRY_DIR environment variable before using gtfs_eta." - ) - - -# ── Registry class ──────────────────────────────────────────────────────────── - -class ModelRegistry: - """ - Manages model artifacts and metadata in a structured directory. - - Structure:: - - / - {model_key}.pkl - {model_key}_meta.json - registry.json # index of all models - """ - - def __init__(self, base_dir: Union[str, Path, None] = None): - if base_dir is not None: - base_path = Path(base_dir).expanduser().resolve() - else: - base_path = _resolve_registry_dir() - - self.base_dir = base_path - self.base_dir.mkdir(parents=True, exist_ok=True) - - self.registry_file = self.base_dir / "registry.json" - self._load_registry() - - # ── persistence ────────────────────────────────────────────────────────── - - def _load_registry(self) -> None: - if self.registry_file.exists(): - with open(self.registry_file, "r") as f: - self.registry: Dict[str, Any] = json.load(f) - else: - self.registry = {} - - def _save_registry(self) -> None: - with open(self.registry_file, "w") as f: - json.dump(self.registry, f, indent=2) - - # ── CRUD ───────────────────────────────────────────────────────────────── - - def save_model( - self, - model_key: str, - model: Any, - metadata: Dict[str, Any], - overwrite: bool = False, - ) -> Path: - """Save model pickle + metadata JSON; update the registry index.""" - model_path = self.base_dir / f"{model_key}.pkl" - meta_path = self.base_dir / f"{model_key}_meta.json" - - if model_path.exists() and not overwrite: - raise FileExistsError( - f"Model {model_key} already exists. Set overwrite=True to replace." - ) - - with open(model_path, "wb") as f: - pickle.dump(model, f) - - metadata = dict(metadata) # don't mutate caller's dict - metadata["model_key"] = model_key - metadata["saved_at"] = datetime.now().isoformat() - metadata["model_path"] = model_path.name - - with open(meta_path, "w") as f: - json.dump(metadata, f, indent=2) - - route_info = ( - f" (route: {metadata.get('route_id')})" - if metadata.get("route_id") - else " (global)" - ) - _log.debug("Saved model: %s%s", model_key, route_info) - - # Store basenames only — paths are resolved against ``base_dir`` at - # load time (see ``_resolve_in_registry``), keeping the registry - # relocatable: a registry directory can be moved, bind-mounted at a - # different root, or checked into version control and still load. - self.registry[model_key] = { - "model_path": model_path.name, - "meta_path": meta_path.name, - "saved_at": metadata["saved_at"], - "model_type": metadata.get("model_type", "unknown"), - "route_id": metadata.get("route_id"), - "dataset": metadata.get("dataset", "unknown"), - } - self._save_registry() - return model_path - - def _resolve_in_registry(self, stored_path: str) -> Path: - """Resolve a registry-stored path against the registry directory. - - Only the basename of ``stored_path`` is used, so entries written with - an absolute path on another host (e.g. ``/app/eta_models/x.pkl``) still - load wherever the registry directory currently lives. - """ - return self.base_dir / Path(stored_path).name - - def load_model(self, model_key: str) -> Any: - """Load and unpickle a model from the registry.""" - if model_key not in self.registry: - raise KeyError(f"Model {model_key!r} not found in registry") - model_path = self._resolve_in_registry(self.registry[model_key]["model_path"]) - with open(model_path, "rb") as f: - return pickle.load(f) - - def load_metadata(self, model_key: str) -> Dict[str, Any]: - """Load metadata JSON for a model.""" - if model_key not in self.registry: - raise KeyError(f"Model {model_key!r} not found in registry") - meta_path = self._resolve_in_registry(self.registry[model_key]["meta_path"]) - with open(meta_path, "r") as f: - return json.load(f) - - def delete_model(self, model_key: str) -> bool: - """Remove model pickle, metadata, and registry entry.""" - if model_key not in self.registry: - raise KeyError(f"Model {model_key!r} not found in registry") - - model_path = self._resolve_in_registry(self.registry[model_key]["model_path"]) - meta_path = self._resolve_in_registry(self.registry[model_key]["meta_path"]) - - if model_path.exists(): - model_path.unlink() - if meta_path.exists(): - meta_path.unlink() - - del self.registry[model_key] - self._save_registry() - _log.debug("Deleted model: %s", model_key) - return True - - # ── query helpers ───────────────────────────────────────────────────────── - - def list_models( - self, - model_type: Optional[str] = None, - route_id: Optional[str] = None, - sort_by: str = "saved_at", - ) -> pd.DataFrame: - """Return a DataFrame of all models matching the given filters.""" - models = [] - for key, info in self.registry.items(): - if model_type and info.get("model_type") != model_type: - continue - model_route_id = info.get("route_id") - if route_id is not None and route_id != "all": - if route_id == "global" and model_route_id is not None: - continue - elif route_id != "global" and model_route_id != route_id: - continue - try: - meta = self.load_metadata(key) - models.append( - { - "model_key": key, - "model_type": info.get("model_type", "unknown"), - "route_id": model_route_id or "global", - "saved_at": info["saved_at"], - "dataset": meta.get("dataset", "unknown"), - "n_samples": meta.get("n_samples"), - "mae_seconds": meta.get("metrics", {}).get("test_mae_seconds"), - "mae_minutes": meta.get("metrics", {}).get("test_mae_minutes"), - "rmse_seconds": meta.get("metrics", {}).get("test_rmse_seconds"), - "r2": meta.get("metrics", {}).get("test_r2"), - } - ) - except Exception as exc: - _log.warning("Could not load metadata for %s: %s", key, exc) - - df = pd.DataFrame(models) - if not df.empty and sort_by in df.columns: - df = df.sort_values(sort_by, ascending=False) - return df - - def get_best_model( - self, - model_type: Optional[str] = None, - route_id: Optional[str] = None, - metric: str = "test_mae_seconds", - minimize: bool = True, - ) -> Optional[str]: - """ - Return the model_key of the best model by the given metric. - - When route_id is None, prefers route-specific models if they exist; - otherwise falls back to global models. - """ - candidates = [] - for key in self.registry: - if model_type and self.registry[key].get("model_type") != model_type: - continue - - model_route_id = self.registry[key].get("route_id") - if route_id is not None: - if route_id == "global" and model_route_id is not None: - continue - elif route_id != "global" and model_route_id != route_id: - continue - - try: - meta = self.load_metadata(key) - metric_value = meta.get("metrics", {}).get(metric) - if metric_value is not None: - candidates.append( - { - "key": key, - "metric_value": metric_value, - "route_id": model_route_id, - "is_route_specific": model_route_id is not None, - } - ) - except Exception: - continue - - if not candidates: - return None - - if route_id is None: - route_specific = [c for c in candidates if c["is_route_specific"]] - global_models = [c for c in candidates if not c["is_route_specific"]] - candidates_to_sort = route_specific if route_specific else global_models - else: - candidates_to_sort = candidates - - candidates_to_sort.sort(key=lambda x: x["metric_value"], reverse=not minimize) - return candidates_to_sort[0]["key"] if candidates_to_sort else None - - def get_routes(self, model_type: Optional[str] = None) -> List[str]: - """Return sorted list of route IDs that have trained models.""" - routes = set() - for key, info in self.registry.items(): - if model_type and info.get("model_type") != model_type: - continue - route = info.get("route_id") - if route is not None: - routes.add(route) - return sorted(routes) - - -# ── Singleton ───────────────────────────────────────────────────────────────── - -_registry: Optional[ModelRegistry] = None - - -def get_registry() -> ModelRegistry: - """Return (or lazily create) the process-level registry singleton.""" - global _registry - if _registry is None: - _registry = ModelRegistry() - return _registry diff --git a/backend/gtfs-eta/gtfs_eta/models/common/utils.py b/backend/gtfs-eta/gtfs_eta/models/common/utils.py deleted file mode 100644 index 0ab81c9..0000000 --- a/backend/gtfs-eta/gtfs_eta/models/common/utils.py +++ /dev/null @@ -1,126 +0,0 @@ -""" -Utility functions for gtfs_eta.models. - -Ported from eta_prediction/models/common/utils.py on branch -feature/eta_prediction. Training helpers (print_metrics_table, -train_test_summary, create_feature_importance_df) are retained as-is; -they are harmless at inference time. -""" - -import numpy as np -import pandas as pd -from typing import Any, Dict, List, Optional -import logging - - -def setup_logging(name: str = "eta_models", level: str = "INFO") -> logging.Logger: - """Setup consistent logging for models.""" - logger = logging.getLogger(name) - logger.setLevel(getattr(logging, level)) - if not logger.handlers: - handler = logging.StreamHandler() - handler.setFormatter( - logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s") - ) - logger.addHandler(handler) - return logger - - -def safe_divide( - numerator: np.ndarray, - denominator: np.ndarray, - fill_value: float = 0.0, -) -> np.ndarray: - """Safe division that handles division by zero.""" - result = np.full_like(numerator, fill_value, dtype=float) - mask = denominator != 0 - result[mask] = numerator[mask] / denominator[mask] - return result - - -def clip_predictions( - predictions: np.ndarray, - min_value: float = 0.0, - max_value: float = 7200.0, -) -> np.ndarray: - """Clip predictions to reasonable range (0–7200 s by default).""" - return np.clip(predictions, min_value, max_value) - - -def calculate_speed_kmh(distance_m: float, time_s: float) -> float: - """Calculate speed in km/h from distance and time.""" - if time_s <= 0: - return 0.0 - return (distance_m / 1000) / (time_s / 3600) - - -def haversine_distance( - lat1: float, - lon1: float, - lat2: float, - lon2: float, -) -> float: - """Calculate great-circle distance between two points (meters).""" - R = 6_371_000 - phi1 = np.radians(lat1) - phi2 = np.radians(lat2) - delta_phi = np.radians(lat2 - lat1) - delta_lambda = np.radians(lon2 - lon1) - a = ( - np.sin(delta_phi / 2) ** 2 - + np.cos(phi1) * np.cos(phi2) * np.sin(delta_lambda / 2) ** 2 - ) - c = 2 * np.arctan2(np.sqrt(a), np.sqrt(1 - a)) - return R * c - - -def format_seconds(seconds: float) -> str: - """Format seconds as human-readable string (e.g. '2m 30s', '1h 15m').""" - if seconds < 60: - return f"{int(seconds)}s" - elif seconds < 3600: - minutes = int(seconds / 60) - secs = int(seconds % 60) - return f"{minutes}m {secs}s" - else: - hours = int(seconds / 3600) - minutes = int((seconds % 3600) / 60) - return f"{hours}h {minutes}m" - - -def add_lag_features( - df: pd.DataFrame, - columns: List[str], - lags: List[int], - group_by: Optional[str] = None, -) -> pd.DataFrame: - """Add lagged features to dataframe (returns a new copy).""" - df_copy = df.copy() - for col in columns: - for lag in lags: - lag_col_name = f"{col}_lag{lag}" - if group_by: - df_copy[lag_col_name] = df_copy.groupby(group_by)[col].shift(lag) - else: - df_copy[lag_col_name] = df_copy[col].shift(lag) - return df_copy - - -def smooth_predictions( - predictions: np.ndarray, - window_size: int = 3, - method: str = "ewma", - alpha: float = 0.3, -) -> np.ndarray: - """Smooth predictions using rolling average or EWMA.""" - if len(predictions) < window_size: - return predictions - s = pd.Series(predictions) - if method == "mean": - return s.rolling(window_size, min_periods=1).mean().values - elif method == "median": - return s.rolling(window_size, min_periods=1).median().values - elif method == "ewma": - return s.ewm(alpha=alpha).mean().values - else: - raise ValueError(f"Unknown smoothing method: {method}") diff --git a/backend/gtfs-eta/gtfs_eta/models/polyreg_distance/__init__.py b/backend/gtfs-eta/gtfs_eta/models/polyreg_distance/__init__.py deleted file mode 100644 index 7674c17..0000000 --- a/backend/gtfs-eta/gtfs_eta/models/polyreg_distance/__init__.py +++ /dev/null @@ -1 +0,0 @@ -# gtfs_eta.models.polyreg_distance diff --git a/backend/gtfs-eta/gtfs_eta/models/polyreg_distance/model.py b/backend/gtfs-eta/gtfs_eta/models/polyreg_distance/model.py deleted file mode 100644 index 9021022..0000000 --- a/backend/gtfs-eta/gtfs_eta/models/polyreg_distance/model.py +++ /dev/null @@ -1,150 +0,0 @@ -""" -PolyRegDistanceModel — inference-only class. - -Extracted verbatim from eta_prediction/models/polyreg_distance/train.py on -branch feature/eta_prediction. Only the class and its sklearn/numpy/pandas -imports are present here — training functions, dataset loaders, metrics, and -ModelKey helpers are deliberately excluded so pickles can be loaded without -any training-time dependency. - -Stable import path for pickle compatibility: - gtfs_eta.models.polyreg_distance.model.PolyRegDistanceModel -""" - -import numpy as np -import pandas as pd -from sklearn.linear_model import Ridge -from sklearn.pipeline import Pipeline -from sklearn.preprocessing import PolynomialFeatures -from typing import Dict, Optional - -from gtfs_eta.models.common.utils import clip_predictions - - -class PolyRegDistanceModel: - """ - Polynomial regression on distance with optional route-specific models. - - Features: distance_to_stop, (distance)^2, (distance)^3, ... - Can fit separate models per route for better performance. - """ - - def __init__( - self, - degree: int = 2, - alpha: float = 1.0, - route_specific: bool = False, - ): - """ - Args: - degree: Polynomial degree (1, 2, or 3 recommended) - alpha: Ridge regression alpha (regularization strength) - route_specific: Whether to fit separate model per route - """ - self.degree = degree - self.alpha = alpha - self.route_specific = route_specific - self.models: Dict[str, Pipeline] = {} # route_id -> fitted pipeline - self.global_model: Optional[Pipeline] = None - self.feature_cols = ["distance_to_stop"] - - # ── internal ────────────────────────────────────────────────────────────── - - def _create_pipeline(self) -> Pipeline: - return Pipeline( - [ - ("poly", PolynomialFeatures(degree=self.degree, include_bias=True)), - ("ridge", Ridge(alpha=self.alpha)), - ] - ) - - # ── public API ──────────────────────────────────────────────────────────── - - def fit( - self, - train_df: pd.DataFrame, - target_col: str = "time_to_arrival_seconds", - ) -> "PolyRegDistanceModel": - """ - Train model(s). - - Args: - train_df: DataFrame with at least 'distance_to_stop' and target_col. - Also needs 'route_id' when route_specific=True. - target_col: Name of the target column. - - Returns: - self (for chaining) - """ - if "distance_to_stop" not in train_df.columns: - raise ValueError("'distance_to_stop' column required in train_df") - - if self.route_specific: - for route_id, route_df in train_df.groupby("route_id"): - X = route_df[["distance_to_stop"]].values - y = route_df[target_col].values - model = self._create_pipeline() - model.fit(X, y) - self.models[route_id] = model - else: - X = train_df[["distance_to_stop"]].values - y = train_df[target_col].values - self.global_model = self._create_pipeline() - self.global_model.fit(X, y) - - return self - - def predict(self, X: pd.DataFrame) -> np.ndarray: - """ - Predict ETAs (seconds). - - Args: - X: DataFrame with 'distance_to_stop' (and 'route_id' when route_specific). - - Returns: - 1-D numpy array of predicted ETAs, clipped to [0, 7200] seconds. - """ - if self.route_specific: - if "route_id" not in X.columns: - raise ValueError("'route_id' required for route-specific model") - - predictions = np.zeros(len(X)) - X_reset = X.reset_index(drop=True) - - for route_id, route_df in X_reset.groupby("route_id"): - pos_indices = route_df.index.values - X_route = route_df[["distance_to_stop"]].values - - if route_id in self.models: - predictions[pos_indices] = self.models[route_id].predict(X_route) - elif self.global_model is not None: - predictions[pos_indices] = self.global_model.predict(X_route) - else: - # fallback: rough 30 km/h - predictions[pos_indices] = X_route.flatten() / 30_000 * 3_600 - else: - if self.global_model is None: - raise ValueError("Model has not been trained — call fit() first") - X_dist = X[["distance_to_stop"]].values - predictions = self.global_model.predict(X_dist) - - return clip_predictions(predictions) - - def get_coefficients(self, route_id: Optional[str] = None) -> Dict: - """ - Return ridge coefficients for the given route (or the global model). - """ - if route_id and route_id in self.models: - model = self.models[route_id] - elif self.global_model: - model = self.global_model - else: - return {} - - coefs = model.named_steps["ridge"].coef_ - intercept = model.named_steps["ridge"].intercept_ - return { - "intercept": float(intercept), - "coefficients": coefs.tolist(), - "degree": self.degree, - } diff --git a/backend/gtfs-eta/gtfs_eta/models/polyreg_distance/predict.py b/backend/gtfs-eta/gtfs_eta/models/polyreg_distance/predict.py deleted file mode 100644 index 6732056..0000000 --- a/backend/gtfs-eta/gtfs_eta/models/polyreg_distance/predict.py +++ /dev/null @@ -1,60 +0,0 @@ -""" -Prediction interface for the Polynomial Regression Distance model. - -Ported from eta_prediction/models/polyreg_distance/predict.py on branch -feature/eta_prediction with the following changes: - - sys.path hacks removed. - - Imports rewritten to absolute gtfs_eta.* paths. -""" - -from typing import Dict, Optional - -import pandas as pd - -from gtfs_eta.models.common.registry import get_registry -from gtfs_eta.models.common.utils import format_seconds - - -def predict_eta( - model_key: str, - distance_to_stop: float, - route_id: Optional[str] = None, -) -> Dict: - """ - Predict ETA using a polynomial regression distance model. - - Args: - model_key: Model identifier in the registry. - distance_to_stop: Distance to the stop in metres. - route_id: Route ID — required for route-specific models. - - Returns: - Dict with eta_seconds, eta_minutes, eta_formatted, model_key, - model_type, distance_to_stop_m, route_specific, degree, coefficients. - """ - registry = get_registry() - model = registry.load_model(model_key) - metadata = registry.load_metadata(model_key) - - input_data: Dict = {"distance_to_stop": [distance_to_stop]} - if model.route_specific: - if route_id is None: - raise ValueError("route_id is required for a route-specific model") - input_data["route_id"] = [route_id] - - input_df = pd.DataFrame(input_data) - eta_seconds = float(model.predict(input_df)[0]) - - coefs = model.get_coefficients(route_id if model.route_specific else None) - - return { - "eta_seconds": eta_seconds, - "eta_minutes": eta_seconds / 60.0, - "eta_formatted": format_seconds(eta_seconds), - "model_key": model_key, - "model_type": "polyreg_distance", - "distance_to_stop_m": distance_to_stop, - "route_specific": metadata.get("route_specific", False), - "degree": metadata.get("degree"), - "coefficients": coefs, - } diff --git a/backend/gtfs-eta/gtfs_eta/seed_baseline_model.py b/backend/gtfs-eta/gtfs_eta/seed_baseline_model.py deleted file mode 100644 index 01a875e..0000000 --- a/backend/gtfs-eta/gtfs_eta/seed_baseline_model.py +++ /dev/null @@ -1,94 +0,0 @@ -""" -seed_baseline_model.py — seed ONE global polyreg_distance model into the registry. - -Usage: - export MODEL_REGISTRY_DIR=/tmp/gtfs_eta_registry - python gtfs_eta/seed_baseline_model.py - -The script: - 1. Builds synthetic constant-speed data (distance / 4.5 m/s ≈ urban bus avg). - 2. Fits a PolyRegDistanceModel(degree=1, alpha=1.0, route_specific=False). - 3. Saves it to the registry with the key 'polyreg_distance_global_baseline_v0'. - -MODEL_REGISTRY_DIR is read by the registry singleton; set it before running. -""" - -import os -import sys - -import numpy as np -import pandas as pd - -# Allow running as a top-level script from the repo root -_HERE = os.path.dirname(os.path.abspath(__file__)) -_REPO_ROOT = os.path.dirname(_HERE) -if _REPO_ROOT not in sys.path: - sys.path.insert(0, _REPO_ROOT) - -from gtfs_eta.models.polyreg_distance.model import PolyRegDistanceModel -from gtfs_eta.models.common.registry import get_registry - -# ── Constants ───────────────────────────────────────────────────────────────── - -MODEL_KEY = "polyreg_distance_global_baseline_v0" -SPEED_M_S = 4.5 # urban bus average including dwell time -N_SAMPLES = 1_000 -DISTANCE_MAX_M = 3_000 -NOISE_STD_S = 10.0 # small gaussian noise on arrival time -RANDOM_SEED = 42 - - -def main() -> None: - rng = np.random.default_rng(RANDOM_SEED) - - # Synthetic training data - distances = rng.uniform(0, DISTANCE_MAX_M, size=N_SAMPLES) - times = distances / SPEED_M_S + rng.normal(0, NOISE_STD_S, size=N_SAMPLES) - times = np.clip(times, 0, None) # no negative travel times - - train_df = pd.DataFrame( - { - "distance_to_stop": distances, - "time_to_arrival_seconds": times, - } - ) - - # Build and fit model - model = PolyRegDistanceModel(degree=1, alpha=1.0, route_specific=False) - model.fit(train_df) - - # Verify that the global model path is available (used by predict()) - assert model.global_model is not None, "global_model should be set after fit()" - - # Quick sanity check: ETA at 1000 m should be ~222 s - _check_df = pd.DataFrame({"distance_to_stop": [1000.0]}) - eta_check = float(model.predict(_check_df)[0]) - expected = 1000.0 / SPEED_M_S - assert abs(eta_check - expected) < 60, ( - f"Sanity check failed: predicted {eta_check:.1f}s, expected ~{expected:.1f}s" - ) - - # Metadata (get_best_model requires metrics.test_mae_seconds to be - # present and non-None) - metadata = { - "model_type": "polyreg_distance", - "route_id": None, # None → registered as GLOBAL - "route_specific": False, - "degree": 1, - "alpha": 1.0, - "dataset": "synthetic_constant_speed", - "n_samples": N_SAMPLES, - "metrics": { - "test_mae_seconds": 30.0, - "test_mae_minutes": 0.5, - }, - } - - registry = get_registry() - model_path = registry.save_model(MODEL_KEY, model, metadata, overwrite=True) - print(f"Seeded model '{MODEL_KEY}' -> {model_path}") - print(f"Registry dir: {registry.base_dir}") - - -if __name__ == "__main__": - main() diff --git a/backend/gtfs-eta/pyproject.toml b/backend/gtfs-eta/pyproject.toml deleted file mode 100644 index e14765e..0000000 --- a/backend/gtfs-eta/pyproject.toml +++ /dev/null @@ -1,22 +0,0 @@ -[build-system] -requires = ["setuptools>=68", "wheel"] -build-backend = "setuptools.build_meta" - -[project] -name = "gtfs-eta" -version = "0.1.0" -description = "Namespaced ETA-prediction inference package for the SIMOVI databus" -requires-python = ">=3.11" -dependencies = [ - "numpy>=1.26", - "pandas>=2.3", - "scikit-learn>=1.7", - "holidays>=0.40", -] - -[project.optional-dependencies] -xgboost = ["xgboost>=3.1"] - -[tool.setuptools.packages.find] -where = ["."] -include = ["gtfs_eta*"] diff --git a/backend/pyproject.toml b/backend/pyproject.toml index 22ad948..90cf870 100644 --- a/backend/pyproject.toml +++ b/backend/pyproject.toml @@ -33,6 +33,7 @@ dependencies = [ "python-decouple>=3.8", "redis>=6.4.0", "requests>=2.32.5", + "xgboost>=3.4.1", ] [dependency-groups] @@ -44,17 +45,55 @@ dev = [ "watchfiles>=0.24.0", ] +[tool.ruff] +# gtfs-eta is a symlink to the sibling repo (see [tool.uv.sources] below), a +# separately-maintained codebase with its own lint baseline — not databus's +# to fix here. Config-level exclude so `ruff check .` stays clean without +# every caller needing to remember a CLI --exclude flag. +extend-exclude = ["gtfs-eta"] + [tool.pytest.ini_options] DJANGO_SETTINGS_MODULE = "databus.settings" +# gtfs-eta is a symlink to the sibling repo (see [tool.uv.sources] below), +# not a databus package: it carries its own full test suite (collector / +# training tests needing duckdb, sch_pipeline, its own Django app config, +# etc.) that has nothing to do with databus and fails to even collect here. +# The previous vendored copy was a trimmed subset with no tests, so this +# exclude wasn't needed before. +addopts = "--ignore=gtfs-eta" [tool.uv.workspace] members = [ "gtfs-io", "gtfs-django", - "gtfs-eta", ] [tool.uv.sources] -gtfs-eta = { workspace = true, editable = true } +# gtfs-eta lives in the sibling repo (simovilab/gtfs-eta), not in this +# workspace. `path` below is deliberately a bare, dot-free segment +# ("gtfs-eta"), not a literal "../../gtfs-eta": uv normalizes `path` sources +# itself before touching the filesystem, and rejects any string that walks +# above the *container's* root (uv error: "cannot normalize a relative path +# beyond the base directory") — which "../../gtfs-eta" does once /app (this +# file's directory inside the container) is only one level below the +# container's filesystem root. A literal ".." string therefore cannot work +# identically on host and in-container. +# +# Fix: "gtfs-eta" here is a symlink (see backend/gtfs-eta -> ../../gtfs-eta) +# committed in this directory. uv only ever normalizes the single path +# segment "gtfs-eta"; walking past the symlink is then the OS's job, and the +# OS clamps ".." at the filesystem root instead of erroring: +# host : backend/gtfs-eta -> ../../gtfs-eta -> git.no_sync/gtfs-eta +# compose: ./backend bind-mounted at /app, so /app/gtfs-eta carries the +# same symlink; compose.dev.yml separately bind-mounts +# ../gtfs-eta:/gtfs-eta so the OS-resolved target exists there too. +# `uv sync` runs at container start (docker-entrypoint.sh), after that mount +# exists, not at image build time, so no build-context change is needed. +# +# Prod assumption: the deployment host must check out simovilab/gtfs-eta at +# the same relative path (sibling of the databus checkout) and compose.prod.yml +# must bind-mount it the same way as compose.dev.yml, OR this source must be +# swapped to the published `gtfs-eta` PyPI package once it ships at release. +gtfs-eta = { path = "gtfs-eta", editable = true } gtfs-io = { workspace = true, editable = true } gtfs-django = { workspace = true, editable = true } diff --git a/backend/uv.lock b/backend/uv.lock index 9fdfb4f..9b22706 100644 --- a/backend/uv.lock +++ b/backend/uv.lock @@ -3,10 +3,10 @@ revision = 3 requires-python = ">=3.14" resolution-markers = [ "python_full_version >= '3.15' and sys_platform == 'win32'", - "python_full_version < '3.15' and sys_platform == 'win32'", "python_full_version >= '3.15' and sys_platform == 'emscripten'", - "python_full_version < '3.15' and sys_platform == 'emscripten'", "python_full_version >= '3.15' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version < '3.15' and sys_platform == 'win32'", + "python_full_version < '3.15' and sys_platform == 'emscripten'", "python_full_version < '3.15' and sys_platform != 'emscripten' and sys_platform != 'win32'", ] @@ -14,7 +14,6 @@ resolution-markers = [ members = [ "databus", "gtfs-django", - "gtfs-eta", "gtfs-io", ] @@ -711,6 +710,7 @@ dependencies = [ { name = "python-decouple" }, { name = "redis" }, { name = "requests" }, + { name = "xgboost" }, ] [package.dev-dependencies] @@ -752,6 +752,7 @@ requires-dist = [ { name = "python-decouple", specifier = ">=3.8" }, { name = "redis", specifier = ">=6.4.0" }, { name = "requests", specifier = ">=2.32.5" }, + { name = "xgboost", specifier = ">=3.4.1" }, ] [package.metadata.requires-dev] @@ -1216,20 +1217,31 @@ dependencies = [ { name = "scikit-learn" }, ] -[package.optional-dependencies] -xgboost = [ - { name = "xgboost" }, -] - [package.metadata] requires-dist = [ + { name = "celery", marker = "extra == 'collect'", specifier = ">=5.4" }, + { name = "django", marker = "extra == 'collect'", specifier = ">=5.0" }, + { name = "django", marker = "extra == 'train'", specifier = ">=5.0" }, + { name = "django-environ", marker = "extra == 'collect'", specifier = ">=0.11" }, + { name = "django-environ", marker = "extra == 'train'", specifier = ">=0.11" }, + { name = "fastparquet", marker = "extra == 'train'", specifier = ">=2024.11.0" }, + { name = "gtfs-eta", extras = ["train", "collect", "viz"], marker = "extra == 'all'" }, + { name = "gtfs-realtime-bindings", marker = "extra == 'collect'", specifier = ">=1.0.0" }, { name = "holidays", specifier = ">=0.40" }, + { name = "matplotlib", marker = "extra == 'viz'", specifier = ">=3.9.4" }, { name = "numpy", specifier = ">=1.26" }, - { name = "pandas", specifier = ">=2.3" }, - { name = "scikit-learn", specifier = ">=1.7" }, - { name = "xgboost", marker = "extra == 'xgboost'", specifier = ">=3.1" }, + { name = "pandas", specifier = ">=2.3.3" }, + { name = "psycopg", extras = ["binary", "pool"], marker = "extra == 'collect'", specifier = ">=3.2.11" }, + { name = "psycopg", extras = ["binary", "pool"], marker = "extra == 'train'", specifier = ">=3.2.11" }, + { name = "python-dotenv", marker = "extra == 'collect'", specifier = ">=1.0" }, + { name = "python-dotenv", marker = "extra == 'train'", specifier = ">=1.0" }, + { name = "redis", marker = "extra == 'collect'", specifier = ">=5.0" }, + { name = "requests", marker = "extra == 'collect'", specifier = ">=2.32" }, + { name = "requests", marker = "extra == 'train'", specifier = ">=2.32" }, + { name = "scikit-learn", specifier = ">=1.7.2" }, + { name = "xgboost", marker = "extra == 'train'", specifier = ">=3.1.2" }, ] -provides-extras = ["xgboost"] +provides-extras = ["train", "collect", "viz", "all"] [[package]] name = "gtfs-io" @@ -1849,12 +1861,12 @@ wheels = [ ] [[package]] -name = "nvidia-nccl-cu12" -version = "2.30.7" +name = "nvidia-nccl-cu13" +version = "2.31.2" source = { registry = "https://pypi.org/simple" } wheels = [ - { url = "https://files.pythonhosted.org/packages/8f/8c/554bb020501d6c04ad8127d83f728137f8f9123f991666efbdcf9095a221/nvidia_nccl_cu12-2.30.7-py3-none-manylinux_2_18_aarch64.whl", hash = "sha256:03ecd776fd1d58fd2c9a0a687dcf8db9ecd0057382dba646fa3d65786d4a9ea1", size = 303277471, upload-time = "2026-06-09T03:24:16.327Z" }, - { url = "https://files.pythonhosted.org/packages/50/32/e7ffa9c324ae260e5dbb4af2cd557bf7a8d155c8ac7b79a785fe1796fb92/nvidia_nccl_cu12-2.30.7-py3-none-manylinux_2_18_x86_64.whl", hash = "sha256:8ce1b8213f61f2bfac132e6df890af6450b77cbd140c6ce4e98cb0c2d8e678c9", size = 303361239, upload-time = "2026-06-09T03:24:53.816Z" }, + { url = "https://files.pythonhosted.org/packages/52/a0/530efd7db8857c0436868bb7df9764f09fde2bd4d1f0bae546eec9fc40d0/nvidia_nccl_cu13-2.31.2-py3-none-manylinux_2_18_aarch64.whl", hash = "sha256:b5563f8e2534f363d93ace022670ba016d3717e190ac4eba564d05fbbe8495b1", size = 252479893, upload-time = "2026-08-11T23:22:01.53Z" }, + { url = "https://files.pythonhosted.org/packages/14/fb/94933e00bb3dcfdf66ea3456739c6a51d322353f7cc64fa1f5f660e695ac/nvidia_nccl_cu13-2.31.2-py3-none-manylinux_2_18_x86_64.whl", hash = "sha256:0bcaf0308854cb55fcc35af72e2c83143f3b71e65a4e865e2c586b1cdcdb5ae0", size = 252442223, upload-time = "2026-08-11T23:22:40.341Z" }, ] [[package]] @@ -3448,20 +3460,21 @@ wheels = [ [[package]] name = "xgboost" -version = "3.3.0" +version = "3.4.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, - { name = "nvidia-nccl-cu12", marker = "sys_platform == 'linux'" }, + { name = "nvidia-nccl-cu13", marker = "sys_platform == 'linux'" }, { name = "scipy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/fd/41/846d4de2b8fc694073fd3ac5052caf68caa1ea11cb7fa32d7ad9c049b232/xgboost-3.3.0.tar.gz", hash = "sha256:58bcb8a4cace648cdab7b94fa4f16d2c9ff26d90dd4d26907168106fa06d8746", size = 1224702, upload-time = "2026-06-17T21:26:50.846Z" } +sdist = { url = "https://files.pythonhosted.org/packages/38/a9/295320f741c5be4be996c73ee65a2a11852028c50daa7229adb0d61c330b/xgboost-3.4.1.tar.gz", hash = "sha256:6968a4c71efdfa859df0dfcad0d99211c95c28c4ffd6aecff46efff77d18026a", size = 1231819, upload-time = "2026-08-15T08:39:21.197Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/fc/72/3b68983c0215ef65d48e9eeb1f168c3c6e3d62a61ece605de3209c79cae1/xgboost-3.3.0-py3-none-macosx_10_15_x86_64.whl", hash = "sha256:07688a377046b8640897b62421150bf73c6cc7101823474ec6ad08b93290f587", size = 2553505, upload-time = "2026-06-17T21:21:32.146Z" }, - { url = "https://files.pythonhosted.org/packages/c9/62/b49e756822b29909d0c95ed334662dc6c7c81a99ec6bc10dc18e69f3d6e7/xgboost-3.3.0-py3-none-macosx_12_0_arm64.whl", hash = "sha256:af7cea10f418b7c251ddc8da440f57bdab2990b5fc9f74a35a92b0f150ea287d", size = 2376040, upload-time = "2026-06-17T21:22:01.981Z" }, - { url = "https://files.pythonhosted.org/packages/47/3a/a0adcd1ee28f525bd5c9dc3ebe78a7599bf97c22866d6449f967b829e338/xgboost-3.3.0-py3-none-manylinux_2_28_aarch64.whl", hash = "sha256:624a83aeb1e7ba081719795db179f4ce6fff12e79de05cd9baf15ee48fd22f0e", size = 98180629, upload-time = "2026-06-17T21:24:00.804Z" }, - { url = "https://files.pythonhosted.org/packages/47/1f/8b3e578cfd8e3bcdb4374e2bbe0b40b4e5320accb5cbdcf535ecc512eb5c/xgboost-3.3.0-py3-none-manylinux_2_28_x86_64.whl", hash = "sha256:f59edaf28eccd1c519788607c72ed907ee6cedfa933d706620bc1612d24b354e", size = 98716607, upload-time = "2026-06-17T21:26:21.058Z" }, - { url = "https://files.pythonhosted.org/packages/07/6b/087fd5d28fdbb90d385c50ee9308a820241b82feebdf42e72e19a48e4b32/xgboost-3.3.0-py3-none-win_amd64.whl", hash = "sha256:b06057f6a018fc04e6b3e0c15568ca636b8151a5b5f333478e500fcaf4fc7594", size = 69522696, upload-time = "2026-06-17T21:20:53.707Z" }, + { url = "https://files.pythonhosted.org/packages/57/ea/0bdcd374241a86f1986e87e272516f0a70d841c3aa86aa9ca167fb651573/xgboost-3.4.1-py3-none-macosx_10_15_x86_64.whl", hash = "sha256:1ea15f15f661825b6a67d87674fb9604a1abb38dd0d4c5cf0486fc85f5203e83", size = 2541584, upload-time = "2026-08-15T08:38:48.484Z" }, + { url = "https://files.pythonhosted.org/packages/f7/94/e5c37a8972ad780edc1d8459d1931356344ca133f7f99ba9cfda516b5bba/xgboost-3.4.1-py3-none-macosx_12_0_arm64.whl", hash = "sha256:a7afd7dbace0951c93aa85ffe046e54bc40893f5b51cd3e7991eb157bf9c7c7c", size = 2365501, upload-time = "2026-08-15T08:38:52.366Z" }, + { url = "https://files.pythonhosted.org/packages/a7/11/4ff1f36ca5c32c642c71c88bec1508ee98b2c3b1e9eb169e8c82de303522/xgboost-3.4.1-py3-none-manylinux_2_28_aarch64.whl", hash = "sha256:7faaf99de26719c22bfae883a02bd56b5a3c2203122616e563cc72b7191b5c96", size = 57196172, upload-time = "2026-08-15T08:39:03.288Z" }, + { url = "https://files.pythonhosted.org/packages/99/c7/bd05c5c430feb347aa040fcc8870135d70b256718deee9bc7d2ca74a77ff/xgboost-3.4.1-py3-none-manylinux_2_28_x86_64.whl", hash = "sha256:6adf2afa396da2ae8ed30295b50b99d4712eed9a6e0ce6cfe069290e4335e51f", size = 57615456, upload-time = "2026-08-15T08:39:09.983Z" }, + { url = "https://files.pythonhosted.org/packages/2f/3c/925394671f6a1668e2a71886de66e80be694eaf37f615cec74eefaf43107/xgboost-3.4.1-py3-none-win_amd64.whl", hash = "sha256:2d30fa513673101f542fdcbd18f30c8f96c064046f798635ac08663e9969f81b", size = 48942686, upload-time = "2026-08-15T08:39:16.182Z" }, + { url = "https://files.pythonhosted.org/packages/90/2f/f2fbe984ca095709fd246546125e78834740f347e3aa7561a22a1e928510/xgboost-3.4.1-py3-none-win_arm64.whl", hash = "sha256:e9312b30e5679d27c1d8b9ee97e092b964d960a672d5d406d9fb3cd0845c9797", size = 2094178, upload-time = "2026-08-15T08:39:19.308Z" }, ] [[package]] diff --git a/compose.dev.yml b/compose.dev.yml index 0344208..a4c17fa 100644 --- a/compose.dev.yml +++ b/compose.dev.yml @@ -17,6 +17,13 @@ services: volumes: - ./backend:/app - backend_venv:/home/app/.venv + # Sibling repo consumed as a uv path dependency (see + # backend/pyproject.toml [tool.uv.sources] gtfs-eta comment). Mounted + # read-write because uv's setuptools editable build writes/touches + # gtfs_eta.egg-info/ inside the source tree on install (a gitignored + # build artifact, not tracked repo content) — a read-only mount makes + # `uv sync` fail. databus code never otherwise writes into gtfs-eta. + - ../gtfs-eta:/gtfs-eta depends_on: database: condition: service_healthy @@ -40,6 +47,7 @@ services: volumes: - ./backend:/app - backend_venv:/home/app/.venv + - ../gtfs-eta:/gtfs-eta depends_on: database: condition: service_healthy @@ -64,6 +72,7 @@ services: volumes: - ./backend:/app - backend_venv:/home/app/.venv + - ../gtfs-eta:/gtfs-eta depends_on: database: condition: service_healthy @@ -86,6 +95,7 @@ services: volumes: - ./backend:/app - backend_venv:/home/app/.venv + - ../gtfs-eta:/gtfs-eta depends_on: database: condition: service_healthy From 1bfd6a2e73de20e59a948f1b00ce11badfbb809d Mon Sep 17 00:00:00 2001 From: Jae Date: Wed, 19 Aug 2026 02:25:31 -0600 Subject: [PATCH 27/68] chore(eta): re-seed baseline model registry with relocatable paths The old artifacts were seeded by the vendored gtfs-eta and referenced module paths that no longer exist; the new registry stores paths relative to the registry dir so the same files work in-container. --- .../polyreg_distance_global_baseline_v0.pkl | Bin 946 -> 937 bytes ...olyreg_distance_global_baseline_v0_meta.json | 2 +- backend/eta_models/registry.json | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/eta_models/polyreg_distance_global_baseline_v0.pkl b/backend/eta_models/polyreg_distance_global_baseline_v0.pkl index f5334bf8defa01aa7f68a1d3256f92d15590e409..0d51760ba42fd6ec9ac8d6079b40abc0bf218b37 100644 GIT binary patch delta 64 zcmdnQzLH(5fpzLUW(F|mkBs!Z3z_CJzL;#! GoCN@(kr5*R diff --git a/backend/eta_models/polyreg_distance_global_baseline_v0_meta.json b/backend/eta_models/polyreg_distance_global_baseline_v0_meta.json index 628190a..1af93f2 100644 --- a/backend/eta_models/polyreg_distance_global_baseline_v0_meta.json +++ b/backend/eta_models/polyreg_distance_global_baseline_v0_meta.json @@ -11,6 +11,6 @@ "test_mae_minutes": 0.5 }, "model_key": "polyreg_distance_global_baseline_v0", - "saved_at": "2026-06-25T18:06:35.423137", + "saved_at": "2026-08-19T00:41:44.406894", "model_path": "polyreg_distance_global_baseline_v0.pkl" } \ No newline at end of file diff --git a/backend/eta_models/registry.json b/backend/eta_models/registry.json index 749de3d..d156542 100644 --- a/backend/eta_models/registry.json +++ b/backend/eta_models/registry.json @@ -2,7 +2,7 @@ "polyreg_distance_global_baseline_v0": { "model_path": "polyreg_distance_global_baseline_v0.pkl", "meta_path": "polyreg_distance_global_baseline_v0_meta.json", - "saved_at": "2026-06-25T18:06:35.423137", + "saved_at": "2026-08-19T00:41:44.406894", "model_type": "polyreg_distance", "route_id": null, "dataset": "synthetic_constant_speed" From 452ce102b8350b7f09e9554b9dd752e66e2559a2 Mon Sep 17 00:00:00 2001 From: Jae Date: Wed, 19 Aug 2026 02:39:32 -0600 Subject: [PATCH 28/68] fix(detection): quiet idempotent lifecycle-event re-fires from ERROR to WARNING MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Lifecycle detectors (RunStartedDetector, RunTrackingStartedDetector, RunCompletedDetector, RunTrackingRestoredDetector, RunTrackingLostDetector, RunTrackingExpiredDetector) already gate on the run's current run_lifecycle_state before returning a DetectionResult, so a detection cannot itself re-fire an event the run has already outgrown. The observed flood instead comes from a race between concurrent detections for the same run: two telemetry pings can both read the pre-transition state before the first one's run_lifecycle_event task lands, so both enqueue the same event. The second is a harmless no-op by the time it runs — the run already reached the event's target state — but RunLifecycleService.process_event rejects it the same way it would reject a genuinely invalid transition, and the task logged every rejection at ERROR with a full traceback. Add RunLifecycleService's RunLifecycleError.errors to include the run's current_state, and a target_state_for_event() lookup over TRANSITIONS. run_lifecycle_event now compares the two: if the rejection's current_state already equals the fired event's own target state, it's an idempotent re-fire and logs a concise WARNING instead of ERROR+traceback. Genuine invalid transitions are unaffected. --- backend/realtime_engine/tasks.py | 24 +++- .../tests/test_lifecycle_event_task.py | 82 ++++++++++++++ .../detection/tests/test_dispatch_impure.py | 105 ++++++++++++++++++ backend/runs/domain/lifecycle/__init__.py | 3 + .../lifecycle/tests/test_transitions.py | 46 ++++++++ backend/runs/domain/lifecycle/transitions.py | 15 +++ backend/runs/services/lifecycle.py | 1 + 7 files changed, 275 insertions(+), 1 deletion(-) create mode 100644 backend/realtime_engine/tests/test_lifecycle_event_task.py create mode 100644 backend/runs/domain/detection/tests/test_dispatch_impure.py create mode 100644 backend/runs/domain/lifecycle/tests/test_transitions.py diff --git a/backend/realtime_engine/tasks.py b/backend/realtime_engine/tasks.py index 93c1c85..9975954 100644 --- a/backend/realtime_engine/tasks.py +++ b/backend/realtime_engine/tasks.py @@ -21,7 +21,8 @@ @shared_task(queue="realtime_engine") def run_lifecycle_event(event: str, payload: dict[str, Any]) -> None: - from runs.domain.lifecycle import RunLifecycleEvents + from runs.domain.lifecycle import RunLifecycleEvents, target_state_for_event + from runs.services.exceptions import RunLifecycleError service = RunLifecycleService() try: @@ -31,6 +32,27 @@ def run_lifecycle_event(event: str, payload: dict[str, Any]) -> None: return try: service.process_event(evt, payload) + except RunLifecycleError as exc: + # Detectors already gate on current run state before firing, but a + # detection can still lose a race against an in-flight transition for + # the same run (e.g. two position pings both see "Tracking" before the + # first RUN_STARTED lands). When that happens the run has already + # reached this event's target state by the time this dispatch runs — + # a harmless no-op re-fire, not a real failure. Genuine invalid + # transitions (target state unresolved/mismatched) still log loudly. + target_state = target_state_for_event(evt) + current_state = exc.errors.get("current_state") + if target_state is not None and current_state == target_state.value: + logger.warning( + "Lifecycle event %s for run %s: no-op re-fire, run already %s", + event, + payload.get("run_id"), + current_state, + ) + else: + logger.exception( + "Lifecycle event %s failed for run %s", event, payload.get("run_id") + ) except Exception: logger.exception( "Lifecycle event %s failed for run %s", event, payload.get("run_id") diff --git a/backend/realtime_engine/tests/test_lifecycle_event_task.py b/backend/realtime_engine/tests/test_lifecycle_event_task.py new file mode 100644 index 0000000..ab2d694 --- /dev/null +++ b/backend/realtime_engine/tests/test_lifecycle_event_task.py @@ -0,0 +1,82 @@ +"""Unit tests for ``run_lifecycle_event``'s WARNING-vs-ERROR branching. + +Detectors already gate on the run's current state before firing (see +``runs/domain/detection/tests/``), but a detection can still lose a race +against an in-flight transition for the same run — two detections both read +the pre-transition state before the first one's ``run_lifecycle_event`` task +lands. When the *second* one is then processed, the run has already reached +its target state and ``RunLifecycleService.process_event`` rejects it as +"no valid transition". That rejection is a harmless no-op, not a bug, so it +must log at WARNING with a concise message — not ERROR with a traceback. +A rejection where the run is nowhere near the event's target state is a +genuine invalid transition and must stay loud. + +``RunLifecycleService.process_event`` is mocked; only the task's own +exception handling is under test here. +""" + +import logging +from unittest.mock import patch + +import realtime_engine.tasks as tasks_module +from runs.services.exceptions import RunLifecycleError + +RUN_ID = "run-flood-1" +LOGGER_NAME = "realtime_engine.tasks" + + +def _rejection(current_state: str) -> RunLifecycleError: + return RunLifecycleError( + { + "detail": "No valid transition for event 'run_started' from state " + f"'{current_state}'.", + "attempts": [], + "current_state": current_state, + } + ) + + +def test_idempotent_refire_logs_warning_not_error(caplog): + """run_started rejected because the run is already IN_PROGRESS (its own + target state) is a race-condition no-op.""" + with patch.object( + tasks_module.RunLifecycleService, + "process_event", + side_effect=_rejection("In Progress"), + ): + with caplog.at_level(logging.WARNING, logger=LOGGER_NAME): + tasks_module.run_lifecycle_event("run_started", {"run_id": RUN_ID}) + + levels = [r.levelno for r in caplog.records] + assert logging.WARNING in levels + assert logging.ERROR not in levels and logging.CRITICAL not in levels + + +def test_genuine_invalid_transition_still_logs_error(caplog): + """run_started rejected while the run is somewhere run_started could + never have led it (still CONFIRMED, never TRACKING) is a real bug.""" + with patch.object( + tasks_module.RunLifecycleService, + "process_event", + side_effect=_rejection("Confirmed"), + ): + with caplog.at_level(logging.WARNING, logger=LOGGER_NAME): + tasks_module.run_lifecycle_event("run_started", {"run_id": RUN_ID}) + + levels = [r.levelno for r in caplog.records] + assert logging.ERROR in levels + + +def test_unrelated_exception_still_logs_error(caplog): + """Non-lifecycle failures (e.g. the run row vanished) are unaffected by + the idempotent-refire carve-out.""" + with patch.object( + tasks_module.RunLifecycleService, + "process_event", + side_effect=RuntimeError("boom"), + ): + with caplog.at_level(logging.WARNING, logger=LOGGER_NAME): + tasks_module.run_lifecycle_event("run_started", {"run_id": RUN_ID}) + + levels = [r.levelno for r in caplog.records] + assert logging.ERROR in levels diff --git a/backend/runs/domain/detection/tests/test_dispatch_impure.py b/backend/runs/domain/detection/tests/test_dispatch_impure.py new file mode 100644 index 0000000..3bcc631 --- /dev/null +++ b/backend/runs/domain/detection/tests/test_dispatch_impure.py @@ -0,0 +1,105 @@ +"""Regression coverage for the impure dispatch wrapper's state gate. + +Detectors are pure functions of (state, telemetry) and already refuse to +recognize an event that the run's current lifecycle state makes invalid +(see ``test_detectors.py``). This module checks the same guarantee one layer +up, at the impure wrapper that actually reads Redis and enqueues the +lifecycle Celery task — i.e. that a run which already reached an event's +target state does not get that event re-dispatched by further telemetry or +scan ticks. This is the exact "flood of ERROR logs" symptom the gate closes: +without it, ``run_lifecycle_event`` would repeatedly reject the event with +``RunLifecycleError`` for a state the run has already left behind. + +Redis is mocked (module-level ``dispatch.r``); ``run_lifecycle_event.delay`` +is mocked so no Celery broker/Django DB access is needed. +""" + +from unittest.mock import MagicMock, patch + +import runs.domain.detection.dispatch as dispatch_module +from runs.domain.detection.dispatch import detect_from_scan, detect_from_telemetry +from runs.domain.lifecycle.states import RunLifecycleStates + +RUN_ID = "run-1" +VEHICLE_ID = "veh-1" + + +def _fake_redis(lifecycle_state: str) -> MagicMock: + r = MagicMock() + r.hget.return_value = lifecycle_state + return r + + +def test_run_started_not_redispatched_when_already_in_progress(monkeypatch): + """A moving-speed position update for a run already IN_PROGRESS must not + re-fire run_started (the reported defect).""" + monkeypatch.setattr( + dispatch_module, "r", _fake_redis(RunLifecycleStates.IN_PROGRESS.value) + ) + + with patch("realtime_engine.tasks.run_lifecycle_event.delay") as mock_delay: + detect_from_telemetry(RUN_ID, VEHICLE_ID, "position", {"speed": 12.0}) + + mock_delay.assert_not_called() + + +def test_run_started_still_fires_from_tracking(monkeypatch): + """Sanity check: the legitimate predecessor state still fires — the gate + above isn't vacuously true.""" + monkeypatch.setattr( + dispatch_module, "r", _fake_redis(RunLifecycleStates.TRACKING.value) + ) + + with patch("realtime_engine.tasks.run_lifecycle_event.delay") as mock_delay: + detect_from_telemetry(RUN_ID, VEHICLE_ID, "position", {"speed": 12.0}) + + mock_delay.assert_called_once() + args, _ = mock_delay.call_args + assert args[0] == "run_started" + + +def test_run_tracking_started_not_redispatched_when_already_tracking(monkeypatch): + """Any telemetry for a run already TRACKING must not re-fire + run_tracking_started.""" + monkeypatch.setattr( + dispatch_module, "r", _fake_redis(RunLifecycleStates.TRACKING.value) + ) + + with patch("realtime_engine.tasks.run_lifecycle_event.delay") as mock_delay: + detect_from_telemetry(RUN_ID, VEHICLE_ID, "occupancy", {}) + + mock_delay.assert_not_called() + + +def test_run_completed_not_redispatched_when_already_completed(monkeypatch): + """A STOPPED_AT-at-terminal progression update for a run already + COMPLETED must not re-fire run_completed.""" + monkeypatch.setattr( + dispatch_module, "r", _fake_redis(RunLifecycleStates.COMPLETED.value) + ) + + with patch("realtime_engine.tasks.run_lifecycle_event.delay") as mock_delay: + detect_from_telemetry( + RUN_ID, + VEHICLE_ID, + "progression", + {"current_status": "STOPPED_AT", "stop_id": "TERM-1"}, + ) + + mock_delay.assert_not_called() + + +def test_scan_no_periodic_event_once_run_is_terminal(monkeypatch): + """A stray staleness-scan tick for a run that already reached a terminal + state (e.g. CANCELLED after expiry) must not fire any periodic event.""" + monkeypatch.setattr( + dispatch_module, "r", _fake_redis(RunLifecycleStates.CANCELLED.value) + ) + + with patch("realtime_engine.tasks.run_lifecycle_event.delay") as mock_delay: + fired = detect_from_scan( + RUN_ID, staleness_s=9999, raw_last_seen="2026-01-01T00:00:00+00:00" + ) + + assert fired == 0 + mock_delay.assert_not_called() diff --git a/backend/runs/domain/lifecycle/__init__.py b/backend/runs/domain/lifecycle/__init__.py index 88f3cf1..2f3d6b8 100644 --- a/backend/runs/domain/lifecycle/__init__.py +++ b/backend/runs/domain/lifecycle/__init__.py @@ -11,6 +11,7 @@ "RunLifecycleGuards", "Transition", "TRANSITIONS", + "target_state_for_event", ] @@ -20,12 +21,14 @@ def __getattr__(name: str): "RunLifecycleGuards", "Transition", "TRANSITIONS", + "target_state_for_event", }: module_name = { "RunLifecycleActions": "actions", "RunLifecycleGuards": "guards", "Transition": "transitions", "TRANSITIONS": "transitions", + "target_state_for_event": "transitions", }[name] module = import_module(f"{__name__}.{module_name}") return getattr(module, name) diff --git a/backend/runs/domain/lifecycle/tests/test_transitions.py b/backend/runs/domain/lifecycle/tests/test_transitions.py new file mode 100644 index 0000000..f8a5b5b --- /dev/null +++ b/backend/runs/domain/lifecycle/tests/test_transitions.py @@ -0,0 +1,46 @@ +"""Unit tests for ``target_state_for_event``. + +Used by ``realtime_engine.tasks.run_lifecycle_event`` to recognize an +idempotent event re-fire (the run already reached the event's target state +via a race-winning duplicate detection) versus a genuinely invalid +transition. Pure function over the ``TRANSITIONS`` table — no Redis/DB. +""" + +import pytest + +from runs.domain.lifecycle.events import RunLifecycleEvents +from runs.domain.lifecycle.states import RunLifecycleStates +from runs.domain.lifecycle.transitions import target_state_for_event + + +@pytest.mark.parametrize( + "event,expected", + [ + (RunLifecycleEvents.VALIDATE_RUN, RunLifecycleStates.VALIDATED), + (RunLifecycleEvents.INITIALIZE_RUN, RunLifecycleStates.INITIALIZED), + ( + RunLifecycleEvents.RUN_CONFIRMED_BY_OPERATOR, + RunLifecycleStates.CONFIRMED, + ), + (RunLifecycleEvents.RUN_TRACKING_STARTED, RunLifecycleStates.TRACKING), + (RunLifecycleEvents.RUN_STARTED, RunLifecycleStates.IN_PROGRESS), + (RunLifecycleEvents.RUN_COMPLETED, RunLifecycleStates.COMPLETED), + (RunLifecycleEvents.RUN_TRACKING_RESTORED, RunLifecycleStates.IN_PROGRESS), + (RunLifecycleEvents.RUN_TRACKING_LOST, RunLifecycleStates.NO_SIGNAL), + (RunLifecycleEvents.RUN_TRACKING_EXPIRED, RunLifecycleStates.CANCELLED), + (RunLifecycleEvents.RUN_INTERRUPTED, RunLifecycleStates.INTERRUPTED), + (RunLifecycleEvents.RUN_SHORT_TURNED, RunLifecycleStates.SHORT_TURNED), + # Appears from three different from_states but always lands CANCELLED + # — still unambiguous. + (RunLifecycleEvents.RUN_REJECTED, RunLifecycleStates.CANCELLED), + (RunLifecycleEvents.CANCEL_RUN, RunLifecycleStates.CANCELLED), + ], +) +def test_target_state_for_event_unambiguous(event, expected): + assert target_state_for_event(event) == expected + + +def test_target_state_for_event_returns_none_when_event_has_no_transitions(): + # RUN_REQUESTED never appears in TRANSITIONS — REQUESTED is the model's + # own default, not reached via a transition. + assert target_state_for_event(RunLifecycleEvents.RUN_REQUESTED) is None diff --git a/backend/runs/domain/lifecycle/transitions.py b/backend/runs/domain/lifecycle/transitions.py index 535cfe0..5b97d24 100644 --- a/backend/runs/domain/lifecycle/transitions.py +++ b/backend/runs/domain/lifecycle/transitions.py @@ -240,3 +240,18 @@ class Transition: ], ), ] + + +def target_state_for_event(event: RunLifecycleEvents) -> RunLifecycleStates | None: + """The state ``event`` deterministically leads to, if unambiguous. + + Used to tell an idempotent re-fire (the event's dispatch lost a race and + the run already reached this event's target state) apart from a genuine + invalid transition. Returns ``None`` when ``event`` has no transitions, or + maps to more than one distinct ``to_state`` — callers should not guess in + that case. + """ + to_states = {t.to_state for t in TRANSITIONS if t.event == event} + if len(to_states) == 1: + return next(iter(to_states)) + return None diff --git a/backend/runs/services/lifecycle.py b/backend/runs/services/lifecycle.py index caf0e9a..297d95f 100644 --- a/backend/runs/services/lifecycle.py +++ b/backend/runs/services/lifecycle.py @@ -40,6 +40,7 @@ def process_event( { "detail": f"No valid transition for event '{event}' from state '{run.run_lifecycle_state}'.", "attempts": attempts, + "current_state": run.run_lifecycle_state, } ) From 03391fe94f57a8ef2b287d7414fa3fc92cbd99d2 Mon Sep 17 00:00:00 2001 From: Jae Date: Wed, 19 Aug 2026 02:53:08 -0600 Subject: [PATCH 29/68] fix(realtime): stop fetch_positions from starving the worker pool fetch_positions polled every ACTIVE HTTP position sensor on every 10s beat tick regardless of whether its vehicle was in service, filtering to in-service readings only after paying the full HTTP round trip. With several ACTIVE sensors pointed at a slow/unreachable host (10s read timeout each, sequential), tasks piled up faster than beat retired them and occupied every prefork worker slot, starving process_position_update and stalling the telemetry -> ETA -> TripUpdates pipeline. - Pre-fetch filter: skip a sensor (never call it over HTTP) unless its own equipment/vehicle is in the in-service set built from vehicle::current_run. Sensors with no equipment or no vehicle are also skipped. Logs active-vs-fetched counts. The post-fetch in-service filter is kept unchanged: a fleet-endpoint adapter (NavSat) can return many vehicles' readings from one sensor's URL, so a sensor whose own vehicle is out of service but whose URL also serves other in-service vehicles will now never be called -- an accepted trade-off, documented in the task docstring. - Beat schedule: add options.expires=10 to the fetch-positions entry so a task that couldn't start within its own cycle is revoked instead of queuing up behind a slow tick. - Bound task runtime with soft_time_limit=25 plus explicit SoftTimeLimitExceeded handling that logs the in-flight sensor and returns early instead of propagating (and instead of being silently absorbed by the per-sensor except Exception, which would otherwise keep the loop going since SoftTimeLimitExceeded subclasses Exception). - Reduce the HTTP adapter's per-request timeout from 10s to 5s. Extends test_fetch_positions.py: sensor with an out-of-service vehicle is never fetched; sensor with no equipment/vehicle is skipped; an in-service sensor alongside an out-of-service one is still fetched and published; a mid-loop SoftTimeLimitExceeded logs and returns cleanly. --- backend/databus/celery.py | 6 + backend/realtime_engine/sources/http_json.py | 2 +- backend/realtime_engine/tasks.py | 121 +++++++++++--- .../tests/test_fetch_positions.py | 148 ++++++++++++++++++ 4 files changed, 251 insertions(+), 26 deletions(-) diff --git a/backend/databus/celery.py b/backend/databus/celery.py index 9b21311..f9fb31b 100644 --- a/backend/databus/celery.py +++ b/backend/databus/celery.py @@ -49,6 +49,12 @@ def debug_task(self): "fetch-positions": { "task": "realtime_engine.tasks.fetch_positions", "schedule": timedelta(seconds=10), + # A task that couldn't even start within its own 10s cycle is stale + # by the time a worker slot frees up -- revoke it instead of letting + # queued fetch_positions runs pile up behind a slow/unreachable + # source (see fetch_positions' soft_time_limit for the in-flight + # bound on runs that DO start). + "options": {"expires": 10}, }, "build-schedule-daily": { "task": "schedule_engine.tasks.build_schedule", diff --git a/backend/realtime_engine/sources/http_json.py b/backend/realtime_engine/sources/http_json.py index 11ddf50..c3e7999 100644 --- a/backend/realtime_engine/sources/http_json.py +++ b/backend/realtime_engine/sources/http_json.py @@ -42,7 +42,7 @@ logger = logging.getLogger(__name__) -DEFAULT_TIMEOUT_S = 10 +DEFAULT_TIMEOUT_S = 5 def _convert_unit(field: str, value, units: dict): diff --git a/backend/realtime_engine/tasks.py b/backend/realtime_engine/tasks.py index 9975954..6b38d5c 100644 --- a/backend/realtime_engine/tasks.py +++ b/backend/realtime_engine/tasks.py @@ -5,6 +5,7 @@ import redis from celery import shared_task +from celery.exceptions import SoftTimeLimitExceeded from django.utils.timezone import now from runs.services.lifecycle import RunLifecycleService @@ -88,7 +89,7 @@ def scan_stale_runs() -> str: return f"scan_stale_runs: checked {len(run_ids)} runs, fired {fired} events" -@shared_task(queue="realtime_engine") +@shared_task(queue="realtime_engine", soft_time_limit=25) def fetch_positions() -> str: """Poll active HTTP telemetry sources and publish in-service vehicle positions. @@ -101,11 +102,37 @@ def fetch_positions() -> str: delivering that telemetry is exactly this task's job. 2. Query ACTIVE sensors that provide position data over HTTP (source_type "http" or "both" both use the "http" adapter). - 3. Fetch each sensor's readings, keep only the ones for in-service - vehicles, and publish the survivors on ``transit/vehicle//position``. + 3. Pre-fetch filter: skip a sensor entirely -- never issue the HTTP call + -- when its own ``equipment.vehicle`` is not in the in-service set (or + the sensor has no equipment, or the equipment has no vehicle). This is + what stops the task from paying the full HTTP cost of every ACTIVE + sensor on every 10s tick regardless of whether anything behind it is + actually in service; previously, e.g. 6 ACTIVE sensors pointed at a + slow/unreachable host could occupy every worker slot and starve + ``process_position_update``. + + CAVEAT (NavSat and similar fleet endpoints): some adapters can return + readings for MANY vehicles from a single sensor's URL, not only the + vehicle named by that sensor's own ``equipment.vehicle``. This + pre-fetch filter only decides whether to CALL a given sensor -- it + has no way to know what a fleet endpoint might actually return. A + sensor whose own vehicle is out of service, but whose fleet endpoint + would otherwise have served *other* in-service vehicles' positions, + is now skipped entirely, and those vehicles' positions are missed via + this sensor until it (or some other covering sensor) is in service + again. Accepted trade-off -- see the commit message / task report for + the reasoning. + 4. Fetch each remaining sensor's readings, keep only the ones for + in-service vehicles (the *post*-fetch filter -- unaffected by the + above; still required to handle the fleet-endpoint case), and publish + the survivors on ``transit/vehicle//position``. Each sensor is fetched independently inside its own try/except so one - failing source can't sink the rest of the poll. + failing source can't sink the rest of the poll. The task also carries a + ``soft_time_limit`` so a single pathological source (e.g. a host that + hangs on every request) can never hold a worker slot indefinitely: on + ``SoftTimeLimitExceeded`` the sensor that was in flight is logged and the + task returns early instead of propagating the exception. """ from operations.models import Sensor from runs.domain.telemetry import keys @@ -120,30 +147,73 @@ def fetch_positions() -> str: for key in redis_client.scan_iter(match=keys.current_run_key("*")) } - sensors = Sensor.objects.filter( - status="ACTIVE", - provides_position=True, - source_type__in=["http", "both"], - ).select_related("equipment__vehicle") + sensors = list( + Sensor.objects.filter( + status="ACTIVE", + provides_position=True, + source_type__in=["http", "both"], + ).select_related("equipment__vehicle") + ) + + def _sensor_vehicle_id(sensor) -> str | None: + equipment = getattr(sensor, "equipment", None) + if equipment is None: + return None + vehicle_id = getattr(equipment, "vehicle_id", None) + return str(vehicle_id) if vehicle_id is not None else None + + sensors_to_fetch = [ + sensor + for sensor in sensors + if (vid := _sensor_vehicle_id(sensor)) is not None + and vid in in_service_vehicle_ids + ] + + logger.info( + "fetch_positions: %d active HTTP position sensor(s), %d have an " + "in-service vehicle and will be fetched", + len(sensors), + len(sensors_to_fetch), + ) readings: list[tuple[str, dict]] = [] - sensor_count = 0 failure_count = 0 - for sensor in sensors: - sensor_count += 1 - try: - adapter = get_adapter("http") - fetched = adapter.fetch(sensor) - except Exception: - failure_count += 1 - logger.exception( - "Position fetch failed for sensor %s", getattr(sensor, "id", "?") - ) - continue + in_flight_sensor_id: object = None + try: + for sensor in sensors_to_fetch: + in_flight_sensor_id = getattr(sensor, "id", "?") + try: + adapter = get_adapter("http") + fetched = adapter.fetch(sensor) + except SoftTimeLimitExceeded: + # Never let the blanket `except Exception` below swallow + # this -- it must propagate to the outer handler so the loop + # actually stops instead of moving on to the next sensor. + raise + except Exception: + failure_count += 1 + logger.exception( + "Position fetch failed for sensor %s", in_flight_sensor_id + ) + continue - for vehicle_id, payload in fetched: - if vehicle_id in in_service_vehicle_ids: - readings.append((vehicle_id, payload)) + for vehicle_id, payload in fetched: + if vehicle_id in in_service_vehicle_ids: + readings.append((vehicle_id, payload)) + except SoftTimeLimitExceeded: + logger.warning( + "fetch_positions hit its soft time limit while sensor %s was " + "in flight (%d/%d sensors fetched before the limit); returning " + "early without publishing", + in_flight_sensor_id, + len(readings), + len(sensors_to_fetch), + ) + return ( + f"fetch_positions: soft time limit exceeded while fetching " + f"sensor {in_flight_sensor_id}; polled {len(sensors)} sensors, " + f"{len(sensors_to_fetch)} eligible" + ) if readings: try: @@ -153,7 +223,8 @@ def fetch_positions() -> str: logger.exception("Failed to publish fetched positions batch") return ( - f"fetch_positions: polled {sensor_count} sensors, " + f"fetch_positions: polled {len(sensors)} sensors, " + f"{len(sensors_to_fetch)} fetched, " f"{failure_count} failures, published {len(readings)} positions" ) diff --git a/backend/realtime_engine/tests/test_fetch_positions.py b/backend/realtime_engine/tests/test_fetch_positions.py index a91d3a0..91fdc96 100644 --- a/backend/realtime_engine/tests/test_fetch_positions.py +++ b/backend/realtime_engine/tests/test_fetch_positions.py @@ -20,6 +20,8 @@ from types import SimpleNamespace from unittest.mock import MagicMock +from celery.exceptions import SoftTimeLimitExceeded + from operations.models import Sensor import realtime_engine.sources as sources_module @@ -174,3 +176,149 @@ def test_fetch_positions_queries_only_active_http_position_sensors(monkeypatch): manager.filter.return_value.select_related.assert_called_once_with( "equipment__vehicle" ) + + +# --------------------------------------------------------------------------- +# Pre-fetch filter: a sensor is never even called over HTTP unless its own +# equipment/vehicle is in service. +# --------------------------------------------------------------------------- + + +def test_fetch_positions_never_fetches_sensor_with_out_of_service_vehicle(monkeypatch): + fake_r = _fake_redis() # only IN_SERVICE_VEHICLE_ID is in service + monkeypatch.setattr(tasks_module, "redis_client", fake_r) + + out_of_service_sensor = SimpleNamespace( + id="sensor-oos", + source_http_url="http://example.test/positions", + source_json_mapping={}, + equipment=SimpleNamespace(vehicle_id=OUT_OF_SERVICE_VEHICLE_ID), + ) + monkeypatch.setattr( + Sensor, "objects", _fake_sensor_manager([out_of_service_sensor]) + ) + + fake_adapter = MagicMock() + monkeypatch.setattr(sources_module, "get_adapter", lambda kind: fake_adapter) + + fake_publisher = MagicMock() + monkeypatch.setattr(publisher_module, "MqttPublisher", lambda: fake_publisher) + + result = fetch_positions() + + fake_adapter.fetch.assert_not_called() + fake_publisher.publish_batch.assert_not_called() + assert "polled 1 sensors" in result + assert "0 fetched" in result + + +def test_fetch_positions_skips_sensor_with_no_equipment_or_vehicle(monkeypatch): + fake_r = _fake_redis() + monkeypatch.setattr(tasks_module, "redis_client", fake_r) + + no_equipment_sensor = SimpleNamespace( + id="sensor-no-equipment", + source_http_url="http://example.test/positions", + source_json_mapping={}, + equipment=None, + ) + no_vehicle_sensor = SimpleNamespace( + id="sensor-no-vehicle", + source_http_url="http://example.test/positions", + source_json_mapping={}, + equipment=SimpleNamespace(vehicle_id=None), + ) + monkeypatch.setattr( + Sensor, + "objects", + _fake_sensor_manager([no_equipment_sensor, no_vehicle_sensor]), + ) + + fake_adapter = MagicMock() + monkeypatch.setattr(sources_module, "get_adapter", lambda kind: fake_adapter) + + fake_publisher = MagicMock() + monkeypatch.setattr(publisher_module, "MqttPublisher", lambda: fake_publisher) + + result = fetch_positions() + + fake_adapter.fetch.assert_not_called() + fake_publisher.publish_batch.assert_not_called() + assert "polled 2 sensors" in result + assert "0 fetched" in result + + +def test_fetch_positions_still_fetches_and_publishes_in_service_sensor(monkeypatch): + """An in-service sensor is fetched and published even when another, + out-of-service sensor is present and correctly skipped.""" + fake_r = _fake_redis() + monkeypatch.setattr(tasks_module, "redis_client", fake_r) + + in_service_sensor = _make_sensor(sensor_id="sensor-in-service") + out_of_service_sensor = SimpleNamespace( + id="sensor-oos", + source_http_url="http://example.test/positions", + source_json_mapping={}, + equipment=SimpleNamespace(vehicle_id=OUT_OF_SERVICE_VEHICLE_ID), + ) + monkeypatch.setattr( + Sensor, + "objects", + _fake_sensor_manager([in_service_sensor, out_of_service_sensor]), + ) + + fake_adapter = MagicMock() + fake_adapter.fetch.return_value = [ + (IN_SERVICE_VEHICLE_ID, {"latitude": 1.0, "longitude": 2.0}), + ] + monkeypatch.setattr(sources_module, "get_adapter", lambda kind: fake_adapter) + + fake_publisher = MagicMock() + monkeypatch.setattr(publisher_module, "MqttPublisher", lambda: fake_publisher) + + result = fetch_positions() + + fake_adapter.fetch.assert_called_once_with(in_service_sensor) + fake_publisher.publish_batch.assert_called_once() + (published_records,), _ = fake_publisher.publish_batch.call_args + assert [vid for vid, _ in published_records] == [IN_SERVICE_VEHICLE_ID] + assert "polled 2 sensors" in result + assert "1 fetched" in result + + +# --------------------------------------------------------------------------- +# soft_time_limit: a pathological source can't hold the task open forever. +# --------------------------------------------------------------------------- + + +def test_fetch_positions_handles_soft_time_limit_mid_loop(monkeypatch, caplog): + fake_r = _fake_redis() + monkeypatch.setattr(tasks_module, "redis_client", fake_r) + + sensor_a = _make_sensor(sensor_id="sensor-a") + sensor_b = _make_sensor(sensor_id="sensor-b") + monkeypatch.setattr( + Sensor, "objects", _fake_sensor_manager([sensor_a, sensor_b]) + ) + + fake_adapter = MagicMock() + + def _fetch(sensor): + if sensor.id == "sensor-a": + raise SoftTimeLimitExceeded() + return [(IN_SERVICE_VEHICLE_ID, {"latitude": 1.0, "longitude": 2.0})] + + fake_adapter.fetch.side_effect = _fetch + monkeypatch.setattr(sources_module, "get_adapter", lambda kind: fake_adapter) + + fake_publisher = MagicMock() + monkeypatch.setattr(publisher_module, "MqttPublisher", lambda: fake_publisher) + + with caplog.at_level("WARNING"): + result = fetch_positions() + + # The loop stopped at sensor-a; sensor-b was never reached. + assert fake_adapter.fetch.call_count == 1 + fake_publisher.publish_batch.assert_not_called() + assert "sensor-a" in caplog.text + assert "soft time limit" in result.lower() From dded0fff8b2a0410fe6273f804eacbaecc45f4b1 Mon Sep 17 00:00:00 2001 From: Jae Date: Wed, 19 Aug 2026 02:53:16 -0600 Subject: [PATCH 30/68] build(eta): drop direct xgboost dependency (gtfs-eta imports it lazily now) gtfs-eta commit 0a7c551 (refactor(models): lazy-import training deps so inference needs no xgboost) made models/__init__.py resolve train_all_models via a PEP 562 __getattr__ instead of an eager import, so plain `import gtfs_eta` / the inference path (eta_service.estimator -> models.common.registry / models.*.predict) no longer chains into xgb.train -> xgboost. xgboost was only ever added to databus's own dependencies to satisfy that old eager import; gtfs-eta's own pyproject.toml already keeps it behind its optional `train` extra, not its core dependencies. Removed the direct xgboost entry from [project.dependencies] and ran `uv lock` -- xgboost (and its dependent nvidia-nccl-cu13) dropped cleanly out of the resolved graph with no other package pulling it in transitively. Verified: `from runs.domain.progression import stop_times; import gtfs_eta.eta_service.estimator` leaves 'xgboost' out of sys.modules. --- backend/pyproject.toml | 1 - backend/uv.lock | 30 ------------------------------ 2 files changed, 31 deletions(-) diff --git a/backend/pyproject.toml b/backend/pyproject.toml index 90cf870..8b3dc5c 100644 --- a/backend/pyproject.toml +++ b/backend/pyproject.toml @@ -33,7 +33,6 @@ dependencies = [ "python-decouple>=3.8", "redis>=6.4.0", "requests>=2.32.5", - "xgboost>=3.4.1", ] [dependency-groups] diff --git a/backend/uv.lock b/backend/uv.lock index 9b22706..b371b98 100644 --- a/backend/uv.lock +++ b/backend/uv.lock @@ -710,7 +710,6 @@ dependencies = [ { name = "python-decouple" }, { name = "redis" }, { name = "requests" }, - { name = "xgboost" }, ] [package.dev-dependencies] @@ -752,7 +751,6 @@ requires-dist = [ { name = "python-decouple", specifier = ">=3.8" }, { name = "redis", specifier = ">=6.4.0" }, { name = "requests", specifier = ">=2.32.5" }, - { name = "xgboost", specifier = ">=3.4.1" }, ] [package.metadata.requires-dev] @@ -1860,15 +1858,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/43/bb/e1c71a4295b1b1d1393d50dbb4f2a36283c6859d9d3892e84f00ec5a91d5/numpy-2.4.6-cp314-cp314t-win_arm64.whl", hash = "sha256:0c9136e14ed34a9e343a31c533d78a9813a69a3148332bce5e9821cb2f996e66", size = 10565867, upload-time = "2026-05-18T23:36:47.114Z" }, ] -[[package]] -name = "nvidia-nccl-cu13" -version = "2.31.2" -source = { registry = "https://pypi.org/simple" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/52/a0/530efd7db8857c0436868bb7df9764f09fde2bd4d1f0bae546eec9fc40d0/nvidia_nccl_cu13-2.31.2-py3-none-manylinux_2_18_aarch64.whl", hash = "sha256:b5563f8e2534f363d93ace022670ba016d3717e190ac4eba564d05fbbe8495b1", size = 252479893, upload-time = "2026-08-11T23:22:01.53Z" }, - { url = "https://files.pythonhosted.org/packages/14/fb/94933e00bb3dcfdf66ea3456739c6a51d322353f7cc64fa1f5f660e695ac/nvidia_nccl_cu13-2.31.2-py3-none-manylinux_2_18_x86_64.whl", hash = "sha256:0bcaf0308854cb55fcc35af72e2c83143f3b71e65a4e865e2c586b1cdcdb5ae0", size = 252442223, upload-time = "2026-08-11T23:22:40.341Z" }, -] - [[package]] name = "oauthlib" version = "3.3.1" @@ -3458,25 +3447,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ed/b5/38fba836844233b961a0026d96f39f893eab63757e7757fd1d16fb02aa80/whenever-0.10.0-py3-none-any.whl", hash = "sha256:70feda454af6b2c231abd428b9430cd75492a000ca1d1edc42976d6fea265eec", size = 119264, upload-time = "2026-04-05T18:43:48.077Z" }, ] -[[package]] -name = "xgboost" -version = "3.4.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "numpy" }, - { name = "nvidia-nccl-cu13", marker = "sys_platform == 'linux'" }, - { name = "scipy" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/38/a9/295320f741c5be4be996c73ee65a2a11852028c50daa7229adb0d61c330b/xgboost-3.4.1.tar.gz", hash = "sha256:6968a4c71efdfa859df0dfcad0d99211c95c28c4ffd6aecff46efff77d18026a", size = 1231819, upload-time = "2026-08-15T08:39:21.197Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/57/ea/0bdcd374241a86f1986e87e272516f0a70d841c3aa86aa9ca167fb651573/xgboost-3.4.1-py3-none-macosx_10_15_x86_64.whl", hash = "sha256:1ea15f15f661825b6a67d87674fb9604a1abb38dd0d4c5cf0486fc85f5203e83", size = 2541584, upload-time = "2026-08-15T08:38:48.484Z" }, - { url = "https://files.pythonhosted.org/packages/f7/94/e5c37a8972ad780edc1d8459d1931356344ca133f7f99ba9cfda516b5bba/xgboost-3.4.1-py3-none-macosx_12_0_arm64.whl", hash = "sha256:a7afd7dbace0951c93aa85ffe046e54bc40893f5b51cd3e7991eb157bf9c7c7c", size = 2365501, upload-time = "2026-08-15T08:38:52.366Z" }, - { url = "https://files.pythonhosted.org/packages/a7/11/4ff1f36ca5c32c642c71c88bec1508ee98b2c3b1e9eb169e8c82de303522/xgboost-3.4.1-py3-none-manylinux_2_28_aarch64.whl", hash = "sha256:7faaf99de26719c22bfae883a02bd56b5a3c2203122616e563cc72b7191b5c96", size = 57196172, upload-time = "2026-08-15T08:39:03.288Z" }, - { url = "https://files.pythonhosted.org/packages/99/c7/bd05c5c430feb347aa040fcc8870135d70b256718deee9bc7d2ca74a77ff/xgboost-3.4.1-py3-none-manylinux_2_28_x86_64.whl", hash = "sha256:6adf2afa396da2ae8ed30295b50b99d4712eed9a6e0ce6cfe069290e4335e51f", size = 57615456, upload-time = "2026-08-15T08:39:09.983Z" }, - { url = "https://files.pythonhosted.org/packages/2f/3c/925394671f6a1668e2a71886de66e80be694eaf37f615cec74eefaf43107/xgboost-3.4.1-py3-none-win_amd64.whl", hash = "sha256:2d30fa513673101f542fdcbd18f30c8f96c064046f798635ac08663e9969f81b", size = 48942686, upload-time = "2026-08-15T08:39:16.182Z" }, - { url = "https://files.pythonhosted.org/packages/90/2f/f2fbe984ca095709fd246546125e78834740f347e3aa7561a22a1e928510/xgboost-3.4.1-py3-none-win_arm64.whl", hash = "sha256:e9312b30e5679d27c1d8b9ee97e092b964d960a672d5d406d9fb3cd0845c9797", size = 2094178, upload-time = "2026-08-15T08:39:19.308Z" }, -] - [[package]] name = "zensical" version = "0.0.43" From 3677a0172f66f974fa3f2e5a57dd4485c9819f3a Mon Sep 17 00:00:00 2001 From: Jae Date: Wed, 19 Aug 2026 07:55:17 -0600 Subject: [PATCH 31/68] chore(tooling): enforce docstring and type coverage with ruff D and mypy MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add ruff D1xx (missing-docstring) rules with per-file ignores for migrations/tests/manage.py, plus mypy with the django-stubs plugin (lenient: ignore_missing_imports, check_untyped_defs=false — not yet a merge gate). Wire lint/typecheck/test targets in a root Makefile. --- Makefile | 17 ++++++++++++++++ backend/pyproject.toml | 41 ++++++++++++++++++++++++++++++++++++++ backend/uv.lock | 45 +++++++++++++++++++++++++----------------- 3 files changed, 85 insertions(+), 18 deletions(-) create mode 100644 Makefile diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..ef08f6e --- /dev/null +++ b/Makefile @@ -0,0 +1,17 @@ +.PHONY: lint typecheck test + +# ruff needs no Django settings (no settings import), so it runs locally +# against the backend project without going through Docker. +lint: + cd backend && uv run ruff check . + +# mypy loads the django-stubs plugin, which imports databus.settings; that +# module reads env vars via python-decouple and fails to import outside the +# dev container, so mypy must run inside it. +typecheck: + docker compose -f compose.dev.yml run --rm orchestrator uv run mypy . + +# pytest-django also needs the real settings/DB, so it runs inside the dev +# container too. +test: + docker compose -f compose.dev.yml run --rm orchestrator uv run pytest -q diff --git a/backend/pyproject.toml b/backend/pyproject.toml index 8b3dc5c..87e53ef 100644 --- a/backend/pyproject.toml +++ b/backend/pyproject.toml @@ -38,6 +38,8 @@ dependencies = [ [dependency-groups] dev = [ "django-debug-toolbar>=6.0.0", + "django-stubs[compatible-mypy]>=6.0.4", + "mypy>=2.0.0", "pytest>=8.4.1", "pytest-django>=4.11.1", "ruff>=0.12.11", @@ -51,6 +53,45 @@ dev = [ # every caller needing to remember a CLI --exclude flag. extend-exclude = ["gtfs-eta"] +[tool.ruff.lint] +# Missing-docstring rules only (D100-D107 family): we want *presence* of +# docstrings, not pydocstyle's style nitpicks. extend-select (not select) so +# ruff's default E/F rules stay active alongside this. +extend-select = ["D1"] +# D106 (missing docstring in nested class) is noise for Django's ubiquitous +# `class Meta:` inner classes — ignored globally rather than per-file. +ignore = ["D106"] + +[tool.ruff.lint.pydocstyle] +convention = "pep257" + +[tool.ruff.lint.per-file-ignores] +"**/migrations/**" = ["D"] +"**/tests/**" = ["D"] +"**/tests.py" = ["D"] +"**/test_*.py" = ["D"] +"manage.py" = ["D"] +"**/__init__.py" = ["D104"] + +[tool.mypy] +plugins = ["mypy_django_plugin.main"] +ignore_missing_imports = true +check_untyped_defs = false +# api/tests.py (a namespace package: no __init__.py, matching Django 6's +# implicit-namespace app style) and gtfs-django/tests/ both resolve to the +# bare module name "tests" without this — explicit_package_bases makes mypy +# derive each module's qualified name from its position under mypy_path +# instead of collapsing to the top-level basename. +explicit_package_bases = true +mypy_path = "." +# migrations are gitignored/regenerated at container start; gtfs-eta is the +# sibling repo's own codebase (see [tool.ruff] above for the full rationale); +# .venv is the local virtualenv, not project code. +exclude = "(^|/)(migrations|gtfs-eta|\\.venv)(/|$)" + +[tool.django-stubs] +django_settings_module = "databus.settings" + [tool.pytest.ini_options] DJANGO_SETTINGS_MODULE = "databus.settings" # gtfs-eta is a symlink to the sibling repo (see [tool.uv.sources] below), diff --git a/backend/uv.lock b/backend/uv.lock index b371b98..e581da1 100644 --- a/backend/uv.lock +++ b/backend/uv.lock @@ -715,6 +715,8 @@ dependencies = [ [package.dev-dependencies] dev = [ { name = "django-debug-toolbar" }, + { name = "django-stubs", extra = ["compatible-mypy"] }, + { name = "mypy" }, { name = "pytest" }, { name = "pytest-django" }, { name = "ruff" }, @@ -756,6 +758,8 @@ requires-dist = [ [package.metadata.requires-dev] dev = [ { name = "django-debug-toolbar", specifier = ">=6.0.0" }, + { name = "django-stubs", extras = ["compatible-mypy"], specifier = ">=6.0.4" }, + { name = "mypy", specifier = ">=2.0.0" }, { name = "pytest", specifier = ">=8.4.1" }, { name = "pytest-django", specifier = ">=4.11.1" }, { name = "ruff", specifier = ">=0.12.11" }, @@ -879,6 +883,11 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ba/e7/5128914ada94dd6277626ef5a4a5680a4def7d2f9366214d26c1cd86723b/django_stubs-6.0.4-py3-none-any.whl", hash = "sha256:e991c68f77239663577a5f4fc75e99c84f867f378cafc97cbf4acc5aff378279", size = 543791, upload-time = "2026-05-09T21:24:28.218Z" }, ] +[package.optional-dependencies] +compatible-mypy = [ + { name = "mypy" }, +] + [[package]] name = "django-stubs-ext" version = "6.0.4" @@ -1783,7 +1792,7 @@ wheels = [ [[package]] name = "mypy" -version = "2.1.0" +version = "2.0.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "ast-serialize" }, @@ -1792,23 +1801,23 @@ dependencies = [ { name = "pathspec" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/82/15/cca9d88503549ed6fedeaa1d448cdddd542ee8a490232d732e278036fbf2/mypy-2.1.0.tar.gz", hash = "sha256:81e76ad12c2d804512e9b13240d1588316531bfba07558286078bfbce9613633", size = 3898359, upload-time = "2026-05-11T18:37:36.237Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b0/ca/b279a672e874aedd5498ae25f722dacc8aa86bbffb939b3f97cbb1cf6686/mypy-2.1.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:7354c5a7f69d9345c3d6e69921d57088eea3ddeeb6b20d34c1b3855b02c36ec2", size = 14848422, upload-time = "2026-05-11T18:35:45.984Z" }, - { url = "https://files.pythonhosted.org/packages/27/e6/3efe56c631d959b9b4454e208b0ac4b7f4f58b404c89f8bec7b49efdfc21/mypy-2.1.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:49890d4f76ac9e06ec117f9e09f3174da70a620a0c300953d8595c926e80947f", size = 13677374, upload-time = "2026-05-11T18:36:57.188Z" }, - { url = "https://files.pythonhosted.org/packages/84/7f/8107ea87a44fd1f1b59882442f033c9c3488c127201b1d1d15f1cbd6022e/mypy-2.1.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:761be68e023ef5d94678772396a8af1220030f80837a3afd8d0aef3b419666f4", size = 14055743, upload-time = "2026-05-11T18:35:18.361Z" }, - { url = "https://files.pythonhosted.org/packages/51/4d/b6d34db183133b83761b9199a82d31557cdbb70a380d8c3b3438e11882a3/mypy-2.1.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c90345fc182dc363b891350457ec69c35140858538f38b4540845afcc32b1aef", size = 15020937, upload-time = "2026-05-11T18:34:59.618Z" }, - { url = "https://files.pythonhosted.org/packages/ff/d7/f08360c691d758acb02f45022c34d98b92892f4ea756644e1000d4b9f3d8/mypy-2.1.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:b84802e7b5a6daf1f5e15bc9fcd7ddae77be13981ffab037f1c67bb84d67d135", size = 15253371, upload-time = "2026-05-11T18:36:41.081Z" }, - { url = "https://files.pythonhosted.org/packages/67/1b/09460a13719530a19bce27bd3bc8449e83569dd2ba7faf51c9c3c30c0b61/mypy-2.1.0-cp314-cp314-win_amd64.whl", hash = "sha256:022c771234936ceac541ebaf836fe9e2abeb3f5e09aff21588fe543ff006fe21", size = 11326429, upload-time = "2026-05-11T18:34:13.526Z" }, - { url = "https://files.pythonhosted.org/packages/40/62/75dbf0f82f7b6680340efc614af29dd0b3c17b8a4f1cd09b8bd2fd6bc814/mypy-2.1.0-cp314-cp314-win_arm64.whl", hash = "sha256:498207db725cec88829a6a5c2fc771205fd043719ef98bc49aba8fb9fc4e6d57", size = 10218799, upload-time = "2026-05-11T18:32:23.491Z" }, - { url = "https://files.pythonhosted.org/packages/b2/66/caca04ed7d972fb6eb6dd1ccd6df1de5c38fae8c5b3dc1c4e8e0d85ee6b9/mypy-2.1.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:7d5e5cad0efeba72b93cd17490cc0d69c5ac9ca132994fe3fb0314808aeeb83e", size = 15923458, upload-time = "2026-05-11T18:35:28.64Z" }, - { url = "https://files.pythonhosted.org/packages/ed/52/2d90cbe49d014b13ed7ff337930c30bad35893fe38a1e4641e756bb62191/mypy-2.1.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:ff715050c127d724fd260a2e666e7747fdd83511c0c47d449d98238970aef780", size = 14757697, upload-time = "2026-05-11T18:36:14.208Z" }, - { url = "https://files.pythonhosted.org/packages/ac/37/d98f4a14e081b238992d0ed96b6d39c7cc0148c9699eb71eaa68629665ea/mypy-2.1.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:82208da9e09414d520e912d3e462d454854bed0810b71540bb016dcbca7308fd", size = 15405638, upload-time = "2026-05-11T18:33:48.249Z" }, - { url = "https://files.pythonhosted.org/packages/a3/c2/15c46613b24a84fad2aea1248bf9619b99c2767ae9071fe224c179a0b7d4/mypy-2.1.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e79ebc1b904b84f0310dff7469655a9c36c7a68bddb37bdd42b67a332df61d08", size = 16215852, upload-time = "2026-05-11T18:32:50.296Z" }, - { url = "https://files.pythonhosted.org/packages/5c/90/9c16a57f482c76d25f6379762b56bbf65c711d8158cf271fb2802cfb0640/mypy-2.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:e583edc957cfb0deb142079162ae826f58449b116c1d442f2d91c69d9fced081", size = 16452695, upload-time = "2026-05-11T18:33:38.182Z" }, - { url = "https://files.pythonhosted.org/packages/0f/4c/215a4eeb63cacc5f17f516691ea7285d11e249802b942476bff15922a314/mypy-2.1.0-cp314-cp314t-win_amd64.whl", hash = "sha256:b33b6cd332695bba180d55e717a79d3038e479a2c49cc5eb3d53603409b9a5d7", size = 12866622, upload-time = "2026-05-11T18:34:39.945Z" }, - { url = "https://files.pythonhosted.org/packages/4b/50/1043e1db5f455ffe4c9ab22747cd8ca2bc492b1e4f4e21b130a44ee2b217/mypy-2.1.0-cp314-cp314t-win_arm64.whl", hash = "sha256:4f910fe825376a7b66ef7ca8c98e5a149e8cd64c19ae71d84047a74ee060d4e6", size = 10610798, upload-time = "2026-05-11T18:36:31.444Z" }, - { url = "https://files.pythonhosted.org/packages/0d/2a/13ca1f292f6db1b98ff495ef3467736b331621c5917cad984b7043e7348d/mypy-2.1.0-py3-none-any.whl", hash = "sha256:a663814603a5c563fb87a4f96fb473eeb30d1f5a4885afcf44f9db000a366289", size = 2693302, upload-time = "2026-05-11T18:31:29.246Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/cf/dc/7e6d49f04fca40b9dd5c752a51a432ffe67fb45200702bc9eee0cb4bbb26/mypy-2.0.0.tar.gz", hash = "sha256:1a9e3900ac5c40f1fe813506c7739da6e6f0eab2729067ebd94bfb0bbba53532", size = 3869036, upload-time = "2026-05-06T19:26:43.22Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ce/2c/6fefe954207860aed6eeb91776795e64a257d3ce0360862288984ce121f5/mypy-2.0.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:c918c64e8ce36557851b0347f84eb12f1965d3a06813c36df253eb0c0afd1d82", size = 14729633, upload-time = "2026-05-06T19:24:53.383Z" }, + { url = "https://files.pythonhosted.org/packages/23/d6/d336f5b820af189eb0390cce21de62d264c0a4e64713dfbe81bfc4fc7739/mypy-2.0.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:301f1a8ccc7d79b542ee218b28bb49443a83e194eb3d10da63ff1649e5aa5d34", size = 13559524, upload-time = "2026-05-06T19:22:24.906Z" }, + { url = "https://files.pythonhosted.org/packages/af/a6/d7bb54fde1770f0484e5fbdbdce37a41e95ed0a1cd493ec60ead111e356c/mypy-2.0.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:fdf4ef489d44ce350bac3fd699907834e551d4c934e9cc862ef201215ab1558d", size = 13936018, upload-time = "2026-05-06T19:25:02.992Z" }, + { url = "https://files.pythonhosted.org/packages/7d/ba/5be51316b91e6a6bf6e3a8adb3de500e7e1fb5bf9491743b8cbc81a34a2c/mypy-2.0.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9cde2d0989f912fc850890f727d0d76495e7a6c5bdd9912a1efdb64952b4398d", size = 14910712, upload-time = "2026-05-06T19:25:21.83Z" }, + { url = "https://files.pythonhosted.org/packages/b7/37/e2c8c3b373e20ebfb66e6c83a99027fd67df4ec43b08879f74e822d2dc4c/mypy-2.0.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:cdf05693c231a14fe37dbfce192a3a1372c26a833af4a80f550547742952e719", size = 15141499, upload-time = "2026-05-06T19:20:50.924Z" }, + { url = "https://files.pythonhosted.org/packages/12/36/07756f933e00416d912e35878cfcf89a593a3350a885691c0bb85ae0226a/mypy-2.0.0-cp314-cp314-win_amd64.whl", hash = "sha256:73aee2da33a2237e66cbe84a94780e53599847e86bb3aa7b93e405e8cd9905f2", size = 11240511, upload-time = "2026-05-06T19:21:32.39Z" }, + { url = "https://files.pythonhosted.org/packages/70/05/79ac1f20f2397353f3845f7b8bb5d8006cda7c8ef9092f04f9de3c6135f2/mypy-2.0.0-cp314-cp314-win_arm64.whl", hash = "sha256:1f6dcd8f39971f41edab2728c877c4ac8b50ad3c387ff2770423b79a05d23910", size = 10149336, upload-time = "2026-05-06T19:22:08.383Z" }, + { url = "https://files.pythonhosted.org/packages/53/e0/0db84e0ebbad6e99e566c68e4b465784f2a2294f7719e8db9d509ef23087/mypy-2.0.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:a04e980b9275c76159da66c6e1723c7798306f9802b31bdaf9358d0c84030ce8", size = 15797362, upload-time = "2026-05-06T19:22:00.835Z" }, + { url = "https://files.pythonhosted.org/packages/0a/a4/14cc0768164dd53bec48aa41a20270b18df9bf72aa5054278bf133608315/mypy-2.0.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:33f9cf4825469b2bc73c53ba55f6d9a9b4cdb60f9e6e228745581520f29b8771", size = 14635914, upload-time = "2026-05-06T19:23:43.675Z" }, + { url = "https://files.pythonhosted.org/packages/08/48/d866a3e23b4dc5974c77d9cf65a435bf22de01a84dd4620917950e233960/mypy-2.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:191675c3c7dc2a5c7722a035a6909c277f14046c5e4e02aa5fbf65f8524f08ad", size = 15270866, upload-time = "2026-05-06T19:22:34.756Z" }, + { url = "https://files.pythonhosted.org/packages/71/eb/de9ef94958eb2078a6b908ceb247757dc384d3a238d3bd6ed7d81de5eaf8/mypy-2.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c3d26c4321a3b06fc9f04c741e0733af693f82d823f8e64e47b2e63b7f19fa84", size = 16093131, upload-time = "2026-05-06T19:23:56.541Z" }, + { url = "https://files.pythonhosted.org/packages/ad/07/0ab2c1a9d26e90942612724cbd5788f16b7810c5dd39bfcf79286c6c4524/mypy-2.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:bbcbc4d5917ca6ce12de70e051de7f533e3bf92d548b41a38a2232a6fe356525", size = 16330685, upload-time = "2026-05-06T19:21:42.037Z" }, + { url = "https://files.pythonhosted.org/packages/a6/8f/46f85d1371a5be642dad263828118ae1efd536d91d8bd2000c68acff3920/mypy-2.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:dbc6ba6d40572ae49268531565793a8f07eac7fc65ad76d482c9b4c8765b6043", size = 12752017, upload-time = "2026-05-06T19:22:44.002Z" }, + { url = "https://files.pythonhosted.org/packages/7a/e6/94ca48800cac19eb28a58188a768aaec0d16cac0f373915f073058ab0855/mypy-2.0.0-cp314-cp314t-win_arm64.whl", hash = "sha256:77926029dfcb7e1a3ecb0acb2ddbb24ca36be03f7d623e1759ad5376be8f6c01", size = 10527097, upload-time = "2026-05-06T19:20:58.973Z" }, + { url = "https://files.pythonhosted.org/packages/5c/14/fd0694aa594d6e9f9fd16ce821be2eff295197a273262ef56ddcc1388d68/mypy-2.0.0-py3-none-any.whl", hash = "sha256:8a92b2be3146b4fa1f062af7eb05574cbf3e6eb8e1f14704af1075423144e4e5", size = 2673434, upload-time = "2026-05-06T19:26:32.856Z" }, ] [[package]] From 90dce3db605c8e9e5d8dedcd0e408fa53e086a99 Mon Sep 17 00:00:00 2001 From: Jae Date: Wed, 19 Aug 2026 08:14:26 -0600 Subject: [PATCH 32/68] docs(runs): add one-liner docstrings and complete type hints Fills in missing pep257 one-liner docstrings (ruff D1xx: 57 -> 0) and completes type hints across backend/runs/. Fixes the resulting mypy findings in runs/ (21 -> 0) via narrowing, casts, and an assert -- no runtime behavior changes; full pytest suite still 428 passed. --- backend/runs/admin.py | 2 + backend/runs/apps.py | 4 ++ backend/runs/domain/detection/dispatch.py | 13 +++--- .../domain/detection/lifecycle_detectors.py | 8 +++- .../domain/detection/periodic_detectors.py | 2 + backend/runs/domain/lifecycle/__init__.py | 12 +++++- backend/runs/domain/lifecycle/actions.py | 7 ++++ backend/runs/domain/lifecycle/events.py | 2 + backend/runs/domain/lifecycle/guards.py | 42 ++++++++++++++++--- backend/runs/domain/lifecycle/states.py | 5 ++- backend/runs/domain/lifecycle/transitions.py | 8 ++-- backend/runs/domain/progression/producer.py | 18 ++++++-- backend/runs/domain/progression/shapes.py | 15 ++++--- backend/runs/domain/progression/stop_times.py | 18 ++++++-- backend/runs/models.py | 15 ++++++- backend/runs/services/exceptions.py | 7 +++- backend/runs/services/lifecycle.py | 13 +++++- backend/runs/services/registry.py | 15 ++++++- backend/runs/views.py | 2 + 19 files changed, 174 insertions(+), 34 deletions(-) diff --git a/backend/runs/admin.py b/backend/runs/admin.py index be9c64a..2fc55ee 100644 --- a/backend/runs/admin.py +++ b/backend/runs/admin.py @@ -1,3 +1,5 @@ +"""Register run and per-tick telemetry snapshot models with the Django admin site.""" + from django.contrib.gis import admin from .models import Run, Position, VehicleStopStatus, CongestionLevel, OccupancyStatus diff --git a/backend/runs/apps.py b/backend/runs/apps.py index b3fa904..d51ca31 100644 --- a/backend/runs/apps.py +++ b/backend/runs/apps.py @@ -1,5 +1,9 @@ +"""Django AppConfig for the runs app.""" + from django.apps import AppConfig class RunsConfig(AppConfig): + """Django app configuration for `runs` (run lifecycle, detection, progression, telemetry contracts).""" + name = 'runs' diff --git a/backend/runs/domain/detection/dispatch.py b/backend/runs/domain/detection/dispatch.py index a911a53..9f8ebbe 100644 --- a/backend/runs/domain/detection/dispatch.py +++ b/backend/runs/domain/detection/dispatch.py @@ -13,7 +13,7 @@ """ import os -from typing import Any +from typing import Any, cast import redis from django.utils.timezone import now @@ -45,7 +45,7 @@ def plan_telemetry_events( leaf: str, data: dict[str, Any], base_payload: dict[str, Any], - detectors=registry.TELEMETRY_DETECTORS, + detectors: list[Any] = registry.TELEMETRY_DETECTORS, ) -> list[DetectionResult]: """Plan at most one event per FSM for a telemetry message.""" results: list[DetectionResult] = [] @@ -66,7 +66,7 @@ def plan_scan_events( lifecycle_state: str | None, staleness_s: float, payload: dict[str, Any], - detectors=registry.PERIODIC_DETECTORS, + detectors: list[Any] = registry.PERIODIC_DETECTORS, ) -> list[DetectionResult]: """Plan at most one lifecycle event for a staleness scan tick.""" if lifecycle_state is None: @@ -95,7 +95,10 @@ def _fire(result: DetectionResult, base_payload: dict[str, Any]) -> None: def detect_from_telemetry( run_id: str, vehicle_id: str, leaf: str, data: dict[str, Any] ) -> None: - lifecycle_state = r.hget(f"run:{run_id}", "run_lifecycle_state") + """Evaluate telemetry detectors for one message and queue any fired lifecycle events.""" + # r has decode_responses=True, so hget really returns str | None; cast narrows + # away the Awaitable branch that redis-py's shared sync/async stub attaches. + lifecycle_state = cast("str | None", r.hget(f"run:{run_id}", "run_lifecycle_state")) if not lifecycle_state: return @@ -111,7 +114,7 @@ def detect_from_telemetry( def detect_from_scan(run_id: str, staleness_s: float, raw_last_seen: str) -> int: """Evaluate periodic detectors for one run; returns number of events fired.""" - lifecycle_state = r.hget(f"run:{run_id}", "run_lifecycle_state") + lifecycle_state = cast("str | None", r.hget(f"run:{run_id}", "run_lifecycle_state")) base_payload = { "run_id": run_id, "last_seen_at": raw_last_seen, diff --git a/backend/runs/domain/detection/lifecycle_detectors.py b/backend/runs/domain/detection/lifecycle_detectors.py index 4eaa8f2..62fc335 100644 --- a/backend/runs/domain/detection/lifecycle_detectors.py +++ b/backend/runs/domain/detection/lifecycle_detectors.py @@ -25,6 +25,7 @@ class RunTrackingStartedDetector: def detect( self, run_state: str, leaf: str, data: dict[str, Any], payload: dict[str, Any] ) -> DetectionResult | None: + """Fire RUN_TRACKING_STARTED when a CONFIRMED run receives any telemetry.""" if run_state == RunLifecycleStates.CONFIRMED.value: return DetectionResult(self.fsm, RunLifecycleEvents.RUN_TRACKING_STARTED) return None @@ -38,6 +39,7 @@ class RunStartedDetector: def detect( self, run_state: str, leaf: str, data: dict[str, Any], payload: dict[str, Any] ) -> DetectionResult | None: + """Fire RUN_STARTED when a TRACKING run's position shows it moving faster than MIN_MOVING_SPEED.""" if run_state == RunLifecycleStates.TRACKING.value and leaf == "position": if float(data.get("speed", 0) or 0) > MIN_MOVING_SPEED: return DetectionResult(self.fsm, RunLifecycleEvents.RUN_STARTED) @@ -52,6 +54,7 @@ class RunTrackingRestoredDetector: def detect( self, run_state: str, leaf: str, data: dict[str, Any], payload: dict[str, Any] ) -> DetectionResult | None: + """Fire RUN_TRACKING_RESTORED when a NO_SIGNAL run receives any telemetry.""" if run_state == RunLifecycleStates.NO_SIGNAL.value: return DetectionResult(self.fsm, RunLifecycleEvents.RUN_TRACKING_RESTORED) return None @@ -69,6 +72,7 @@ class RunCompletedDetector: def detect( self, run_state: str, leaf: str, data: dict[str, Any], payload: dict[str, Any] ) -> DetectionResult | None: + """Fire RUN_COMPLETED when an IN_PROGRESS run reports STOPPED_AT with a stop_id.""" if run_state == RunLifecycleStates.IN_PROGRESS.value and leaf == "progression": stop_id = data.get("stop_id") if data.get("current_status") == "STOPPED_AT" and stop_id: @@ -79,8 +83,8 @@ def detect( class RunInterruptedDetector: - pass + """Placeholder — not registered in `registry.TELEMETRY_DETECTORS`; interruption is triggered externally via the RUN_INTERRUPTED command, not detected from telemetry.""" class RunShortTurnedDetector: - pass + """Placeholder — not registered in `registry.TELEMETRY_DETECTORS`; short-turning is triggered externally via the RUN_SHORT_TURNED command, not detected from telemetry.""" diff --git a/backend/runs/domain/detection/periodic_detectors.py b/backend/runs/domain/detection/periodic_detectors.py index f96cc99..aa6c876 100644 --- a/backend/runs/domain/detection/periodic_detectors.py +++ b/backend/runs/domain/detection/periodic_detectors.py @@ -24,6 +24,7 @@ class RunTrackingLostDetector: def detect( self, run_state: str, staleness_s: float, payload: dict[str, Any] ) -> DetectionResult | None: + """Fire RUN_TRACKING_LOST when an IN_PROGRESS run's staleness falls in the grace-to-expiry window.""" if ( run_state == RunLifecycleStates.IN_PROGRESS.value and TELEMETRY_GRACE_S < staleness_s <= TELEMETRY_EXPIRY_S @@ -42,6 +43,7 @@ class RunTrackingExpiredDetector: def detect( self, run_state: str, staleness_s: float, payload: dict[str, Any] ) -> DetectionResult | None: + """Fire RUN_TRACKING_EXPIRED when a NO_SIGNAL run's staleness exceeds the expiry window.""" if ( run_state == RunLifecycleStates.NO_SIGNAL.value and staleness_s > TELEMETRY_EXPIRY_S diff --git a/backend/runs/domain/lifecycle/__init__.py b/backend/runs/domain/lifecycle/__init__.py index 2f3d6b8..43be934 100644 --- a/backend/runs/domain/lifecycle/__init__.py +++ b/backend/runs/domain/lifecycle/__init__.py @@ -1,4 +1,12 @@ +"""Table-driven FSM for the run lifecycle: states, events, guards, actions, and transitions. + +Submodules are lazy-loaded via module `__getattr__` below so importing this +package does not eagerly pull in the Redis/Django-touching `actions` and +`guards` modules unless a caller actually needs them. +""" + from importlib import import_module +from typing import Any from .states import RunLifecycleStates, choices from .events import RunLifecycleEvents @@ -15,7 +23,8 @@ ] -def __getattr__(name: str): +def __getattr__(name: str) -> Any: + """Lazily resolve `RunLifecycleActions`/`RunLifecycleGuards`/`Transition`/`TRANSITIONS`/`target_state_for_event` from their owning submodule.""" if name in { "RunLifecycleActions", "RunLifecycleGuards", @@ -36,4 +45,5 @@ def __getattr__(name: str): def __dir__() -> list[str]: + """Include the lazily-loaded names in `dir()` output for REPL/IDE discoverability.""" return sorted(set(globals()) | set(__all__)) diff --git a/backend/runs/domain/lifecycle/actions.py b/backend/runs/domain/lifecycle/actions.py index 37a77fc..3b43068 100644 --- a/backend/runs/domain/lifecycle/actions.py +++ b/backend/runs/domain/lifecycle/actions.py @@ -1,3 +1,5 @@ +"""Action functions executed by successful run lifecycle transitions — Redis state mutation and cleanup.""" + from typing import Any, TYPE_CHECKING from runs.models import Run import redis @@ -108,6 +110,7 @@ def sync_lifecycle_state( def add_to_tracking_set( run: Run, transition: "Transition", payload: dict[str, Any] ) -> bool: + """Add the run to the `runs:tracking` Redis set.""" r.sadd("runs:tracking", str(run.id)) return True @@ -115,6 +118,7 @@ def add_to_tracking_set( def remove_from_tracking_set( run: Run, transition: "Transition", payload: dict[str, Any] ) -> bool: + """Remove the run from the `runs:tracking` Redis set.""" r.srem("runs:tracking", str(run.id)) return True @@ -122,6 +126,7 @@ def remove_from_tracking_set( def add_to_in_progress_set( run: Run, transition: "Transition", payload: dict[str, Any] ) -> bool: + """Add the run to the `runs:in_progress` Redis set.""" r.sadd("runs:in_progress", str(run.id)) return True @@ -129,6 +134,7 @@ def add_to_in_progress_set( def remove_from_in_progress_set( run: Run, transition: "Transition", payload: dict[str, Any] ) -> bool: + """Remove the run from the `runs:in_progress` Redis set.""" r.srem("runs:in_progress", str(run.id)) return True @@ -136,6 +142,7 @@ def remove_from_in_progress_set( def remove_from_system_state( run: Run, transition: "Transition", payload: dict[str, Any] ) -> bool: + """Delete the run's Redis hash and remove it from both the tracking and in-progress sets.""" pipe = r.pipeline() pipe.delete(f"run:{run.id}") pipe.srem("runs:tracking", str(run.id)) diff --git a/backend/runs/domain/lifecycle/events.py b/backend/runs/domain/lifecycle/events.py index 2534eb5..ad54505 100644 --- a/backend/runs/domain/lifecycle/events.py +++ b/backend/runs/domain/lifecycle/events.py @@ -1,3 +1,5 @@ +"""Enumeration of events driving run lifecycle transitions — REST commands and telemetry-detected facts.""" + from enum import Enum diff --git a/backend/runs/domain/lifecycle/guards.py b/backend/runs/domain/lifecycle/guards.py index 68e6dfc..e566e0f 100644 --- a/backend/runs/domain/lifecycle/guards.py +++ b/backend/runs/domain/lifecycle/guards.py @@ -1,4 +1,6 @@ -from typing import Any, TYPE_CHECKING +"""Guard functions gating run lifecycle transitions on GTFS validity, resource availability, and telemetry freshness.""" + +from typing import Any, TYPE_CHECKING, cast from datetime import datetime, timezone from django.utils.timezone import now from runs.models import Run @@ -12,6 +14,16 @@ r = redis.Redis(host="state", port=6379, db=0) +def _get_bytes(key: str) -> bytes | None: + """Read a Redis string value as bytes. + + Narrows away the `Awaitable[...]` branch that redis-py's stubs attach to + every command (shared between the sync and async client mixins) — `r` here + is always the synchronous client, so the result is never a coroutine. + """ + return cast("bytes | None", r.get(key)) + + def _parse_last_seen(payload: dict[str, Any]) -> datetime | None: raw = payload.get("last_seen_at") if raw is None: @@ -28,10 +40,13 @@ def _parse_last_seen(payload: dict[str, Any]) -> datetime | None: class RunLifecycleGuards: + """Namespace of guard functions; each returns a bool verdict or raises RunLifecycleError with field-level detail.""" + @staticmethod def is_gtfs_valid( run: Run, transition: "Transition", payload: dict[str, Any] ) -> bool: + """Validate the run's GTFS fields against the current feed, raising RunLifecycleError with per-field detail on any mismatch.""" from feed.models import Feed, Route, Trip route_id = payload.get("route_id") @@ -43,7 +58,10 @@ def is_gtfs_valid( errors: dict[str, str] = {} direction_id_int: int | None try: - direction_id_int = int(direction_id) + # `direction_id is not None` narrows `Any | None` to `Any` for mypy; + # int(None) would otherwise be flagged even though it is already + # caught by the except clause below (no behavior change). + direction_id_int = int(direction_id) if direction_id is not None else None except (TypeError, ValueError): direction_id_int = None @@ -101,12 +119,13 @@ def is_gtfs_valid( def is_vehicle_available( run: Run, transition: "Transition", payload: dict[str, Any] ) -> bool: + """Check that the run's vehicle is not already claimed by a different active run in Redis.""" vehicle_id = payload.get("vehicle_id") or ( run.vehicle.values_list("id", flat=True).first() ) if not vehicle_id: return True - existing = r.get(f"vehicle:{vehicle_id}:current_run") + existing = _get_bytes(f"vehicle:{vehicle_id}:current_run") if existing and existing.decode() != str(run.id): raise RunLifecycleError( { @@ -119,10 +138,11 @@ def is_vehicle_available( def is_trip_available( run: Run, transition: "Transition", payload: dict[str, Any] ) -> bool: + """Check that the run's trip_id is not already claimed by a different active run in Redis.""" trip_id = payload.get("trip_id") or run.trip_id if not trip_id: return True - existing = r.get(f"trip:{trip_id}:current_run") + existing = _get_bytes(f"trip:{trip_id}:current_run") if existing and existing.decode() != str(run.id): raise RunLifecycleError( { @@ -135,12 +155,13 @@ def is_trip_available( def is_operator_available( run: Run, transition: "Transition", payload: dict[str, Any] ) -> bool: + """Check that the run's operator is not already claimed by a different active run in Redis.""" operator_id = payload.get("operator_id") or ( run.operator.values_list("id", flat=True).first() ) if not operator_id: return True - existing = r.get(f"operator:{operator_id}:current_run") + existing = _get_bytes(f"operator:{operator_id}:current_run") if existing and existing.decode() != str(run.id): raise RunLifecycleError( { @@ -153,18 +174,21 @@ def is_operator_available( def is_vehicle_tracked( run: Run, transition: "Transition", payload: dict[str, Any] ) -> bool: + """Return whether the run is currently a member of the `runs:tracking` Redis set.""" return bool(r.sismember("runs:tracking", str(run.id))) @staticmethod def is_run_validated( run: Run, transition: "Transition", payload: dict[str, Any] ) -> bool: + """No-op guard: validation was already enforced by the VALIDATE_RUN transition, so this always passes.""" return True @staticmethod def is_vehicle_moving( run: Run, transition: "Transition", payload: dict[str, Any] ) -> bool: + """Return whether the payload's reported speed exceeds the moving threshold (0.5 m/s).""" return float(payload.get("speed", 0)) > 0.5 # ------------------------------------------------------------------ @@ -175,6 +199,7 @@ def is_vehicle_moving( def is_cancellation_authorized( run: Run, transition: "Transition", payload: dict[str, Any] ) -> bool: + """Check that the requesting actor_role is permitted to cancel a run, raising RunLifecycleError otherwise.""" actor_role = payload.get("actor_role", "") if actor_role == "system": return True @@ -190,6 +215,7 @@ def is_cancellation_authorized( def is_interruption_authorized( run: Run, transition: "Transition", payload: dict[str, Any] ) -> bool: + """Check that the requesting actor_role is permitted to interrupt a run, raising RunLifecycleError otherwise.""" actor_role = payload.get("actor_role", "") if actor_role in ("system", "dispatcher", "operator"): return True @@ -203,6 +229,7 @@ def is_interruption_authorized( def is_short_turn_authorized( run: Run, transition: "Transition", payload: dict[str, Any] ) -> bool: + """Check that the requesting actor_role is permitted to short-turn a run, raising RunLifecycleError otherwise.""" actor_role = payload.get("actor_role", "") if actor_role in ("dispatcher", "system"): return True @@ -216,6 +243,7 @@ def is_short_turn_authorized( def is_short_turn_geometrically_valid( run: Run, transition: "Transition", payload: dict[str, Any] ) -> bool: + """Verify the requested short-turn stop belongs to the run's trip and is not the terminal stop, raising RunLifecycleError otherwise.""" from feed.models import Feed, StopTime short_turn_stop_id = payload.get("short_turn_stop_id") @@ -263,6 +291,7 @@ def is_short_turn_geometrically_valid( def is_telemetry_stale( run: Run, transition: "Transition", payload: dict[str, Any] ) -> bool: + """Return whether the run's last-seen telemetry is older than the staleness grace period.""" last_seen = _parse_last_seen(payload) if last_seen is None: last_seen = run.last_event_at @@ -275,6 +304,7 @@ def is_telemetry_stale( def is_telemetry_fresh( run: Run, transition: "Transition", payload: dict[str, Any] ) -> bool: + """Return whether the run's last-seen telemetry is within the staleness grace period.""" last_seen = _parse_last_seen(payload) if last_seen is None: last_seen = run.last_event_at @@ -287,6 +317,7 @@ def is_telemetry_fresh( def is_telemetry_grace_period_exceeded( run: Run, transition: "Transition", payload: dict[str, Any] ) -> bool: + """Return whether the run's last-seen telemetry is older than the expiry window.""" last_seen = _parse_last_seen(payload) if last_seen is None: last_seen = run.last_event_at @@ -303,6 +334,7 @@ def is_telemetry_grace_period_exceeded( def is_at_terminal_stop( run: Run, transition: "Transition", payload: dict[str, Any] ) -> bool: + """Verify the reported stop_id is the trip's terminal stop, raising RunLifecycleError otherwise.""" from feed.models import Feed, StopTime stop_id = payload.get("stop_id") diff --git a/backend/runs/domain/lifecycle/states.py b/backend/runs/domain/lifecycle/states.py index c3c8f36..6d7c616 100644 --- a/backend/runs/domain/lifecycle/states.py +++ b/backend/runs/domain/lifecycle/states.py @@ -1,3 +1,5 @@ +"""Enumeration of run lifecycle states and their Django model choices.""" + from enum import Enum @@ -19,5 +21,6 @@ class RunLifecycleStates(str, Enum): SHORT_TURNED = "Short Turned" -def choices(): +def choices() -> list[tuple[str, str]]: + """Return the (value, name) choices list for the `Run.run_lifecycle_state` model field.""" return [(status.value, status.name) for status in RunLifecycleStates] diff --git a/backend/runs/domain/lifecycle/transitions.py b/backend/runs/domain/lifecycle/transitions.py index 5b97d24..12fbe11 100644 --- a/backend/runs/domain/lifecycle/transitions.py +++ b/backend/runs/domain/lifecycle/transitions.py @@ -1,5 +1,7 @@ +"""Static transition table mapping (state, event) pairs to their guards, actions, and resulting state.""" + from dataclasses import dataclass -from typing import Callable, List +from typing import Callable from .actions import RunLifecycleActions from .guards import RunLifecycleGuards @@ -14,8 +16,8 @@ class Transition: from_state: RunLifecycleStates event: RunLifecycleEvents to_state: RunLifecycleStates - guards: List[Callable] - actions: List[Callable] + guards: list[Callable] + actions: list[Callable] TRANSITIONS = [ diff --git a/backend/runs/domain/progression/producer.py b/backend/runs/domain/progression/producer.py index 50e0722..4f9f707 100644 --- a/backend/runs/domain/progression/producer.py +++ b/backend/runs/domain/progression/producer.py @@ -14,6 +14,7 @@ import logging import os +from typing import cast import redis @@ -30,6 +31,17 @@ ) +def _hgetall(key: str) -> dict[str, str]: + """Read a Redis hash as `dict[str, str]`. + + Narrows away the `Awaitable[...]` branch that redis-py's stubs attach to + every command (shared between the sync and async client mixins) — `r` + here is always the synchronous, `decode_responses=True` client, so the + result is always a plain string-keyed, string-valued dict. + """ + return cast("dict[str, str]", r.hgetall(key)) + + def produce_stop_status(run_id: str, vehicle_id: str) -> dict | None: """Derive and write ``run::vehicle_stop_status`` from the latest position. @@ -55,16 +67,16 @@ def produce_stop_status(run_id: str, vehicle_id: str) -> dict | None: when position data is available, or ``None`` when there is no position data to derive from. """ - pos_raw = r.hgetall(keys.position_key(vehicle_id)) + pos_raw = _hgetall(keys.position_key(vehicle_id)) if not pos_raw: # No position data yet — nothing to derive stop status from. return None position_hash = position.from_redis(pos_raw) - run_hash = r.hgetall(keys.run_key(run_id)) + run_hash = _hgetall(keys.run_key(run_id)) - prev_raw = r.hgetall(keys.stop_status_key(run_id)) + prev_raw = _hgetall(keys.stop_status_key(run_id)) prev_state = vehicle_stop_status.from_redis(prev_raw) if prev_raw else None computed = compute_stop_status(run_hash, position_hash, prev_state=prev_state) diff --git a/backend/runs/domain/progression/shapes.py b/backend/runs/domain/progression/shapes.py index f4a08cf..537d102 100644 --- a/backend/runs/domain/progression/shapes.py +++ b/backend/runs/domain/progression/shapes.py @@ -101,16 +101,17 @@ def build_polyline( # ---- cumulative haversine (always computed; used as fallback) ----------- haversine_result: list[tuple[float, float, float]] = [] cum = 0.0 - prev_lat: float | None = None - prev_lon: float | None = None + # A single Optional pair (rather than two parallel Optionals) lets mypy + # narrow both coordinates together from one `is None` check. + prev_point: tuple[float, float] | None = None for lat, lon, _seq in points: - if prev_lat is None: + if prev_point is None: cum = 0.0 else: - cum += haversine_m(prev_lat, prev_lon, lat, lon) + cum += haversine_m(prev_point[0], prev_point[1], lat, lon) haversine_result.append((lat, lon, cum)) - prev_lat, prev_lon = lat, lon + prev_point = (lat, lon) # ---- decide whether to use provided dists_m ---------------------------- if dists_m is not None: @@ -121,6 +122,10 @@ def build_polyline( if not use_provided: return haversine_result + # use_provided is only True when dists_m is not None (see the branch + # above); this assert makes that invariant explicit for mypy. + assert dists_m is not None + # Normalise so first entry is 0.0. offset = dists_m[0] result: list[tuple[float, float, float]] = [] diff --git a/backend/runs/domain/progression/stop_times.py b/backend/runs/domain/progression/stop_times.py index 421225a..75379e7 100644 --- a/backend/runs/domain/progression/stop_times.py +++ b/backend/runs/domain/progression/stop_times.py @@ -24,6 +24,7 @@ import logging import os from datetime import datetime, timezone +from typing import cast import redis @@ -57,6 +58,17 @@ ) +def _hgetall(key: str) -> dict[str, str]: + """Read a Redis hash as `dict[str, str]`. + + Narrows away the `Awaitable[...]` branch that redis-py's stubs attach to + every command (shared between the sync and async client mixins) — `r` + here is always the synchronous, `decode_responses=True` client, so the + result is always a plain string-keyed, string-valued dict. + """ + return cast("dict[str, str]", r.hgetall(key)) + + # --------------------------------------------------------------------------- # Pure helper # --------------------------------------------------------------------------- @@ -274,14 +286,14 @@ def produce_stop_times(run_id: str, vehicle_id: str) -> None: The vehicle id whose position was just updated. """ # Step 1 — run hash - run_hash = r.hgetall(keys.run_key(run_id)) + run_hash = _hgetall(keys.run_key(run_id)) if not run_hash: return # Step 2 — position hash (required; exit without overwriting if absent) from runs.domain.telemetry import position as position_module # noqa: PLC0415 - pos_raw = r.hgetall(keys.position_key(vehicle_id)) + pos_raw = _hgetall(keys.position_key(vehicle_id)) if not pos_raw: return pos = position_module.from_redis(pos_raw) @@ -289,7 +301,7 @@ def produce_stop_times(run_id: str, vehicle_id: str) -> None: return # Step 3 — stop-status hash (tolerate absence) - stop_status_raw = r.hgetall(keys.stop_status_key(run_id)) + stop_status_raw = _hgetall(keys.stop_status_key(run_id)) stop_status = vehicle_stop_status.from_redis(stop_status_raw) if stop_status_raw else {} # Step 4 — shape geometry (exit without overwriting if unavailable) diff --git a/backend/runs/models.py b/backend/runs/models.py index acdcff5..94e8b70 100644 --- a/backend/runs/models.py +++ b/backend/runs/models.py @@ -1,3 +1,5 @@ +"""Django ORM models for run assignment, lifecycle audit trail, and per-tick telemetry snapshots.""" + from django.contrib.gis.db import models from operations.models import Vehicle, Operator from runs.domain.lifecycle import RunLifecycleStates, choices @@ -47,11 +49,14 @@ class Run(models.Model): ) last_event_at = models.DateTimeField(blank=True, null=True) - def __str__(self): + def __str__(self) -> str: + """Return a human-readable "route/trip (date)" label for admin and logs.""" return f"{self.route_id} / {self.trip_id} ({self.start_date})" class RunLifecycleTransition(models.Model): + """Immutable audit record of one FSM transition attempt (successful or rejected) for a run.""" + id = models.UUIDField(primary_key=True, default=uuid.uuid7, editable=False) run = models.ForeignKey(Run, on_delete=models.CASCADE) event_name = models.CharField(max_length=128) @@ -70,6 +75,8 @@ class Meta: class Position(models.Model): + """One GPS/motion sample for a vehicle at a point in time.""" + vehicle = models.ForeignKey(Vehicle, on_delete=models.PROTECT) timestamp = models.DateTimeField() point = models.PointField(blank=True, null=True) @@ -81,6 +88,8 @@ class Position(models.Model): class VehicleStopStatus(models.Model): + """Snapshot of a vehicle's relationship to its current/next stop (GTFS-RT VehicleStopStatus).""" + vehicle = models.ForeignKey(Vehicle, on_delete=models.PROTECT) timestamp = models.DateTimeField(auto_now_add=True) current_stop_sequence = models.PositiveIntegerField(blank=True, null=True) @@ -98,6 +107,8 @@ class VehicleStopStatus(models.Model): class CongestionLevel(models.Model): + """Snapshot of a vehicle's congestion level (GTFS-RT CongestionLevel; producer not yet implemented).""" + vehicle = models.ForeignKey(Vehicle, on_delete=models.PROTECT) timestamp = models.DateTimeField(auto_now_add=True) congestion_level = models.CharField( @@ -115,6 +126,8 @@ class CongestionLevel(models.Model): class OccupancyStatus(models.Model): + """Snapshot of a vehicle's passenger occupancy (GTFS-RT OccupancyStatus).""" + vehicle = models.ForeignKey(Vehicle, on_delete=models.PROTECT) timestamp = models.DateTimeField(auto_now_add=True) occupancy_status = models.CharField( diff --git a/backend/runs/services/exceptions.py b/backend/runs/services/exceptions.py index 949e448..e415344 100644 --- a/backend/runs/services/exceptions.py +++ b/backend/runs/services/exceptions.py @@ -1,6 +1,11 @@ +"""Domain exception raised when a run lifecycle guard or action rejects a transition.""" + from typing import Any class RunLifecycleError(Exception): - def __init__(self, errors: dict[str, Any]): + """Raised when a guard rejects a transition or an action fails, carrying field-level error detail.""" + + def __init__(self, errors: dict[str, Any]) -> None: + """Store the field-level error detail dict for the caller (e.g. DRF serialization).""" self.errors = errors diff --git a/backend/runs/services/lifecycle.py b/backend/runs/services/lifecycle.py index 297d95f..8980b61 100644 --- a/backend/runs/services/lifecycle.py +++ b/backend/runs/services/lifecycle.py @@ -1,4 +1,6 @@ -from typing import Any +"""Drive Run FSM transitions: find candidates, check guards, execute actions, and persist the outcome.""" + +from typing import Any, cast from django.utils.timezone import now from messages.publisher import publish_event from runs.domain.lifecycle import RunLifecycleEvents @@ -10,12 +12,16 @@ class RunLifecycleService: + """Execute run lifecycle events against the table-driven FSM, auditing every attempt.""" + def __init__(self) -> None: + """Initialize the transition registry used to look up candidate transitions.""" self.registry: TransitionRegistry = TransitionRegistry() def process_event( self, event: RunLifecycleEvents, payload: dict[str, Any] ) -> tuple[RunLifecycleStates, dict[str, bool], dict[str, bool]]: + """Apply `event` to the run's current state, or raise RunLifecycleError if no transition succeeds.""" run = self._load_run(payload) candidates = self.registry.find(run.run_lifecycle_state, event) attempts: list[dict[str, Any]] = [] @@ -46,7 +52,10 @@ def process_event( def _load_run(self, payload: dict[str, Any]) -> Run: run_id = payload.get("run_id") - return Run.objects.get(id=run_id) + # payload is dict[str, Any], so .get() is typed as Any | None; cast is a + # static-only narrowing — a missing/malformed run_id still reaches the ORM + # unchanged and raises Run.DoesNotExist, exactly as before this annotation. + return Run.objects.get(id=cast(str, run_id)) def _check_guards( self, run: Run, transition: Transition, payload: dict[str, Any] diff --git a/backend/runs/services/registry.py b/backend/runs/services/registry.py index 8d71b2a..a33c5fa 100644 --- a/backend/runs/services/registry.py +++ b/backend/runs/services/registry.py @@ -1,6 +1,17 @@ -from runs.domain.lifecycle import TRANSITIONS +"""Look up FSM transitions for a given run lifecycle state and event.""" + +from runs.domain.lifecycle import TRANSITIONS, RunLifecycleEvents, Transition class TransitionRegistry: - def find(self, state, event): + """Query the static TRANSITIONS table for candidate run lifecycle transitions.""" + + def find(self, state: str | None, event: RunLifecycleEvents) -> list[Transition]: + """Return the transitions whose from_state and event match, in table order. + + `state` accepts a plain string because callers pass the Run model's raw + `run_lifecycle_state` CharField value; `RunLifecycleStates` is itself a + `str` subclass so the `==` comparison against `Transition.from_state` + works for either a raw string or an enum member. + """ return [t for t in TRANSITIONS if t.from_state == state and t.event == event] diff --git a/backend/runs/views.py b/backend/runs/views.py index 60f00ef..83efdd0 100644 --- a/backend/runs/views.py +++ b/backend/runs/views.py @@ -1 +1,3 @@ +"""Placeholder for runs app HTTP views (none defined yet — run mutations go through the API app).""" + # Create your views here. From 38d5b3f3359dc87a92d550468366e940c46f1522 Mon Sep 17 00:00:00 2001 From: Jae Date: Wed, 19 Aug 2026 08:30:11 -0600 Subject: [PATCH 33/68] docs(realtime_engine): add one-liner docstrings and complete type hints Adds pep257 one-liner docstrings to every public module/class/method/ function missing one (ruff D1xx: 17 -> 0), and completes type hints on all signatures using modern union/generic syntax. Fixes the redis-py Awaitable-union mypy findings in mqtt.py and tasks.py with small private cast helpers (_get/_smembers/_hgetall), mirroring the idiom already used in runs/domain/progression/producer.py. No behavior changes. --- backend/realtime_engine/admin.py | 2 +- backend/realtime_engine/apps.py | 4 ++ backend/realtime_engine/models.py | 2 +- backend/realtime_engine/mqtt.py | 33 +++++++++++++--- backend/realtime_engine/sources/base.py | 17 +++++++-- backend/realtime_engine/sources/http_json.py | 20 ++++++++-- backend/realtime_engine/sources/publisher.py | 12 +++++- backend/realtime_engine/sources/transforms.py | 3 +- backend/realtime_engine/tasks.py | 38 ++++++++++++++++--- backend/realtime_engine/views.py | 2 +- 10 files changed, 108 insertions(+), 25 deletions(-) diff --git a/backend/realtime_engine/admin.py b/backend/realtime_engine/admin.py index 846f6b4..101bd5a 100644 --- a/backend/realtime_engine/admin.py +++ b/backend/realtime_engine/admin.py @@ -1 +1 @@ -# Register your models here. +"""Django admin registrations for realtime_engine (none: state lives in Redis, not the ORM).""" diff --git a/backend/realtime_engine/apps.py b/backend/realtime_engine/apps.py index b52565e..47be53a 100644 --- a/backend/realtime_engine/apps.py +++ b/backend/realtime_engine/apps.py @@ -1,5 +1,9 @@ +"""Django AppConfig for the realtime_engine app.""" + from django.apps import AppConfig class RealtimeEngineConfig(AppConfig): + """Configure the realtime_engine Django app.""" + name = "realtime_engine" diff --git a/backend/realtime_engine/models.py b/backend/realtime_engine/models.py index 6b20219..5c735c6 100644 --- a/backend/realtime_engine/models.py +++ b/backend/realtime_engine/models.py @@ -1 +1 @@ -# Create your models here. +"""Django models for realtime_engine (none: state lives in Redis, not the ORM).""" diff --git a/backend/realtime_engine/mqtt.py b/backend/realtime_engine/mqtt.py index 3ea5703..2b51836 100644 --- a/backend/realtime_engine/mqtt.py +++ b/backend/realtime_engine/mqtt.py @@ -23,6 +23,7 @@ import logging import os import socket +from typing import Any, cast import paho.mqtt.client as mqtt import redis @@ -58,10 +59,22 @@ def _vehicle_id_from_topic(topic: str) -> str | None: def _leaf_from_topic(topic: str) -> str | None: + """Extract the leaf segment (e.g. 'position') from transit/vehicle//.""" parts = topic.split("/") return parts[-1] if len(parts) == 4 else None +def _get(key: str) -> str | None: + """Read a Redis string value, narrowing away redis-py's shared Awaitable stub. + + `r` here is always the synchronous, `decode_responses=True` client, but + redis-py's `CoreCommands` mixin types every command `Awaitable[X] | X` + since it's shared with the async client — this cast narrows to the sync + branch that's actually returned. + """ + return cast("str | None", r.get(key)) + + def _handle_telemetry(vehicle_id: str, leaf: str, payload_bytes: bytes) -> None: try: data = json.loads(payload_bytes) @@ -69,7 +82,7 @@ def _handle_telemetry(vehicle_id: str, leaf: str, payload_bytes: bytes) -> None: logger.warning("Non-JSON payload on vehicle %s/%s — ignored", vehicle_id, leaf) return - run_id = r.get(keys.current_run_key(vehicle_id)) + run_id = _get(keys.current_run_key(vehicle_id)) if not run_id: logger.debug("No active run for vehicle %s — dropping %s", vehicle_id, leaf) return @@ -142,7 +155,10 @@ def _handle_telemetry(vehicle_id: str, leaf: str, payload_bytes: bytes) -> None: detect_from_telemetry(run_id, vehicle_id, leaf, data) -def _on_connect(client: mqtt.Client, userdata, flags, rc) -> None: +def _on_connect( + client: mqtt.Client, userdata: Any, flags: dict[str, Any], rc: mqtt.MQTTErrorCode +) -> None: + """Subscribe to the vehicle telemetry topics once the broker connection is up.""" if rc == 0: logger.info("MQTT connected: %s:%s", MQTT_HOST, MQTT_PORT) client.subscribe("transit/vehicle/+/position", qos=0) @@ -152,7 +168,8 @@ def _on_connect(client: mqtt.Client, userdata, flags, rc) -> None: logger.error("MQTT connection refused: rc=%d", rc) -def _on_message(client: mqtt.Client, userdata, msg: mqtt.MQTTMessage) -> None: +def _on_message(client: mqtt.Client, userdata: Any, msg: mqtt.MQTTMessage) -> None: + """Route an incoming MQTT message to `_handle_telemetry`, logging any failure.""" vehicle_id = _vehicle_id_from_topic(msg.topic) leaf = _leaf_from_topic(msg.topic) if not vehicle_id or not leaf: @@ -164,6 +181,7 @@ def _on_message(client: mqtt.Client, userdata, msg: mqtt.MQTTMessage) -> None: def build_client() -> mqtt.Client: + """Build a paho MQTT client wired to the telemetry callbacks, unconnected.""" # Unique per process: a fixed client_id makes a second consumer (e.g. another # worker that also has MQTT_CONSUMER_ENABLED) collide on the broker and trigger # an endless reconnect war. Single-consumer gating is still the real guarantee; @@ -186,11 +204,13 @@ class MQTTConsumerStep(bootsteps.StartStopStep): requires = {"celery.worker.components:Pool"} - def __init__(self, worker, **kwargs): + def __init__(self, worker: Any, **kwargs: Any) -> None: + """Initialize the bootstep with no MQTT client connected yet.""" super().__init__(worker, **kwargs) self.client: mqtt.Client | None = None - def start(self, worker) -> None: + def start(self, worker: Any) -> None: + """Connect and start the MQTT client's background loop, if enabled.""" if not MQTT_CONSUMER_ENABLED: logger.info( "MQTT consumer bootstep disabled (MQTT_CONSUMER_ENABLED=%s)", @@ -207,7 +227,8 @@ def start(self, worker) -> None: logger.exception("MQTT consumer failed to start") self.client = None - def stop(self, worker) -> None: + def stop(self, worker: Any) -> None: + """Stop the MQTT client's background loop and disconnect, if running.""" if self.client is None: return logger.info("Stopping MQTT consumer bootstep") diff --git a/backend/realtime_engine/sources/base.py b/backend/realtime_engine/sources/base.py index 380f347..3785f5b 100644 --- a/backend/realtime_engine/sources/base.py +++ b/backend/realtime_engine/sources/base.py @@ -13,11 +13,19 @@ from __future__ import annotations -from typing import Protocol +from collections.abc import Callable +from typing import TYPE_CHECKING, Any, Protocol + +if TYPE_CHECKING: + # Type-checking only: the runtime import graph stays Django-free (see + # module docstring), but the real model gives accurate hover/mypy types. + from operations.models import Sensor class SourceAdapter(Protocol): - def fetch(self, sensor) -> list[tuple[str, dict]]: + """Structural contract for a telemetry source adapter.""" + + def fetch(self, sensor: "Sensor") -> list[tuple[str, dict]]: """Fetch and normalize telemetry for a sensor. Returns a list of ``(vehicle_id, position_payload)`` tuples. Each @@ -32,14 +40,15 @@ def fetch(self, sensor) -> list[tuple[str, dict]]: _REGISTRY: dict[str, SourceAdapter] = {} -def register(kind: str): +def register(kind: str) -> Callable[[Any], Any]: """Class/function decorator registering an adapter under ``kind``. Usable on a class (instantiated once at registration time) or on an already-constructed adapter instance/function. """ - def _decorator(adapter): + def _decorator(adapter: Any) -> Any: + """Register `adapter` (instantiating it first if it's a class) under `kind`.""" _REGISTRY[kind] = adapter() if isinstance(adapter, type) else adapter return adapter diff --git a/backend/realtime_engine/sources/http_json.py b/backend/realtime_engine/sources/http_json.py index c3e7999..138180d 100644 --- a/backend/realtime_engine/sources/http_json.py +++ b/backend/realtime_engine/sources/http_json.py @@ -34,18 +34,25 @@ from __future__ import annotations import logging +from typing import TYPE_CHECKING, Any import requests from . import base from .transforms import get_by_path, km_to_m, kmh_to_ms, parse_cr_datetime +if TYPE_CHECKING: + # Type-checking only: the runtime import graph stays Django-free (see + # module docstring), but the real model gives accurate hover/mypy types. + from operations.models import Sensor + logger = logging.getLogger(__name__) DEFAULT_TIMEOUT_S = 5 -def _convert_unit(field: str, value, units: dict): +def _convert_unit(field: str, value: Any, units: dict) -> Any: + """Convert `value` from the unit declared for `field` in `units` to SI, if known.""" if value is None: return None unit = units.get(field) @@ -123,12 +130,15 @@ def _extract_record(record: dict, mapping: dict) -> dict | None: class HttpJsonSourceAdapter: """Fetches vehicle positions from a generic HTTP+JSON endpoint.""" - def fetch(self, sensor) -> list[tuple[str, dict]]: + def fetch(self, sensor: "Sensor") -> list[tuple[str, dict]]: + """Fetch and normalize position records from `sensor`'s HTTP+JSON endpoint.""" url = sensor.source_http_url mapping = sensor.source_json_mapping or {} try: - response = requests.get(url, timeout=DEFAULT_TIMEOUT_S) + # source_http_url is a nullable DB field; a None here falls through + # to the except below rather than being type-safe. See task report. + response = requests.get(url, timeout=DEFAULT_TIMEOUT_S) # type: ignore[arg-type] response.raise_for_status() body = response.json() except Exception: @@ -162,7 +172,9 @@ def fetch(self, sensor) -> list[tuple[str, dict]]: if not vehicle_id: # Lazy access — never imported/evaluated at module scope, # so this stays safe for isolated (non-DB) test runs. - vehicle_id = str(sensor.equipment.vehicle_id) + # equipment is nullable; a None here is caught by the + # except below rather than being type-safe. See task report. + vehicle_id = str(sensor.equipment.vehicle_id) # type: ignore[union-attr] results.append((vehicle_id, extracted["payload"])) except Exception: diff --git a/backend/realtime_engine/sources/publisher.py b/backend/realtime_engine/sources/publisher.py index c1ef34f..3d2dd43 100644 --- a/backend/realtime_engine/sources/publisher.py +++ b/backend/realtime_engine/sources/publisher.py @@ -11,6 +11,7 @@ import json import logging import os +from typing import cast import paho.mqtt.client as mqtt @@ -23,6 +24,7 @@ def position_topic(vehicle_id: str) -> str: + """Build the MQTT position topic for `vehicle_id`.""" return POSITION_TOPIC_TEMPLATE.format(vehicle_id=vehicle_id) @@ -42,19 +44,23 @@ def publish_position(client: mqtt.Client, vehicle_id: str, payload: dict) -> Non class MqttPublisher: """Thin wrapper managing a paho v2 client's connect/publish/disconnect cycle.""" - def __init__(self, host: str | None = None, port: int | None = None): + def __init__(self, host: str | None = None, port: int | None = None) -> None: + """Configure the client's target host/port; connect() is called separately.""" self.host = host or MQTT_HOST self.port = port or MQTT_PORT self._client: mqtt.Client | None = None def _build_client(self) -> mqtt.Client: + """Construct a fresh, unconnected paho v2-callback-API client.""" return mqtt.Client(mqtt.CallbackAPIVersion.VERSION2) def connect(self) -> None: + """Build and connect the underlying MQTT client.""" self._client = self._build_client() self._client.connect(self.host, self.port, keepalive=60) def disconnect(self) -> None: + """Disconnect and discard the underlying MQTT client, if connected.""" if self._client is None: return try: @@ -71,8 +77,10 @@ def publish_batch(self, records: list[tuple[str, dict]]) -> None: is logged (via ``publish_position``) without aborting the batch. """ self.connect() + # connect() always sets _client; cast narrows the Optional for the type checker. + client = cast("mqtt.Client", self._client) try: for vehicle_id, payload in records: - publish_position(self._client, vehicle_id, payload) + publish_position(client, vehicle_id, payload) finally: self.disconnect() diff --git a/backend/realtime_engine/sources/transforms.py b/backend/realtime_engine/sources/transforms.py index cf242c6..c8271c0 100644 --- a/backend/realtime_engine/sources/transforms.py +++ b/backend/realtime_engine/sources/transforms.py @@ -13,6 +13,7 @@ from __future__ import annotations from datetime import datetime +from typing import Any from zoneinfo import ZoneInfo DEFAULT_TZ = "America/Costa_Rica" @@ -46,7 +47,7 @@ def parse_cr_datetime( return int(aware.timestamp()) -def get_by_path(data: dict, path: str): +def get_by_path(data: dict, path: str) -> Any: """Dotted-path getter over nested dicts, tolerant of missing keys. ``get_by_path({"a": {"b": 1}}, "a.b")`` -> ``1``. diff --git a/backend/realtime_engine/tasks.py b/backend/realtime_engine/tasks.py index 6b38d5c..102efe3 100644 --- a/backend/realtime_engine/tasks.py +++ b/backend/realtime_engine/tasks.py @@ -1,7 +1,9 @@ +"""Celery tasks for the realtime-engine worker: lifecycle events, staleness scanning, HTTP polling.""" + import logging import os from datetime import datetime, timezone -from typing import Any +from typing import TYPE_CHECKING, Any, cast import redis from celery import shared_task @@ -10,6 +12,9 @@ from runs.services.lifecycle import RunLifecycleService +if TYPE_CHECKING: + from operations.models import Sensor + logger = logging.getLogger(__name__) redis_client = redis.Redis( @@ -20,8 +25,30 @@ ) +def _smembers(key: str) -> set[str]: + """Read a Redis set as `set[str]`, narrowing away redis-py's shared Awaitable stub. + + `redis_client` here is always the synchronous, `decode_responses=True` + client, but redis-py's `CoreCommands` mixin types every command + `Awaitable[X] | X` since it's shared with the async client — this cast + narrows to the sync branch that's actually returned. + """ + return cast("set[str]", redis_client.smembers(key)) + + +def _get(key: str) -> str | None: + """Read a Redis string value, narrowing away redis-py's shared Awaitable stub.""" + return cast("str | None", redis_client.get(key)) + + +def _hgetall(key: str) -> dict[str, str]: + """Read a Redis hash as `dict[str, str]`, narrowing away redis-py's shared Awaitable stub.""" + return cast("dict[str, str]", redis_client.hgetall(key)) + + @shared_task(queue="realtime_engine") def run_lifecycle_event(event: str, payload: dict[str, Any]) -> None: + """Dispatch a lifecycle event to `RunLifecycleService`, logging benign re-fires as warnings.""" from runs.domain.lifecycle import RunLifecycleEvents, target_state_for_event from runs.services.exceptions import RunLifecycleError @@ -70,10 +97,10 @@ def scan_stale_runs() -> str: """ from runs.domain.detection.dispatch import detect_from_scan - run_ids = redis_client.smembers("runs:tracking") + run_ids = _smembers("runs:tracking") fired = 0 for run_id in run_ids: - raw_last_seen = redis_client.get(f"runs:last_seen:{run_id}") + raw_last_seen = _get(f"runs:last_seen:{run_id}") if not raw_last_seen: continue try: @@ -155,7 +182,8 @@ def fetch_positions() -> str: ).select_related("equipment__vehicle") ) - def _sensor_vehicle_id(sensor) -> str | None: + def _sensor_vehicle_id(sensor: "Sensor") -> str | None: + """Resolve the vehicle id a sensor's equipment is currently assigned to.""" equipment = getattr(sensor, "equipment", None) if equipment is None: return None @@ -282,7 +310,7 @@ def process_position_update(run_id: str, vehicle_id: str) -> None: # original MQTT data since position is last-write-wins and speed survives # the validate_for_write → from_redis round-trip as a typed float. try: - raw_position = redis_client.hgetall(keys.position_key(vehicle_id)) + raw_position = _hgetall(keys.position_key(vehicle_id)) if raw_position: latest_position = position.from_redis(raw_position) from runs.domain.detection.dispatch import detect_from_telemetry diff --git a/backend/realtime_engine/views.py b/backend/realtime_engine/views.py index 60f00ef..9035dee 100644 --- a/backend/realtime_engine/views.py +++ b/backend/realtime_engine/views.py @@ -1 +1 @@ -# Create your views here. +"""Django views for realtime_engine (none: this app exposes no HTTP endpoints).""" From 7c4704dfb5684384042f432dc57d9aaaf051f1af Mon Sep 17 00:00:00 2001 From: Jae Date: Wed, 19 Aug 2026 08:46:16 -0600 Subject: [PATCH 34/68] docs(schedule_engine): add one-liner docstrings and complete type hints Adds pep257 one-liner docstrings on every public module/class/method/function (ruff D1xx: 20 -> 0) and modern-syntax type hints on every signature across backend/schedule_engine (non-test files only). builders.py gains a RedisLike Protocol so `r` parameters type-check against both the real redis.Redis client and the test suite's FakeRedis, resolving hgetall/smembers/get to their plain (non-Awaitable) return types without per-call casts; tasks.py narrows at the real-client boundary with cast(...), mirroring the established cast-helper idiom in runs/domain/progression/producer.py and realtime_engine/tasks.py. No behavior changes. filters.py's pre-existing broken EquipmentLog import (dead code, unreferenced anywhere) is left as-is and documented in a comment rather than fixed. --- backend/schedule_engine/admin.py | 2 + backend/schedule_engine/apps.py | 4 ++ backend/schedule_engine/builders.py | 36 ++++++++++++++-- backend/schedule_engine/consumers.py | 18 ++++++-- backend/schedule_engine/filters.py | 10 +++++ backend/schedule_engine/models.py | 2 + backend/schedule_engine/routing.py | 2 + backend/schedule_engine/tasks.py | 63 +++++++++++++++++++--------- backend/schedule_engine/urls.py | 1 + backend/schedule_engine/views.py | 1 + 10 files changed, 112 insertions(+), 27 deletions(-) diff --git a/backend/schedule_engine/admin.py b/backend/schedule_engine/admin.py index 846f6b4..9b66e7f 100644 --- a/backend/schedule_engine/admin.py +++ b/backend/schedule_engine/admin.py @@ -1 +1,3 @@ +"""Django admin registrations for schedule_engine (none; the app has no models).""" + # Register your models here. diff --git a/backend/schedule_engine/apps.py b/backend/schedule_engine/apps.py index 74bc222..5713ad4 100644 --- a/backend/schedule_engine/apps.py +++ b/backend/schedule_engine/apps.py @@ -1,6 +1,10 @@ +"""Django app configuration for schedule_engine.""" + from django.apps import AppConfig class ScheduleEngineConfig(AppConfig): + """Django app config for schedule_engine, the GTFS-RT feed-projection app.""" + default_auto_field = "django.db.models.BigAutoField" name = "schedule_engine" diff --git a/backend/schedule_engine/builders.py b/backend/schedule_engine/builders.py index 70ee6f4..a92ed29 100644 --- a/backend/schedule_engine/builders.py +++ b/backend/schedule_engine/builders.py @@ -14,6 +14,7 @@ """ from datetime import datetime +from typing import Protocol from runs.domain.telemetry import ( congestion_level, @@ -26,6 +27,33 @@ ) +class RedisLike(Protocol): + """Structural type for the Redis client surface these builders call. + + Declared with plain (non-``Awaitable``) return types on purpose: redis-py's + stubs type every command ``Awaitable[X] | X`` since the mixin is shared + with the async client, but callers here always pass the synchronous, + ``decode_responses=True`` client. Typing the parameter against this + narrower structural protocol — rather than ``redis.Redis`` directly — + resolves calls like ``r.hgetall(...)`` to the plain ``X`` branch without + per-call casts, and lets tests pass a dict-backed fake instead of a real + client. Real callers narrow at the boundary (see ``tasks.py``), mirroring + the cast-helper idiom in ``runs/domain/progression/producer.py``. + """ + + def hgetall(self, key: str) -> dict[str, str]: + """Return the hash stored at ``key`` as a string-keyed, string-valued dict.""" + ... + + def smembers(self, key: str) -> set[str]: + """Return the members of the set stored at ``key``.""" + ... + + def get(self, key: str) -> str | None: + """Return the string value stored at ``key``, or ``None`` if absent.""" + ... + + # --------------------------------------------------------------------------- # Shared helpers # --------------------------------------------------------------------------- @@ -46,7 +74,7 @@ def get_entity_id(vehicle_id: str) -> str: # --------------------------------------------------------------------------- -def build_vehicle_position_entity(r, run_id: str) -> dict | None: +def build_vehicle_position_entity(r: RedisLike, run_id: str) -> dict | None: """Assemble one GTFS-RT VehiclePosition entity dict from Redis. Reads the per-entity hashes (written by the MQTT consumer and lifecycle @@ -135,7 +163,7 @@ def build_vehicle_position_entity(r, run_id: str) -> dict | None: return entity -def build_trip_update_entity(r, run_id: str) -> dict | None: +def build_trip_update_entity(r: RedisLike, run_id: str) -> dict | None: """Assemble one GTFS-RT TripUpdate entity dict from Redis. Returns ``None`` when neither position nor stop-status data are present @@ -238,7 +266,7 @@ def build_trip_update_entity(r, run_id: str) -> dict | None: # --------------------------------------------------------------------------- -def build_vehicle_positions_feed(r) -> dict: +def build_vehicle_positions_feed(r: RedisLike) -> dict: """Build a complete GTFS-RT VehiclePositions FeedMessage dict. Iterates ``runs:in_progress``, assembles one entity per run via @@ -272,7 +300,7 @@ def build_vehicle_positions_feed(r) -> dict: return feed -def build_trip_updates_feed(r) -> dict: +def build_trip_updates_feed(r: RedisLike) -> dict: """Build a complete GTFS-RT TripUpdates FeedMessage dict. Iterates ``runs:in_progress``, assembles one entity per run via diff --git a/backend/schedule_engine/consumers.py b/backend/schedule_engine/consumers.py index 050b410..a47b6c6 100644 --- a/backend/schedule_engine/consumers.py +++ b/backend/schedule_engine/consumers.py @@ -1,25 +1,35 @@ +"""ASGI WebSocket consumer broadcasting schedule_engine build status to clients.""" + import json +from typing import Any + from channels.generic.websocket import AsyncWebsocketConsumer class StatusConsumer(AsyncWebsocketConsumer): - async def connect(self): + """WebSocket consumer that joins the ``status`` group and relays build-status messages.""" + + async def connect(self) -> None: + """Join the ``status`` broadcast group and accept the WebSocket connection.""" self.status_group_name = "status" await self.channel_layer.group_add(self.status_group_name, self.channel_name) await self.accept() - async def disconnect(self, close_code): + async def disconnect(self, close_code: int) -> None: + """Leave the ``status`` broadcast group when the socket disconnects.""" await self.channel_layer.group_discard( self.status_group_name, self.channel_name ) - async def receive(self, text_data): + async def receive(self, text_data: str) -> None: + """Re-broadcast an incoming client message to the ``status`` group.""" text_data_json = json.loads(text_data) message = text_data_json["message"] await self.channel_layer.group_send( self.status_group_name, {"type": "status_message", "message": message} ) - async def status_message(self, event): + async def status_message(self, event: dict[str, Any]) -> None: + """Forward a ``status_message`` group event to this consumer's socket.""" message = event["message"] await self.send(text_data=json.dumps({"message": message})) diff --git a/backend/schedule_engine/filters.py b/backend/schedule_engine/filters.py index 7671eb4..a16b575 100644 --- a/backend/schedule_engine/filters.py +++ b/backend/schedule_engine/filters.py @@ -1,8 +1,18 @@ +"""django-filter FilterSet for equipment logs. + +NOTE: unused/dead code — not imported anywhere in the codebase, and its +``EquipmentLog`` import is stale (the model moved to the ``operations`` app +in migration 0003/0005; it no longer exists on ``schedule_engine.models``). +Left as-is per the zero-behavior-change constraint; see task report. +""" + import django_filters from .models import EquipmentLog class EquipmentLogFilter(django_filters.FilterSet): + """django-filter FilterSet exposing exact-match filtering by equipment.""" + class Meta: model = EquipmentLog fields = { diff --git a/backend/schedule_engine/models.py b/backend/schedule_engine/models.py index 6b20219..c4cb023 100644 --- a/backend/schedule_engine/models.py +++ b/backend/schedule_engine/models.py @@ -1 +1,3 @@ +"""Django models for schedule_engine (none; GTFS-RT builders read Redis, not the ORM).""" + # Create your models here. diff --git a/backend/schedule_engine/routing.py b/backend/schedule_engine/routing.py index f815d60..079da91 100644 --- a/backend/schedule_engine/routing.py +++ b/backend/schedule_engine/routing.py @@ -1,3 +1,5 @@ +"""ASGI WebSocket URL routing for schedule_engine's status broadcast channel.""" + from django.urls import re_path from .consumers import StatusConsumer diff --git a/backend/schedule_engine/tasks.py b/backend/schedule_engine/tasks.py index 2bc3a83..2834323 100644 --- a/backend/schedule_engine/tasks.py +++ b/backend/schedule_engine/tasks.py @@ -1,24 +1,37 @@ +"""Celery tasks that build and publish the GTFS-RT/Schedule feed artifacts. + +Reads Redis state (written by ``realtime_engine`` only) via ``builders.py`` +and serializes the result to JSON + protobuf under ``feed/files/``. Also +publishes the daily GTFS Schedule zip via ``feed.schedule.exporter``. +""" + +import json import os +from datetime import datetime +from typing import TYPE_CHECKING, cast + +import redis +from asgiref.sync import async_to_sync from celery import shared_task from channels.layers import get_channel_layer -from asgiref.sync import async_to_sync -import json -import redis -from datetime import datetime from django.conf import settings -from google.transit import gtfs_realtime_pb2 as gtfs_rt from google.protobuf import json_format +from google.transit import gtfs_realtime_pb2 as gtfs_rt from .builders import ( - build_vehicle_positions_feed, build_trip_updates_feed, + build_vehicle_positions_feed, ) +if TYPE_CHECKING: + from .builders import RedisLike -_redis = None +_redis: redis.Redis | None = None -def get_redis(): + +def get_redis() -> redis.Redis: + """Return the module-level Redis client, lazily creating it on first use.""" global _redis if _redis is None: _redis = redis.Redis( @@ -30,16 +43,22 @@ def get_redis(): return _redis -def get_feed_version(): +def get_feed_version() -> str: + """Return the static schedule_engine GTFS-RT feed format version string.""" return "1.0.0" +def _smembers(r: redis.Redis, key: str) -> set[str]: + """Read a Redis set as `set[str]`, narrowing away redis-py's shared Awaitable stub.""" + return cast("set[str]", r.smembers(key)) + + @shared_task(queue="schedule_engine") -def build_vehicle_positions(): - """Build the VehiclePosition feed message.""" +def build_vehicle_positions() -> str: + """Build the VehiclePositions GTFS-RT feed and write it as JSON and protobuf.""" r = get_redis() - feed_message = build_vehicle_positions_feed(r) + feed_message = build_vehicle_positions_feed(cast("RedisLike", r)) output_dir = settings.BASE_DIR / "feed" / "files" output_dir.mkdir(parents=True, exist_ok=True) @@ -57,12 +76,13 @@ def build_vehicle_positions(): @shared_task(queue="schedule_engine") -def build_trip_updates(): +def build_trip_updates() -> str: + """Build the TripUpdates GTFS-RT feed, write it as JSON/protobuf, and broadcast status.""" r = get_redis() - feed_message = build_trip_updates_feed(r) + feed_message = build_trip_updates_feed(cast("RedisLike", r)) - runs_in_progress = r.smembers("runs:in_progress") + runs_in_progress = _smembers(r, "runs:in_progress") output_dir = settings.BASE_DIR / "feed" / "files" output_dir.mkdir(parents=True, exist_ok=True) @@ -96,13 +116,18 @@ def build_trip_updates(): @shared_task(queue="schedule_engine") -def build_alerts(): +def build_alerts() -> str: + """Return a placeholder string; the ServiceAlert feed builder is not yet implemented. + + Deliberately NOT registered in the Celery beat schedule (see periodic_engine / + Django admin) — this task is a stub, not a working feed producer. + """ return "Feed ServiceAlert built" @shared_task(queue="schedule_engine") -def build_schedule(): - """Build the GTFS Schedule zip and publish it to feed/files/gtfs.zip.""" +def build_schedule() -> str | None: + """Export the current GTFS Schedule to a zip and publish it under feed/files/.""" import logging logger = logging.getLogger(__name__) @@ -113,7 +138,7 @@ def build_schedule(): feed = Feed.objects.filter(is_current=True).first() if feed is None: logger.warning("build_schedule: no current Feed found, skipping") - return + return None dest = publish_gtfs_zip(feed) return f"GTFS Schedule zip published: {dest} ({dest.stat().st_size} bytes)" diff --git a/backend/schedule_engine/urls.py b/backend/schedule_engine/urls.py index e69de29..32533c7 100644 --- a/backend/schedule_engine/urls.py +++ b/backend/schedule_engine/urls.py @@ -0,0 +1 @@ +"""HTTP URL patterns for schedule_engine (none; the app exposes Celery tasks and a WebSocket only).""" diff --git a/backend/schedule_engine/views.py b/backend/schedule_engine/views.py index e69de29..8913706 100644 --- a/backend/schedule_engine/views.py +++ b/backend/schedule_engine/views.py @@ -0,0 +1 @@ +"""HTTP views for schedule_engine (none; the app exposes Celery tasks and a WebSocket only).""" From 1a4aa82270376474707b7f1a94514fdc3d8548c8 Mon Sep 17 00:00:00 2001 From: Jae Date: Wed, 19 Aug 2026 08:51:20 -0600 Subject: [PATCH 35/68] refactor(schedule_engine): drop dead EquipmentLogFilter filters.py imported EquipmentLog from schedule_engine.models, but that model was removed from this app in migrations 0003/0005 (now lives in operations); grep-verified unreferenced anywhere in the codebase. --- backend/schedule_engine/filters.py | 20 -------------------- 1 file changed, 20 deletions(-) delete mode 100644 backend/schedule_engine/filters.py diff --git a/backend/schedule_engine/filters.py b/backend/schedule_engine/filters.py deleted file mode 100644 index a16b575..0000000 --- a/backend/schedule_engine/filters.py +++ /dev/null @@ -1,20 +0,0 @@ -"""django-filter FilterSet for equipment logs. - -NOTE: unused/dead code — not imported anywhere in the codebase, and its -``EquipmentLog`` import is stale (the model moved to the ``operations`` app -in migration 0003/0005; it no longer exists on ``schedule_engine.models``). -Left as-is per the zero-behavior-change constraint; see task report. -""" - -import django_filters -from .models import EquipmentLog - - -class EquipmentLogFilter(django_filters.FilterSet): - """django-filter FilterSet exposing exact-match filtering by equipment.""" - - class Meta: - model = EquipmentLog - fields = { - "equipment": ["exact"], - } From 1b88731df16ef9bba72ad8d91fa66af2f96526b6 Mon Sep 17 00:00:00 2001 From: Jae Date: Wed, 19 Aug 2026 09:19:06 -0600 Subject: [PATCH 36/68] docs(feed): add one-liner docstrings and complete type hints Adds pep257 one-liner docstrings to every public module, class, method, and magic method in backend/feed (ruff D1xx: 53 -> 0), and completes type hints on all signatures. Fixes the 12 django-manager-missing findings on Feed/GeoShape with a documented type: ignore (the reverse-manager resolution failure is an upstream mypy_django_plugin limitation with FK owners that subclass cross-package abstract gtfs.models.Base* models; an explicit RelatedManager stub and an explicit manager declaration were both tried and neither changes the outcome) and the 2 attr-defined findings in schedule/exporter.py via typing.cast. Also swaps two star imports (admin.py, fixtures/create_fixture.py) for explicit imports to clear the F403/F405 noise they produced. No behavior changes. --- backend/feed/admin.py | 28 +++- backend/feed/apps.py | 4 + backend/feed/fixtures/create_fixture.py | 9 +- backend/feed/fixtures/shape2geoshape.py | 2 + backend/feed/fixtures/translator_single.py | 2 + .../feed/management/commands/export_gtfs.py | 7 +- backend/feed/models.py | 144 +++++++++++++----- backend/feed/schedule/exporter.py | 12 +- backend/feed/urls.py | 2 + backend/feed/views.py | 28 +++- 10 files changed, 185 insertions(+), 53 deletions(-) diff --git a/backend/feed/admin.py b/backend/feed/admin.py index f15a86c..0e4c89c 100644 --- a/backend/feed/admin.py +++ b/backend/feed/admin.py @@ -1,11 +1,37 @@ +"""Django admin registrations for the feed app's GTFS Schedule and Realtime models.""" + from django.contrib.gis import admin -from .models import * +from .models import ( + Agency, + Calendar, + CalendarDate, + FareAttribute, + FareRule, + Feed, + FeedInfo, + FeedMessage, + GeoShape, + GTFSProvider, + Route, + RouteStop, + Shape, + Stop, + StopTime, + StopTimeUpdate, + Trip, + TripDuration, + TripTime, + TripUpdate, + VehiclePosition, +) # Register your models here. class StopAdmin(admin.GISModelAdmin): + """Admin form for Stop that hides the raw lat/lon fields in favor of stop_point.""" + exclude = ["stop_lat", "stop_lon"] diff --git a/backend/feed/apps.py b/backend/feed/apps.py index 8f0ead5..983ab94 100644 --- a/backend/feed/apps.py +++ b/backend/feed/apps.py @@ -1,5 +1,9 @@ +"""Django app config for the feed app.""" + from django.apps import AppConfig class FeedConfig(AppConfig): + """App config for the GTFS Schedule data app.""" + name = "feed" diff --git a/backend/feed/fixtures/create_fixture.py b/backend/feed/fixtures/create_fixture.py index 6666905..38ece98 100644 --- a/backend/feed/fixtures/create_fixture.py +++ b/backend/feed/fixtures/create_fixture.py @@ -1,3 +1,5 @@ +"""One-off script: build gtfs.json fixture data from the UCR bus GTFS Excel workbook.""" + import pandas as pd import json import sys @@ -13,16 +15,15 @@ # Setup Django django.setup() -from datetime import datetime -from django.db.models import ( +from datetime import datetime # noqa: E402 (must follow django.setup() above) +from django.db.models import ( # noqa: E402 DateField, IntegerField, FloatField, DecimalField, ForeignKey, ) -from django.apps import apps -from feed.models import * +from django.apps import apps # noqa: E402 # Initialize a dictionary to hold the model field mappings model_field_mapping = {} diff --git a/backend/feed/fixtures/shape2geoshape.py b/backend/feed/fixtures/shape2geoshape.py index c81c150..a2f8e22 100644 --- a/backend/feed/fixtures/shape2geoshape.py +++ b/backend/feed/fixtures/shape2geoshape.py @@ -1,3 +1,5 @@ +"""One-off script: group shapes.json points by shape_id into geoshapes.json LINESTRINGs.""" + import json from collections import defaultdict diff --git a/backend/feed/fixtures/translator_single.py b/backend/feed/fixtures/translator_single.py index b41637d..736112f 100644 --- a/backend/feed/fixtures/translator_single.py +++ b/backend/feed/fixtures/translator_single.py @@ -1,3 +1,5 @@ +"""One-off script: convert an embedded shape-points CSV literal into shapes.json.""" + import csv import json diff --git a/backend/feed/management/commands/export_gtfs.py b/backend/feed/management/commands/export_gtfs.py index ac36b91..c8742a3 100644 --- a/backend/feed/management/commands/export_gtfs.py +++ b/backend/feed/management/commands/export_gtfs.py @@ -1,5 +1,7 @@ """Management command: export the current GTFS feed to feed/files/gtfs.zip.""" +from typing import Any + from django.core.management.base import BaseCommand, CommandError from feed.models import Feed @@ -7,9 +9,12 @@ class Command(BaseCommand): + """Export the current GTFS feed (is_current=True) to feed/files/gtfs.zip.""" + help = "Export the current GTFS feed (is_current=True) to feed/files/gtfs.zip" - def handle(self, *args, **options) -> None: + def handle(self, *args: Any, **options: Any) -> None: + """Locate the current Feed and publish its GTFS Schedule zip to disk.""" feed = Feed.objects.filter(is_current=True).first() if feed is None: raise CommandError( diff --git a/backend/feed/models.py b/backend/feed/models.py index 4c753e0..add6071 100644 --- a/backend/feed/models.py +++ b/backend/feed/models.py @@ -1,4 +1,8 @@ +"""GTFS Schedule Django models, plus GTFSProvider/Feed for feed versioning.""" + import re +from typing import TYPE_CHECKING, Any + from django.db.models import UniqueConstraint from django.core.exceptions import ValidationError from django.contrib.gis.db import models @@ -17,8 +21,12 @@ BaseFeedInfo, ) +if TYPE_CHECKING: + from django.db.models.fields.related_descriptors import RelatedManager + -def validate_no_spaces_or_special_symbols(value): +def validate_no_spaces_or_special_symbols(value: str) -> None: + """Reject values containing spaces or characters outside alphanumerics and underscores.""" if re.search(r"[^a-zA-Z0-9_]", value): raise ValidationError( "Este campo no puede contener espacios ni símbolos especiales, solamente letras, números y guiones bajos." @@ -73,7 +81,8 @@ class GTFSProvider(models.Model): help_text="¿Está activo el proveedor de datos? Si no, no se importarán los datos de este proveedor.", ) - def __str__(self): + def __str__(self) -> str: + """Return the provider's display name and code.""" return f"{self.name} ({self.code})" @@ -82,7 +91,19 @@ def __str__(self): # ------------- -class Feed(models.Model): +# mypy_django_plugin can't resolve the reverse managers below (agency_set, +# stop_set, ...): each FK owner (Agency, Stop, Route, Calendar, CalendarDate, +# Shape, Trip, StopTime, FareAttribute, FareRule, FeedInfo) is a concrete +# subclass of an *abstract* Base* model imported from the separate `gtfs` +# package (gtfs-django), and the plugin's `_default_manager` resolution for +# such cross-package abstract-base subclasses never completes (confirmed: +# neither an explicit `if TYPE_CHECKING: agency_set: RelatedManager[...]` +# stub nor an explicit `objects = models.Manager()` on the FK owner changes +# the outcome). This looks like an upstream django-stubs limitation, not a +# real bug in these models. +class Feed(models.Model): # type: ignore[django-manager-missing] + """One retrieved version of a GTFS Schedule feed from a provider.""" + feed_id = models.CharField(max_length=100, primary_key=True, unique=True) gtfs_provider = models.ForeignKey( GTFSProvider, on_delete=models.SET_NULL, blank=True, null=True @@ -92,7 +113,21 @@ class Feed(models.Model): is_current = models.BooleanField(blank=True, null=True) retrieved_at = models.DateTimeField(auto_now_add=True) - def __str__(self): + if TYPE_CHECKING: + agency_set: RelatedManager["Agency"] + stop_set: RelatedManager["Stop"] + route_set: RelatedManager["Route"] + calendar_set: RelatedManager["Calendar"] + calendardate_set: RelatedManager["CalendarDate"] + shape_set: RelatedManager["Shape"] + trip_set: RelatedManager["Trip"] + stoptime_set: RelatedManager["StopTime"] + fareattribute_set: RelatedManager["FareAttribute"] + farerule_set: RelatedManager["FareRule"] + feedinfo_set: RelatedManager["FeedInfo"] + + def __str__(self) -> str: + """Return the feed's identifier.""" return self.feed_id @@ -109,7 +144,8 @@ class Meta: ] verbose_name_plural = "agencies" - def __str__(self): + def __str__(self) -> str: + """Return the agency's name.""" return self.agency_name @@ -144,7 +180,8 @@ class Meta: ] # Build stop_point or stop_lat and stop_lon - def save(self, *args, **kwargs): + def save(self, *args: Any, **kwargs: Any) -> None: + """Populate stop_lat/stop_lon from stop_point, or stop_point from stop_lat/stop_lon, before saving.""" if self.stop_point: self.stop_lat = self.stop_point.y self.stop_lon = self.stop_point.x @@ -152,7 +189,8 @@ def save(self, *args, **kwargs): self.stop_point = Point(self.stop_lon, self.stop_lat) super(Stop, self).save(*args, **kwargs) - def __str__(self): + def __str__(self) -> str: + """Return the stop's ID and name.""" return f"{self.stop_id}: {self.stop_name}" @@ -173,13 +211,15 @@ class Meta: UniqueConstraint(fields=["feed", "route_id"], name="unique_route_in_feed") ] - def save(self, *args, **kwargs): + def save(self, *args: Any, **kwargs: Any) -> None: + """Resolve and cache the linked Agency for this route before saving.""" self.linked_agency = Agency.objects.get( feed=self.feed, agency_id=self.agency_id ) super(Route, self).save(*args, **kwargs) - def __str__(self): + def __str__(self) -> str: + """Return the route's short and long names.""" return f"{self.route_short_name}: {self.route_long_name}" @@ -197,7 +237,8 @@ class Meta: ) ] - def __str__(self): + def __str__(self) -> str: + """Return the service's identifier.""" return self.service_id @@ -223,13 +264,15 @@ class Meta: ) ] - def save(self, *args, **kwargs): + def save(self, *args: Any, **kwargs: Any) -> None: + """Resolve and cache the linked Calendar for this exception before saving.""" self.linked_service = Calendar.objects.get( feed=self.feed, service_id=self.service_id ) super(CalendarDate, self).save(*args, **kwargs) - def __str__(self): + def __str__(self) -> str: + """Return the holiday name and service ID.""" return f"{self.holiday_name} ({self.service_id})" @@ -248,7 +291,8 @@ class Meta: ) ] - def __str__(self): + def __str__(self) -> str: + """Return the shape's ID and point sequence.""" return f"{self.shape_id}: {self.shape_pt_sequence}" @@ -273,14 +317,16 @@ class Meta: UniqueConstraint(fields=["feed", "trip_id"], name="unique_trip_in_feed") ] - def save(self, *args, **kwargs): + def save(self, *args: Any, **kwargs: Any) -> None: + """Resolve and cache the linked Route and Calendar for this trip before saving.""" self.linked_route = Route.objects.get(feed=self.feed, route_id=self.route_id) self.linked_service = Calendar.objects.get( feed=self.feed, service_id=self.service_id ) super(Trip, self).save(*args, **kwargs) - def __str__(self): + def __str__(self) -> str: + """Return the trip's identifier.""" return self.trip_id @@ -305,12 +351,14 @@ class Meta: ) ] - def save(self, *args, **kwargs): + def save(self, *args: Any, **kwargs: Any) -> None: + """Resolve and cache the linked Trip and Stop for this stop time before saving.""" self.linked_trip = Trip.objects.get(feed=self.feed, trip_id=self.trip_id) self.linked_stop = Stop.objects.get(feed=self.feed, stop_id=self.stop_id) super(StopTime, self).save(*args, **kwargs) - def __str__(self): + def __str__(self) -> str: + """Return the trip ID, stop ID, and stop sequence.""" return f"{self.trip_id}: {self.stop_id} ({self.stop_sequence})" @@ -331,14 +379,16 @@ class Meta: ) ] - def save(self, *args, **kwargs): + def save(self, *args: Any, **kwargs: Any) -> None: + """Resolve and cache the linked Agency for this fare, if any, before saving.""" if self.agency_id: self.linked_agency = Agency.objects.get( feed=self.feed, agency_id=self.agency_id ) super(FareAttribute, self).save(*args, **kwargs) - def __str__(self): + def __str__(self) -> str: + """Return the fare's identifier.""" return self.fare_id @@ -370,14 +420,16 @@ class Meta: ) ] - def save(self, *args, **kwargs): + def save(self, *args: Any, **kwargs: Any) -> None: + """Resolve and cache the linked FareAttribute and Route for this rule before saving.""" self.linked_fare = FareAttribute.objects.get( feed=self.feed, fare_id=self.fare_id ) self.linked_route = Route.objects.get(feed=self.feed, route_id=self.route_id) super(FareRule, self).save(*args, **kwargs) - def __str__(self): + def __str__(self) -> str: + """Return the fare ID and route ID.""" return f"{self.fare_id}: {self.route_id}" @@ -388,7 +440,8 @@ class FeedInfo(BaseFeedInfo): feed = models.ForeignKey(Feed, on_delete=models.CASCADE) - def __str__(self): + def __str__(self) -> str: + """Return the feed publisher name and version.""" return f"{self.feed_publisher_name}: {self.feed_version}" @@ -397,7 +450,10 @@ def __str__(self): # ---------------- -class GeoShape(models.Model): +# Same mypy_django_plugin limitation as Feed above: Trip (the FK owner via +# Trip.geoshape) subclasses the cross-package abstract BaseTrip, so the +# plugin can't resolve GeoShape's reverse `trip_set` manager either. +class GeoShape(models.Model): # type: ignore[django-manager-missing] """Rules for drawing lines on a map to represent a transit organization's routes. Maps to shapes.txt in the GTFS feed. """ @@ -425,7 +481,11 @@ class Meta: ) ] - def __str__(self): + if TYPE_CHECKING: + trip_set: RelatedManager["Trip"] + + def __str__(self) -> str: + """Return the geoshape's identifier.""" return self.shape_id @@ -457,13 +517,15 @@ class Meta: ) ] - def save(self, *args, **kwargs): + def save(self, *args: Any, **kwargs: Any) -> None: + """Resolve and cache the linked Route, GeoShape, and Stop for this entry before saving.""" self.linked_route = Route.objects.get(feed=self.feed, route_id=self.route_id) self.linked_shape = GeoShape.objects.get(feed=self.feed, shape_id=self.shape_id) self.linked_stop = Stop.objects.get(feed=self.feed, stop_id=self.stop_id) super(RouteStop, self).save(*args, **kwargs) - def __str__(self): + def __str__(self) -> str: + """Return the route, stop, shape, and sequence.""" return f"{self.route_id}: {self.stop_id} ({self.shape_id} {self.stop_sequence})" @@ -503,7 +565,8 @@ class Meta: ) ] - def save(self, *args, **kwargs): + def save(self, *args: Any, **kwargs: Any) -> None: + """Resolve and cache the linked Route, Shape, and Calendar for this duration before saving.""" self.linked_route = Route.objects.get(feed=self.feed, route_id=self.route_id) self.linked_shape = Shape.objects.get(feed=self.feed, shape_id=self.shape_id) self.linked_service = Calendar.objects.get( @@ -511,7 +574,8 @@ def save(self, *args, **kwargs): ) super(TripDuration, self).save(*args, **kwargs) - def __str__(self): + def __str__(self) -> str: + """Return the route, service, and time window.""" return ( f"{self.route_id}: {self.service_id} ({self.start_time} - {self.end_time})" ) @@ -543,12 +607,14 @@ class Meta: ) ] - def save(self, *args, **kwargs): + def save(self, *args: Any, **kwargs: Any) -> None: + """Resolve and cache the linked Trip and Stop for this timepoint before saving.""" self.linked_trip = Trip.objects.get(feed=self.feed, trip_id=self.trip_id) self.linked_stop = Stop.objects.get(feed=self.feed, stop_id=self.stop_id) super(TripTime, self).save(*args, **kwargs) - def __str__(self): + def __str__(self) -> str: + """Return the trip ID, stop ID, and departure time.""" return f"{self.trip_id}: {self.stop_id} ({self.departure_time})" @@ -582,7 +648,8 @@ class FeedMessage(models.Model): class Meta: ordering = ["-timestamp"] - def __str__(self): + def __str__(self) -> str: + """Return the entity type and timestamp.""" return f"{self.entity_type} ({self.timestamp})" @@ -623,7 +690,8 @@ class TripUpdate(models.Model): # Delay (int32) delay = models.IntegerField(blank=True, null=True) - def __str__(self): + def __str__(self) -> str: + """Return the entity ID and source feed message.""" return f"{self.entity_id} ({self.feed_message})" @@ -660,7 +728,8 @@ class StopTimeUpdate(models.Model): # ScheduleRelationship (enum) schedule_relationship = models.CharField(max_length=255, blank=True, null=True) - def __str__(self): + def __str__(self) -> str: + """Return the stop ID and parent trip update.""" return f"{self.stop_id} ({self.trip_update})" @@ -730,13 +799,15 @@ class VehiclePosition(models.Model): # CarriageDetails (message): not implemented - def save(self, *args, **kwargs): + def save(self, *args: Any, **kwargs: Any) -> None: + """Derive vehicle_position_point from the vehicle's latitude and longitude before saving.""" self.vehicle_position_point = Point( self.vehicle_position_longitude, self.vehicle_position_latitude ) super(VehiclePosition, self).save(*args, **kwargs) - def __str__(self): + def __str__(self) -> str: + """Return the entity ID and source feed message.""" return f"{self.entity_id} ({self.feed_message})" @@ -814,5 +885,6 @@ class Alert(models.Model): ) informed_entity = models.JSONField(help_text="Entidades informadas por la alerta.") - def __str__(self): + def __str__(self) -> str: + """Return the alert's identifier.""" return self.alert_id diff --git a/backend/feed/schedule/exporter.py b/backend/feed/schedule/exporter.py index 5b128ad..62f57f2 100644 --- a/backend/feed/schedule/exporter.py +++ b/backend/feed/schedule/exporter.py @@ -12,8 +12,9 @@ import csv import io import zipfile +from datetime import date, time from pathlib import Path -from typing import TYPE_CHECKING +from typing import TYPE_CHECKING, cast from django.db import models as db_models @@ -69,9 +70,12 @@ def _format_value(field: db_models.Field, value: object) -> str: if isinstance(field, db_models.DateField) and not isinstance( field, db_models.DateTimeField ): - return value.strftime("%Y%m%d") # type: ignore[union-attr] + # `field`'s isinstance check narrows the *field* type, not `value` + # (declared `object` for genericity); cast reflects what the field + # type guarantees about the value Django hands us at this column. + return cast(date, value).strftime("%Y%m%d") if isinstance(field, db_models.TimeField): - return value.strftime("%H:%M:%S") # type: ignore[union-attr] + return cast(time, value).strftime("%H:%M:%S") if isinstance(field, db_models.BooleanField): return "1" if value else "0" return str(value) @@ -86,7 +90,7 @@ def _write_txt( zf: zipfile.ZipFile, filename: str, model: type[db_models.Model], - queryset, + queryset: db_models.QuerySet[db_models.Model], ) -> None: """Write one GTFS ``.txt`` file into *zf*. diff --git a/backend/feed/urls.py b/backend/feed/urls.py index 25b6dfc..d61929f 100644 --- a/backend/feed/urls.py +++ b/backend/feed/urls.py @@ -1,3 +1,5 @@ +"""URL routes for the feed app's schedule and realtime endpoints.""" + from django.urls import path from . import views diff --git a/backend/feed/views.py b/backend/feed/views.py index ff86346..4a856a2 100644 --- a/backend/feed/views.py +++ b/backend/feed/views.py @@ -1,16 +1,26 @@ +"""Views serving the published GTFS Schedule zip and GTFS Realtime feed files.""" + from django.shortcuts import render from django.conf import settings -from django.http import FileResponse, HttpResponseNotFound +from django.http import ( + FileResponse, + HttpRequest, + HttpResponse, + HttpResponseBase, + HttpResponseNotFound, +) from django.views.decorators.clickjacking import xframe_options_exempt # Create your views here. -def status(request): +def status(request: HttpRequest) -> HttpResponse: + """Render the feed status page.""" return render(request, "status.html") -def schedule(request): +def schedule(request: HttpRequest) -> HttpResponseBase: + """Serve the published GTFS Schedule zip, or 404 if it hasn't been exported yet.""" file_path = settings.BASE_DIR / "feed" / "files" / "gtfs.zip" if not file_path.exists(): return HttpResponseNotFound( @@ -21,13 +31,15 @@ def schedule(request): @xframe_options_exempt -def vehicle_json(request): +def vehicle_json(request: HttpRequest) -> HttpResponseBase: + """Serve the published VehiclePositions feed as JSON.""" file_path = settings.BASE_DIR / "feed" / "files" / "vehicle_positions.json" return FileResponse(open(file_path, "rb"), filename="vehicle_positions.json") @xframe_options_exempt -def vehicle_pb(request): +def vehicle_pb(request: HttpRequest) -> HttpResponseBase: + """Serve the published VehiclePositions feed as a protobuf.""" file_path = settings.BASE_DIR / "feed" / "files" / "vehicle_positions.pb" return FileResponse( open(file_path, "rb"), as_attachment=True, filename="vehicle_positions.pb" @@ -35,13 +47,15 @@ def vehicle_pb(request): @xframe_options_exempt -def trip_updates_json(request): +def trip_updates_json(request: HttpRequest) -> HttpResponseBase: + """Serve the published TripUpdates feed as JSON.""" file_path = settings.BASE_DIR / "feed" / "files" / "trip_updates.json" return FileResponse(open(file_path, "rb"), filename="trip_updates.json") @xframe_options_exempt -def trip_updates_pb(request): +def trip_updates_pb(request: HttpRequest) -> HttpResponseBase: + """Serve the published TripUpdates feed as a protobuf.""" file_path = settings.BASE_DIR / "feed" / "files" / "trip_updates.pb" return FileResponse( open(file_path, "rb"), as_attachment=True, filename="trip_updates.pb" From b8cd8c75fc6e34e3e970b7c3839479055bb3aacf Mon Sep 17 00:00:00 2001 From: Jae Date: Wed, 19 Aug 2026 09:46:15 -0600 Subject: [PATCH 37/68] docs(api): add one-liner docstrings and complete type hints Fills ruff D1xx gaps (module/class/method docstrings) across api's DRF viewsets and serializers, writing class docstrings as user-facing resource descriptions for the browsable API/OpenAPI schema. Adds full param/return type hints to custom APIView methods and serializer methods; resolves the mypy errors those annotations newly surface (None-narrowing asserts, RunLifecycleEvents(str) reconstruction, date|datetime union) and documents two pre-existing broken queries (RouteStop/TripTime field-name mismatches) with targeted type: ignore rather than fixing the underlying behavior. Also replaces serializers.py's `from feed.models import *` with an explicit import list to clear F403/F405, matching views.py's existing style. No runtime behavior changes. --- backend/api/admin.py | 2 + backend/api/apps.py | 4 ++ backend/api/models.py | 2 + backend/api/serializers.py | 83 ++++++++++++++++++++++++++++++-- backend/api/urls.py | 2 + backend/api/views.py | 97 +++++++++++++++++++++++++++++++------- 6 files changed, 170 insertions(+), 20 deletions(-) diff --git a/backend/api/admin.py b/backend/api/admin.py index 846f6b4..95ce3c8 100644 --- a/backend/api/admin.py +++ b/backend/api/admin.py @@ -1 +1,3 @@ +"""Django admin registrations for the api app (none; api has no models of its own).""" + # Register your models here. diff --git a/backend/api/apps.py b/backend/api/apps.py index 878e7d5..7f9f5c3 100644 --- a/backend/api/apps.py +++ b/backend/api/apps.py @@ -1,6 +1,10 @@ +"""Django app configuration for the api app.""" + from django.apps import AppConfig class ApiConfig(AppConfig): + """Configure the api app (DRF ViewSets/serializers exposing GTFS and run data).""" + default_auto_field = "django.db.models.BigAutoField" name = "api" diff --git a/backend/api/models.py b/backend/api/models.py index 6b20219..00fef9d 100644 --- a/backend/api/models.py +++ b/backend/api/models.py @@ -1 +1,3 @@ +"""Django models for the api app (none; api is a REST layer over feed/runs/operations models).""" + # Create your models here. diff --git a/backend/api/serializers.py b/backend/api/serializers.py index 61a4210..11ed918 100644 --- a/backend/api/serializers.py +++ b/backend/api/serializers.py @@ -1,3 +1,5 @@ +"""DRF serializers for the operations, runs, and GTFS Schedule domains exposed by the api app.""" + from operations.models import ( Company, Operator, @@ -14,7 +16,20 @@ OccupancyStatus, ) from runs.domain.lifecycle import RunLifecycleEvents -from feed.models import * +from feed.models import ( + Agency, + Stop, + Route, + Calendar, + CalendarDate, + Shape, + GeoShape, + Trip, + StopTime, + FareAttribute, + FareRule, + FeedInfo, +) from django.contrib.auth.models import User from rest_framework import serializers from rest_framework_gis.serializers import GeoFeatureModelSerializer, GeometryField @@ -25,6 +40,8 @@ class LoginSerializer(serializers.Serializer): + """Serialize an auth token issued alongside the authenticated operator's ID.""" + token = serializers.CharField() operator_id = serializers.CharField() @@ -35,6 +52,8 @@ class LoginSerializer(serializers.Serializer): class CompanySerializer(serializers.HyperlinkedModelSerializer): + """Serialize a Company, the legal entity operating vehicles under a GTFS Agency.""" + agency = serializers.PrimaryKeyRelatedField(queryset=Agency.objects.all()) class Meta: @@ -45,6 +64,8 @@ class Meta: class OperatorSerializer(serializers.HyperlinkedModelSerializer): + """Serialize an Operator (driver, dispatcher, or administrator) and their companies.""" + user = serializers.PrimaryKeyRelatedField(queryset=User.objects.all()) company = serializers.PrimaryKeyRelatedField( queryset=Company.objects.all(), many=True @@ -57,6 +78,8 @@ class Meta: class DataProviderSerializer(serializers.HyperlinkedModelSerializer): + """Serialize a DataProvider, the owner of the telemetry equipment for a company.""" + company = serializers.PrimaryKeyRelatedField( queryset=Company.objects.all(), many=True ) @@ -68,6 +91,8 @@ class Meta: class VehicleSerializer(serializers.HyperlinkedModelSerializer): + """Serialize a Vehicle and its owning Company.""" + company = serializers.PrimaryKeyRelatedField(queryset=Company.objects.all()) class Meta: @@ -77,6 +102,8 @@ class Meta: class EquipmentSerializer(serializers.HyperlinkedModelSerializer): + """Serialize a telemetry Equipment unit and its owning provider/vehicle.""" + data_provider = serializers.PrimaryKeyRelatedField( queryset=DataProvider.objects.all() ) @@ -89,6 +116,8 @@ class Meta: class EquipmentLogSerializer(serializers.HyperlinkedModelSerializer): + """Serialize a historical snapshot of an Equipment unit's identity and status.""" + equipment = serializers.PrimaryKeyRelatedField(queryset=Equipment.objects.all()) data_provider = serializers.PrimaryKeyRelatedField( queryset=DataProvider.objects.all() @@ -102,6 +131,8 @@ class Meta: class RunSerializer(serializers.HyperlinkedModelSerializer): + """Serialize a Run with its assigned vehicle and operator (currently unused; no route registers it).""" + vehicle = serializers.PrimaryKeyRelatedField(queryset=Vehicle.objects.all()) operator = serializers.PrimaryKeyRelatedField(queryset=Operator.objects.all()) @@ -112,6 +143,8 @@ class Meta: class CreateRunSerializer(serializers.Serializer): + """Validate the payload for requesting a new run (vehicle, operator, and GTFS trip identifiers).""" + vehicle_id = serializers.CharField(max_length=100) operator_id = serializers.CharField(max_length=100) route_id = serializers.CharField(max_length=100) @@ -131,11 +164,15 @@ class CreateRunSerializer(serializers.Serializer): class RunUpdateSerializer(serializers.Serializer): + """Validate a run lifecycle update request: a lowercase `RunLifecycleEvents` value plus optional details.""" + event = serializers.ChoiceField(choices=RunLifecycleEvents) details = serializers.JSONField(required=False, default=dict) class PositionSerializer(serializers.HyperlinkedModelSerializer): + """Serialize a vehicle Position sample, exposing latitude/longitude alongside the raw point.""" + vehicle = serializers.PrimaryKeyRelatedField(queryset=Vehicle.objects.all()) vehicle = serializers.PrimaryKeyRelatedField(queryset=Vehicle.objects.all()) latitude = serializers.SerializerMethodField() @@ -157,12 +194,14 @@ class Meta: ] ordering = ["id"] - def get_latitude(self, obj): + def get_latitude(self, obj: Position) -> float | None: + """Return the position's latitude (point.y), or None if no point is set.""" if obj.point: return obj.point.y return None - def get_longitude(self, obj): + def get_longitude(self, obj: Position) -> float | None: + """Return the position's longitude (point.x), or None if no point is set.""" if obj.point: return obj.point.x return None @@ -175,6 +214,8 @@ def get_longitude(self, obj): class VehicleStopStatusSerializer(serializers.HyperlinkedModelSerializer): + """Serialize a vehicle's relationship to its current/next stop (GTFS-RT VehicleStopStatus).""" + vehicle = serializers.PrimaryKeyRelatedField(queryset=Vehicle.objects.all()) class Meta: @@ -185,6 +226,8 @@ class Meta: class CongestionLevelSerializer(serializers.HyperlinkedModelSerializer): + """Serialize a vehicle's congestion level (GTFS-RT CongestionLevel).""" + vehicle = serializers.PrimaryKeyRelatedField(queryset=Vehicle.objects.all()) class Meta: @@ -195,6 +238,8 @@ class Meta: class OccupancyStatusSerializer(serializers.HyperlinkedModelSerializer): + """Serialize a vehicle's passenger occupancy (GTFS-RT OccupancyStatus).""" + vehicle = serializers.PrimaryKeyRelatedField(queryset=Vehicle.objects.all()) class Meta: @@ -210,6 +255,8 @@ class Meta: class AgencySerializer(serializers.HyperlinkedModelSerializer): + """Serialize a GTFS Agency (agency.txt).""" + feed = serializers.PrimaryKeyRelatedField(read_only=True) class Meta: @@ -218,6 +265,8 @@ class Meta: class StopSerializer(serializers.HyperlinkedModelSerializer): + """Serialize a GTFS Stop (stops.txt).""" + feed = serializers.PrimaryKeyRelatedField(read_only=True) class Meta: @@ -226,6 +275,8 @@ class Meta: class GeoStopSerializer(GeoFeatureModelSerializer): + """Serialize GTFS Stops as GeoJSON features keyed on their point geometry.""" + feed = serializers.PrimaryKeyRelatedField(read_only=True) stop_point = GeometryField() @@ -236,6 +287,8 @@ class Meta: class RouteSerializer(serializers.HyperlinkedModelSerializer): + """Serialize a GTFS Route (routes.txt).""" + feed = serializers.PrimaryKeyRelatedField(read_only=True) class Meta: @@ -244,6 +297,8 @@ class Meta: class CalendarSerializer(serializers.HyperlinkedModelSerializer): + """Serialize a GTFS weekly service Calendar (calendar.txt).""" + feed = serializers.PrimaryKeyRelatedField(read_only=True) class Meta: @@ -252,6 +307,8 @@ class Meta: class CalendarDateSerializer(serializers.HyperlinkedModelSerializer): + """Serialize a GTFS CalendarDate service exception (calendar_dates.txt).""" + feed = serializers.PrimaryKeyRelatedField(read_only=True) class Meta: @@ -260,6 +317,8 @@ class Meta: class ShapeSerializer(serializers.HyperlinkedModelSerializer): + """Serialize a GTFS Shape point (shapes.txt).""" + feed = serializers.PrimaryKeyRelatedField(read_only=True) class Meta: @@ -268,6 +327,8 @@ class Meta: class GeoShapeSerializer(GeoFeatureModelSerializer): + """Serialize GTFS Shapes as GeoJSON LineString features.""" + feed = serializers.PrimaryKeyRelatedField(read_only=True) geometry = GeometryField() @@ -278,6 +339,8 @@ class Meta: class TripSerializer(serializers.HyperlinkedModelSerializer): + """Serialize a GTFS Trip (trips.txt).""" + feed = serializers.PrimaryKeyRelatedField(read_only=True) class Meta: @@ -286,6 +349,8 @@ class Meta: class StopTimeSerializer(serializers.HyperlinkedModelSerializer): + """Serialize a GTFS StopTime (stop_times.txt).""" + feed = serializers.PrimaryKeyRelatedField(read_only=True) class Meta: @@ -294,6 +359,8 @@ class Meta: class FareAttributeSerializer(serializers.HyperlinkedModelSerializer): + """Serialize a GTFS FareAttribute (fare_attributes.txt).""" + feed = serializers.PrimaryKeyRelatedField(read_only=True) class Meta: @@ -302,6 +369,8 @@ class Meta: class FareRuleSerializer(serializers.HyperlinkedModelSerializer): + """Serialize a GTFS FareRule (fare_rules.txt).""" + feed = serializers.PrimaryKeyRelatedField(read_only=True) class Meta: @@ -310,6 +379,8 @@ class Meta: class FeedInfoSerializer(serializers.HyperlinkedModelSerializer): + """Serialize GTFS FeedInfo (feed_info.txt).""" + feed = serializers.PrimaryKeyRelatedField(read_only=True) class Meta: @@ -323,10 +394,14 @@ class Meta: class ServiceTodaySerializer(serializers.Serializer): + """Serialize a GTFS service ID active on a given date.""" + service_id = serializers.CharField() class WhichShapesSerializer(serializers.Serializer): + """Serialize the distinct shapes used by a route's stop sequence.""" + shape_id = serializers.CharField() direction_id = serializers.IntegerField() shape_name = serializers.CharField() @@ -336,6 +411,8 @@ class WhichShapesSerializer(serializers.Serializer): class FindTripsSerializer(serializers.Serializer): + """Serialize a scheduled trip alongside its run's current lifecycle state, if any.""" + trip_id = serializers.CharField() trip_time = serializers.TimeField() run_lifecycle_state = serializers.CharField() diff --git a/backend/api/urls.py b/backend/api/urls.py index 94d90d3..a2ffefa 100644 --- a/backend/api/urls.py +++ b/backend/api/urls.py @@ -1,3 +1,5 @@ +"""URL routing for the api app: DRF router-registered resources plus custom run/GTFS endpoints.""" + from django.urls import include, path from rest_framework import routers diff --git a/backend/api/views.py b/backend/api/views.py index 9ff27e5..ce86a9f 100644 --- a/backend/api/views.py +++ b/backend/api/views.py @@ -1,8 +1,11 @@ +"""DRF views for the api app: operations/run resources, GTFS Schedule resources, and run lifecycle endpoints.""" + from django.conf import settings -from django.http import FileResponse +from django.http import FileResponse, HttpRequest from django.contrib.auth import authenticate from rest_framework import viewsets, status from rest_framework.views import APIView +from rest_framework.request import Request from rest_framework.response import Response from rest_framework.exceptions import ValidationError from rest_framework.authentication import TokenAuthentication @@ -79,9 +82,12 @@ FindTripsSerializer, ) from datetime import datetime +from datetime import date as DateType +from uuid import UUID -def get_schema(request): +def get_schema(request: HttpRequest) -> FileResponse: + """Serve the static GTFS Realtime OpenAPI schema (docs/schema/realtime.yml) as a file download.""" file_path = settings.BASE_DIR / "api" / "realtime.yml" return FileResponse( open(file_path, "rb"), as_attachment=True, filename="realtime.yml" @@ -90,7 +96,7 @@ def get_schema(request): @method_decorator(xframe_options_exempt, name="dispatch") class RedocView(SpectacularRedocView): - pass + """Render the ReDoc API docs page, exempted from clickjacking protection so it can be embedded.""" # ------------- @@ -99,7 +105,10 @@ class RedocView(SpectacularRedocView): class LoginView(APIView): - def post(self, request): + """Authenticate an operator by username/password and issue a DRF auth token.""" + + def post(self, request: Request) -> Response: + """Validate credentials and return an auth token with the operator's basic info.""" username = request.data.get("username") password = request.data.get("password") user = authenticate(username=username, password=password) @@ -119,18 +128,24 @@ def post(self, request): class CompanyViewSet(viewsets.ModelViewSet): + """REST resource for Company records (the legal entities operating vehicles).""" + queryset = Company.objects.all() serializer_class = CompanySerializer # authentication_classes = [TokenAuthentication] class DataProviderViewSet(viewsets.ModelViewSet): + """REST resource for DataProvider records (owners of telemetry equipment).""" + queryset = DataProvider.objects.all() serializer_class = DataProviderSerializer authentication_classes = [TokenAuthentication] class VehicleViewSet(viewsets.ModelViewSet): + """REST resource for Vehicle records, filterable by company.""" + queryset = Vehicle.objects.all() serializer_class = VehicleSerializer filter_backends = [DjangoFilterBackend] @@ -139,11 +154,14 @@ class VehicleViewSet(viewsets.ModelViewSet): class EquipmentViewSet(viewsets.ModelViewSet): + """REST resource for telemetry Equipment records.""" + queryset = Equipment.objects.all() serializer_class = EquipmentSerializer authentication_classes = [TokenAuthentication] - def create(self, request): + def create(self, request: Request) -> Response: + """Create an Equipment record and return only its ID.""" serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) self.perform_create(serializer) @@ -155,6 +173,8 @@ def create(self, request): class EquipmentLogViewSet(viewsets.ModelViewSet): + """REST resource for EquipmentLog records, the historical audit trail of Equipment changes.""" + queryset = EquipmentLog.objects.all() serializer_class = EquipmentLogSerializer filter_backends = [DjangoFilterBackend] @@ -164,6 +184,8 @@ class EquipmentLogViewSet(viewsets.ModelViewSet): class OperatorViewSet(viewsets.ModelViewSet): + """REST resource for Operator records (drivers, dispatchers, administrators).""" + queryset = Operator.objects.all() serializer_class = OperatorSerializer authentication_classes = [TokenAuthentication] @@ -181,7 +203,8 @@ class CreateRunViewSet(APIView): It only allows the POST method with the new run data. """ - def post(self, request): + def post(self, request: Request) -> Response: + """Register a run and drive it REQUESTED -> VALIDATED -> INITIALIZED, or report the failing step.""" service = RunLifecycleService() # Serialization and validation of the input data try: @@ -210,6 +233,10 @@ def post(self, request): ) # Record creation puts the run in REQUESTED state (run_requested event) try: + # vehicle/operator_obj are guaranteed non-None here: the `if errors` + # check above already returned when either lookup came back empty. + assert vehicle is not None + assert operator_obj is not None run = Run.objects.create(**payload) run.vehicle.set([vehicle]) run.operator.set([operator_obj]) @@ -259,7 +286,8 @@ class RunStateViewSet(APIView): It only allows the GET method with the run_id as path parameter. """ - def get(self, request, run_id): + def get(self, request: Request, run_id: UUID) -> Response: + """Return the run's current lifecycle state, or 404 if the run does not exist.""" run = Run.objects.filter(id=run_id).first() if not run: return Response( @@ -279,7 +307,8 @@ class RunUpdateViewSet(APIView): It only allows the POST method with the event to process. """ - def post(self, request, run_id): + def post(self, request: Request, run_id: UUID) -> Response: + """Process a lowercase run lifecycle event against the run's FSM and return the new state.""" service = RunLifecycleService() serializer = RunUpdateSerializer(data=request.data) if not serializer.is_valid(): @@ -319,8 +348,12 @@ def post(self, request, run_id): ) payload["event"] = event_value try: + # event_value was just checked against every RunLifecycleEvents + # value, so this reconstruction cannot raise; process_event wants + # the enum member itself (same convention as + # realtime_engine/tasks.py's run_lifecycle_event task). new_run_lifecycle_state, _guards, _actions = service.process_event( - event_value, payload + RunLifecycleEvents(event_value), payload ) except RunLifecycleError as e: return Response( @@ -342,7 +375,8 @@ class RunHistoryView(APIView): is authoritative even if a downstream action later fails). """ - def get(self, request, run_id): + def get(self, request: Request, run_id: UUID) -> Response: + """Return the run's FSM transitions ordered by timestamp, or 404 if the run does not exist.""" if not Run.objects.filter(id=run_id).exists(): return Response( {"status": "error", "errors": {"detail": f"run {run_id} not found"}}, @@ -371,24 +405,32 @@ def get(self, request, run_id): class PositionViewSet(viewsets.ModelViewSet): + """REST resource for vehicle Position samples (GPS/motion telemetry).""" + queryset = Position.objects.all() serializer_class = PositionSerializer authentication_classes = [TokenAuthentication] class VehicleStopStatusViewSet(viewsets.ModelViewSet): + """REST resource for vehicle stop-status snapshots (GTFS-RT VehicleStopStatus).""" + queryset = VehicleStopStatus.objects.all() serializer_class = VehicleStopStatusSerializer authentication_classes = [TokenAuthentication] class CongestionLevelViewSet(viewsets.ModelViewSet): + """REST resource for vehicle congestion-level snapshots (GTFS-RT CongestionLevel).""" + queryset = CongestionLevel.objects.all() serializer_class = CongestionLevelSerializer authentication_classes = [TokenAuthentication] class OccupancyViewSet(viewsets.ModelViewSet): + """REST resource for vehicle occupancy snapshots (GTFS-RT OccupancyStatus).""" + queryset = OccupancyStatus.objects.all() serializer_class = OccupancyStatusSerializer authentication_classes = [TokenAuthentication] @@ -590,7 +632,13 @@ class FeedInfoViewSet(viewsets.ModelViewSet): class ServiceTodayView(APIView): - def get(self, request): + """Endpoint returning the GTFS service IDs active on a given (or today's) date.""" + + def get(self, request: Request) -> Response: + """Return service IDs active on `?date=YYYY-MM-DD` (default today), from exceptions or the weekly calendar.""" + # `date` holds a full `datetime` when parsed from the query param, or a + # bare `date` when defaulted to today; both work as GTFS date filters. + date: datetime | DateType if request.query_params.get("date"): date = datetime.strptime(request.query_params.get("date"), "%Y-%m-%d") else: @@ -622,16 +670,24 @@ def get(self, request): class WhichShapesView(APIView): - def get(self, request): + """Endpoint returning the distinct shapes used by a route's stops, given `?route_id=`.""" + + def get(self, request: Request) -> Response: + """Return the distinct GeoShapes used by the given route in the current feed.""" route_id = request.query_params.get("route_id") feed = Feed.objects.filter(is_current=True).first() route = Route.objects.filter(feed=feed, route_id=route_id).first() - shapes = RouteStop.objects.filter(route=route) - shapes = shapes.values("shape").distinct() + # Pre-existing bug, out of scope for this docs/type-hints pass: RouteStop + # has no "route"/"shape" fields (only linked_route/linked_shape), so this + # query raises FieldError at runtime; flagged in the task report rather + # than fixed here. `# type: ignore` silences the resulting mypy errors + # (field names it can't resolve, then a RouteStop row treated as a dict). + shapes = RouteStop.objects.filter(route=route) # type: ignore[misc] + shapes = shapes.values("shape").distinct() # type: ignore[misc] geo_shapes = [] for shape in shapes: geo_shape = ( - GeoShape.objects.filter(id=shape["shape"]) + GeoShape.objects.filter(id=shape["shape"]) # type: ignore[index, misc] .values( "shape_id", "direction_id", @@ -649,7 +705,10 @@ def get(self, request): class FindTripsView(APIView): - def get(self, request): + """Endpoint returning scheduled trips matching a route/service/shape, with their run lifecycle state.""" + + def get(self, request: Request) -> Response: + """Return trips for `?route_id=&service_id=&shape_id=`, each tagged with its run's lifecycle state.""" # Get the query parameters route_id = request.query_params.get("route_id") service_id = request.query_params.get("service_id") @@ -673,8 +732,12 @@ def get(self, request): selected_trips = [] for trip in trips: + # Pre-existing bug, out of scope for this docs/type-hints pass: + # TripTime has no "trip_time" field (it's "departure_time"), so this + # raises FieldError at runtime; flagged in the task report rather + # than fixed here. this_trip = ( - TripTime.objects.filter(trip_id=trip.trip_id) + TripTime.objects.filter(trip_id=trip.trip_id) # type: ignore[misc] .order_by("trip_time") .values("trip_id", "trip_time") .first() From b7bc1fdcb836f51840203da7c97609324a8fa570 Mon Sep 17 00:00:00 2001 From: Jae Date: Wed, 19 Aug 2026 09:53:27 -0600 Subject: [PATCH 38/68] refactor(feed): drop legacy one-off fixture scripts MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Remove create_fixture.py, shape2geoshape.py, and translator_single.py from feed/fixtures/ — unreferenced dev utilities, recoverable from git history if ever needed again. --- backend/feed/fixtures/create_fixture.py | 258 ------ backend/feed/fixtures/shape2geoshape.py | 45 - backend/feed/fixtures/translator_single.py | 932 --------------------- 3 files changed, 1235 deletions(-) delete mode 100644 backend/feed/fixtures/create_fixture.py delete mode 100644 backend/feed/fixtures/shape2geoshape.py delete mode 100644 backend/feed/fixtures/translator_single.py diff --git a/backend/feed/fixtures/create_fixture.py b/backend/feed/fixtures/create_fixture.py deleted file mode 100644 index 38ece98..0000000 --- a/backend/feed/fixtures/create_fixture.py +++ /dev/null @@ -1,258 +0,0 @@ -"""One-off script: build gtfs.json fixture data from the UCR bus GTFS Excel workbook.""" - -import pandas as pd -import json -import sys -import os -import django - -# Set the DJANGO_SETTINGS_MODULE environment variable -os.environ.setdefault("DJANGO_SETTINGS_MODULE", "datahub.settings") - -# Add the project directory to the sys.path -sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "../../"))) - -# Setup Django -django.setup() - -from datetime import datetime # noqa: E402 (must follow django.setup() above) -from django.db.models import ( # noqa: E402 - DateField, - IntegerField, - FloatField, - DecimalField, - ForeignKey, -) -from django.apps import apps # noqa: E402 - -# Initialize a dictionary to hold the model field mappings -model_field_mapping = {} - -# Get all models from the 'gtfs' app -gtfs_models = apps.get_app_config("gtfs").get_models() - -# Iterate over each model and retrieve its field names -for model in gtfs_models: - model_name = model._meta.model_name - field_names = [ - field.name - for field in model._meta.get_fields() - if field.concrete and not field.many_to_many and field.name != "id" - ] - model_field_mapping[model_name] = field_names - -# Print the model field mappings (used for debugging) -# print(model_field_mapping["agency"]) - -# Path to your Excel file -script_dir = os.path.dirname(os.path.abspath(__file__)) -excel_file_path = os.path.join(script_dir, "UCR_bus_GTFS_v2024_2.xlsx") - -# Mapping of Excel tab names to Django model names and their fields in ../../models.py -# The mapping is: 'excel_tab': (app_name.model_name, model_field_mapping["model_name"]) -tab_to_model_mapping = { - "agency": ("gtfs.agency", model_field_mapping["agency"]), - "routes": ("gtfs.route", model_field_mapping["route"]), - "calendar": ("gtfs.calendar", model_field_mapping["calendar"]), - "calendar_dates": ("gtfs.calendardate", model_field_mapping["calendardate"]), - "stops": ("gtfs.stop", model_field_mapping["stop"]), - "stop_times": ("gtfs.stoptime", model_field_mapping["stoptime"]), - "fare_attributes": ("gtfs.fareattribute", model_field_mapping["fareattribute"]), - "fare_rules": ("gtfs.farerule", model_field_mapping["farerule"]), - "shapes": ("gtfs.shape", model_field_mapping["shape"]), - "trips": ("gtfs.trip", model_field_mapping["trip"]), - "GEOSHAPES": ("gtfs.geoshape", model_field_mapping["geoshape"]), -} - - -# Read the Excel file -xls = pd.ExcelFile(excel_file_path) - -# Maximum number of rows to process from each sheet -# Set to None to process all rows (used for debugging) -max_rows_per_sheet = "" - -# Initialize an empty list for fixtures -fixtures = [] - -# Initialize a counter for primary keys -# pk_counter = 2 # Start at 2 to avoid conflicts with the existing fixtures - -# Process each sheet in the Excel file -for sheet_name in xls.sheet_names: - pk_counter = 1 # Start at 2 to avoid conflicts with the existing fixtures - df = pd.read_excel(xls, sheet_name) - - # Limit the number of rows if max_rows_per_sheet is set - if isinstance(max_rows_per_sheet, (int)) and max_rows_per_sheet != 0: - df = df.head(max_rows_per_sheet) - - model_info = tab_to_model_mapping.get(sheet_name) - - if model_info: - model_name, model_fields = model_info - custom_model_name = model_name.split(".")[1] - model_class = apps.get_model(app_label="gtfs", model_name=custom_model_name) - - # Print model fields for debugging - print(f"Model fields for {model_name}: {model_fields}") - - for index, row in df.iterrows(): - fields_data = {} - # Managing some field format exeptions - for field in model_fields: - # Set the field type - field_type = model_class._meta.get_field(field) - field_value = row.get(field, None) - - # Convert NaN to None - if pd.isna(field_value) or field_value == "": - field_value = None - - if isinstance(field_type, DateField): - # Convert the string to a date object - field_value = ( - datetime.strptime(str(field_value), "%Y%m%d").date().isoformat() - if field_value or field_value != "" - else None - ) - fields_data[field] = field_value - elif field_type.get_internal_type() == "PointField": - # Convert the string to a Point object - if field_value or field_value != "": - # point_str = field_value.split('POINT (')[1].strip(')') - # longitude, latitude = map(float, point_str.split()) - # fields_data[field] = (longitude,latitude) - fields_data[field] = field_value - else: - fields_data[field] = None - elif field_type.get_internal_type() == "IntegerField": - # Convert the string to an integer - fields_data[field] = ( - int(field_value) if field_value is not None else None - ) - elif field_type.get_internal_type() == "FloatField": - # Convert the string to a float - fields_data[field] = float(field_value) if field_value else None - elif field_type.get_internal_type() == "CharField": - # Convert the string to a char - fields_data[field] = str(field_value) if field_value else None - elif field_type.get_internal_type() == "TextField": - # Convert the string to a text - fields_data[field] = str(field_value) if field_value else None - elif field_type.get_internal_type() == "TimeField": - # Convert the string to a time object - if field_value: - try: - fields_data[field] = ( - datetime.strptime(str(field_value), "%H:%M:%S") - .time() - .isoformat() - ) - except ValueError: - fields_data[field] = ( - datetime.strptime(str(field_value), "%H:%M:%S.%f") - .time() - .isoformat() - ) - else: - fields_data[field] = None - elif isinstance(field_type, ForeignKey): - # Handle ForeignKey fields - related_model_name = field_type.related_model._meta.model_name - related_pk = row.get(f"{field}_id", None) - fields_data[field] = ( - related_pk if related_pk else 1 - ) # Default to 1 if no related_pk - # elif field_type.get_internal_type() == "ForeignKey": - # Get the related model name - # related_model_name = field_type.related_model._meta.model_name - # Get the related model's primary key - # related_pk = row.get(f"{field}_id", None) - # Set the field value to the related model's primary key - # fields_data[field] = related_pk - else: - # Set the field value to the row's value - fields_data[field] = field_value - - # Add a fixed field 'feed' with a value of "1" for 'gtfs.stop' and 'gtfs.route' - if "feed" in model_fields: - fields_data["feed"] = "1" - if "pickup_type" in model_fields: - fields_data["pickup_type"] = 0 - if "drop_off_type" in model_fields: - fields_data["drop_off_type"] = 0 - - # Assign geoshape based on shape_id - if "geoshape" in model_fields and "shape_id" in row: - shape_id = row["shape_id"] - if shape_id == "desde_educacion_sin_milla": - fields_data["geoshape"] = 1 - elif shape_id == "desde_educacion_con_milla": - fields_data["geoshape"] = 2 - elif shape_id == "desde_artes_sin_milla": - fields_data["geoshape"] = 3 - elif shape_id == "desde_artes_con_milla": - fields_data["geoshape"] = 4 - elif shape_id == "hacia_artes": - fields_data["geoshape"] = 5 - elif shape_id == "hacia_educacion": - fields_data["geoshape"] = 6 - - # if "parent_station" in model_fields and fields_data.get("parent_station") is None: - # fields_data["parent_station"] = "Estacion Principal" # or some default value - # if "stop_timezone" in model_fields and fields_data.get("stop_timezone") is None: - # fields_data["stop_timezone"] = "" # or some default value - - # Ensure all other fields are not null - for key in fields_data: - if ( - fields_data[key] is None - and not isinstance(model_class._meta.get_field(key), IntegerField) - and not isinstance(model_class._meta.get_field(key), FloatField) - and not isinstance(model_class._meta.get_field(key), DecimalField) - ): - fields_data[key] = "" - - fixture = {"model": model_name, "pk": pk_counter, "fields": fields_data} - fixtures.append(fixture) - pk_counter += 1 # Increment the pk counter for the next fixture - -# Additional data to be added. These are not part of the Excel file but needed for other models to work -additional_data = [ - { - "model": "gtfs.gtfsprovider", - "pk": 1, - "fields": { - "code": "bUCR", - "name": "bUCR", - "description": "Bus de la UCR", - "website": "https://bucr.digital", - "schedule_url": None, - "trip_updates_url": None, - "vehicle_positions_url": None, - "service_alerts_url": None, - "timezone": "America/costa_rica", - "is_active": True, - }, - }, - { - "model": "gtfs.feed", - "pk": 1, - "fields": { - "provider": 1, - "http_etag": None, - "http_last_modified": "2024-07-11T00:00:00Z", - "is_current": True, - "retrieved_at": "2024-07-11T04:28:41.332Z", - }, - }, -] - -# Append the additional data to the fixtures list -fixtures.extend(additional_data) - -# Write fixtures to a file -json_file_path = os.path.join(script_dir, "gtfs.json") -with open(json_file_path, "w") as f: - json.dump(fixtures, f, ensure_ascii=False, indent=4) diff --git a/backend/feed/fixtures/shape2geoshape.py b/backend/feed/fixtures/shape2geoshape.py deleted file mode 100644 index a2f8e22..0000000 --- a/backend/feed/fixtures/shape2geoshape.py +++ /dev/null @@ -1,45 +0,0 @@ -"""One-off script: group shapes.json points by shape_id into geoshapes.json LINESTRINGs.""" - -import json -from collections import defaultdict - -# Read the shapes.json file -with open("shapes.json", "r") as file: - shapes_data = json.load(file) - -# Group entries by shape_id -shapes_dict = defaultdict(list) -for entry in shapes_data: - shape_id = entry["fields"]["shape_id"] - lat = entry["fields"]["shape_pt_lat"] - lon = entry["fields"]["shape_pt_lon"] - shapes_dict[shape_id].append((lon, lat)) - -# Create the new JSON structure -new_shapes_data = [] -pk_counter = 1 - -for shape_id, points in shapes_dict.items(): - geometry = ( - "SRID=4326;LINESTRING (" - + ", ".join(f"{lon} {lat}" for lon, lat in points) - + ")" - ) - new_entry = { - "model": "gtfs.geoshape", - "pk": pk_counter, - "fields": { - "feed": shapes_data[0]["fields"][ - "feed" - ], # Assuming all entries have the same feed - "shape_id": shape_id, - "geometry": geometry, - "has_altitude": False, - }, - } - new_shapes_data.append(new_entry) - pk_counter += 1 - -# Write the new JSON structure to a new file -with open("geoshapes.json", "w") as file: - json.dump(new_shapes_data, file, indent=4) diff --git a/backend/feed/fixtures/translator_single.py b/backend/feed/fixtures/translator_single.py deleted file mode 100644 index 736112f..0000000 --- a/backend/feed/fixtures/translator_single.py +++ /dev/null @@ -1,932 +0,0 @@ -"""One-off script: convert an embedded shape-points CSV literal into shapes.json.""" - -import csv -import json - - -# The CSV input data -csv_data = """shape_id,shape_pt_lat,shape_pt_lon,shape_pt_sequence,shape_dist_traveled -desde_educacion_sin_milla,9.93554944,-84.0491139,0,0 -desde_educacion_sin_milla,9.935558901,-84.04915826,1,0.005 -desde_educacion_sin_milla,9.935573543,-84.04922412,2,0.012 -desde_educacion_sin_milla,9.935600065,-84.04932486,3,0.024 -desde_educacion_sin_milla,9.935637735,-84.04941678,4,0.035 -desde_educacion_sin_milla,9.935683995,-84.04953688,5,0.049 -desde_educacion_sin_milla,9.93570316,-84.04959458,6,0.056 -desde_educacion_sin_milla,9.935711091,-84.04968716,7,0.066 -desde_educacion_sin_milla,9.935712925,-84.04984645,8,0.083 -desde_educacion_sin_milla,9.935703932,-84.05008772,9,0.11 -desde_educacion_sin_milla,9.935665393,-84.05035117,10,0.139 -desde_educacion_sin_milla,9.935617862,-84.05059375,11,0.166 -desde_educacion_sin_milla,9.935565192,-84.05087806,12,0.198 -desde_educacion_sin_milla,9.935529223,-84.0511089,13,0.223 -desde_educacion_sin_milla,9.935481691,-84.05139322,14,0.255 -desde_educacion_sin_milla,9.935453429,-84.05164101,15,0.282 -desde_educacion_sin_milla,9.935447411,-84.05169439,16,0.288 -desde_educacion_sin_milla,9.935447006,-84.05175448,17,0.295 -desde_educacion_sin_milla,9.935466276,-84.05195793,18,0.317 -desde_educacion_sin_milla,9.935489399,-84.05213139,19,0.336 -desde_educacion_sin_milla,9.935505174,-84.05222398,20,0.347 -desde_educacion_sin_milla,9.93554618,-84.05233401,21,0.36 -desde_educacion_sin_milla,9.935599878,-84.05239149,22,0.368 -desde_educacion_sin_milla,9.935655529,-84.05242817,23,0.376 -desde_educacion_sin_milla,9.935720942,-84.05244105,24,0.383 -desde_educacion_sin_milla,9.935836149,-84.05241826,25,0.396 -desde_educacion_sin_milla,9.936033366,-84.05235284,26,0.419 -desde_educacion_sin_milla,9.936256916,-84.05228329,27,0.445 -desde_educacion_sin_milla,9.936393072,-84.05224319,28,0.46 -desde_educacion_sin_milla,9.936535615,-84.05223725,29,0.476 -desde_educacion_sin_milla,9.936600052,-84.05226004,30,0.484 -desde_educacion_sin_milla,9.936619579,-84.05234231,31,0.493 -desde_educacion_sin_milla,9.936591265,-84.05242756,32,0.503 -desde_educacion_sin_milla,9.936538544,-84.05245035,33,0.509 -desde_educacion_sin_milla,9.936453604,-84.05244837,34,0.519 -desde_educacion_sin_milla,9.936360853,-84.05243945,35,0.529 -desde_educacion_sin_milla,9.93633386,-84.0524268,36,0.532 -desde_educacion_sin_milla,9.936304226,-84.05242656,37,0.535 -desde_educacion_sin_milla,9.936181209,-84.05244738,38,0.549 -desde_educacion_sin_milla,9.936007424,-84.05248405,39,0.569 -desde_educacion_sin_milla,9.935811182,-84.05252767,40,0.591 -desde_educacion_sin_milla,9.935718762,-84.05253557,41,0.601 -desde_educacion_sin_milla,9.935631538,-84.05251775,42,0.611 -desde_educacion_sin_milla,9.935533109,-84.05243347,43,0.626 -desde_educacion_sin_milla,9.935459705,-84.05235123,44,0.638 -desde_educacion_sin_milla,9.935420652,-84.05224518,45,0.65 -desde_educacion_sin_milla,9.935416747,-84.05210145,46,0.666 -desde_educacion_sin_milla,9.935377694,-84.05185564,47,0.693 -desde_educacion_sin_milla,9.935337664,-84.05159601,48,0.722 -desde_educacion_sin_milla,9.935313644,-84.05152777,49,0.73 -desde_educacion_sin_milla,9.935281037,-84.05146121,50,0.738 -desde_educacion_sin_milla,9.935379646,-84.05104491,51,0.785 -desde_educacion_sin_milla,9.935492289,-84.05063858,52,0.831 -desde_educacion_sin_milla,9.935608535,-84.05014283,53,0.887 -desde_educacion_sin_milla,9.935645232,-84.04991538,54,0.912 -desde_educacion_sin_milla,9.935559316,-84.04954368,55,0.954 -desde_educacion_sin_milla,9.935494251,-84.04920339,56,0.992 -desde_educacion_sin_milla,9.935392526,-84.04878501,57,1.039 -desde_educacion_sin_milla,9.935375928,-84.04864624,58,1.055 -desde_educacion_sin_milla,9.935280248,-84.04863732,59,1.065 -desde_educacion_sin_milla,9.935297551,-84.04838248,60,1.093 -desde_educacion_sin_milla,9.935248856,-84.04812367,61,1.122 -desde_educacion_sin_milla,9.935125688,-84.04775145,62,1.165 -desde_educacion_sin_milla,9.935005383,-84.04738504,63,1.208 -desde_educacion_sin_milla,9.934924127,-84.04709543,64,1.241 -desde_educacion_sin_milla,9.934806687,-84.04644113,65,1.314 -desde_educacion_sin_milla,9.934680202,-84.04584851,66,1.38 -desde_educacion_sin_milla,9.934615706,-84.04561458,67,1.407 -desde_educacion_sin_milla,9.934956133,-84.04560806,68,1.444 -desde_educacion_sin_milla,9.935025339,-84.0455873,69,1.452 -desde_educacion_sin_milla,9.935336384,-84.04558067,70,1.487 -desde_educacion_sin_milla,9.935581749,-84.0455285,71,1.514 -desde_educacion_sin_milla,9.935663965,-84.04545547,72,1.527 -desde_educacion_sin_milla,9.935912396,-84.04541189,73,1.554 -desde_educacion_sin_milla,9.936183452,-84.04535711,74,1.585 -desde_educacion_sin_milla,9.936302922,-84.04536494,75,1.598 -desde_educacion_sin_milla,9.936444231,-84.04543667,76,1.616 -desde_educacion_sin_milla,9.936683318,-84.04556757,77,1.646 -desde_educacion_sin_milla,9.936771957,-84.04559235,78,1.656 -desde_educacion_sin_milla,9.936852889,-84.04558713,79,1.665 -desde_educacion_sin_milla,9.936941528,-84.0455467,80,1.676 -desde_educacion_sin_milla,9.937085405,-84.04544237,81,1.695 -desde_educacion_sin_milla,9.937245934,-84.04527872,82,1.721 -desde_educacion_sin_milla,9.937338427,-84.04513786,83,1.739 -desde_educacion_sin_milla,9.937560263,-84.04475282,84,1.788 -desde_educacion_sin_milla,9.937776528,-84.0443585,85,1.837 -desde_educacion_sin_milla,9.938104105,-84.04380161,86,1.908 -desde_educacion_sin_milla,9.937964767,-84.04361665,87,1.934 -desde_educacion_sin_milla,9.937914736,-84.0434458,88,1.953 -desde_educacion_sin_milla,9.937890478,-84.0432203,89,1.978 -desde_educacion_sin_milla,9.937919706,-84.04298946,90,2.004 -desde_educacion_sin_milla,9.937980084,-84.04260081,91,2.047 -desde_educacion_sin_milla,9.938004491,-84.04247952,92,2.06 -desde_educacion_sin_milla,9.938138092,-84.04217826,93,2.097 -desde_educacion_sin_milla,9.938164733,-84.04199645,94,2.117 -desde_educacion_sin_milla,9.938158309,-84.04185038,95,2.133 -desde_educacion_sin_milla,9.938128763,-84.04172518,96,2.147 -desde_educacion_sin_milla,9.938071764,-84.0416449,97,2.158 -desde_educacion_sin_milla,9.938017001,-84.0416365,98,2.164 -desde_educacion_sin_milla,9.937921888,-84.0416378,99,2.174 -desde_educacion_sin_milla,9.937901385,-84.04113626,100,2.229 -desde_educacion_sin_milla,9.937896503,-84.04106847,101,2.237 -desde_educacion_sin_milla,9.938463993,-84.04092897,102,2.301 -desde_educacion_sin_milla,9.938689998,-84.04096455,103,2.327 -desde_educacion_sin_milla,9.938852205,-84.04113434,104,2.353 -desde_educacion_sin_milla,9.939157757,-84.04165518,105,2.419 -desde_educacion_sin_milla,9.939288662,-84.04179423,106,2.44 -desde_educacion_sin_milla,9.939433265,-84.04188359,107,2.459 -desde_educacion_sin_milla,9.939502946,-84.04190722,108,2.467 -desde_educacion_sin_milla,9.939503932,-84.04222693,109,2.502 -desde_educacion_sin_milla,9.939492123,-84.04251171,110,2.533 -desde_educacion_sin_milla,9.939456844,-84.04291815,111,2.578 -desde_educacion_sin_milla,9.939425032,-84.04333313,112,2.624 -desde_educacion_sin_milla,9.939727706,-84.04326312,113,2.658 -desde_educacion_sin_milla,9.939790246,-84.04329572,114,2.666 -desde_educacion_sin_milla,9.93981898,-84.04337294,115,2.675 -desde_educacion_sin_milla,9.940071084,-84.0443133,116,2.782 -desde_educacion_sin_milla,9.940166055,-84.04466933,117,2.822 -desde_educacion_sin_milla,9.940272446,-84.04482737,118,2.843 -desde_educacion_sin_milla,9.940462111,-84.04554009,119,2.924 -desde_educacion_sin_milla,9.940490566,-84.04563027,120,2.934 -desde_educacion_sin_milla,9.940638225,-84.04559788,121,2.951 -desde_educacion_sin_milla,9.940797172,-84.04506887,122,3.012 -desde_educacion_sin_milla,9.940954387,-84.04474671,123,3.051 -desde_educacion_sin_milla,9.941052623,-84.04465273,124,3.066 -desde_educacion_sin_milla,9.941415097,-84.04467728,125,3.106 -desde_educacion_sin_milla,9.942227833,-84.04473169,126,3.196 -desde_educacion_sin_milla,9.942824306,-84.04476927,127,3.262 -desde_educacion_sin_milla,9.943007219,-84.04473612,128,3.283 -desde_educacion_sin_milla,9.943253279,-84.04465365,129,3.311 -desde_educacion_sin_milla,9.943673774,-84.04446585,130,3.362 -desde_educacion_sin_milla,9.943804727,-84.0447575,131,3.397 -desde_educacion_sin_milla,9.943881035,-84.04488395,132,3.414 -desde_educacion_sin_milla,9.9439687,-84.04495221,133,3.426 -desde_educacion_sin_milla,9.944400187,-84.04499919,134,3.474 -desde_educacion_sin_milla,9.944575754,-84.04501108,135,3.493 -desde_educacion_sin_milla,9.944953412,-84.04500722,136,3.535 -desde_educacion_sin_milla,9.945037906,-84.04508044,137,3.547 -desde_educacion_sin_milla,9.945072623,-84.04540789,138,3.584 -desde_educacion_sin_milla,9.945096637,-84.04550183,139,3.594 -desde_educacion_sin_milla,9.94516495,-84.04553708,140,3.603 -desde_educacion_sin_milla,9.945354211,-84.04552798,141,3.624 -desde_educacion_sin_milla,9.945696094,-84.0455007,142,3.662 -desde_educacion_sin_milla,9.945760199,-84.04546362,143,3.67 -desde_educacion_sin_milla,9.945809013,-84.04537838,144,3.681 -desde_educacion_sin_milla,9.94587052,-84.04525051,145,3.696 -desde_educacion_sin_milla,9.945945798,-84.0451768,146,3.708 -desde_educacion_sin_milla,9.946292524,-84.04514987,147,3.746 -desde_educacion_sin_milla,9.946389771,-84.04516208,148,3.757 -desde_educacion_sin_milla,9.946450027,-84.04520167,149,3.765 -desde_educacion_sin_milla,9.946484041,-84.04523875,150,3.771 -desde_educacion_con_milla,9.93554616,-84.0491115,0,0 -desde_educacion_con_milla,9.935572539,-84.04923244,1,0.014 -desde_educacion_con_milla,9.935597197,-84.04932439,2,0.024 -desde_educacion_con_milla,9.935668325,-84.04950396,3,0.045 -desde_educacion_con_milla,9.935702467,-84.04959831,4,0.056 -desde_educacion_con_milla,9.93570958,-84.04969074,5,0.066 -desde_educacion_con_milla,9.935711476,-84.04984913,6,0.084 -desde_educacion_con_milla,9.935702467,-84.05008935,7,0.11 -desde_educacion_con_milla,9.935667851,-84.0503238,8,0.136 -desde_educacion_con_milla,9.935628019,-84.05053623,9,0.16 -desde_educacion_con_milla,9.935585816,-84.05075913,10,0.185 -desde_educacion_con_milla,9.935539345,-84.05103546,11,0.215 -desde_educacion_con_milla,9.935487184,-84.05135351,12,0.251 -desde_educacion_con_milla,9.935445908,-84.05169444,13,0.288 -desde_educacion_con_milla,9.935444064,-84.05176837,14,0.297 -desde_educacion_con_milla,9.935497526,-84.05219135,15,0.343 -desde_educacion_con_milla,9.935521492,-84.05227463,16,0.353 -desde_educacion_con_milla,9.935545458,-84.05234201,17,0.361 -desde_educacion_con_milla,9.935601685,-84.05239816,18,0.369 -desde_educacion_con_milla,9.935657912,-84.05243184,19,0.377 -desde_educacion_con_milla,9.935720591,-84.05244307,20,0.384 -desde_educacion_con_milla,9.935838575,-84.05241874,21,0.397 -desde_educacion_con_milla,9.936055059,-84.05234669,22,0.422 -desde_educacion_con_milla,9.936274436,-84.05228025,23,0.448 -desde_educacion_con_milla,9.936394369,-84.05224375,24,0.461 -desde_educacion_con_milla,9.936532632,-84.05223907,25,0.477 -desde_educacion_con_milla,9.936798021,-84.05233495,26,0.508 -desde_educacion_con_milla,9.937069102,-84.05243134,27,0.54 -desde_educacion_con_milla,9.937350236,-84.05253802,28,0.573 -desde_educacion_con_milla,9.937571456,-84.05264376,29,0.6 -desde_educacion_con_milla,9.937741058,-84.05270272,30,0.62 -desde_educacion_con_milla,9.93778978,-84.05271515,31,0.625 -desde_educacion_con_milla,9.937946478,-84.05272731,32,0.643 -desde_educacion_con_milla,9.93809151,-84.05270766,33,0.659 -desde_educacion_con_milla,9.93815511,-84.05263561,34,0.67 -desde_educacion_con_milla,9.938401217,-84.05212467,35,0.732 -desde_educacion_con_milla,9.938571428,-84.05189448,36,0.763 -desde_educacion_con_milla,9.938791768,-84.0516156,37,0.802 -desde_educacion_con_milla,9.938901063,-84.05145553,38,0.824 -desde_educacion_con_milla,9.938975075,-84.05130203,39,0.842 -desde_educacion_con_milla,9.939014196,-84.05113458,40,0.861 -desde_educacion_con_milla,9.939051176,-84.05092244,41,0.885 -desde_educacion_con_milla,9.939065978,-84.05060149,42,0.92 -desde_educacion_con_milla,9.939098565,-84.05012438,43,0.973 -desde_educacion_con_milla,9.939103186,-84.04976564,44,1.012 -desde_educacion_con_milla,9.939065122,-84.04965293,45,1.025 -desde_educacion_con_milla,9.938977366,-84.04951339,46,1.043 -desde_educacion_con_milla,9.938814539,-84.04931158,47,1.072 -desde_educacion_con_milla,9.938604134,-84.0490282,48,1.11 -desde_educacion_con_milla,9.938476074,-84.04886478,49,1.133 -desde_educacion_con_milla,9.938307961,-84.04864259,50,1.164 -desde_educacion_con_milla,9.938127751,-84.0484369,51,1.194 -desde_educacion_con_milla,9.937981001,-84.04827683,52,1.218 -desde_educacion_con_milla,9.937680223,-84.0479567,53,1.266 -desde_educacion_con_milla,9.937632866,-84.04791113,54,1.274 -desde_educacion_con_milla,9.937583198,-84.04787226,55,1.28 -desde_educacion_con_milla,9.937538702,-84.04784041,56,1.287 -desde_educacion_con_milla,9.937494207,-84.04781393,57,1.292 -desde_educacion_con_milla,9.937450242,-84.04779234,58,1.298 -desde_educacion_con_milla,9.937359382,-84.04776069,59,1.308 -desde_educacion_con_milla,9.937249167,-84.04776069,60,1.32 -desde_educacion_con_milla,9.937151778,-84.04777843,61,1.331 -desde_educacion_con_milla,9.937057102,-84.04779876,62,1.342 -desde_educacion_con_milla,9.936728667,-84.04790016,63,1.38 -desde_educacion_con_milla,9.936438736,-84.04799403,64,1.414 -desde_educacion_con_milla,9.936054594,-84.04812091,65,1.458 -desde_educacion_con_milla,9.93594785,-84.04814976,66,1.471 -desde_educacion_con_milla,9.935846721,-84.04819269,67,1.483 -desde_educacion_con_milla,9.93562415,-84.0482903,68,1.51 -desde_educacion_con_milla,9.935555633,-84.04835414,69,1.52 -desde_educacion_con_milla,9.935523773,-84.04839554,70,1.526 -desde_educacion_con_milla,9.935493234,-84.04843593,71,1.531 -desde_educacion_con_milla,9.935459241,-84.04855626,72,1.545 -desde_educacion_con_milla,9.93545411,-84.04860846,73,1.551 -desde_educacion_con_milla,9.935452611,-84.0486583,74,1.556 -desde_educacion_con_milla,9.935277145,-84.04863814,75,1.576 -desde_educacion_con_milla,9.935293699,-84.04838494,76,1.604 -desde_educacion_con_milla,9.935248453,-84.04812501,77,1.633 -desde_educacion_con_milla,9.935104907,-84.04768765,78,1.683 -desde_educacion_con_milla,9.934923096,-84.04710497,79,1.75 -desde_educacion_con_milla,9.934787952,-84.04637105,80,1.832 -desde_educacion_con_milla,9.934687129,-84.04588104,81,1.887 -desde_educacion_con_milla,9.934617165,-84.04561501,82,1.917 -desde_educacion_con_milla,9.934664535,-84.04561573,83,1.922 -desde_educacion_con_milla,9.934954116,-84.04560987,84,1.954 -desde_educacion_con_milla,9.935018672,-84.04558933,85,1.962 -desde_educacion_con_milla,9.935332557,-84.04558285,86,1.996 -desde_educacion_con_milla,9.935581742,-84.04553109,87,2.025 -desde_educacion_con_milla,9.935653544,-84.04545872,88,2.036 -desde_educacion_con_milla,9.936014278,-84.04539356,89,2.076 -desde_educacion_con_milla,9.936182507,-84.04535742,90,2.095 -desde_educacion_con_milla,9.936240561,-84.04535681,91,2.102 -desde_educacion_con_milla,9.936297954,-84.04536426,92,2.108 -desde_educacion_con_milla,9.936593183,-84.04552151,93,2.145 -desde_educacion_con_milla,9.936679768,-84.04557034,94,2.156 -desde_educacion_con_milla,9.93676924,-84.04559574,95,2.166 -desde_educacion_con_milla,9.936852939,-84.04558792,96,2.176 -desde_educacion_con_milla,9.936941736,-84.04554913,97,2.186 -desde_educacion_con_milla,9.937081235,-84.04544462,98,2.206 -desde_educacion_con_milla,9.937243131,-84.04528172,99,2.231 -desde_educacion_con_milla,9.937346071,-84.04512544,100,2.251 -desde_educacion_con_milla,9.937487494,-84.04487247,101,2.283 -desde_educacion_con_milla,9.937618608,-84.04464841,102,2.312 -desde_educacion_con_milla,9.937810982,-84.04430023,103,2.355 -desde_educacion_con_milla,9.937991463,-84.04399346,104,2.395 -desde_educacion_con_milla,9.93810165,-84.04380346,105,2.419 -desde_educacion_con_milla,9.937964076,-84.04361691,106,2.444 -desde_educacion_con_milla,9.937911163,-84.04344403,107,2.464 -desde_educacion_con_milla,9.93788615,-84.04321938,108,2.489 -desde_educacion_con_milla,9.937926556,-84.04293614,109,2.52 -desde_educacion_con_milla,9.938000992,-84.04248125,110,2.571 -desde_educacion_con_milla,9.938138184,-84.04217726,111,2.607 -desde_educacion_con_milla,9.938164159,-84.04199852,112,2.627 -desde_educacion_con_milla,9.938154539,-84.04185104,113,2.643 -desde_educacion_con_milla,9.938125677,-84.04172602,114,2.657 -desde_educacion_con_milla,9.93807565,-84.04165276,115,2.667 -desde_educacion_con_milla,9.938042897,-84.04163843,116,2.671 -desde_educacion_con_milla,9.938013116,-84.04163616,117,2.675 -desde_educacion_con_milla,9.937921721,-84.04163811,118,2.685 -desde_educacion_con_milla,9.93790248,-84.04121227,119,2.731 -desde_educacion_con_milla,9.937894783,-84.04106869,120,2.747 -desde_educacion_con_milla,9.938300469,-84.0409691,121,2.793 -desde_educacion_con_milla,9.938461686,-84.04092984,122,2.812 -desde_educacion_con_milla,9.93868873,-84.04096793,123,2.837 -desde_educacion_con_milla,9.938848154,-84.04113702,124,2.863 -desde_educacion_con_milla,9.939153836,-84.04165686,125,2.929 -desde_educacion_con_milla,9.939285212,-84.04179358,126,2.95 -desde_educacion_con_milla,9.939429776,-84.04188769,127,2.969 -desde_educacion_con_milla,9.939501507,-84.04190897,128,2.977 -desde_educacion_con_milla,9.939503714,-84.04224284,129,3.014 -desde_educacion_con_milla,9.939486133,-84.04252047,130,3.044 -desde_educacion_con_milla,9.939445293,-84.04302463,131,3.1 -desde_educacion_con_milla,9.939423275,-84.04333563,132,3.134 -desde_educacion_con_milla,9.939724422,-84.04326556,133,3.168 -desde_educacion_con_milla,9.939787324,-84.04329917,134,3.176 -desde_educacion_con_milla,9.939817119,-84.04338096,135,3.186 -desde_educacion_con_milla,9.939919748,-84.04375964,136,3.229 -desde_educacion_con_milla,9.940070432,-84.04431707,137,3.292 -desde_educacion_con_milla,9.940165337,-84.04467447,138,3.332 -desde_educacion_con_milla,9.940270173,-84.04482683,139,3.353 -desde_educacion_con_milla,9.940381696,-84.04524409,140,3.4 -desde_educacion_con_milla,9.940488739,-84.04563286,141,3.444 -desde_educacion_con_milla,9.940638821,-84.04559924,142,3.461 -desde_educacion_con_milla,9.940796627,-84.04506819,143,3.522 -desde_educacion_con_milla,9.940950712,-84.04475033,144,3.561 -desde_educacion_con_milla,9.941052861,-84.04465543,145,3.576 -desde_educacion_con_milla,9.941574113,-84.04469186,146,3.634 -desde_educacion_con_milla,9.942422273,-84.04474747,147,3.728 -desde_educacion_con_milla,9.942831072,-84.0447699,148,3.773 -desde_educacion_con_milla,9.943006971,-84.04473506,149,3.793 -desde_educacion_con_milla,9.943260092,-84.04465448,150,3.823 -desde_educacion_con_milla,9.943514688,-84.04454073,151,3.853 -desde_educacion_con_milla,9.943669135,-84.04447104,152,3.872 -desde_educacion_con_milla,9.943799985,-84.04475416,153,3.906 -desde_educacion_con_milla,9.943881499,-84.04488483,154,3.923 -desde_educacion_con_milla,9.943966007,-84.0449552,155,3.935 -desde_educacion_con_milla,9.944334192,-84.04499327,156,3.976 -desde_educacion_con_milla,9.944573988,-84.04501381,157,4.003 -desde_educacion_con_milla,9.944952213,-84.0450105,158,4.045 -desde_educacion_con_milla,9.945036988,-84.04508333,159,4.057 -desde_educacion_con_milla,9.945067963,-84.04538953,160,4.091 -desde_educacion_con_milla,9.945094048,-84.04550208,161,4.104 -desde_educacion_con_milla,9.94516741,-84.04554181,162,4.113 -desde_educacion_con_milla,9.945694114,-84.04550366,163,4.171 -desde_educacion_con_milla,9.945762357,-84.04546455,164,4.18 -desde_educacion_con_milla,9.945869399,-84.04525505,165,4.206 -desde_educacion_con_milla,9.945945542,-84.04517774,166,4.218 -desde_educacion_con_milla,9.946290851,-84.04515309,167,4.256 -desde_educacion_con_milla,9.94638849,-84.04516367,168,4.267 -desde_educacion_con_milla,9.946449183,-84.04520288,169,4.275 -desde_educacion_con_milla,9.946488657,-84.04524629,170,4.281 -desde_artes_sin_milla,9.935512403,-84.05223246,0,0 -desde_artes_sin_milla,9.935530387,-84.05230248,1,0.008 -desde_artes_sin_milla,9.935543179,-84.05233542,2,0.012 -desde_artes_sin_milla,9.93560007,-84.05239526,3,0.021 -desde_artes_sin_milla,9.935652984,-84.05242841,4,0.028 -desde_artes_sin_milla,9.935719143,-84.05244045,5,0.035 -desde_artes_sin_milla,9.935837192,-84.05241712,6,0.049 -desde_artes_sin_milla,9.93594643,-84.05238013,7,0.061 -desde_artes_sin_milla,9.936088345,-84.05233436,8,0.078 -desde_artes_sin_milla,9.936204222,-84.05229771,9,0.091 -desde_artes_sin_milla,9.93629305,-84.05227116,10,0.101 -desde_artes_sin_milla,9.936392264,-84.05224052,11,0.113 -desde_artes_sin_milla,9.936530936,-84.05223675,12,0.128 -desde_artes_sin_milla,9.936595894,-84.05225901,13,0.136 -desde_artes_sin_milla,9.936616151,-84.05234126,14,0.145 -desde_artes_sin_milla,9.936587627,-84.05242604,15,0.155 -desde_artes_sin_milla,9.936535539,-84.05244996,16,0.161 -desde_artes_sin_milla,9.936448674,-84.05244735,17,0.171 -desde_artes_sin_milla,9.936358139,-84.05243845,18,0.181 -desde_artes_sin_milla,9.936329573,-84.05242608,19,0.184 -desde_artes_sin_milla,9.936300677,-84.05242544,20,0.188 -desde_artes_sin_milla,9.936176739,-84.05244554,21,0.201 -desde_artes_sin_milla,9.936069383,-84.05246922,22,0.214 -desde_artes_sin_milla,9.935866288,-84.05251342,23,0.237 -desde_artes_sin_milla,9.93580531,-84.0525277,24,0.244 -desde_artes_sin_milla,9.935717203,-84.05253515,25,0.253 -desde_artes_sin_milla,9.935629328,-84.0525171,26,0.263 -desde_artes_sin_milla,9.935529586,-84.05243348,27,0.278 -desde_artes_sin_milla,9.935455757,-84.05235067,28,0.29 -desde_artes_sin_milla,9.935416382,-84.05224462,29,0.302 -desde_artes_sin_milla,9.935412364,-84.05209777,30,0.318 -desde_artes_sin_milla,9.935360935,-84.05176737,31,0.355 -desde_artes_sin_milla,9.935335374,-84.05159575,32,0.374 -desde_artes_sin_milla,9.935278321,-84.05145788,33,0.39 -desde_artes_sin_milla,9.935373946,-84.05105156,34,0.436 -desde_artes_sin_milla,9.935485096,-84.05064885,35,0.482 -desde_artes_sin_milla,9.935556569,-84.05034469,36,0.516 -desde_artes_sin_milla,9.93560639,-84.05014074,37,0.539 -desde_artes_sin_milla,9.93564014,-84.04991884,38,0.564 -desde_artes_sin_milla,9.935552371,-84.04952407,39,0.608 -desde_artes_sin_milla,9.935512717,-84.04931696,40,0.631 -desde_artes_sin_milla,9.935447597,-84.04902551,41,0.664 -desde_artes_sin_milla,9.935389888,-84.04878998,42,0.691 -desde_artes_sin_milla,9.935373013,-84.04864477,43,0.707 -desde_artes_sin_milla,9.935276585,-84.04863661,44,0.718 -desde_artes_sin_milla,9.93529275,-84.04837842,45,0.746 -desde_artes_sin_milla,9.935246946,-84.04812389,46,0.774 -desde_artes_sin_milla,9.935141658,-84.04780572,47,0.811 -desde_artes_sin_milla,9.935003168,-84.04738078,48,0.86 -desde_artes_sin_milla,9.93492049,-84.04708592,49,0.894 -desde_artes_sin_milla,9.934796571,-84.04641957,50,0.968 -desde_artes_sin_milla,9.934686047,-84.0458857,51,1.028 -desde_artes_sin_milla,9.93461247,-84.0456137,52,1.059 -desde_artes_sin_milla,9.934810229,-84.04560814,53,1.081 -desde_artes_sin_milla,9.934953796,-84.04560837,54,1.096 -desde_artes_sin_milla,9.935021221,-84.0455874,55,1.104 -desde_artes_sin_milla,9.9352507,-84.04558155,56,1.13 -desde_artes_sin_milla,9.935336212,-84.04557911,57,1.139 -desde_artes_sin_milla,9.935579694,-84.04552771,58,1.167 -desde_artes_sin_milla,9.935661417,-84.04545454,59,1.179 -desde_artes_sin_milla,9.935938804,-84.04540337,60,1.21 -desde_artes_sin_milla,9.936179876,-84.04535619,61,1.237 -desde_artes_sin_milla,9.936298784,-84.04536222,62,1.25 -desde_artes_sin_milla,9.936470748,-84.04545441,63,1.272 -desde_artes_sin_milla,9.936647015,-84.04554916,64,1.294 -desde_artes_sin_milla,9.936679962,-84.04556711,65,1.298 -desde_artes_sin_milla,9.936770765,-84.0455924,66,1.308 -desde_artes_sin_milla,9.936850195,-84.0455876,67,1.317 -desde_artes_sin_milla,9.936939391,-84.04554599,68,1.328 -desde_artes_sin_milla,9.937082169,-84.04544057,69,1.348 -desde_artes_sin_milla,9.937241751,-84.0452792,70,1.373 -desde_artes_sin_milla,9.93733175,-84.04514377,71,1.391 -desde_artes_sin_milla,9.937478803,-84.04488435,72,1.423 -desde_artes_sin_milla,9.937593838,-84.04468485,73,1.449 -desde_artes_sin_milla,9.937757222,-84.04438772,74,1.486 -desde_artes_sin_milla,9.937926502,-84.04409809,75,1.523 -desde_artes_sin_milla,9.938099192,-84.04379999,76,1.561 -desde_artes_sin_milla,9.937960979,-84.0436148,77,1.586 -desde_artes_sin_milla,9.937911158,-84.04344348,78,1.606 -desde_artes_sin_milla,9.937885372,-84.04321887,79,1.63 -desde_artes_sin_milla,9.937924747,-84.04293823,80,1.661 -desde_artes_sin_milla,9.937984211,-84.0425693,81,1.702 -desde_artes_sin_milla,9.93799718,-84.04247601,82,1.713 -desde_artes_sin_milla,9.938136196,-84.04217743,83,1.749 -desde_artes_sin_milla,9.938161511,-84.04199723,84,1.769 -desde_artes_sin_milla,9.938153476,-84.04184875,85,1.785 -desde_artes_sin_milla,9.938126958,-84.0417223,86,1.799 -desde_artes_sin_milla,9.93807553,-84.04164969,87,1.809 -desde_artes_sin_milla,9.938014459,-84.04163175,88,1.816 -desde_artes_sin_milla,9.937918979,-84.04163505,89,1.827 -desde_artes_sin_milla,9.937895405,-84.04106877,90,1.889 -desde_artes_sin_milla,9.938461023,-84.04092781,91,1.953 -desde_artes_sin_milla,9.938687705,-84.04096368,92,1.979 -desde_artes_sin_milla,9.93884703,-84.04113178,93,2.004 -desde_artes_sin_milla,9.939150093,-84.04165451,94,2.071 -desde_artes_sin_milla,9.939284373,-84.04179402,95,2.092 -desde_artes_sin_milla,9.939423391,-84.04188441,96,2.11 -desde_artes_sin_milla,9.939499929,-84.04190661,97,2.119 -desde_artes_sin_milla,9.939499929,-84.04224756,98,2.156 -desde_artes_sin_milla,9.939492119,-84.04252349,99,2.187 -desde_artes_sin_milla,9.939424952,-84.04332908,100,2.275 -desde_artes_sin_milla,9.93972312,-84.04326169,101,2.309 -desde_artes_sin_milla,9.939784734,-84.04329387,102,2.317 -desde_artes_sin_milla,9.939818634,-84.0433818,103,2.327 -desde_artes_sin_milla,9.939988247,-84.04403088,104,2.401 -desde_artes_sin_milla,9.94015975,-84.04466582,105,2.473 -desde_artes_sin_milla,9.940269102,-84.04482455,106,2.494 -desde_artes_sin_milla,9.940364903,-84.04518735,107,2.535 -desde_artes_sin_milla,9.940487693,-84.04562904,108,2.586 -desde_artes_sin_milla,9.940636352,-84.04559314,109,2.602 -desde_artes_sin_milla,9.940792345,-84.04506904,110,2.662 -desde_artes_sin_milla,9.940949184,-84.04475055,111,2.701 -desde_artes_sin_milla,9.941045328,-84.04465204,112,2.717 -desde_artes_sin_milla,9.941130815,-84.04465719,113,2.726 -desde_artes_sin_milla,9.941443215,-84.04467709,114,2.761 -desde_artes_sin_milla,9.941954998,-84.04471422,115,2.817 -desde_artes_sin_milla,9.942339483,-84.04473712,116,2.86 -desde_artes_sin_milla,9.942705619,-84.04476242,117,2.901 -desde_artes_sin_milla,9.942827419,-84.0447663,118,2.914 -desde_artes_sin_milla,9.943008765,-84.04473424,119,2.934 -desde_artes_sin_milla,9.943226193,-84.04466163,120,2.96 -desde_artes_sin_milla,9.943361889,-84.04460708,121,2.976 -desde_artes_sin_milla,9.943669389,-84.04446646,122,3.013 -desde_artes_sin_milla,9.943797636,-84.04474994,123,3.047 -desde_artes_sin_milla,9.943877031,-84.04487818,124,3.064 -desde_artes_sin_milla,9.943965448,-84.04494963,125,3.077 -desde_artes_sin_milla,9.944544352,-84.04500742,126,3.141 -desde_artes_sin_milla,9.944949227,-84.04500985,127,3.186 -desde_artes_sin_milla,9.945034889,-84.04507261,128,3.197 -desde_artes_sin_milla,9.945066359,-84.0453995,129,3.233 -desde_artes_sin_milla,9.945093736,-84.04549991,130,3.245 -desde_artes_sin_milla,9.94516588,-84.04553849,131,3.254 -desde_artes_sin_milla,9.945693345,-84.04550164,132,3.312 -desde_artes_sin_milla,9.945768181,-84.0454572,133,3.322 -desde_artes_sin_milla,9.94581919,-84.04535716,134,3.334 -desde_artes_sin_milla,9.945868217,-84.04524941,135,3.347 -desde_artes_sin_milla,9.945945495,-84.04517499,136,3.359 -desde_artes_sin_milla,9.946289175,-84.04514989,137,3.397 -desde_artes_sin_milla,9.946387888,-84.04516176,138,3.408 -desde_artes_sin_milla,9.94644529,-84.04519941,139,3.416 -desde_artes_sin_milla,9.946490124,-84.04525112,140,3.423 -desde_artes_con_milla,9.935511296,-84.0522203,0,0 -desde_artes_con_milla,9.935531077,-84.05229271,1,0.008 -desde_artes_con_milla,9.935547228,-84.05233471,2,0.013 -desde_artes_con_milla,9.935599989,-84.0523892,3,0.022 -desde_artes_con_milla,9.935656657,-84.05242661,4,0.029 -desde_artes_con_milla,9.935724005,-84.05243879,5,0.037 -desde_artes_con_milla,9.935837911,-84.05241631,6,0.049 -desde_artes_con_milla,9.935893485,-84.05240042,7,0.056 -desde_artes_con_milla,9.935947739,-84.05238018,8,0.062 -desde_artes_con_milla,9.936186396,-84.05230283,9,0.09 -desde_artes_con_milla,9.936396846,-84.05224068,10,0.114 -desde_artes_con_milla,9.93653552,-84.05223613,11,0.13 -desde_artes_con_milla,9.936736822,-84.05230766,12,0.153 -desde_artes_con_milla,9.937085597,-84.05243187,13,0.194 -desde_artes_con_milla,9.937335777,-84.05252885,14,0.224 -desde_artes_con_milla,9.937579699,-84.05264387,15,0.253 -desde_artes_con_milla,9.937748583,-84.05270435,16,0.273 -desde_artes_con_milla,9.937791882,-84.0527108,17,0.278 -desde_artes_con_milla,9.937871324,-84.05271993,18,0.287 -desde_artes_con_milla,9.937950765,-84.05272437,19,0.296 -desde_artes_con_milla,9.938022425,-84.05271684,20,0.304 -desde_artes_con_milla,9.938094084,-84.05270361,21,0.312 -desde_artes_con_milla,9.938156222,-84.05263414,22,0.322 -desde_artes_con_milla,9.938248661,-84.05244418,23,0.345 -desde_artes_con_milla,9.938402129,-84.05212105,24,0.385 -desde_artes_con_milla,9.938590227,-84.05187115,25,0.419 -desde_artes_con_milla,9.938716437,-84.0517146,26,0.441 -desde_artes_con_milla,9.938837692,-84.05155169,27,0.463 -desde_artes_con_milla,9.938905385,-84.05144675,28,0.477 -desde_artes_con_milla,9.938977747,-84.05129822,29,0.495 -desde_artes_con_milla,9.939018648,-84.05112813,30,0.514 -desde_artes_con_milla,9.939054042,-84.05091812,31,0.538 -desde_artes_con_milla,9.939083931,-84.05035914,32,0.599 -desde_artes_con_milla,9.939102723,-84.05011836,33,0.626 -desde_artes_con_milla,9.939107064,-84.04994028,34,0.645 -desde_artes_con_milla,9.939107111,-84.04976488,35,0.664 -desde_artes_con_milla,9.939067153,-84.04964397,36,0.678 -desde_artes_con_milla,9.938976995,-84.04949999,37,0.697 -desde_artes_con_milla,9.938798652,-84.04928391,38,0.728 -desde_artes_con_milla,9.938526315,-84.04892596,39,0.777 -desde_artes_con_milla,9.93831256,-84.04864151,40,0.817 -desde_artes_con_milla,9.938161499,-84.04846456,41,0.842 -desde_artes_con_milla,9.938012763,-84.04830412,42,0.866 -desde_artes_con_milla,9.937673149,-84.04794564,43,0.921 -desde_artes_con_milla,9.937628967,-84.0479035,44,0.927 -desde_artes_con_milla,9.937581814,-84.0478664,45,0.934 -desde_artes_con_milla,9.937540709,-84.04783703,46,0.94 -desde_artes_con_milla,9.937497954,-84.04781101,47,0.945 -desde_artes_con_milla,9.937454966,-84.04779011,48,0.95 -desde_artes_con_milla,9.937365083,-84.04775983,49,0.961 -desde_artes_con_milla,9.93726069,-84.04775927,50,0.972 -desde_artes_con_milla,9.937074793,-84.04779371,51,0.993 -desde_artes_con_milla,9.936815447,-84.04787152,52,1.023 -desde_artes_con_milla,9.936573052,-84.04794763,53,1.051 -desde_artes_con_milla,9.936222343,-84.04806426,54,1.092 -desde_artes_con_milla,9.93602464,-84.0481252,55,1.115 -desde_artes_con_milla,9.9358559,-84.04818295,56,1.135 -desde_artes_con_milla,9.93570894,-84.04825229,57,1.153 -desde_artes_con_milla,9.935631897,-84.04828697,58,1.162 -desde_artes_con_milla,9.935560487,-84.04835316,59,1.173 -desde_artes_con_milla,9.935498391,-84.04843511,60,1.184 -desde_artes_con_milla,9.935465273,-84.04855699,61,1.198 -desde_artes_con_milla,9.935454924,-84.04865471,62,1.209 -desde_artes_con_milla,9.935280019,-84.04863475,63,1.228 -desde_artes_con_milla,9.935297613,-84.04837943,64,1.256 -desde_artes_con_milla,9.935252735,-84.04812867,65,1.284 -desde_artes_con_milla,9.935127658,-84.04774618,66,1.328 -desde_artes_con_milla,9.934927033,-84.04710558,67,1.402 -desde_artes_con_milla,9.934789491,-84.04635463,68,1.486 -desde_artes_con_milla,9.934690709,-84.04587466,69,1.539 -desde_artes_con_milla,9.934620607,-84.04561433,70,1.569 -desde_artes_con_milla,9.934892898,-84.04560703,71,1.599 -desde_artes_con_milla,9.934959509,-84.04560615,72,1.606 -desde_artes_con_milla,9.935025733,-84.04558779,73,1.614 -desde_artes_con_milla,9.935339847,-84.04557938,74,1.649 -desde_artes_con_milla,9.935531062,-84.0455367,75,1.67 -desde_artes_con_milla,9.935584897,-84.04552568,76,1.677 -desde_artes_con_milla,9.93566585,-84.04545191,77,1.689 -desde_artes_con_milla,9.936030201,-84.04538702,78,1.73 -desde_artes_con_milla,9.93619941,-84.04535041,79,1.749 -desde_artes_con_milla,9.936300113,-84.04536177,80,1.76 -desde_artes_con_milla,9.936519481,-84.0454755,81,1.787 -desde_artes_con_milla,9.936683687,-84.04556534,82,1.808 -desde_artes_con_milla,9.93677259,-84.04558918,83,1.818 -desde_artes_con_milla,9.936853106,-84.04558748,84,1.827 -desde_artes_con_milla,9.936945083,-84.04554372,85,1.838 -desde_artes_con_milla,9.937083835,-84.04544008,86,1.857 -desde_artes_con_milla,9.937216351,-84.04530981,87,1.878 -desde_artes_con_milla,9.937248196,-84.04527619,88,1.883 -desde_artes_con_milla,9.937347164,-84.04512292,89,1.903 -desde_artes_con_milla,9.937521196,-84.04481873,90,1.941 -desde_artes_con_milla,9.937674261,-84.04454168,91,1.976 -desde_artes_con_milla,9.937858338,-84.04421863,92,2.017 -desde_artes_con_milla,9.938104358,-84.04379837,93,2.07 -desde_artes_con_milla,9.937966321,-84.04361257,94,2.096 -desde_artes_con_milla,9.937914321,-84.0434415,95,2.116 -desde_artes_con_milla,9.937888322,-84.04321841,96,2.14 -desde_artes_con_milla,9.937927895,-84.04293915,97,2.171 -desde_artes_con_milla,9.937995971,-84.0425253,98,2.217 -desde_artes_con_milla,9.938004885,-84.04247243,99,2.223 -desde_artes_con_milla,9.938139564,-84.04217506,100,2.259 -desde_artes_con_milla,9.938165563,-84.0419988,101,2.278 -desde_artes_con_milla,9.938158777,-84.04184686,102,2.295 -desde_artes_con_milla,9.938127745,-84.04172084,103,2.309 -desde_artes_con_milla,9.938104654,-84.04168273,104,2.314 -desde_artes_con_milla,9.938078261,-84.04164931,105,2.319 -desde_artes_con_milla,9.938047381,-84.04163493,106,2.323 -desde_artes_con_milla,9.93801452,-84.04163228,107,2.326 -desde_artes_con_milla,9.937924368,-84.04163466,108,2.336 -desde_artes_con_milla,9.937900824,-84.04106734,109,2.399 -desde_artes_con_milla,9.938464253,-84.0409284,110,2.463 -desde_artes_con_milla,9.938686514,-84.04096243,111,2.488 -desde_artes_con_milla,9.938852477,-84.04113416,112,2.514 -desde_artes_con_milla,9.939155395,-84.04164745,113,2.579 -desde_artes_con_milla,9.939288611,-84.04178898,114,2.601 -desde_artes_con_milla,9.939435424,-84.04188132,115,2.62 -desde_artes_con_milla,9.939502447,-84.04190563,116,2.628 -desde_artes_con_milla,9.939502446,-84.04223937,117,2.664 -desde_artes_con_milla,9.939494467,-84.04251965,118,2.695 -desde_artes_con_milla,9.939454572,-84.0429992,119,2.748 -desde_artes_con_milla,9.939427125,-84.04333187,120,2.784 -desde_artes_con_milla,9.939727899,-84.04326057,121,2.819 -desde_artes_con_milla,9.939790511,-84.04329413,122,2.826 -desde_artes_con_milla,9.939822528,-84.04337539,123,2.836 -desde_artes_con_milla,9.93991293,-84.04371479,124,2.875 -desde_artes_con_milla,9.940020281,-84.04412875,125,2.922 -desde_artes_con_milla,9.940166448,-84.04466698,126,2.983 -desde_artes_con_milla,9.940270787,-84.04482375,127,3.003 -desde_artes_con_milla,9.940488641,-84.04562959,128,3.095 -desde_artes_con_milla,9.94064167,-84.04559428,129,3.112 -desde_artes_con_milla,9.940797715,-84.04506926,130,3.172 -desde_artes_con_milla,9.940950371,-84.04474815,131,3.212 -desde_artes_con_milla,9.941051927,-84.04465211,132,3.227 -desde_artes_con_milla,9.941711422,-84.0446963,133,3.3 -desde_artes_con_milla,9.942819159,-84.04476836,134,3.423 -desde_artes_con_milla,9.943012665,-84.04473179,135,3.445 -desde_artes_con_milla,9.943264846,-84.04464614,136,3.474 -desde_artes_con_milla,9.943672352,-84.04446647,137,3.523 -desde_artes_con_milla,9.943801403,-84.04475227,138,3.558 -desde_artes_con_milla,9.943879637,-84.04488143,139,3.574 -desde_artes_con_milla,9.943969525,-84.04495039,140,3.587 -desde_artes_con_milla,9.944334334,-84.04498791,141,3.627 -desde_artes_con_milla,9.944574114,-84.04500803,142,3.654 -desde_artes_con_milla,9.944953901,-84.04500803,143,3.696 -desde_artes_con_milla,9.945045717,-84.04507865,144,3.709 -desde_artes_con_milla,9.945070757,-84.04539643,145,3.744 -desde_artes_con_milla,9.94509858,-84.04549954,146,3.755 -desde_artes_con_milla,9.945173016,-84.04553609,147,3.764 -desde_artes_con_milla,9.945695994,-84.04550121,148,3.822 -desde_artes_con_milla,9.945767319,-84.04545794,149,3.832 -desde_artes_con_milla,9.945874438,-84.04524749,150,3.858 -desde_artes_con_milla,9.945946778,-84.04517546,151,3.869 -desde_artes_con_milla,9.946292046,-84.04514697,152,3.907 -desde_artes_con_milla,9.946390818,-84.0451611,153,3.918 -desde_artes_con_milla,9.946450638,-84.04519923,154,3.926 -desde_artes_con_milla,9.946497389,-84.04525622,155,3.934 -hacia_educacion,9.946514503,-84.04527092,0,0 -hacia_educacion,9.946571393,-84.04535863,1,0.011 -hacia_educacion,9.946705231,-84.04553219,2,0.036 -hacia_educacion,9.946859775,-84.04574288,3,0.064 -hacia_educacion,9.94692114,-84.04582526,4,0.076 -hacia_educacion,9.946998481,-84.04587491,5,0.086 -hacia_educacion,9.947091746,-84.04587029,6,0.096 -hacia_educacion,9.947332867,-84.0456763,7,0.13 -hacia_educacion,9.947349928,-84.04558161,8,0.141 -hacia_educacion,9.947316944,-84.04548115,9,0.152 -hacia_educacion,9.94706331,-84.04515205,10,0.198 -hacia_educacion,9.946956398,-84.04493496,11,0.225 -hacia_educacion,9.946857398,-84.04479404,12,0.244 -hacia_educacion,9.946749347,-84.04471205,13,0.259 -hacia_educacion,9.946639023,-84.04469011,14,0.271 -hacia_educacion,9.946584807,-84.04470367,15,0.277 -hacia_educacion,9.946525663,-84.04474408,16,0.285 -hacia_educacion,9.946310637,-84.04479562,17,0.31 -hacia_educacion,9.946078613,-84.04481756,18,0.335 -hacia_educacion,9.94606269,-84.04481987,19,0.337 -hacia_educacion,9.946076338,-84.04516167,20,0.375 -hacia_educacion,9.945948163,-84.04517947,21,0.389 -hacia_educacion,9.945876509,-84.04524991,22,0.4 -hacia_educacion,9.945777557,-84.04545661,23,0.425 -hacia_educacion,9.945700409,-84.04550925,24,0.435 -hacia_educacion,9.94516698,-84.04553927,25,0.494 -hacia_educacion,9.945089173,-84.04550237,26,0.504 -hacia_educacion,9.945057326,-84.04538227,27,0.518 -hacia_educacion,9.945028892,-84.04508089,28,0.551 -hacia_educacion,9.94495155,-84.04501738,29,0.562 -hacia_educacion,9.944720005,-84.04501577,30,0.587 -hacia_educacion,9.944256798,-84.04498689,31,0.639 -hacia_educacion,9.943895946,-84.0449568,32,0.679 -hacia_educacion,9.943384732,-84.04491979,33,0.736 -hacia_educacion,9.942615001,-84.04487734,34,0.821 -hacia_educacion,9.94204156,-84.04483903,35,0.884 -hacia_educacion,9.941376986,-84.04480244,36,0.958 -hacia_educacion,9.940961024,-84.04477716,37,1.004 -hacia_educacion,9.94082182,-84.04504462,38,1.037 -hacia_educacion,9.940655238,-84.04560533,39,1.101 -hacia_educacion,9.940483146,-84.045635,40,1.121 -hacia_educacion,9.940378041,-84.0452283,41,1.167 -hacia_educacion,9.940270386,-84.04482279,42,1.213 -hacia_educacion,9.940163288,-84.04466418,43,1.234 -hacia_educacion,9.940101811,-84.0444166,44,1.262 -hacia_educacion,9.93971667,-84.04452633,45,1.306 -hacia_educacion,9.93932936,-84.04462211,46,1.35 -hacia_educacion,9.939204089,-84.04465454,47,1.364 -hacia_educacion,9.939156824,-84.04464565,48,1.37 -hacia_educacion,9.939125094,-84.04461595,49,1.375 -hacia_educacion,9.939110218,-84.04456377,50,1.381 -hacia_educacion,9.939196157,-84.04433542,51,1.407 -hacia_educacion,9.93907879,-84.04388058,52,1.459 -hacia_educacion,9.938958911,-84.04346474,53,1.506 -hacia_educacion,9.93927927,-84.04336897,54,1.543 -hacia_educacion,9.939421427,-84.04332516,55,1.56 -hacia_educacion,9.939448166,-84.04298885,56,1.597 -hacia_educacion,9.93949676,-84.04247041,57,1.654 -hacia_educacion,9.939501978,-84.04233876,58,1.668 -hacia_educacion,9.939504719,-84.04219587,59,1.684 -hacia_educacion,9.939509373,-84.04205957,60,1.699 -hacia_educacion,9.939505605,-84.04192376,61,1.714 -hacia_educacion,9.939326947,-84.0418526,62,1.735 -hacia_educacion,9.939164417,-84.04168712,63,1.761 -hacia_educacion,9.939043648,-84.04150304,64,1.785 -hacia_educacion,9.93882653,-84.04113606,65,1.832 -hacia_educacion,9.938777611,-84.04107114,66,1.841 -hacia_educacion,9.938724399,-84.04101929,67,1.849 -hacia_educacion,9.938607394,-84.04095486,68,1.863 -hacia_educacion,9.938477125,-84.04094648,69,1.878 -hacia_educacion,9.938317483,-84.04098474,70,1.896 -hacia_educacion,9.937905268,-84.04109753,71,1.943 -hacia_educacion,9.937915435,-84.0413721,72,1.973 -hacia_educacion,9.937929713,-84.0416234,73,2.001 -hacia_educacion,9.938019434,-84.04162143,74,2.011 -hacia_educacion,9.938080136,-84.04163852,75,2.018 -hacia_educacion,9.938133356,-84.04171438,76,2.028 -hacia_educacion,9.938149169,-84.04176617,77,2.034 -hacia_educacion,9.938164982,-84.04184023,78,2.042 -hacia_educacion,9.938171104,-84.0419552,79,2.055 -hacia_educacion,9.938164472,-84.04206207,80,2.067 -hacia_educacion,9.938145583,-84.04217255,81,2.079 -hacia_educacion,9.938065464,-84.04235903,82,2.101 -hacia_educacion,9.938008689,-84.0424755,83,2.116 -hacia_educacion,9.937984553,-84.04262776,84,2.132 -hacia_educacion,9.937933032,-84.04296809,85,2.17 -hacia_educacion,9.937892559,-84.0431865,86,2.195 -hacia_educacion,9.937922785,-84.04342622,87,2.221 -hacia_educacion,9.937936125,-84.0435141,88,2.231 -hacia_educacion,9.937968436,-84.04360457,89,2.241 -hacia_educacion,9.938110292,-84.04379465,90,2.267 -hacia_educacion,9.937963175,-84.04404422,91,2.299 -hacia_educacion,9.937788887,-84.04434975,92,2.338 -hacia_educacion,9.937590562,-84.04470401,93,2.383 -hacia_educacion,9.937438898,-84.04497738,94,2.417 -hacia_educacion,9.937341062,-84.04514423,95,2.438 -hacia_educacion,9.937252201,-84.04527007,96,2.455 -hacia_educacion,9.937103832,-84.04542324,97,2.479 -hacia_educacion,9.937033022,-84.04548029,98,2.489 -hacia_educacion,9.936926696,-84.04555592,99,2.503 -hacia_educacion,9.936853202,-84.04558681,100,2.512 -hacia_educacion,9.936772141,-84.04559103,101,2.521 -hacia_educacion,9.936678928,-84.0455674,102,2.531 -hacia_educacion,9.936529378,-84.04548739,103,2.55 -hacia_educacion,9.93646684,-84.04544916,104,2.558 -hacia_educacion,9.936400339,-84.04541294,105,2.567 -hacia_educacion,9.936342972,-84.04537761,106,2.574 -hacia_educacion,9.936295761,-84.04536238,107,2.579 -hacia_educacion,9.936243633,-84.04535126,108,2.585 -hacia_educacion,9.936186221,-84.0453539,109,2.592 -hacia_educacion,9.936038835,-84.04538903,110,2.608 -hacia_educacion,9.935804145,-84.04543089,111,2.635 -hacia_educacion,9.935653857,-84.0454587,112,2.652 -hacia_educacion,9.9355839,-84.04552525,113,2.662 -hacia_educacion,9.935471845,-84.04557985,114,2.676 -hacia_educacion,9.935339062,-84.04563775,115,2.692 -hacia_educacion,9.935011189,-84.04563833,116,2.728 -hacia_educacion,9.93495719,-84.04560862,117,2.735 -hacia_educacion,9.934650064,-84.0456169,118,2.769 -hacia_educacion,9.934770956,-84.0461341,119,2.827 -hacia_educacion,9.934904033,-84.0468177,120,2.904 -hacia_educacion,9.93495932,-84.0471114,121,2.937 -hacia_educacion,9.935058275,-84.04746012,122,2.976 -hacia_educacion,9.935198974,-84.04788997,123,3.026 -hacia_educacion,9.935274491,-84.04812847,124,3.053 -hacia_educacion,9.935315438,-84.04837789,125,3.081 -hacia_educacion,9.935297557,-84.04862494,126,3.108 -hacia_educacion,9.935454251,-84.04864306,127,3.126 -hacia_educacion,9.93547036,-84.04880008,128,3.143 -hacia_educacion,9.935532342,-84.04904378,129,3.171 -hacia_artes,9.946514395,-84.04527931,0,0 -hacia_artes,9.946569793,-84.04536359,1,0.011 -hacia_artes,9.94668819,-84.04551336,2,0.032 -hacia_artes,9.946778136,-84.04563336,3,0.049 -hacia_artes,9.946921104,-84.04582882,4,0.075 -hacia_artes,9.946996671,-84.04587843,5,0.085 -hacia_artes,9.947092905,-84.04587296,6,0.096 -hacia_artes,9.947221934,-84.04577478,7,0.114 -hacia_artes,9.947334696,-84.04567661,8,0.13 -hacia_artes,9.947352403,-84.04558125,9,0.141 -hacia_artes,9.947316988,-84.04548355,10,0.152 -hacia_artes,9.947064016,-84.04515548,11,0.198 -hacia_artes,9.94695754,-84.04493889,12,0.224 -hacia_artes,9.946855916,-84.04479273,13,0.244 -hacia_artes,9.946746915,-84.04471329,14,0.259 -hacia_artes,9.946638362,-84.04469297,15,0.271 -hacia_artes,9.946585391,-84.04470548,16,0.277 -hacia_artes,9.946524571,-84.0447469,17,0.285 -hacia_artes,9.946309487,-84.04479771,18,0.31 -hacia_artes,9.946065074,-84.0448235,19,0.337 -hacia_artes,9.946078932,-84.04516429,20,0.374 -hacia_artes,9.945947266,-84.04518429,21,0.389 -hacia_artes,9.945875667,-84.04525385,22,0.4 -hacia_artes,9.945777959,-84.04546017,23,0.425 -hacia_artes,9.945699431,-84.04551254,24,0.435 -hacia_artes,9.945451547,-84.04552525,25,0.463 -hacia_artes,9.945167513,-84.04554144,26,0.494 -hacia_artes,9.945088492,-84.04550375,27,0.504 -hacia_artes,9.94505511,-84.04538355,28,0.518 -hacia_artes,9.945027395,-84.04508497,29,0.55 -hacia_artes,9.94499479,-84.0450504,30,0.556 -hacia_artes,9.944949637,-84.04502087,31,0.562 -hacia_artes,9.944674286,-84.0450154,32,0.592 -hacia_artes,9.944357782,-84.04500416,33,0.627 -hacia_artes,9.943472684,-84.04492871,34,0.725 -hacia_artes,9.942958179,-84.04489827,35,0.782 -hacia_artes,9.942300486,-84.04485876,36,0.855 -hacia_artes,9.941712287,-84.0448223,37,0.92 -hacia_artes,9.940965306,-84.04477602,38,1.003 -hacia_artes,9.940906633,-84.04487407,39,1.016 -hacia_artes,9.94084406,-84.04498719,40,1.03 -hacia_artes,9.940777519,-84.04521713,41,1.056 -hacia_artes,9.940721562,-84.04539748,42,1.077 -hacia_artes,9.940660223,-84.04560429,43,1.101 -hacia_artes,9.940493097,-84.04563317,44,1.119 -hacia_artes,9.940439602,-84.04543845,45,1.142 -hacia_artes,9.940372448,-84.0451953,46,1.169 -hacia_artes,9.940274924,-84.04482033,47,1.212 -hacia_artes,9.940224352,-84.04474375,48,1.222 -hacia_artes,9.940166814,-84.04466219,49,1.233 -hacia_artes,9.940102007,-84.0444175,50,1.261 -hacia_artes,9.93987746,-84.04448097,51,1.286 -hacia_artes,9.939714594,-84.04452459,52,1.305 -hacia_artes,9.939275606,-84.04463929,53,1.355 -hacia_artes,9.939205451,-84.04465608,54,1.363 -hacia_artes,9.939161106,-84.04464489,55,1.368 -hacia_artes,9.939123853,-84.04461918,56,1.373 -hacia_artes,9.939116258,-84.04455251,57,1.38 -hacia_artes,9.939199416,-84.04433375,58,1.406 -hacia_artes,9.939110553,-84.04400644,59,1.443 -hacia_artes,9.939019008,-84.04367477,60,1.481 -hacia_artes,9.938959114,-84.04346736,61,1.505 -hacia_artes,9.939287987,-84.04336894,62,1.543 -hacia_artes,9.93942115,-84.04332749,63,1.558 -hacia_artes,9.939447555,-84.04299424,64,1.595 -hacia_artes,9.939468101,-84.04273655,65,1.623 -hacia_artes,9.939490178,-84.04245619,66,1.654 -hacia_artes,9.939498966,-84.04213379,67,1.689 -hacia_artes,9.939506315,-84.04192742,68,1.712 -hacia_artes,9.93932958,-84.04185242,69,1.733 -hacia_artes,9.93916814,-84.04169104,70,1.758 -hacia_artes,9.939005191,-84.04144135,71,1.791 -hacia_artes,9.938825655,-84.04113914,72,1.83 -hacia_artes,9.938780727,-84.04107285,73,1.839 -hacia_artes,9.938724901,-84.0410213,74,1.847 -hacia_artes,9.938610047,-84.04095448,75,1.862 -hacia_artes,9.938473968,-84.04094944,76,1.877 -hacia_artes,9.938146529,-84.04103416,77,1.914 -hacia_artes,9.937906713,-84.04110144,78,1.942 -hacia_artes,9.937916636,-84.04138343,79,1.973 -hacia_artes,9.937930793,-84.04162858,80,1.999 -hacia_artes,9.938019672,-84.04162545,81,2.009 -hacia_artes,9.938079962,-84.04164312,82,2.016 -hacia_artes,9.938107915,-84.04167883,83,2.021 -hacia_artes,9.938132565,-84.04171788,84,2.026 -hacia_artes,9.938163064,-84.04184408,85,2.041 -hacia_artes,9.938168404,-84.0419581,86,2.053 -hacia_artes,9.938162334,-84.04206326,87,2.065 -hacia_artes,9.938143211,-84.04217421,88,2.077 -hacia_artes,9.938030868,-84.04243159,89,2.108 -hacia_artes,9.938008116,-84.04247809,90,2.113 -hacia_artes,9.937980342,-84.0426586,91,2.134 -hacia_artes,9.937917158,-84.04305841,92,2.178 -hacia_artes,9.937893782,-84.04319558,93,2.193 -hacia_artes,9.937922886,-84.04343555,94,2.22 -hacia_artes,9.937933244,-84.04351001,95,2.228 -hacia_artes,9.937969256,-84.04360737,96,2.239 -hacia_artes,9.938111296,-84.04379577,97,2.265 -hacia_artes,9.937961495,-84.04405345,98,2.298 -hacia_artes,9.937771338,-84.04438362,99,2.34 -hacia_artes,9.937581827,-84.0447197,100,2.382 -hacia_artes,9.937450189,-84.04496357,101,2.413 -hacia_artes,9.937341808,-84.04514635,102,2.436 -hacia_artes,9.937253722,-84.04527141,103,2.453 -hacia_artes,9.937108322,-84.04542622,104,2.476 -hacia_artes,9.936927199,-84.04555865,105,2.501 -hacia_artes,9.936854014,-84.04558736,106,2.51 -hacia_artes,9.936773737,-84.04559231,107,2.519 -hacia_artes,9.936680196,-84.04556807,108,2.529 -hacia_artes,9.936464801,-84.04544828,109,2.556 -hacia_artes,9.936365887,-84.04538928,110,2.569 -hacia_artes,9.936323088,-84.0453697,111,2.574 -hacia_artes,9.936297628,-84.04536153,112,2.577 -hacia_artes,9.936246522,-84.04535328,113,2.583 -hacia_artes,9.936187326,-84.04535709,114,2.59 -hacia_artes,9.936035383,-84.04539277,115,2.607 -hacia_artes,9.935779918,-84.04543796,116,2.636 -hacia_artes,9.935651546,-84.04546214,117,2.65 -hacia_artes,9.935584825,-84.04552945,118,2.66 -hacia_artes,9.935337871,-84.04564056,119,2.69 -hacia_artes,9.935010933,-84.04564108,120,2.727 -hacia_artes,9.934959684,-84.0456088,121,2.733 -hacia_artes,9.934648587,-84.04561968,122,2.768 -hacia_artes,9.934802253,-84.04629473,123,2.844 -hacia_artes,9.934956107,-84.04709923,124,2.933 -hacia_artes,9.935144666,-84.04773828,125,3.007 -hacia_artes,9.935275846,-84.04812896,126,3.052 -hacia_artes,9.935315833,-84.04838472,127,3.08 -hacia_artes,9.935299838,-84.04862965,128,3.107 -hacia_artes,9.935455203,-84.04864919,129,3.124 -hacia_artes,9.935470398,-84.04880551,130,3.142 -hacia_artes,9.93553668,-84.04908324,131,3.173 -hacia_artes,9.93559776,-84.04931625,132,3.199 -hacia_artes,9.935702437,-84.04959181,133,3.232 -hacia_artes,9.935710385,-84.04967878,134,3.241 -hacia_artes,9.935710385,-84.04996966,135,3.273 -hacia_artes,9.935703217,-84.05009542,136,3.287 -hacia_artes,9.935667009,-84.05034198,137,3.314 -hacia_artes,9.935606746,-84.05064703,138,3.348 -hacia_artes,9.935533432,-84.05107377,139,3.396 -hacia_artes,9.935492631,-84.05130751,140,3.422 -hacia_artes,9.935462728,-84.05154595,141,3.448 -hacia_artes,9.935449555,-84.05165259,142,3.46 -hacia_artes,9.935447942,-84.05176057,143,3.472 -hacia_artes,9.935471691,-84.05198306,144,3.496 -hacia_artes,9.935488928,-84.05210819,145,3.51 -hacia_artes,9.935501758,-84.0521827,146,3.519""" - -# Split the CSV data into lines and read it -csv_reader = csv.DictReader(csv_data.splitlines()) - -# Convert CSV to a structured JSON format -json_data = [] -for i, row in enumerate(csv_reader, start=1): - json_data.append( - { - "model": "gtfs.Shape", - "pk": i, - "fields": { - "feed": "1234", - "shape_id": row["shape_id"], - "shape_pt_lat": row["shape_pt_lat"], - "shape_pt_lon": row["shape_pt_lon"], - "shape_pt_sequence": row["shape_pt_sequence"], - "shape_dist_traveled": row["shape_dist_traveled"], - }, - } - ) - -# Convert the structured data into JSON format -json_output = json.dumps(json_data, indent=4) - -# Save the output in .json file -with open("shapes.json", "w", encoding="utf-8") as json_file: - json.dump(json_data, json_file, ensure_ascii=False, indent=4) From ee3946791bff34a6dd7db6cc136d49c510dc97c4 Mon Sep 17 00:00:00 2001 From: Jae Date: Wed, 19 Aug 2026 09:58:37 -0600 Subject: [PATCH 39/68] fix(realtime): skip misconfigured sensors with explicit guards HttpJsonSourceAdapter.fetch now checks source_http_url and the equipment fallback for None explicitly, logging a specific warning and skipping, instead of falling through the generic try/except as an opaque failure. Drops the now-redundant type: ignore comments. --- backend/realtime_engine/sources/http_json.py | 23 +++++++++---- .../sources/tests/test_http_json.py | 33 +++++++++++++++++++ 2 files changed, 50 insertions(+), 6 deletions(-) diff --git a/backend/realtime_engine/sources/http_json.py b/backend/realtime_engine/sources/http_json.py index 138180d..73cf802 100644 --- a/backend/realtime_engine/sources/http_json.py +++ b/backend/realtime_engine/sources/http_json.py @@ -135,10 +135,15 @@ def fetch(self, sensor: "Sensor") -> list[tuple[str, dict]]: url = sensor.source_http_url mapping = sensor.source_json_mapping or {} + if not url: + logger.warning( + "sensor %s has source_type=http but no source_http_url; skipping", + getattr(sensor, "id", "?"), + ) + return [] + try: - # source_http_url is a nullable DB field; a None here falls through - # to the except below rather than being type-safe. See task report. - response = requests.get(url, timeout=DEFAULT_TIMEOUT_S) # type: ignore[arg-type] + response = requests.get(url, timeout=DEFAULT_TIMEOUT_S) response.raise_for_status() body = response.json() except Exception: @@ -172,9 +177,15 @@ def fetch(self, sensor: "Sensor") -> list[tuple[str, dict]]: if not vehicle_id: # Lazy access — never imported/evaluated at module scope, # so this stays safe for isolated (non-DB) test runs. - # equipment is nullable; a None here is caught by the - # except below rather than being type-safe. See task report. - vehicle_id = str(sensor.equipment.vehicle_id) # type: ignore[union-attr] + equipment = sensor.equipment + if equipment is None: + logger.warning( + "sensor %s has no vehicle_id in record and no " + "equipment association; skipping record", + getattr(sensor, "id", "?"), + ) + continue + vehicle_id = str(equipment.vehicle_id) results.append((vehicle_id, extracted["payload"])) except Exception: diff --git a/backend/realtime_engine/sources/tests/test_http_json.py b/backend/realtime_engine/sources/tests/test_http_json.py index e76430d..c3f68c6 100644 --- a/backend/realtime_engine/sources/tests/test_http_json.py +++ b/backend/realtime_engine/sources/tests/test_http_json.py @@ -200,6 +200,39 @@ def fake_get(url, timeout): assert vehicle_id == "fallback-veh-123" +# --------------------------------------------------------------------------- +# Nullable Sensor fields: guarded explicitly rather than falling through to +# the generic try/except. +# --------------------------------------------------------------------------- + + +def test_fetch_skips_sensor_with_no_source_http_url(monkeypatch): + def fake_get(url, timeout): + raise AssertionError("requests.get should not be called for a None URL") + + monkeypatch.setattr(http_json.requests, "get", fake_get) + + sensor = _make_sensor(url=None) + results = http_json.HttpJsonSourceAdapter().fetch(sensor) + + assert results == [] + + +def test_fetch_skips_record_when_fallback_vehicle_id_has_no_equipment(monkeypatch): + mapping = {**NAVSAT_MAPPING, "paths": {k: v for k, v in NAVSAT_MAPPING["paths"].items() if k != "vehicle_id"}} + + def fake_get(url, timeout): + return FakeResponse([SAMPLE_RECORD]) + + monkeypatch.setattr(http_json.requests, "get", fake_get) + + sensor = _make_sensor(mapping=mapping) + sensor.equipment = None + results = http_json.HttpJsonSourceAdapter().fetch(sensor) + + assert results == [] + + # --------------------------------------------------------------------------- # Contract compliance: produced payloads must pass position.validate_for_write # --------------------------------------------------------------------------- From 9b6277d74b139a71bc35438ccbd1fe7d767543aa Mon Sep 17 00:00:00 2001 From: Jae Date: Wed, 19 Aug 2026 10:03:18 -0600 Subject: [PATCH 40/68] fix(runs): fail fast with a clear error when lifecycle payload lacks run_id _load_run now raises RunLifecycleError("...missing run_id") instead of letting a missing run_id reach Run.objects.get(id=None), which never matches and surfaces as a confusing Run.DoesNotExist. Existing RunLifecycleError handlers in api/views.py and realtime_engine/tasks.py already catch it, so no unhandled 500s. --- backend/runs/services/lifecycle.py | 11 ++++++++-- backend/runs/services/tests/test_lifecycle.py | 21 +++++++++++++++++++ 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/backend/runs/services/lifecycle.py b/backend/runs/services/lifecycle.py index 8980b61..b7a5e9c 100644 --- a/backend/runs/services/lifecycle.py +++ b/backend/runs/services/lifecycle.py @@ -51,10 +51,17 @@ def process_event( ) def _load_run(self, payload: dict[str, Any]) -> Run: + """Look up the Run named by payload["run_id"], failing fast if it's absent.""" run_id = payload.get("run_id") + if not run_id: + # Without this, a payload missing run_id falls through to + # Run.objects.get(id=None), which never matches and surfaces as a + # confusing Run.DoesNotExist. Raise the app's own lifecycle error + # instead so existing RunLifecycleError handlers (API views, + # realtime_engine.tasks.run_lifecycle_event) already catch it. + raise RunLifecycleError({"detail": "lifecycle event payload missing run_id"}) # payload is dict[str, Any], so .get() is typed as Any | None; cast is a - # static-only narrowing — a missing/malformed run_id still reaches the ORM - # unchanged and raises Run.DoesNotExist, exactly as before this annotation. + # static-only narrowing — run_id is confirmed truthy by the check above. return Run.objects.get(id=cast(str, run_id)) def _check_guards( diff --git a/backend/runs/services/tests/test_lifecycle.py b/backend/runs/services/tests/test_lifecycle.py index ec210f8..ba5cba4 100644 --- a/backend/runs/services/tests/test_lifecycle.py +++ b/backend/runs/services/tests/test_lifecycle.py @@ -11,7 +11,10 @@ from unittest.mock import MagicMock +import pytest + from runs.domain.lifecycle import RunLifecycleEvents, RunLifecycleStates, Transition +from runs.services.exceptions import RunLifecycleError from runs.services.lifecycle import RunLifecycleService @@ -122,3 +125,21 @@ def test_publish_omits_absent_fields(monkeypatch): assert "vehicle_id" not in kwargs["data"] assert "trip_id" not in kwargs["data"] assert "route_id" not in kwargs["data"] + + +# --------------------------------------------------------------------------- +# _load_run: a payload missing run_id must fail fast with a clear error +# instead of a confusing Run.DoesNotExist from `WHERE id IS NULL`. +# --------------------------------------------------------------------------- + + +def test_load_run_raises_lifecycle_error_when_run_id_absent(): + with pytest.raises(RunLifecycleError) as exc_info: + _service()._load_run({}) + assert "missing run_id" in exc_info.value.errors["detail"] + + +def test_load_run_raises_lifecycle_error_when_run_id_falsy(): + with pytest.raises(RunLifecycleError) as exc_info: + _service()._load_run({"run_id": None}) + assert "missing run_id" in exc_info.value.errors["detail"] From 59c29c150465565bec5658c1c1d29504611cf9c2 Mon Sep 17 00:00:00 2001 From: Jae Date: Wed, 19 Aug 2026 10:15:34 -0600 Subject: [PATCH 41/68] docs(operations): add one-liner docstrings and complete type hints Fills ruff D1xx gaps (module/class/method docstrings) across the fleet/operator/vehicle/equipment domain models and their admin/apps/views scaffolding. Adds full return-type hints to __str__/save methods and an explicit ManyToManyField[Agency, Any] annotation on Company.linked_agency, resolving the one mypy var-annotated error the django-stubs plugin raises for that field (its implicit through-model type parameter isn't otherwise inferable). No runtime behavior changes; full pytest suite still 432 passed. --- backend/operations/admin.py | 2 ++ backend/operations/apps.py | 4 ++++ backend/operations/models.py | 40 ++++++++++++++++++++++++++++-------- backend/operations/views.py | 2 ++ 4 files changed, 39 insertions(+), 9 deletions(-) diff --git a/backend/operations/admin.py b/backend/operations/admin.py index eee055b..dc2c0c0 100644 --- a/backend/operations/admin.py +++ b/backend/operations/admin.py @@ -1,3 +1,5 @@ +"""Register operations domain models with the Django admin site.""" + from django.contrib.gis import admin from .models import ( Vehicle, diff --git a/backend/operations/apps.py b/backend/operations/apps.py index 59e720f..8075fa5 100644 --- a/backend/operations/apps.py +++ b/backend/operations/apps.py @@ -1,5 +1,9 @@ +"""Django AppConfig for the operations app.""" + from django.apps import AppConfig class OperationsConfig(AppConfig): + """Django app configuration for `operations` (fleet/operator/vehicle/equipment domain models).""" + name = "operations" diff --git a/backend/operations/models.py b/backend/operations/models.py index df11682..0a3324e 100644 --- a/backend/operations/models.py +++ b/backend/operations/models.py @@ -1,3 +1,7 @@ +"""Fleet/operator/vehicle/equipment domain models: Company, Operator, Vehicle, Equipment, Sensor, EquipmentLog.""" + +from typing import Any + from django.contrib.gis.db import models from django.contrib.auth.models import User import uuid @@ -13,7 +17,11 @@ class Company(models.Model): """ id = models.CharField(max_length=100, primary_key=True) - linked_agency = models.ManyToManyField(Agency, blank=True) + # django-stubs can't infer the implicit through-model type parameter for + # this M2M from the call alone; the explicit annotation resolves it. + linked_agency: models.ManyToManyField[Agency, Any] = models.ManyToManyField( + Agency, blank=True + ) name = models.CharField(max_length=100) description = models.TextField(blank=True, null=True) legal_id = models.CharField(max_length=100, blank=True, null=True) @@ -23,7 +31,8 @@ class Company(models.Model): location = models.PointField(blank=True, null=True) logo = models.ImageField(upload_to="companies/", blank=True, null=True) - def __str__(self): + def __str__(self) -> str: + """Return the company's name.""" return self.name @@ -41,7 +50,8 @@ class Operator(models.Model): is_dispatcher = models.BooleanField(default=False) is_administrator = models.BooleanField(default=False) - def __str__(self): + def __str__(self) -> str: + """Return the operator's full name and ID.""" return f"{self.user.first_name} {self.user.last_name} ({self.id})" @@ -58,7 +68,8 @@ class DataProvider(models.Model): phone = models.CharField(max_length=100, blank=True, null=True) logo = models.ImageField(upload_to="data-providers/", blank=True, null=True) - def __str__(self): + def __str__(self) -> str: + """Return the data provider's name.""" return self.name @@ -117,11 +128,14 @@ class Vehicle(models.Model): ], ) - def __str__(self): + def __str__(self) -> str: + """Return the vehicle's company and license plate.""" return f"{self.company}: {self.license_plate}" class Equipment(models.Model): + """An onboard telemetry device (GPS/sensor unit) installed in a vehicle.""" + id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) data_provider = models.ForeignKey( DataProvider, on_delete=models.PROTECT, blank=True, null=True @@ -145,7 +159,8 @@ class Equipment(models.Model): created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) - def save(self, *args, **kwargs): + def save(self, *args: Any, **kwargs: Any) -> None: + """Save the equipment, then append a snapshot of its current fields to EquipmentLog.""" super(Equipment, self).save(*args, **kwargs) EquipmentLog.objects.create( equipment=self, @@ -159,11 +174,14 @@ def save(self, *args, **kwargs): status=self.status, ) - def __str__(self): + def __str__(self) -> str: + """Return the equipment's data provider, brand, model, and ID.""" return f"{self.data_provider}: {self.brand} {self.model} ({self.id})" class Sensor(models.Model): + """A logical data feed (of one or more telemetry types) registered on a piece of Equipment.""" + id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) name = models.CharField(max_length=100, blank=True, null=True) equipment = models.ForeignKey( @@ -201,11 +219,14 @@ class Sensor(models.Model): created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) - def __str__(self): + def __str__(self) -> str: + """Return the sensor's name and ID.""" return f"{self.name} ({self.id})" class EquipmentLog(models.Model): + """An immutable snapshot of an Equipment's fields, written each time the equipment is saved.""" + equipment = models.ForeignKey(Equipment, on_delete=models.PROTECT) data_provider = models.ForeignKey( DataProvider, on_delete=models.PROTECT, blank=True, null=True @@ -226,5 +247,6 @@ class EquipmentLog(models.Model): ) updated_at = models.DateTimeField(auto_now=True) - def __str__(self): + def __str__(self) -> str: + """Return the log entry's data provider, brand, model, and timestamp.""" return f"{self.data_provider}: {self.brand} {self.model} ({self.updated_at})" diff --git a/backend/operations/views.py b/backend/operations/views.py index 60f00ef..e999fcd 100644 --- a/backend/operations/views.py +++ b/backend/operations/views.py @@ -1 +1,3 @@ +"""Placeholder for operations app HTTP views (none defined yet — reads/writes go through the API app).""" + # Create your views here. From 575f2e3aeb5180138c2ac3be69697d55c99623e5 Mon Sep 17 00:00:00 2001 From: Jae Date: Wed, 19 Aug 2026 10:18:30 -0600 Subject: [PATCH 42/68] docs(website): add one-liner docstrings and complete type hints Fills ruff D1xx gaps (module/class/function docstrings) across the website app's admin/apps/models/urls/views scaffolding and adds full param/return type hints to the index view. No runtime behavior changes; full pytest suite still 432 passed. --- backend/website/admin.py | 2 ++ backend/website/apps.py | 4 ++++ backend/website/models.py | 2 ++ backend/website/urls.py | 2 ++ backend/website/views.py | 6 +++++- 5 files changed, 15 insertions(+), 1 deletion(-) diff --git a/backend/website/admin.py b/backend/website/admin.py index 846f6b4..f2308d7 100644 --- a/backend/website/admin.py +++ b/backend/website/admin.py @@ -1 +1,3 @@ +"""Django admin registration for the website app (none; no models defined).""" + # Register your models here. diff --git a/backend/website/apps.py b/backend/website/apps.py index bc26c09..cfac2d8 100644 --- a/backend/website/apps.py +++ b/backend/website/apps.py @@ -1,6 +1,10 @@ +"""Django AppConfig for the website app.""" + from django.apps import AppConfig class WebsiteConfig(AppConfig): + """Django app configuration for `website` (public landing pages).""" + default_auto_field = "django.db.models.BigAutoField" name = "website" diff --git a/backend/website/models.py b/backend/website/models.py index 6b20219..91aff4c 100644 --- a/backend/website/models.py +++ b/backend/website/models.py @@ -1 +1,3 @@ +"""Django models for the website app (none; the site is static template rendering).""" + # Create your models here. diff --git a/backend/website/urls.py b/backend/website/urls.py index fd7d2ab..e378ebc 100644 --- a/backend/website/urls.py +++ b/backend/website/urls.py @@ -1,3 +1,5 @@ +"""URL routes for the website app.""" + from django.urls import path from . import views diff --git a/backend/website/views.py b/backend/website/views.py index fed8a3e..25b5e44 100644 --- a/backend/website/views.py +++ b/backend/website/views.py @@ -1,7 +1,11 @@ +"""HTTP views for the website app.""" + +from django.http import HttpRequest, HttpResponse from django.shortcuts import render # Create your views here. -def index(request): +def index(request: HttpRequest) -> HttpResponse: + """Render the public landing page.""" return render(request, "index.html") From c2d41cd6e628d6f218dac7d39a60944e04aa45af Mon Sep 17 00:00:00 2001 From: Jae Date: Wed, 19 Aug 2026 10:24:36 -0600 Subject: [PATCH 43/68] docs(databus): add one-liner docstrings and complete type hints Fills ruff D1xx gaps in celery.py (module docstring documenting the beat schedule -- fetch-positions every 10s with expires=10, the two GTFS-RT feed builders every 15s, the stale-run scan every 30s, and the daily schedule rebuild -- plus a docstring on debug_task). Fixes both mypy arg-type errors in urls.py by giving urlpatterns an explicit list[URLPattern | URLResolver] annotation, since static()'s return type (list[URLPattern]) differs from the include()-based path() entries' inferred list[URLResolver]; both are valid urlpatterns entries at runtime. No runtime behavior changes, and settings.py values are untouched; full pytest suite still 432 passed. --- backend/databus/celery.py | 11 +++++++++++ backend/databus/urls.py | 6 ++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/backend/databus/celery.py b/backend/databus/celery.py index f9fb31b..c2cce1d 100644 --- a/backend/databus/celery.py +++ b/backend/databus/celery.py @@ -1,3 +1,13 @@ +"""Celery app for databus: task discovery, the MQTT consumer bootstep, and the beat schedule. + +Beat schedule entries: `fetch-positions` polls HTTP telemetry sources every 10s (a run +that hasn't started within its own cycle is revoked via `expires=10` rather than queuing +up behind a slow source); `build-vehicle-positions-every-15s` and +`build-trip-updates-every-15s` rebuild the two GTFS-RT feeds every 15s; +`scan-stale-runs-every-30s` sweeps for runs that have gone quiet; and +`build-schedule-daily` rebuilds the GTFS Schedule zip once a day. +""" + from datetime import timedelta import os @@ -26,6 +36,7 @@ @app.task(bind=True, ignore_result=True) def debug_task(self): + """Print the current task's request context; used to sanity-check worker connectivity.""" print(f"Celery request: {self.request!r}") diff --git a/backend/databus/urls.py b/backend/databus/urls.py index b62a65d..c1c26fa 100644 --- a/backend/databus/urls.py +++ b/backend/databus/urls.py @@ -16,12 +16,14 @@ """ from django.contrib import admin -from django.urls import path, include +from django.urls import URLPattern, URLResolver, path, include from django.conf import settings from django.conf.urls.static import static import os -urlpatterns = [ +# static() below returns list[URLPattern], while the path(..., include(...)) entries +# above are list[URLResolver] -- the explicit union lets both be appended in place. +urlpatterns: list[URLPattern | URLResolver] = [ path("admin/", admin.site.urls), path("", include("website.urls")), path("api/", include("api.urls")), From 457de0698a908708df4ac893a210e719a8d8f8bd Mon Sep 17 00:00:00 2001 From: Jae Date: Wed, 19 Aug 2026 10:35:33 -0600 Subject: [PATCH 44/68] docs(scripts): add one-liner docstrings and complete type hints Fills ruff D1xx gaps (module/function docstrings) across cleanup_runs.py's connection helpers, DB/Redis purge functions, and CLI driver. Fixes all 14 mypy findings: adds psycopg2.extensions.connection/ cursor annotations (get_db, _count, _delete, db_purge_*) and redis-py Awaitable-union cast helpers (_get/_hgetall/_smembers/_rkeys/_srem, mirroring realtime_engine/tasks.py's _get/_smembers/_hgetall but taking the client as a parameter since this script builds one per invocation rather than sharing a module-level client) for the hgetall/get/smembers/ keys/srem calls in the Redis purge helpers; adds `assert conn/r is not None` narrowing in main()'s dispatch block, since both are only ever None when their connect step already called sys.exit(1). Also drops two extraneous f-string prefixes (F541) on plain error-tip strings. No runtime behavior changes; full pytest suite still 432 passed. --- backend/scripts/cleanup_runs.py | 113 +++++++++++++++++++++++++++----- 1 file changed, 95 insertions(+), 18 deletions(-) diff --git a/backend/scripts/cleanup_runs.py b/backend/scripts/cleanup_runs.py index 030e7ba..3a77b32 100644 --- a/backend/scripts/cleanup_runs.py +++ b/backend/scripts/cleanup_runs.py @@ -46,9 +46,10 @@ import sys from datetime import datetime from pathlib import Path -from typing import Any +from typing import Any, cast import psycopg2 +import psycopg2.extensions import psycopg2.extras import redis @@ -94,13 +95,17 @@ def _load_dotenv() -> None: # --------------------------------------------------------------------------- -def get_db(host: str, port: int, name: str, user: str, password: str): +def get_db( + host: str, port: int, name: str, user: str, password: str +) -> psycopg2.extensions.connection: + """Open a PostgreSQL connection with the given connection parameters.""" return psycopg2.connect( host=host, port=port, dbname=name, user=user, password=password, ) def get_redis(host: str, port: int, db: int) -> redis.Redis: + """Open a Redis client with the given connection parameters.""" return redis.Redis(host=host, port=port, db=db, decode_responses=True) @@ -109,7 +114,13 @@ def get_redis(host: str, port: int, db: int) -> redis.Redis: # --------------------------------------------------------------------------- -def _count(cur, table: str, where: str = "", params: tuple = ()) -> int: +def _count( + cur: psycopg2.extensions.cursor, + table: str, + where: str = "", + params: tuple[Any, ...] = (), +) -> int: + """Count rows in `table`, optionally filtered by a WHERE clause.""" sql = f"SELECT COUNT(*) FROM {table}" if where: sql += f" WHERE {where}" @@ -117,7 +128,14 @@ def _count(cur, table: str, where: str = "", params: tuple = ()) -> int: return cur.fetchone()[0] -def _delete(cur, table: str, where: str = "", params: tuple = (), dry_run: bool = False) -> int: +def _delete( + cur: psycopg2.extensions.cursor, + table: str, + where: str = "", + params: tuple[Any, ...] = (), + dry_run: bool = False, +) -> int: + """Delete rows from `table` (or just count them under --dry-run); returns the affected row count.""" n = _count(cur, table, where, params) if n and not dry_run: sql = f"DELETE FROM {table}" @@ -132,7 +150,39 @@ def _delete(cur, table: str, where: str = "", params: tuple = (), dry_run: bool # --------------------------------------------------------------------------- +def _get(r: redis.Redis, key: str) -> str | None: + """Read a Redis string value, narrowing away redis-py's shared Awaitable stub. + + `r` here is always a synchronous, `decode_responses=True` client built by + `get_redis`, but redis-py's `CoreCommands` mixin types every command + `Awaitable[X] | X` since it's shared with the async client -- this cast + narrows to the sync branch that's actually returned. + """ + return cast("str | None", r.get(key)) + + +def _hgetall(r: redis.Redis, key: str) -> dict[str, str]: + """Read a Redis hash as `dict[str, str]`, narrowing away redis-py's shared Awaitable stub.""" + return cast("dict[str, str]", r.hgetall(key)) + + +def _smembers(r: redis.Redis, key: str) -> set[str]: + """Read a Redis set as `set[str]`, narrowing away redis-py's shared Awaitable stub.""" + return cast("set[str]", r.smembers(key)) + + +def _rkeys(r: redis.Redis, pattern: str) -> list[str]: + """Read Redis keys matching a pattern as `list[str]`, narrowing away redis-py's shared Awaitable stub.""" + return cast("list[str]", r.keys(pattern)) + + +def _srem(r: redis.Redis, set_key: str, *members: str) -> int: + """Remove members from a Redis set, narrowing srem's Awaitable-union return to int.""" + return cast(int, r.srem(set_key, *members)) + + def _rdel(r: redis.Redis, keys: list[str], dry_run: bool) -> int: + """Delete the given Redis keys that exist (or count them under --dry-run); returns the count.""" targets = [k for k in keys if r.exists(k)] if targets and not dry_run: r.delete(*targets) @@ -140,15 +190,17 @@ def _rdel(r: redis.Redis, keys: list[str], dry_run: bool) -> int: def _rsrem(r: redis.Redis, set_key: str, members: list[str], dry_run: bool) -> int: + """Remove members from a Redis set (or count matches under --dry-run); returns the removed/matched count.""" if not members: return 0 if dry_run: return sum(1 for m in members if r.sismember(set_key, m)) - return int(r.srem(set_key, *members)) + return _srem(r, set_key, *members) def _purge_redis_run(r: redis.Redis, run_id: str, dry_run: bool) -> dict[str, int]: - hash_data = r.hgetall(_keys.run_key(run_id)) + """Delete (or count, under --dry-run) one run's Redis state: entity hashes, assignment keys, and set memberships.""" + hash_data = _hgetall(r, _keys.run_key(run_id)) vehicle_id = hash_data.get("vehicle") operator_id = hash_data.get("operator") trip_id = hash_data.get("trip_id") @@ -186,16 +238,17 @@ def _purge_redis_run(r: redis.Redis, run_id: str, dry_run: bool) -> dict[str, in def purge_redis_all_runs(r: redis.Redis, dry_run: bool) -> dict[str, Any]: + """Purge all run state from Redis (or preview it under --dry-run); returns a summary of what changed.""" actions: list[str] = [] keys_removed = 0 set_removals = 0 all_run_ids: set[str] = set() - all_run_ids.update(r.smembers("runs:tracking")) - all_run_ids.update(r.smembers("runs:in_progress")) - for key in r.keys("run:*"): + all_run_ids.update(_smembers(r, "runs:tracking")) + all_run_ids.update(_smembers(r, "runs:in_progress")) + for key in _rkeys(r, "run:*"): all_run_ids.add(key.split(":", 1)[1]) - for key in r.keys("runs:last_seen:*"): + for key in _rkeys(r, "runs:last_seen:*"): all_run_ids.add(key.split(":", 2)[2]) for run_id in sorted(all_run_ids): @@ -212,7 +265,7 @@ def purge_redis_all_runs(r: redis.Redis, dry_run: bool) -> dict[str, Any]: "runs:last_seen:*", "run:*", ): - for key in r.keys(pattern): + for key in _rkeys(r, pattern): n = _rdel(r, [key], dry_run) if n: keys_removed += n @@ -220,7 +273,7 @@ def purge_redis_all_runs(r: redis.Redis, dry_run: bool) -> dict[str, Any]: for set_key in ("runs:tracking", "runs:in_progress"): if r.exists(set_key): - members = list(r.smembers(set_key)) + members = list(_smembers(r, set_key)) if members: if not dry_run: r.delete(set_key) @@ -231,6 +284,7 @@ def purge_redis_all_runs(r: redis.Redis, dry_run: bool) -> dict[str, Any]: def purge_redis_one_run(r: redis.Redis, run_id: str, dry_run: bool) -> dict[str, Any]: + """Purge (or preview, under --dry-run) one run's Redis state; returns a summary of what changed.""" result = _purge_redis_run(r, run_id, dry_run) return { "keys_removed": result["keys"], @@ -242,7 +296,7 @@ def purge_redis_one_run(r: redis.Redis, run_id: str, dry_run: bool) -> dict[str, def purge_redis_vehicle(r: redis.Redis, vehicle_id: str, dry_run: bool) -> dict[str, Any]: """Free the Redis assignment for one vehicle and cascade-purge its run.""" current_run_key = f"vehicle:{vehicle_id}:current_run" - run_id = r.get(current_run_key) + run_id = _get(r, current_run_key) if run_id: return purge_redis_one_run(r, run_id, dry_run) n = _rdel(r, [current_run_key], dry_run) @@ -263,7 +317,10 @@ def purge_redis_vehicle(r: redis.Redis, vehicle_id: str, dry_run: bool) -> dict[ ) -def db_purge_all_runs(conn, include_telemetry: bool, dry_run: bool) -> dict[str, Any]: +def db_purge_all_runs( + conn: psycopg2.extensions.connection, include_telemetry: bool, dry_run: bool +) -> dict[str, Any]: + """Delete (or count, under --dry-run) all runs and their child rows from PostgreSQL.""" counts: dict[str, int] = {} with conn.cursor() as cur: if include_telemetry: @@ -277,7 +334,13 @@ def db_purge_all_runs(conn, include_telemetry: bool, dry_run: bool) -> dict[str, return counts -def db_purge_one_run(conn, run_id: str, include_telemetry: bool, dry_run: bool) -> dict[str, Any]: +def db_purge_one_run( + conn: psycopg2.extensions.connection, + run_id: str, + include_telemetry: bool, + dry_run: bool, +) -> dict[str, Any]: + """Delete (or count, under --dry-run) one run and its child rows from PostgreSQL.""" counts: dict[str, int] = {} with conn.cursor() as cur: if include_telemetry: @@ -299,7 +362,13 @@ def db_purge_one_run(conn, run_id: str, include_telemetry: bool, dry_run: bool) return counts -def db_purge_vehicle_runs(conn, vehicle_id: str, include_telemetry: bool, dry_run: bool) -> dict[str, Any]: +def db_purge_vehicle_runs( + conn: psycopg2.extensions.connection, + vehicle_id: str, + include_telemetry: bool, + dry_run: bool, +) -> dict[str, Any]: + """Delete (or count, under --dry-run) all of a vehicle's runs and their child rows from PostgreSQL.""" counts: dict[str, int] = {} with conn.cursor() as cur: if include_telemetry: @@ -330,6 +399,7 @@ def db_purge_vehicle_runs(conn, vehicle_id: str, include_telemetry: bool, dry_ru def _print_db_section(counts: dict[str, int], dry_run: bool) -> None: + """Print the per-table row counts deleted (or that would be deleted) from PostgreSQL.""" verb = "would delete" if dry_run else "deleted" total = sum(counts.values()) if total == 0: @@ -343,6 +413,7 @@ def _print_db_section(counts: dict[str, int], dry_run: bool) -> None: def _print_redis_section(result: dict[str, Any], dry_run: bool) -> None: + """Print the Redis keys and set memberships removed (or that would be removed).""" verb = "would remove" if dry_run else "removed" actions = result.get("actions", []) if not actions: @@ -362,6 +433,7 @@ def print_report( redis_result: dict[str, Any] | None, dry_run: bool, ) -> None: + """Print a summary header plus the DB and/or Redis sections for whichever cleanups ran.""" label = "DRY RUN" if dry_run else "EXECUTED" print(f"\n{SEP}\n{label}\n{SEP}\n") if db_counts is not None: @@ -376,6 +448,7 @@ def print_report( def main() -> None: + """Parse CLI args, connect to PostgreSQL and/or Redis, run the selected cleanup mode, and print a report.""" parser = argparse.ArgumentParser( description="Clean run state from PostgreSQL and Redis", formatter_class=argparse.RawDescriptionHelpFormatter, @@ -448,7 +521,7 @@ def main() -> None: except Exception as e: print(f"\n⚠️ Cannot connect to PostgreSQL at {args.db_host}:{args.db_port}/{args.db_name}") print(f"Error: {e}") - print(f"\nTip: if running on the host, pass --db-host localhost\n") + print("\nTip: if running on the host, pass --db-host localhost\n") sys.exit(1) if need_redis: @@ -458,7 +531,7 @@ def main() -> None: except Exception as e: print(f"\n⚠️ Cannot connect to Redis at {args.redis_host}:{args.redis_port}") print(f"Error: {e}") - print(f"\nTip: if running on the host, pass --redis-host localhost\n") + print("\nTip: if running on the host, pass --redis-host localhost\n") sys.exit(1) # --- Confirmation --- @@ -481,6 +554,8 @@ def main() -> None: redis_result: dict[str, Any] | None = None if need_db: + # need_db implies get_db() above succeeded (its except branch exits the process). + assert conn is not None if args.run: db_counts = db_purge_one_run(conn, args.run, args.telemetry, args.dry_run) elif args.vehicle: @@ -489,6 +564,8 @@ def main() -> None: db_counts = db_purge_all_runs(conn, args.telemetry, args.dry_run) if need_redis: + # need_redis implies get_redis() above succeeded (its except branch exits the process). + assert r is not None if args.run: redis_result = purge_redis_one_run(r, args.run, args.dry_run) elif args.vehicle: From 5489fe454efaba39bbdfabe1625d8fea97ddbada Mon Sep 17 00:00:00 2001 From: Jae Date: Wed, 19 Aug 2026 11:44:31 -0600 Subject: [PATCH 45/68] fix(api): repair which-shapes and find-trips lookup endpoints WhichShapesView queried RouteStop.route/.shape, which don't exist (the model's fields are linked_route/linked_shape), and asked GeoShape for a direction_id it doesn't have. FindTripsView queried TripTime.trip_time, which doesn't exist (the field is departure_time), and matched TripTime to Trip by the bare trip_id string instead of the linked_trip FK, which can cross-match same-numbered trips across feeds. Both endpoints back the run-registration UI cascade (pick a route -> its shapes -> candidate trips with run lifecycle state) and had never worked. --- backend/api/__init__.py | 0 backend/api/serializers.py | 11 +-- backend/api/tests/__init__.py | 0 backend/api/tests/conftest.py | 126 +++++++++++++++++++++++++ backend/api/tests/test_find_trips.py | 90 ++++++++++++++++++ backend/api/tests/test_which_shapes.py | 34 +++++++ backend/api/views.py | 66 ++++++------- 7 files changed, 286 insertions(+), 41 deletions(-) create mode 100644 backend/api/__init__.py create mode 100644 backend/api/tests/__init__.py create mode 100644 backend/api/tests/conftest.py create mode 100644 backend/api/tests/test_find_trips.py create mode 100644 backend/api/tests/test_which_shapes.py diff --git a/backend/api/__init__.py b/backend/api/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/api/serializers.py b/backend/api/serializers.py index 11ed918..6d5f9a4 100644 --- a/backend/api/serializers.py +++ b/backend/api/serializers.py @@ -400,14 +400,13 @@ class ServiceTodaySerializer(serializers.Serializer): class WhichShapesSerializer(serializers.Serializer): - """Serialize the distinct shapes used by a route's stop sequence.""" + """Serialize the shape metadata for one of the distinct GeoShapes used by a route's stop sequence.""" shape_id = serializers.CharField() - direction_id = serializers.IntegerField() - shape_name = serializers.CharField() - shape_desc = serializers.CharField() - shape_from = serializers.CharField() - shape_to = serializers.CharField() + shape_name = serializers.CharField(allow_null=True, required=False) + shape_desc = serializers.CharField(allow_null=True, required=False) + shape_from = serializers.CharField(allow_null=True, required=False) + shape_to = serializers.CharField(allow_null=True, required=False) class FindTripsSerializer(serializers.Serializer): diff --git a/backend/api/tests/__init__.py b/backend/api/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/api/tests/conftest.py b/backend/api/tests/conftest.py new file mode 100644 index 0000000..e1caf71 --- /dev/null +++ b/backend/api/tests/conftest.py @@ -0,0 +1,126 @@ +"""Shared fixtures for api app tests: a minimal GTFS feed with one route, shape, and stop. + +Built imperatively via the ORM (small, in-code fixture data) rather than the +large `feed/fixtures/gtfs.json` bundle, so each test only pulls in the rows +it actually needs. +""" + +from datetime import date + +import pytest +from django.contrib.gis.geos import LineString +from rest_framework.test import APIClient + +from feed.models import Agency, Calendar, Feed, GeoShape, Route, RouteStop, Stop, Trip + + +@pytest.fixture +def api_client() -> APIClient: + """Return an unauthenticated DRF test client.""" + return APIClient() + + +@pytest.fixture +def current_feed(db) -> Feed: + """Create and return a Feed marked as the current GTFS feed.""" + return Feed.objects.create(feed_id="feed-1", is_current=True) + + +@pytest.fixture +def agency(current_feed: Feed) -> Agency: + """Create an Agency in the current feed.""" + return Agency.objects.create( + feed=current_feed, + agency_id="agency-1", + agency_name="Test Agency", + agency_url="https://example.com", + agency_timezone="America/Costa_Rica", + ) + + +@pytest.fixture +def route(current_feed: Feed, agency: Agency) -> Route: + """Create a Route in the current feed, linked to `agency`.""" + return Route.objects.create( + feed=current_feed, + route_id="route-1", + agency_id=agency.agency_id, + route_short_name="1", + route_long_name="Test Route", + ) + + +@pytest.fixture +def geo_shape(current_feed: Feed) -> GeoShape: + """Create a GeoShape in the current feed with a two-point LineString.""" + return GeoShape.objects.create( + feed=current_feed, + shape_id="shape-1", + geometry=LineString((-84.1, 9.9), (-84.0, 9.95)), + shape_name="Test Shape", + shape_desc="A shape for tests", + shape_from="Origin", + shape_to="Destination", + ) + + +@pytest.fixture +def stop(current_feed: Feed) -> Stop: + """Create a Stop in the current feed.""" + return Stop.objects.create( + feed=current_feed, + stop_id="stop-1", + stop_name="Test Stop", + stop_lat=9.9, + stop_lon=-84.1, + ) + + +@pytest.fixture +def route_stop( + current_feed: Feed, route: Route, geo_shape: GeoShape, stop: Stop +) -> RouteStop: + """Create a RouteStop tying `route` to `geo_shape` via `stop`.""" + return RouteStop.objects.create( + feed=current_feed, + route_id=route.route_id, + shape_id=geo_shape.shape_id, + direction_id=0, + stop_id=stop.stop_id, + stop_sequence=1, + timepoint=True, + ) + + +@pytest.fixture +def calendar(current_feed: Feed) -> Calendar: + """Create a Calendar (service) in the current feed, valid all of 2026.""" + return Calendar.objects.create( + feed=current_feed, + service_id="service-1", + monday=True, + tuesday=True, + wednesday=True, + thursday=True, + friday=True, + saturday=False, + sunday=False, + start_date=date(2026, 1, 1), + end_date=date(2026, 12, 31), + ) + + +@pytest.fixture +def trip(current_feed: Feed, route: Route, calendar: Calendar, geo_shape: GeoShape) -> Trip: + """Create a Trip in the current feed for `route`/`calendar`/`geo_shape`.""" + return Trip.objects.create( + feed=current_feed, + route_id=route.route_id, + service_id=calendar.service_id, + trip_id="trip-1", + direction_id=0, + shape_id=geo_shape.shape_id, + trip_headsign="Test Headsign", + wheelchair_accessible=0, + bikes_allowed=0, + ) diff --git a/backend/api/tests/test_find_trips.py b/backend/api/tests/test_find_trips.py new file mode 100644 index 0000000..e3a1faf --- /dev/null +++ b/backend/api/tests/test_find_trips.py @@ -0,0 +1,90 @@ +"""API tests for FindTripsView (`GET /api/find-trips/`). + +Second step of the run-registration UI cascade: given a route/service/shape +selection, return candidate trips each tagged with the current lifecycle +state of any run for that trip today. +""" + +from datetime import date, time + +import pytest + +from feed.models import Stop, Trip, TripTime +from runs.domain.lifecycle import RunLifecycleStates +from runs.models import Run + + +@pytest.fixture +def trip_time(trip: Trip, stop: Stop) -> TripTime: + """Create a TripTime departure for `trip` at `stop`.""" + return TripTime.objects.create( + feed=trip.feed, + trip_id=trip.trip_id, + stop_id=stop.stop_id, + stop_sequence=1, + departure_time=time(7, 0, 0), + ) + + +@pytest.mark.django_db +def test_returns_trip_tagged_unknown_when_no_run_exists( + api_client, trip, trip_time, route +): + """A matching trip with no Run today is tagged run_lifecycle_state=UNKNOWN.""" + response = api_client.get( + "/api/find-trips/", + { + "route_id": trip.route_id, + "service_id": trip.service_id, + "shape_id": trip.shape_id, + }, + ) + + assert response.status_code == 200 + body = response.json() + assert body == [ + { + "trip_id": trip.trip_id, + "trip_time": "07:00:00", + "run_lifecycle_state": "UNKNOWN", + "direction_id": trip.direction_id, + "trip_headsign": trip.trip_headsign, + } + ] + + +@pytest.mark.django_db +def test_returns_trip_tagged_with_its_run_lifecycle_state( + api_client, trip, trip_time +): + """A matching trip with a Run today is tagged with that run's actual lifecycle state.""" + Run.objects.create( + trip_id=trip.trip_id, + route_id=trip.route_id, + direction_id=trip.direction_id, + shape_id=trip.shape_id, + start_date=date.today(), + run_lifecycle_state=RunLifecycleStates.IN_PROGRESS, + ) + + response = api_client.get( + "/api/find-trips/", + { + "route_id": trip.route_id, + "service_id": trip.service_id, + "shape_id": trip.shape_id, + }, + ) + + assert response.status_code == 200 + body = response.json() + assert body[0]["run_lifecycle_state"] == RunLifecycleStates.IN_PROGRESS.value + + +@pytest.mark.django_db +def test_missing_params_returns_400(api_client, current_feed): + """Omitting any of route_id/service_id/shape_id returns a 400.""" + response = api_client.get("/api/find-trips/", {"route_id": "route-1"}) + + assert response.status_code == 400 + assert "error" in response.json() diff --git a/backend/api/tests/test_which_shapes.py b/backend/api/tests/test_which_shapes.py new file mode 100644 index 0000000..0ebc3d1 --- /dev/null +++ b/backend/api/tests/test_which_shapes.py @@ -0,0 +1,34 @@ +"""API tests for WhichShapesView (`GET /api/which-shapes/`). + +First step of the run-registration UI cascade: given a route, return the +distinct GeoShapes used by its stop sequence in the current feed. +""" + +import pytest + + +@pytest.mark.django_db +def test_returns_shape_metadata_for_route(api_client, route, route_stop, geo_shape): + """A route with one RouteStop returns its linked GeoShape's metadata.""" + response = api_client.get("/api/which-shapes/", {"route_id": route.route_id}) + + assert response.status_code == 200 + body = response.json() + assert body == [ + { + "shape_id": geo_shape.shape_id, + "shape_name": geo_shape.shape_name, + "shape_desc": geo_shape.shape_desc, + "shape_from": geo_shape.shape_from, + "shape_to": geo_shape.shape_to, + } + ] + + +@pytest.mark.django_db +def test_returns_empty_list_for_unknown_route(api_client, current_feed): + """An unresolvable route_id returns an empty list rather than erroring.""" + response = api_client.get("/api/which-shapes/", {"route_id": "ghost-route"}) + + assert response.status_code == 200 + assert response.json() == [] diff --git a/backend/api/views.py b/backend/api/views.py index ce86a9f..b554301 100644 --- a/backend/api/views.py +++ b/backend/api/views.py @@ -670,45 +670,42 @@ def get(self, request: Request) -> Response: class WhichShapesView(APIView): - """Endpoint returning the distinct shapes used by a route's stops, given `?route_id=`.""" + """First step of the run-registration UI cascade: given a route, return the distinct shapes used by its stops.""" def get(self, request: Request) -> Response: - """Return the distinct GeoShapes used by the given route in the current feed.""" + """Return shape metadata (shape_id, name, desc, from/to) for the distinct GeoShapes used by `?route_id=` in the current feed, or an empty list if the route/feed can't be resolved.""" route_id = request.query_params.get("route_id") feed = Feed.objects.filter(is_current=True).first() - route = Route.objects.filter(feed=feed, route_id=route_id).first() - # Pre-existing bug, out of scope for this docs/type-hints pass: RouteStop - # has no "route"/"shape" fields (only linked_route/linked_shape), so this - # query raises FieldError at runtime; flagged in the task report rather - # than fixed here. `# type: ignore` silences the resulting mypy errors - # (field names it can't resolve, then a RouteStop row treated as a dict). - shapes = RouteStop.objects.filter(route=route) # type: ignore[misc] - shapes = shapes.values("shape").distinct() # type: ignore[misc] - geo_shapes = [] - for shape in shapes: - geo_shape = ( - GeoShape.objects.filter(id=shape["shape"]) # type: ignore[index, misc] - .values( - "shape_id", - "direction_id", - "shape_name", - "shape_desc", - "shape_from", - "shape_to", - ) - .first() - ) - geo_shapes.append(geo_shape) + route = ( + Route.objects.filter(feed=feed, route_id=route_id).first() + if route_id + else None + ) + if not route: + return Response([]) + + shape_pks = ( + RouteStop.objects.filter(linked_route=route) + .values_list("linked_shape", flat=True) + .distinct() + ) + geo_shapes = GeoShape.objects.filter(id__in=shape_pks).values( + "shape_id", + "shape_name", + "shape_desc", + "shape_from", + "shape_to", + ) serializer = WhichShapesSerializer(geo_shapes, many=True) return Response(serializer.data) class FindTripsView(APIView): - """Endpoint returning scheduled trips matching a route/service/shape, with their run lifecycle state.""" + """Second step of the run-registration UI cascade: given a route/service/shape selection, return candidate trips.""" def get(self, request: Request) -> Response: - """Return trips for `?route_id=&service_id=&shape_id=`, each tagged with its run's lifecycle state.""" + """Return trips for `?route_id=&service_id=&shape_id=`, each tagged with its run's lifecycle state, or 400 if any parameter is missing.""" # Get the query parameters route_id = request.query_params.get("route_id") service_id = request.query_params.get("service_id") @@ -732,14 +729,13 @@ def get(self, request: Request) -> Response: selected_trips = [] for trip in trips: - # Pre-existing bug, out of scope for this docs/type-hints pass: - # TripTime has no "trip_time" field (it's "departure_time"), so this - # raises FieldError at runtime; flagged in the task report rather - # than fixed here. + # TripTime relates to Trip via the `linked_trip` FK (resolved on + # save from feed+trip_id) rather than the bare trip_id string, so + # this can't cross-match a same-numbered trip from another feed. this_trip = ( - TripTime.objects.filter(trip_id=trip.trip_id) # type: ignore[misc] - .order_by("trip_time") - .values("trip_id", "trip_time") + TripTime.objects.filter(linked_trip=trip) + .order_by("departure_time") + .values("trip_id", "departure_time") .first() ) if this_trip: @@ -761,7 +757,7 @@ def get(self, request: Request) -> Response: selected_trips.append( { "trip_id": this_trip["trip_id"], - "trip_time": this_trip["trip_time"], + "trip_time": this_trip["departure_time"], "run_lifecycle_state": run_lifecycle_state, "direction_id": trip.direction_id, "trip_headsign": trip.trip_headsign, From 487c1b92506e1edd262308ad4441788d4d40dfe6 Mon Sep 17 00:00:00 2001 From: Jae Date: Wed, 19 Aug 2026 11:47:18 -0600 Subject: [PATCH 46/68] fix(api): point CompanySerializer at the real linked_agency field CompanySerializer declared a PrimaryKeyRelatedField for "agency", but the Company model has no such field -- it's linked_agency (M2M to Agency). Dropping the stale explicit field declaration (plus a duplicated Meta.model line) lets HyperlinkedModelSerializer introspect the model correctly, fixing the live /api/company/ endpoint. --- backend/api/serializers.py | 5 +--- backend/api/tests/test_company.py | 45 +++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+), 4 deletions(-) create mode 100644 backend/api/tests/test_company.py diff --git a/backend/api/serializers.py b/backend/api/serializers.py index 6d5f9a4..be692e3 100644 --- a/backend/api/serializers.py +++ b/backend/api/serializers.py @@ -52,12 +52,9 @@ class LoginSerializer(serializers.Serializer): class CompanySerializer(serializers.HyperlinkedModelSerializer): - """Serialize a Company, the legal entity operating vehicles under a GTFS Agency.""" - - agency = serializers.PrimaryKeyRelatedField(queryset=Agency.objects.all()) + """Serialize a Company, the legal entity operating vehicles under one or more GTFS Agencies.""" class Meta: - model = Company model = Company fields = "__all__" ordering = ["id"] diff --git a/backend/api/tests/test_company.py b/backend/api/tests/test_company.py new file mode 100644 index 0000000..12101ca --- /dev/null +++ b/backend/api/tests/test_company.py @@ -0,0 +1,45 @@ +"""API tests for the live CompanyViewSet (`GET /api/company/`). + +CompanySerializer previously declared a PrimaryKeyRelatedField for a +non-existent `agency` attribute (the Company model's field is the M2M +`linked_agency`); these tests exercise the real field end to end. +""" + +import pytest + +from feed.models import Agency +from operations.models import Company + + +@pytest.mark.django_db +def test_list_serializes_linked_agency(api_client, agency: Agency): + """Listing a Company with a linked agency serializes linked_agency as a list of agency PKs.""" + company = Company.objects.create(id="company-1", name="Test Transit Co.") + company.linked_agency.set([agency]) + + response = api_client.get("/api/company/") + + assert response.status_code == 200 + body = response.json() + assert len(body) == 1 + # HyperlinkedModelSerializer swaps the pk for a `url` field rather than + # exposing `id` directly, so identify the row by name and check the URL + # embeds the pk instead. + assert body[0]["name"] == "Test Transit Co." + assert "company-1" in body[0]["url"] + # HyperlinkedModelSerializer represents the M2M as hyperlinks too, one per + # linked agency. + assert len(body[0]["linked_agency"]) == 1 + assert f"/api/agency/{agency.pk}/" in body[0]["linked_agency"][0] + + +@pytest.mark.django_db +def test_list_serializes_company_with_no_linked_agency(api_client, db): + """A Company with no linked agencies still serializes, with an empty linked_agency list.""" + Company.objects.create(id="company-2", name="Agency-less Co.") + + response = api_client.get("/api/company/") + + assert response.status_code == 200 + body = response.json() + assert body[0]["linked_agency"] == [] From 27707885a9de56503a3c6ee57a5a6f7f4a275d23 Mon Sep 17 00:00:00 2001 From: Jae Date: Wed, 19 Aug 2026 11:52:03 -0600 Subject: [PATCH 47/68] feat(runs): implement is_run_validated as a revalidation guard is_run_validated was a no-op returning True, leaving a race window between VALIDATE_RUN and INITIALIZE_RUN: a vehicle/trip/operator could be claimed by another run, or the nightly build_schedule feed rotation could drop the run's trip, in between the two events. The guard now re-delegates to is_vehicle_available/is_trip_available/is_operator_available (idempotent re-fires where this run already holds its own claims still pass) and re-confirms the trip exists in whichever feed is current now, raising RunLifecycleError with field-keyed detail on failure. Transition table and guard wiring are unchanged -- all fixed inside the guard itself. --- backend/runs/domain/lifecycle/guards.py | 29 ++- .../tests/test_guards_is_run_validated.py | 200 ++++++++++++++++++ 2 files changed, 228 insertions(+), 1 deletion(-) create mode 100644 backend/runs/domain/lifecycle/tests/test_guards_is_run_validated.py diff --git a/backend/runs/domain/lifecycle/guards.py b/backend/runs/domain/lifecycle/guards.py index e566e0f..cc533be 100644 --- a/backend/runs/domain/lifecycle/guards.py +++ b/backend/runs/domain/lifecycle/guards.py @@ -181,7 +181,34 @@ def is_vehicle_tracked( def is_run_validated( run: Run, transition: "Transition", payload: dict[str, Any] ) -> bool: - """No-op guard: validation was already enforced by the VALIDATE_RUN transition, so this always passes.""" + """Revalidate resource availability and the run's trip against the *current* feed before INITIALIZE_RUN. + + Closes the VALIDATE_RUN -> INITIALIZE_RUN race window: re-runs the + same vehicle/trip/operator availability checks performed at + VALIDATE_RUN (each raises only when the resource is claimed by a + *different* run, so a re-fire where this run already holds its own + claims still passes), then re-confirms the run's trip still exists + in whichever feed is current *now* -- the successor of the old + validate_schedule check, covering the nightly build_schedule feed + rotation that may have happened between validation and + initialization. Raises RunLifecycleError with field-keyed detail on + any failure. + """ + from feed.models import Feed, Trip + + RunLifecycleGuards.is_vehicle_available(run, transition, payload) + RunLifecycleGuards.is_trip_available(run, transition, payload) + RunLifecycleGuards.is_operator_available(run, transition, payload) + + trip_id = payload.get("trip_id") or run.trip_id + feed = Feed.objects.filter(is_current=True).first() + if not feed: + raise RunLifecycleError({"feed": "No current GTFS feed found"}) + if not trip_id or not Trip.objects.filter(feed=feed, trip_id=trip_id).exists(): + raise RunLifecycleError( + {"trip_id": f"trip_id '{trip_id}' not found in current GTFS feed"} + ) + return True @staticmethod diff --git a/backend/runs/domain/lifecycle/tests/test_guards_is_run_validated.py b/backend/runs/domain/lifecycle/tests/test_guards_is_run_validated.py new file mode 100644 index 0000000..6c9d3a5 --- /dev/null +++ b/backend/runs/domain/lifecycle/tests/test_guards_is_run_validated.py @@ -0,0 +1,200 @@ +"""Unit tests for RunLifecycleGuards.is_run_validated. + +The VALIDATE_RUN -> INITIALIZE_RUN revalidation guard: re-runs the resource +availability checks and re-confirms the run's trip against whichever feed is +current *now*, closing the race window between validation and +initialization (including the nightly build_schedule feed rotation). + +Real Postgres is used for the Feed/Trip/Run rows (guards.py already needs +Django DB access for these lookups); the module-level Redis client is +swapped for an in-memory fake since only `.get` is exercised by the guards +under test. +""" + +from datetime import date + +import pytest +from django.contrib.auth.models import User + +from feed.models import Agency, Calendar, Feed, Route, Trip +from operations.models import Operator, Vehicle +from runs.domain.lifecycle import guards as guards_module +from runs.domain.lifecycle.events import RunLifecycleEvents +from runs.domain.lifecycle.guards import RunLifecycleGuards +from runs.domain.lifecycle.states import RunLifecycleStates +from runs.domain.lifecycle.transitions import Transition +from runs.models import Run +from runs.services.exceptions import RunLifecycleError + + +class _FakeRedis: + """Stand-in for the module-level Redis client: only `.get` is used by the guards under test.""" + + def __init__(self) -> None: + self.store: dict[str, str] = {} + + def get(self, key: str) -> bytes | None: + """Return the stored value for `key` as bytes, or None if absent (mirrors redis-py's `.get`).""" + value = self.store.get(key) + return value.encode() if value is not None else None + + +@pytest.fixture +def fake_redis(monkeypatch: pytest.MonkeyPatch) -> _FakeRedis: + """Swap the guards module's real Redis client for an in-memory fake.""" + fake = _FakeRedis() + monkeypatch.setattr(guards_module, "r", fake) + return fake + + +@pytest.fixture +def feed(db) -> Feed: + """Create and return a Feed marked as the current GTFS feed.""" + return Feed.objects.create(feed_id="feed-1", is_current=True) + + +@pytest.fixture +def vehicle(db) -> Vehicle: + """Create a Vehicle.""" + return Vehicle.objects.create(id="veh-1", license_plate="ABC-123") + + +@pytest.fixture +def operator(db) -> Operator: + """Create an Operator backed by a fresh auth User.""" + user = User.objects.create_user(username="op-test", password="pw") + return Operator.objects.create(id="op-1", user=user) + + +@pytest.fixture +def calendar(feed: Feed) -> Calendar: + """Create a Calendar (service) valid all of 2026 in `feed`.""" + return Calendar.objects.create( + feed=feed, + service_id="svc-1", + monday=True, + tuesday=True, + wednesday=True, + thursday=True, + friday=True, + saturday=False, + sunday=False, + start_date=date(2026, 1, 1), + end_date=date(2026, 12, 31), + ) + + +@pytest.fixture +def route(feed: Feed) -> Route: + """Create a Route in `feed`, with its required Agency.""" + agency = Agency.objects.create( + feed=feed, + agency_id="ag-1", + agency_name="Test Agency", + agency_url="https://example.com", + agency_timezone="America/Costa_Rica", + ) + return Route.objects.create(feed=feed, route_id="r-1", agency_id=agency.agency_id) + + +@pytest.fixture +def trip(feed: Feed, route: Route, calendar: Calendar) -> Trip: + """Create a Trip in `feed` for `route`/`calendar`.""" + return Trip.objects.create( + feed=feed, + route_id=route.route_id, + service_id=calendar.service_id, + trip_id="t-1", + direction_id=0, + shape_id="s-1", + wheelchair_accessible=0, + bikes_allowed=0, + ) + + +@pytest.fixture +def run(vehicle: Vehicle, operator: Operator, trip: Trip) -> Run: + """Create a VALIDATED Run for `trip`, claimed by `vehicle`/`operator`.""" + run = Run.objects.create( + trip_id=trip.trip_id, + route_id=trip.route_id, + direction_id=trip.direction_id, + shape_id=trip.shape_id, + start_date=date.today(), + run_lifecycle_state=RunLifecycleStates.VALIDATED, + ) + run.vehicle.set([vehicle]) + run.operator.set([operator]) + return run + + +def _transition() -> Transition: + return Transition( + from_state=RunLifecycleStates.VALIDATED, + event=RunLifecycleEvents.INITIALIZE_RUN, + to_state=RunLifecycleStates.INITIALIZED, + guards=[RunLifecycleGuards.is_run_validated], + actions=[], + ) + + +def test_passes_when_resources_free(fake_redis: _FakeRedis, run: Run) -> None: + """No Redis claims at all: every availability check and the trip lookup pass.""" + assert RunLifecycleGuards.is_run_validated(run, _transition(), {}) is True + + +def test_passes_when_claims_belong_to_this_run( + fake_redis: _FakeRedis, run: Run, vehicle: Vehicle, operator: Operator, trip: Trip +) -> None: + """A re-fire where this run already holds its own vehicle/trip/operator claims still passes.""" + fake_redis.store[f"vehicle:{vehicle.id}:current_run"] = str(run.id) + fake_redis.store[f"trip:{trip.trip_id}:current_run"] = str(run.id) + fake_redis.store[f"operator:{operator.id}:current_run"] = str(run.id) + + assert RunLifecycleGuards.is_run_validated(run, _transition(), {}) is True + + +def test_raises_when_vehicle_claimed_by_another_run( + fake_redis: _FakeRedis, run: Run, vehicle: Vehicle +) -> None: + """A vehicle claimed by a different run's ID raises with vehicle_id detail.""" + fake_redis.store[f"vehicle:{vehicle.id}:current_run"] = "some-other-run-id" + + with pytest.raises(RunLifecycleError) as exc_info: + RunLifecycleGuards.is_run_validated(run, _transition(), {}) + assert "vehicle_id" in exc_info.value.errors + + +def test_raises_when_trip_claimed_by_another_run( + fake_redis: _FakeRedis, run: Run, trip: Trip +) -> None: + """A trip claimed by a different run's ID raises with trip_id detail.""" + fake_redis.store[f"trip:{trip.trip_id}:current_run"] = "some-other-run-id" + + with pytest.raises(RunLifecycleError) as exc_info: + RunLifecycleGuards.is_run_validated(run, _transition(), {}) + assert "trip_id" in exc_info.value.errors + + +def test_raises_when_operator_claimed_by_another_run( + fake_redis: _FakeRedis, run: Run, operator: Operator +) -> None: + """An operator claimed by a different run's ID raises with operator_id detail.""" + fake_redis.store[f"operator:{operator.id}:current_run"] = "some-other-run-id" + + with pytest.raises(RunLifecycleError) as exc_info: + RunLifecycleGuards.is_run_validated(run, _transition(), {}) + assert "operator_id" in exc_info.value.errors + + +def test_raises_when_trip_absent_from_current_feed( + fake_redis: _FakeRedis, run: Run, trip: Trip, feed: Feed +) -> None: + """If the feed rotated (nightly build_schedule) and the run's trip isn't in the new current feed, raise.""" + feed.is_current = False + feed.save() + Feed.objects.create(feed_id="feed-2", is_current=True) + + with pytest.raises(RunLifecycleError) as exc_info: + RunLifecycleGuards.is_run_validated(run, _transition(), {}) + assert "trip_id" in exc_info.value.errors From 1c1d6cfcb36ba5b3f8e5670aed883dae05a3d210 Mon Sep 17 00:00:00 2001 From: Jae Date: Wed, 19 Aug 2026 11:59:55 -0600 Subject: [PATCH 48/68] docs: add READMEs for api, feed, operations, website, messages, databus, eta_models --- backend/api/README.md | 72 +++++++++++++++++++++++++++++++++ backend/databus/README.md | 78 ++++++++++++++++++++++++++++++++++++ backend/eta_models/README.md | 78 ++++++++++++++++++++++++++++++++++++ backend/feed/README.md | 64 +++++++++++++++++++++++++++++ backend/messages/README.md | 78 ++++++++++++++++++++++++++++++++++++ backend/operations/README.md | 49 ++++++++++++++++++++++ backend/website/README.md | 28 +++++++++++++ 7 files changed, 447 insertions(+) create mode 100644 backend/api/README.md create mode 100644 backend/databus/README.md create mode 100644 backend/eta_models/README.md create mode 100644 backend/feed/README.md create mode 100644 backend/messages/README.md create mode 100644 backend/operations/README.md create mode 100644 backend/website/README.md diff --git a/backend/api/README.md b/backend/api/README.md new file mode 100644 index 0000000..5a46036 --- /dev/null +++ b/backend/api/README.md @@ -0,0 +1,72 @@ +# API · public REST layer (DRF) + +- **Purpose**: the orchestrator's control plane. Exposes run registration and lifecycle + transitions, read-only GTFS Schedule resources, two lookup endpoints that back the + run-registration UI cascade, and the static realtime OpenAPI schema. Django models: none — + `api` is a REST layer over `runs`, `operations`, and `feed` models. +- **Key modules**: + - `views.py` — all ViewSets/APIViews (operations, runs, GTFS Schedule, auxiliary GTFS) + - `serializers.py` — DRF serializers, including `CreateRunSerializer` / `RunUpdateSerializer` + - `urls.py` — router registrations + custom paths + - `realtime.yml` — static GTFS Realtime/MQTT OpenAPI/AsyncAPI schema, served as a file download + +## Run registration & lifecycle + +- `POST /api/create-run/` (`CreateRunViewSet`) — validates the payload, resolves + `vehicle_id`/`operator_id`, creates the `Run` row (implicit `RUN_REQUESTED`), then drives it + through `RunLifecycleEvents.VALIDATE_RUN` → `RunLifecycleEvents.INITIALIZE_RUN` via + `RunLifecycleService`. Any failed step returns the failing stage (`serialization`, + `operational_validation`, `registration`, `gtfs_validation`, `initialization`) with a matching + HTTP status (`api/views.py:199-279`). +- `GET /api/runs//state/` — current `run_lifecycle_state`. +- `POST /api/runs//update/` (`RunUpdateViewSet`) — advances a run's FSM. The `event` + field takes the **lowercase** `RunLifecycleEvents` value (e.g. `run_confirmed_by_operator`, not + the enum member name); `RunUpdateSerializer` validates against `RunLifecycleEvents` and any + extra `details` are flattened into the payload before `process_event` (`api/views.py:303-366`). +- `GET /api/runs//history/` — ordered `RunLifecycleTransition` audit log. + +## GTFS Schedule + registration-UI lookups + +- Router-registered read/write resources for `agency`, `stops`/`geo-stops`, `shapes`/`geo-shapes`, + `routes`, `calendars`, `calendar-dates`, `trips`, `stop-times`, `fare-attributes`, `fare-rules`, + `feed-info` (all backed by `feed.models`, unauthenticated). +- `GET /api/service-today/?date=YYYY-MM-DD` — active GTFS `service_id`s for a date. +- `GET /api/which-shapes/?route_id=` — step 1 of the registration cascade: distinct + `GeoShape`s used by a route's stops in the current (`is_current=True`) feed. +- `GET /api/find-trips/?route_id=&service_id=&shape_id=` — step 2: candidate trips, each tagged + with its matching `Run`'s lifecycle state (or `"UNKNOWN"`). + +## Operations resources + +Router-registered ViewSets over `operations.models`: `company`, `operator`, `data-provider`, +`vehicle` (filterable by `company`), `equipment`, `equipment-log` (filterable by `equipment`, +`data_provider`, `vehicle`), plus `position`, `stop-status`, `occupancy`, `congestion` from +`runs.models`. All except `CompanyViewSet` use `TokenAuthentication`. + +## Auth & docs + +- `POST /api/login/` — username/password → DRF auth `Token` + operator basic info. +- Global default authentication is `TokenAuthentication` (`databus/settings.py` `REST_FRAMEWORK`). +- `GET /api/docs/schema/` — serves the **static** file `api/realtime.yml` as a download + (`api/views.py:89-94`); this is a hand-maintained schema, not the dynamic drf-spectacular route. +- `GET /api/docs/` — ReDoc page (`SpectacularRedocView`, clickjacking-exempt so it can be + embedded). Note `drf_spectacular`'s dynamic OpenAPI generation is installed (`SPECTACULAR_SETTINGS` + in `databus/settings.py`) but the `docs/schema/` route intentionally serves the static YAML + instead of the generated schema — the dynamic route is unfinished. + +## Configuration + +No app-specific env vars; auth/schema settings come from `databus/settings.py` +(`REST_FRAMEWORK`, `SPECTACULAR_SETTINGS`). + +## Tests + +``` +docker compose -f compose.dev.yml run --rm orchestrator uv run pytest api/ -q +``` +`api/tests/` covers `company`, `find-trips`, and `which-shapes`; `make test` runs the full suite. + +## Docs + +- [REST API](../../docs/content/interfaces/rest-api.md) +- [Run lifecycle states](../../docs/content/runs/lifecycle-states.md) diff --git a/backend/databus/README.md b/backend/databus/README.md new file mode 100644 index 0000000..a108c38 --- /dev/null +++ b/backend/databus/README.md @@ -0,0 +1,78 @@ +# Databús · Django project package + +- **Purpose**: the Django project itself — settings, the Celery app (task discovery, MQTT + consumer bootstep registration, beat schedule), ASGI/WSGI entry points, and root URL + configuration. Every other app under `backend/` is `INSTALLED_APPS`-registered here. +- **Key modules**: + - `settings.py` — all Django/Celery/Channels/DRF configuration, env-driven via `python-decouple` + - `celery.py` — the `Celery("databus")` app, MQTT consumer bootstep registration, `beat_schedule` + - `urls.py` — root URLconf (`admin/`, `website.urls` at `/`, `api.urls` at `/api/`, + `feed.urls` at `/feed/`) + - `asgi.py` / `wsgi.py` — ASGI (Daphne, for Channels/WebSocket) and WSGI entry points + +## Settings — required env vars (`decouple.config`) + +| Variable | Notes | +| --- | --- | +| `SECRET_KEY` | required, no default | +| `DEBUG` | required, cast `bool` | +| `ALLOWED_HOSTS` | required, cast `Csv()` | +| `DB_NAME`, `DB_USER`, `DB_PASSWORD`, `DB_HOST`, `DB_PORT` | required, PostGIS connection | +| `GDAL_LIBRARY_PATH`, `GEOS_LIBRARY_PATH` | required only on macOS (`platform.system() == "Darwin"`) | +| `REDIS_HOST`, `REDIS_PORT` | required — used for `CHANNEL_LAYERS` (`channels_redis`) | +| `RABBITMQ_HOST`, `RABBITMQ_PORT` | required — compose `CELERY_BROKER_URL` | +| `RABBITMQ_USER`, `RABBITMQ_PASS` | optional, default `guest`/`guest` | +| `STATIC_URL` | optional, default `/static/` | +| `MEDIA_URL` | optional, default `/media/` | + +`CELERY_BROKER_URL` is derived, not read directly: `amqp://{RABBITMQ_USER}:{RABBITMQ_PASS}@{RABBITMQ_HOST}:{RABBITMQ_PORT}//` +(`settings.py:146-148`). `CELERY_RESULT_BACKEND = "django-db"`, results are extended +(`CELERY_RESULTS_EXTENDED = True`), and `django_celery_beat`/`django_celery_results` are both +installed apps. `DJANGO_SERVE_STATIC` (plain `os.environ`, not decouple) additionally toggles +serving static/media through Django outside `DEBUG` (`urls.py:33-42`). + +## Celery app (`celery.py`) + +- Discovers tasks from every installed app (`app.autodiscover_tasks()`). +- Registers `realtime_engine.mqtt.MQTTConsumerStep` as a worker bootstep + (`app.steps["worker"].add(MQTTConsumerStep)`); the step itself no-ops unless + `MQTT_CONSUMER_ENABLED` is set, so only the `realtime-engine` container actually starts an MQTT + connection. +- `debug_task` — prints the current task's request context, for sanity-checking worker + connectivity. + +### Beat schedule (`app.conf.beat_schedule`, `celery.py:47-74`) + +| Name | Task | Interval | Notes | +| --- | --- | --- | --- | +| `fetch-positions` | `realtime_engine.tasks.fetch_positions` | every 10s | `options: {"expires": 10}` — a task that hasn't started within its own cycle is revoked rather than queued behind a slow HTTP source | +| `build-vehicle-positions-every-15s` | `schedule_engine.tasks.build_vehicle_positions` | every 15s | | +| `build-trip-updates-every-15s` | `schedule_engine.tasks.build_trip_updates` | every 15s | | +| `scan-stale-runs-every-30s` | `realtime_engine.tasks.scan_stale_runs` | every 30s | | +| `build-schedule-daily` | `schedule_engine.tasks.build_schedule` | every 1 day | rebuilds `feed/files/gtfs.zip` | + +This is the beat schedule as actually configured in code — it lives in `app.conf.beat_schedule` +here, not in Django admin. + +## ASGI / WSGI / URLs + +- `ASGI_APPLICATION = "databus.asgi.application"` — served by Daphne (`daphne` + `channels` apps + installed) to support the Channels layer (`CHANNEL_LAYERS` → `channels_redis`, keyed off + `REDIS_HOST`/`REDIS_PORT`). +- `WSGI_APPLICATION = "databus.wsgi.application"`. +- Root URLconf mounts: `admin/` (Django admin), `""` (`website.urls`), `api/` (`api.urls`), + `feed/` (`feed.urls`); media/static are served through Django when `DEBUG` or + `DJANGO_SERVE_STATIC` is set. + +## Tests + +``` +docker compose -f compose.dev.yml run --rm orchestrator uv run pytest -q +``` +No `databus/tests.py` of its own — this package is exercised indirectly by every other app's test +suite. `make test` runs the full suite. + +## Docs + +- [Celery workers, queues & beat](../../docs/content/operations/celery.md) +- [Configuration & environment variables](../../docs/content/operations/configuration.md) diff --git a/backend/eta_models/README.md b/backend/eta_models/README.md new file mode 100644 index 0000000..f3c2aad --- /dev/null +++ b/backend/eta_models/README.md @@ -0,0 +1,78 @@ +# ETA Models · committed baseline model registry + +- **Purpose**: the committed, on-disk model registry consumed by the ETA estimator + (`gtfs-eta`, the sibling `simovilab/gtfs-eta` repo, vendored via `uv` editable install — see + `backend/pyproject.toml`). Ships one baseline model so a fresh checkout has a working estimator + without training anything. +- **Contents**: + - `registry.json` — the registry index: one entry per model key, with **relative** paths + - `polyreg_distance_global_baseline_v0.pkl` — the fitted model artifact + - `polyreg_distance_global_baseline_v0_meta.json` — its metadata (metrics, training params) + +## Registry format + +`registry.json` maps a model key to its metadata: + +```json +{ + "polyreg_distance_global_baseline_v0": { + "model_path": "polyreg_distance_global_baseline_v0.pkl", + "meta_path": "polyreg_distance_global_baseline_v0_meta.json", + "saved_at": "2026-08-19T00:41:44.406894", + "model_type": "polyreg_distance", + "route_id": null, + "dataset": "synthetic_constant_speed" + } +} +``` + +`model_path`/`meta_path` are stored **relative to the registry directory** — `gtfs-eta`'s +`ModelRegistry` joins them onto `base_dir` when loading, and falls back to matching by basename if +a stored path doesn't resolve directly, so the registry directory can be relocated wholesale +without editing `registry.json`. `route_id: null` marks a model as the **global** fallback (as +opposed to route-specific). + +The shipped model is a synthetic baseline: `PolyRegDistanceModel(degree=1, alpha=1.0, +route_specific=False)` fit on 1000 synthetic constant-speed samples (~4.5 m/s, an urban bus +average) — not trained on real telemetry. It exists so `estimate_stop_times` always has *some* +model to fall back to. + +## Seeding + +This directory is seeded (and can be re-seeded) by the sibling `gtfs-eta` repo's script: + +``` +export MODEL_REGISTRY_DIR=backend/eta_models +python -m gtfs_eta.seed_baseline_model +``` + +(`gtfs-eta/gtfs_eta/seed_baseline_model.py`) — fits the model above and calls +`registry.save_model(MODEL_KEY, model, metadata, overwrite=True)`, which writes the `.pkl` + +`_meta.json` pair and updates `registry.json`. + +## Consumer: the lazy-import seam + +`runs/domain/progression/stop_times.py` is the only consumer in this codebase. It imports +`gtfs_eta.feature_engineering.spatial.ShapePolyline` and +`gtfs_eta.eta_service.estimator` **lazily**, inside `produce_stop_times`, specifically to keep +Django startup clean when the model registry / `gtfs-eta` extras aren't needed +(`runs/domain/progression/stop_times.py:182-193`). It's called by `realtime_engine/tasks.py` after +every successful position write, populating `run::stop_time_updates` in Redis for the +GTFS-RT builder. + +## Configuration + +- `MODEL_REGISTRY_DIR` — directory the registry loads from, read by `gtfs_eta`'s registry + singleton itself (`os.getenv("MODEL_REGISTRY_DIR")`, falling back to `gtfs_eta`'s own config + default) — not by Django settings. Point it at this directory (`backend/eta_models`) to use the + committed baseline. Not currently set in `compose.dev.yml`; must be set explicitly wherever the + worker that calls `produce_stop_times` runs. +- `ETA_MAX_STOPS` (default `3`) and `ETA_DEFAULT_UNCERTAINTY_S` (default `120`) — read directly by + `runs/domain/progression/stop_times.py`, not by this directory, but they shape how the models + here get used. + +## Tests + +No tests live in this directory (it is data, not code). The consumer seam is covered by +`runs/domain/progression/tests/test_stop_times_producer.py`, which points `MODEL_REGISTRY_DIR` at +a temp directory rather than this one. diff --git a/backend/feed/README.md b/backend/feed/README.md new file mode 100644 index 0000000..614bb0f --- /dev/null +++ b/backend/feed/README.md @@ -0,0 +1,64 @@ +# Feed · GTFS Schedule domain + published feed files + +- **Purpose**: owns the GTFS Schedule domain models, feed versioning (`GTFSProvider`/`Feed`), the + Schedule zip exporter, and the HTTP endpoints that serve published GTFS Schedule and GTFS + Realtime files from disk. Not to be confused with `schedule_engine`, which *builds* the GTFS-RT + protobufs consumed here. +- **Key modules**: + - `models.py` — `GTFSProvider`, `Feed`, and one concrete model per GTFS Schedule table + - `schedule/exporter.py` — `build_gtfs_zip` / `publish_gtfs_zip` + - `management/commands/export_gtfs.py` — `manage.py export_gtfs` + - `views.py` / `urls.py` — file-serving endpoints + +## Domain models + +Every GTFS Schedule table (`Agency`, `Stop`, `Route`, `Calendar`, `CalendarDate`, `Shape`, `Trip`, +`StopTime`, `FareAttribute`, `FareRule`, `FeedInfo`) subclasses an abstract `Base*` model imported +from the `gtfs-django` workspace package (`feed/models.py:10-22`), then adds a `feed` FK, a +per-feed uniqueness constraint, and (for most) a `linked_*` FK resolved on `save()` for fast joins +(e.g. `Trip.linked_route`, `StopTime.linked_trip`/`linked_stop`). `GeoShape`, `RouteStop`, +`TripDuration`, and `TripTime` are app-specific auxiliary models (not from `gtfs-django`) used by +the registration-UI lookups in `api`. `FeedMessage`/`TripUpdate`/`StopTimeUpdate`/`VehiclePosition` +model the normalized GTFS-RT entities for persisted blobs; `Alert` is a placeholder (TODO in +source, not fed by any current pipeline). + +`GTFSProvider` is the org that supplies a feed (may serve multiple agencies); `Feed` is one +retrieved version, marked `is_current=True` to select the active feed. `is_current` is read +directly by `api`'s `WhichShapesView`/`FindTripsView` and by the exporter — there is no automatic +supersession logic in this app; whichever `Feed` is flagged is authoritative. + +## Schedule exporter + +`feed/schedule/exporter.py` reads the ORM for one `Feed` and serializes it into a GTFS-compliant +`.zip` in memory (`build_gtfs_zip`), excluding internal-only columns (`id`, `feed`, `geoshape`, +`stop_point`, `stop_heading`, `holiday_name`, any `linked_*`). `publish_gtfs_zip` writes it +atomically (`.tmp` + `Path.replace`) to `feed/files/gtfs.zip` by default. Invoked by +`manage.py export_gtfs` (requires a `Feed` with `is_current=True`) and by the daily +`build-schedule` Celery beat entry in `schedule_engine` (see `backend/databus/README.md`). + +## Data in / data out + +- **Reads**: PostgreSQL, via the models above (no Redis, no queues). +- **Serves** (via `feed/urls.py`, mounted at `/feed/`): + - `GET /feed/schedule/feed.zip` → `feed/files/gtfs.zip` (404 with a helpful message if not yet + exported) + - `GET /feed/realtime/vehicle_positions.json` / `.pb` → `feed/files/vehicle_positions.{json,pb}` + - `GET /feed/realtime/trip_updates.json` / `.pb` → `feed/files/trip_updates.{json,pb}` + - `GET /feed/` → status page (`feed/views.py:status`) + - These realtime files are written by `schedule_engine`, not by this app. + +## Configuration + +No app-specific env vars. + +## Tests + +``` +docker compose -f compose.dev.yml run --rm orchestrator uv run pytest feed/ -q +``` +`make test` runs the full suite. + +## Docs + +- [Django Models](../../docs/content/data-model/django-models.md) +- [GTFS-RT publishing](../../docs/content/data-flow/gtfs-rt-publishing.md) diff --git a/backend/messages/README.md b/backend/messages/README.md new file mode 100644 index 0000000..99ddbf2 --- /dev/null +++ b/backend/messages/README.md @@ -0,0 +1,78 @@ +# Messages · AMQP domain-event publisher + +- **Purpose**: fire-and-forget publisher for run lifecycle domain events, used by + `runs.services.lifecycle.RunLifecycleService` so every completed FSM transition is broadcast to + other services over RabbitMQ. Publishing failures are logged and swallowed — they never affect + the caller's lifecycle path (`messages/publisher.py:1-9`). +- **Key modules**: `publisher.py` — the entire app (no models, no views, no URLs). + +## Transport + +- Broker: kombu over the same RabbitMQ instance Celery uses as its broker + (`Connection(settings.CELERY_BROKER_URL)`, built lazily on first publish — + `messages/publisher.py:66-73` — never at import time, so importing the module never opens a + socket). +- Exchange: `databus.events`, a **durable topic exchange** (`messages/publisher.py:21,27`). +- Routing key: `runs.lifecycle.`, lowercased (`routing_key_for`, `publisher.py:41-43`) — + e.g. `runs.lifecycle.run_confirmed_by_operator`. +- Publishing goes through kombu's `producers` connection pool (`kombu.pools.producers`), with a + bounded retry policy (`max_retries=2`, `interval_start=0`, `interval_step=0.2`, + `interval_max=0.5`) passed to `Producer.publish(retry=True, ...)` (`publisher.py:29-35, 86-97`). + +## Envelope + +`build_envelope` (`publisher.py:46-63`) produces: + +```json +{ + "event": "run_confirmed_by_operator", + "version": 1, + "occurred_at": "2026-08-19T00:00:00+00:00", + "producer": "databus", + "run_id": "", + "from_state": "INITIALIZED", + "to_state": "CONFIRMED", + "data": { "vehicle_id": "...", "trip_id": "...", "route_id": "..." } +} +``` + +`event`/`from_state`/`to_state` are the enum `.value`s from `RunLifecycleEvents` / +`RunLifecycleStates`. `data` is populated by the caller — for the lifecycle service it includes +whatever of `vehicle_id`, `trip_id`, `route_id` are available on the `Run` +(`runs/services/lifecycle.py:112-132`). + +## Consumer contract + +An external consumer should: +1. Declare (or rely on this publisher declaring) the `databus.events` topic exchange, durable. +2. Bind its own durable queue to that exchange with a topic pattern under `runs.lifecycle.*` + (e.g. `runs.lifecycle.run_completed` for one event, `runs.lifecycle.#` for all run lifecycle + events). +3. Deserialize the body as JSON and expect the envelope shape above — `version` is included so + consumers can branch on schema changes. +4. Not expect delivery guarantees beyond the small retry policy above: this publisher is + fire-and-forget and does not use publisher confirms, so a consumer that needs strict + at-least-once semantics should treat `messages` as best-effort and reconcile via + `GET /api/runs//history/` (the authoritative audit log) rather than relying on AMQP alone. + +## Configuration + +- `CELERY_BROKER_URL` — read indirectly via `settings.CELERY_BROKER_URL`, itself built from + `RABBITMQ_HOST`/`RABBITMQ_PORT`/`RABBITMQ_USER`/`RABBITMQ_PASS` (see `backend/databus/README.md`). + +## Tests + +``` +docker compose -f compose.dev.yml run --rm orchestrator uv run pytest messages/ -q +``` +`messages/tests/test_publisher.py` covers routing-key derivation, envelope shape, the +publish-with-mocked-pool happy path, error-swallowing on connection/publish failures, and lazy +connection caching. `make test` runs the full suite. + +## Note on docs drift + +`docs/content/interfaces/amqp-events.md` currently describes this publisher as an unwired stub +(direct exchange, `print()` instead of `producer.publish()`, different routing-key namespace). That +page is stale — the code in this app is fully implemented as described above (topic exchange, +`runs.lifecycle.*` routing keys, real `producer.publish()` via kombu's pool). Worth a doc refresh, +out of scope for this README. diff --git a/backend/operations/README.md b/backend/operations/README.md new file mode 100644 index 0000000..b34f28f --- /dev/null +++ b/backend/operations/README.md @@ -0,0 +1,49 @@ +# Operations · fleet & operator domain + +- **Purpose**: owns the fleet/operator domain models — companies, operators, telemetry equipment, + and vehicles — that `runs` and `api` reference. No views of its own (`operations/views.py` is a + placeholder; reads/writes go through `api`'s router-registered ViewSets). +- **Key modules**: `models.py` (all domain models), `admin.py` (Django admin registration). + +## Models + +| Model | Role | +| --- | --- | +| `Company` | The legal entity behind a GTFS `Agency` (via `linked_agency` M2M). | +| `Operator` | A driver/dispatcher/administrator; one-to-one with a Django `User`, M2M to `Company`. | +| `DataProvider` | Owner of telemetry `Equipment`, M2M to `Company`. | +| `Vehicle` | A fleet vehicle; FK to `Company`; amenity/accessibility/status choice fields. | +| `Equipment` | An onboard telemetry device (GPS/sensor unit); FK to `DataProvider` and `Vehicle`. Every `save()` appends a snapshot to `EquipmentLog` (`models.py:162-175`). | +| `Sensor` | A logical data feed registered on an `Equipment`, flagged by what it provides (`provides_position`, `provides_occupancy`, ...). `source_type` is one of `mqtt` / `http` / `both`; `source_http_url` is the polled URL and `source_json_mapping` its field mapping. | +| `EquipmentLog` | Immutable audit trail — one row per `Equipment.save()`. | + +## `Sensor.source_type=http` → `fetch_positions` + +`Sensor` rows with `status="ACTIVE"`, `provides_position=True`, and `source_type in {"http", +"both"}` are exactly what `realtime_engine.tasks.fetch_positions` polls every 10 seconds +(`realtime_engine/tasks.py:177-182`): it fetches each sensor's `source_http_url` through the +`"http"` adapter, filters to vehicles with an active run, and republishes readings on +`transit/vehicle//position` for the MQTT consumer path. `Equipment.vehicle` is what resolves a +sensor to a vehicle for the in-service filter. + +## Data in / data out + +- PostgreSQL only via the ORM — no Redis keys, no queues, no HTTP endpoints of its own. +- `logo`/`photo` `ImageField`s are written under `MEDIA_ROOT` (`companies/`, `operators/`, + `data-providers/`). + +## Configuration + +No app-specific env vars. + +## Tests + +``` +docker compose -f compose.dev.yml run --rm orchestrator uv run pytest operations/ -q +``` +`operations/tests.py` is currently empty (Django's generated stub); coverage of this app's +behavior lives in `realtime_engine`'s `fetch_positions` tests. `make test` runs the full suite. + +## Docs + +- [Django Models](../../docs/content/data-model/django-models.md) diff --git a/backend/website/README.md b/backend/website/README.md new file mode 100644 index 0000000..bf0301a --- /dev/null +++ b/backend/website/README.md @@ -0,0 +1,28 @@ +# Website · public landing page + +- **Purpose**: this is deliberately tiny. It is a single static Bootstrap landing page mounted at + the site root (`/`), linking out to the external docs site and the API's ReDoc page. There is no + domain logic here. +- **Key modules**: + - `views.py` — one function, `index`, renders `templates/index.html` + - `urls.py` — one route: `path("", views.index, name="inicio")` + - `models.py` — empty (no models) + - `fixtures/auth.json` — seed auth fixture (unrelated to the page itself) + +## Data in / data out + +- No database reads/writes, no Redis, no queues. +- Serves `GET /` → renders `index.html`, which links to `https://databus.simovilab.org/` (docs) + and `{% url 'api_docs' %}` (`api`'s ReDoc page). + +## Configuration + +No app-specific env vars. + +## Tests + +``` +docker compose -f compose.dev.yml run --rm orchestrator uv run pytest website/ -q +``` +`website/tests.py` is the empty Django-generated stub — there is nothing to test beyond template +rendering. `make test` runs the full suite. From 09116277414ec245cd5af161ea0140bc3a45a53c Mon Sep 17 00:00:00 2001 From: Jae Date: Wed, 19 Aug 2026 12:03:19 -0600 Subject: [PATCH 49/68] docs: refresh backend, runs, realtime_engine, schedule_engine, scripts READMEs --- backend/README.md | 58 +++++++++++++ backend/realtime_engine/README.md | 133 ++++++++++++++++++++++++++---- backend/runs/README.md | 133 +++++++++++++++++++++++++++++- backend/schedule_engine/README.md | 54 ++++++++---- backend/scripts/README.md | 77 +++++++++++++++++ 5 files changed, 420 insertions(+), 35 deletions(-) create mode 100644 backend/scripts/README.md diff --git a/backend/README.md b/backend/README.md index 40c2bb3..093fe78 100644 --- a/backend/README.md +++ b/backend/README.md @@ -9,3 +9,61 @@ Django apps: - `runs`: Run data (_anima machinae_) - `website`: Miscellaneous website features (e.g., admin interface, users, etc.) - `feed`: GTFS data handling and processing + +## Workspace layout (uv) + +This project is a `uv` workspace (see `pyproject.toml` `[tool.uv.workspace]`): + +- `gtfs-django`, `gtfs-io` — workspace members, editable installs from the + local `backend/gtfs-django/` and `backend/gtfs-io/` directories. +- `gtfs-eta` — **not** a workspace member. It's an editable *path* dependency + (`[tool.uv.sources]`) pointing at `backend/gtfs-eta`, which is a symlink + (`gtfs-eta -> ../../gtfs-eta`) to the sibling `simovilab/gtfs-eta` repo + checked out next to `databus/`. `compose.dev.yml` bind-mounts + `../gtfs-eta:/gtfs-eta` read-write so the OS-resolved symlink target exists + inside the container too. `gtfs-eta` is excluded from ruff/mypy/pytest here + — it's a separately-maintained codebase with its own lint baseline and test + suite. + +## Celery services + +Four services share this codebase (see `Dockerfile` build targets and +`compose.dev.yml`): + +| Service | Build target | Role | Queue | +|---|---|---|---| +| `orchestrator` | `dev` | Django HTTP + admin + REST API | — (not a worker) | +| `realtime-engine` | `realtime-engine` | Celery worker: MQTT ingestion bootstep, lifecycle events, HTTP polling, staleness scan | `realtime_engine` | +| `schedule-engine` | `schedule-engine` | Celery worker: builds the two GTFS-RT feeds + the daily GTFS Schedule zip | `schedule_engine` | +| `scheduler` | `scheduler` | Celery Beat (`databus/celery.py` `beat_schedule`) | — | + +Queues are assigned per-task via `@shared_task(queue=...)`, not Celery +`task_routes`; each worker is started with a matching `-Q ` flag. + +## Code quality + +Root `Makefile` targets: + +```bash +make lint # cd backend && uv run ruff check . — runs locally, no Docker needed +make typecheck # docker compose -f compose.dev.yml run --rm orchestrator uv run mypy . +make test # docker compose -f compose.dev.yml run --rm orchestrator uv run pytest -q +``` + +`typecheck` and `test` run inside the dev container because Django settings +read env vars via `python-decouple`, which fails outside the container. +`lint` needs no Django settings import, so it runs locally against the +backend project. + +Ruff enforces missing-docstring rules (`D1`, i.e. `D100`-`D107`) in addition +to its default `E`/`F` rules. Mypy runs with the `django-stubs` plugin +(`mypy_django_plugin.main`). Both exclude `migrations/`, `gtfs-eta/`, and +`.venv/`. + +## Tests + +445 tests (`pytest --collect-only`, `backend/`): + +```bash +docker compose -f compose.dev.yml run --rm orchestrator uv run pytest -q +``` diff --git a/backend/realtime_engine/README.md b/backend/realtime_engine/README.md index 63a27d9..b57239d 100644 --- a/backend/realtime_engine/README.md +++ b/backend/realtime_engine/README.md @@ -1,7 +1,9 @@ # realtime_engine -Celery worker that processes lifecycle events and hosts the MQTT telemetry -consumer as an in-process bootstep. +Celery worker (queue `realtime_engine`) that ingests vehicle telemetry (MQTT +push + HTTP poll), runs detection/progression on it, and drives the run +lifecycle FSM. It is the **sole writer of the real-time Redis state** +(`vehicle:*`, `run:*`, `runs:*`) — `schedule_engine` only ever reads it. ## MQTT consumer: Celery bootstep approach @@ -26,29 +28,126 @@ extra container, Dockerfile target, and bind-mount on the backend tree. ``` transit/vehicle/+/position QoS 0 -transit/vehicle/+/progression QoS 0 transit/vehicle/+/occupancy QoS 0 ``` -The `data` leaf (static metadata) is not subscribed here — vehicle metadata is -written to Redis by `RunLifecycleActions.update_system_state` when a run is -initialized. +`progression` is intentionally **not** subscribed — it's decommissioned +server-side (the simulator may still publish it, but the consumer ignores +any leaf it doesn't recognize). Server-side stop status is computed instead +by `runs.domain.progression.producer.produce_stop_status` (real GPS→polyline +map-matching), triggered from `process_position_update` after every position +write. The `data` leaf (static vehicle metadata) is not subscribed here +either — it's written to Redis by `RunLifecycleActions.update_system_state` +when a run is initialized. -## Lifecycle events fired by the consumer +## Ingestion pipeline (`mqtt.py`) -| Run state | Trigger condition | Event fired | -| ------------- | --------------------------------------------------------- | ----------------------- | -| `Confirmed` | Any valid ping received | `run_tracking_started` | -| `Tracking` | `position.speed > 0.5` m/s | `run_started` | -| `No Signal` | Any valid ping received | `run_tracking_restored` | -| `In Progress` | `progression.current_status == STOPPED_AT` with `stop_id` | `run_completed` | +For each incoming message on `position` or `occupancy`, `_handle_telemetry`: -## Stale run scanning +1. Drops the message if the vehicle has no `vehicle::current_run` key + (no active run assigned). +2. `position`: validates and writes `vehicle::position`, then enqueues + `realtime_engine.tasks.process_position_update` — heavy work (map-matching, + ETA projection, detection) runs off the MQTT network thread. +3. `occupancy`: discards any edge-sent `occupancy_status` and recomputes it + server-side from the raw percentage (`occupancy.classify_status`), then + writes `vehicle::occupancy`. +4. Updates `runs:last_seen:` synchronously (never delayed by queue + latency) so staleness detection stays accurate even under a slow worker. +5. For `occupancy` only, runs `detect_from_telemetry` inline (cheap; and + `RunTrackingStartedDetector`/`RunTrackingRestoredDetector` match any + leaf, so occupancy pings must still be able to drive those transitions). + `position`-leaf detection happens asynchronously inside + `process_position_update` instead. -`scan_stale_runs` runs every 30 s via Celery Beat: +### `process_position_update(run_id, vehicle_id)` (queue `realtime_engine`) -- `IN_PROGRESS` + staleness > 60 s → `run_tracking_lost` -- `NO_SIGNAL` + staleness > 300 s → `run_tracking_expired` +Re-reads the latest `vehicle::position` from Redis (idempotent, +last-write-wins; no retries — a retried tick is stale, the next ping +recovers). In order: + +1. `produce_stop_status` — server-side map-matching, writes + `run::vehicle_stop_status`. +2. If a stop status was computed, re-feeds it into + `detect_from_telemetry(run_id, vehicle_id, "progression", ...)` — + this is what fires `RunCompletedDetector` now that raw `progression` + telemetry is no longer consumed. +3. `produce_stop_times` — ETA stop-time-updates projection, writes + `run::stop_time_updates`. +4. `detect_from_telemetry(run_id, vehicle_id, "position", ...)` — position-leaf + detection (`RunStartedDetector`, `RunTrackingStartedDetector`, etc.). + +Each step is wrapped independently in `try/except`, logged, and never +propagated — one failing step doesn't block the others. + +## `run_lifecycle_event` task (queue `realtime_engine`) + +Dispatches a fired event to `RunLifecycleService.process_event`. A +`RunLifecycleError` is treated two ways: + +- If the run has **already reached the event's target state** + (`target_state_for_event`) — a benign idempotent re-fire (a detector's + dispatch lost a race against an in-flight transition for the same run) — + logged as a `WARNING`, not an error. +- Otherwise — a genuine invalid transition — logged with `logger.exception`. + +## `fetch_positions` task (queue `realtime_engine`, `soft_time_limit=25`) + +Polls active HTTP telemetry sources every **10 s** (Celery Beat, +`options={"expires": 10}` — a task that couldn't even start within its own +10 s cycle is revoked rather than queuing up behind a slow source): + +1. Builds the in-service vehicle-id set from every `vehicle::current_run` + key — the same gate the MQTT consumer uses, so poller and consumer agree + on which vehicles count. (Gating on `runs:in_progress` instead would + deadlock a `CONFIRMED` run, since it only reaches `IN_PROGRESS` once + telemetry proves it's moving — delivering that telemetry is this task's + job.) +2. Queries `ACTIVE` sensors with `provides_position=True` and + `source_type` in `("http", "both")`. +3. Pre-fetch filters out any sensor whose own `equipment.vehicle` isn't in + the in-service set, to avoid paying the HTTP cost of every active sensor + on every tick. (Caveat: a fleet endpoint like NavSat can return readings + for vehicles other than the sensor's own — those are only caught by the + post-fetch filter, so an out-of-service sensor's fleet endpoint is + skipped entirely rather than partially used.) +4. Fetches each remaining sensor independently (own try/except; one failing + source can't sink the rest), keeps only in-service vehicles' readings + (post-fetch filter), and publishes survivors on + `transit/vehicle//position` via `MqttPublisher`. + +`soft_time_limit=25` bounds a single pathological source (e.g. a host that +hangs on every request): on `SoftTimeLimitExceeded` the task logs and +returns early instead of propagating. + +## `scan_stale_runs` task (queue `realtime_engine`) + +Runs every **30 s** via Celery Beat. Computes each tracked run's staleness +and hands it to `runs.domain.detection.dispatch.detect_from_scan`, which +evaluates the periodic detectors in `runs.domain.detection.periodic_detectors` +against the shared thresholds in `runs.domain.detection.thresholds`: + +- `IN_PROGRESS` + `60 s < staleness ≤ 600 s` → `run_tracking_lost` +- `NO_SIGNAL` + `staleness > 600 s` → `run_tracking_expired` + +(`TELEMETRY_GRACE_S = 60`, `TELEMETRY_EXPIRY_S = 600` — +`runs/domain/detection/thresholds.py`. These were previously duplicated and +disagreeing — 300 s here vs. 600 s in the lifecycle guards — both now import +the same constants.) + +## `sources/` — pluggable HTTP telemetry adapter registry + +`sources/base.py` defines the `SourceAdapter` protocol +(`fetch(sensor) -> list[(vehicle_id, payload)]`) and a tiny +`register(kind)` / `get_adapter(kind)` registry, kept dependency-free +(no Django, no requests, no paho) so adapters are unit-testable without I/O. +`sources/http_json.py` registers the generic `"http"` adapter — driven +entirely by a `Sensor`'s `source_http_url` + `source_json_mapping` fields, no +per-provider code needed for JSON-over-HTTP feeds that fit the mapping +schema. HTTP requests use a **5 s timeout** +(`DEFAULT_TIMEOUT_S`). `sources/publisher.py`'s `MqttPublisher` republishes +fetched readings onto the same `transit/vehicle//position` topic the +MQTT consumer subscribes to. ## Environment variables diff --git a/backend/runs/README.md b/backend/runs/README.md index b3ba48f..a6c2194 100644 --- a/backend/runs/README.md +++ b/backend/runs/README.md @@ -1,14 +1,29 @@ # Run +`runs` owns the run lifecycle FSM, the detectors that drive it from telemetry, +map-matching/ETA progression, and the Redis telemetry contracts shared with +`realtime_engine` and `schedule_engine`. + ## Run lifecycle states +`runs/domain/lifecycle/states.py` (`RunLifecycleStates`): + +`Requested`, `Validated`, `Initialized`, `Confirmed`, `Tracking`, +`In Progress`, `No Signal`, `Completed`, `Cancelled`, `Interrupted`, +`Short Turned`. + +## Run lifecycle events + +`runs/domain/lifecycle/events.py` (`RunLifecycleEvents`) — REST commands and +telemetry-detected facts that drive transitions between the states above: + - `RUN_REQUESTED` = a "POST /create-run" API call request happened (an implicit run request) -- `VALIDATE_RUN` = apply the transition guards to check GTFS consistency -- `INITIALIZE_RUN` = execute actions to update the system state +- `VALIDATE_RUN` = apply the transition guards checking GTFS validity (route/trip/shape/schedule_relationship against the current feed) and resource availability (vehicle/trip/operator not already claimed by another run) +- `INITIALIZE_RUN` = execute actions to update the system state, gated by `is_run_validated` — a real revalidation guard that re-checks resource availability and re-confirms the run's trip against whichever GTFS feed is current *now* (closes the race window against a nightly `build_schedule` feed rotation between VALIDATE_RUN and INITIALIZE_RUN) - `RUN_CONFIRMED_BY_OPERATOR` = the operator (driver, dispatcher) re-confirmed the run - `RUN_TRACKING_STARTED` = GPS pings are detected and valid -- `RUN_STARTED` = the run actually started (vehicle is moving along a valid path) -- `RUN_COMPLETED` = manual or automatic request to complete a successful run (e.g. vehicle reached the end of the route or the run was completed by the operator) +- `RUN_STARTED` = the run actually started (vehicle is moving along a valid path; guard `is_vehicle_moving` checks reported speed > 0.5 m/s) +- `RUN_COMPLETED` = manual or automatic request to complete a successful run (e.g. vehicle reached the end of the route or the run was completed by the operator); guard `is_at_terminal_stop` checks the reported `stop_id` against the trip's last `stop_time` - `RUN_REJECTED` = validation or initialization failed - `CANCEL_RUN` = a cancellation request by the operator (driver, administrator, dispatcher) or the system before it started @@ -17,3 +32,113 @@ - `RUN_TRACKING_LOST` = the run tracking was lost (automatic, async) - `RUN_TRACKING_RESTORED` = the run tracking was restored (automatic, async) - `RUN_TRACKING_EXPIRED` = the run tracking expired (e.g. no telemetry for a long time) (automatic, async) + +## `domain/lifecycle` — the table-driven FSM + +- `states.py` / `events.py` — the enums above. +- `transitions.py` — the static `TRANSITIONS` table: each entry is a + `(from_state, event) -> (to_state, guards, actions)` `Transition`. Also + exposes `target_state_for_event`, used by + `realtime_engine.tasks.run_lifecycle_event` to tell an idempotent re-fire + (a detection that lost a race and the run already reached the target + state) apart from a genuine invalid transition. +- `guards.py` — `RunLifecycleGuards`, pure-ish predicate functions + `(run, transition, payload) -> bool` that either return a verdict or raise + `RunLifecycleError` with field-level detail. Includes GTFS validity + (`is_gtfs_valid`), resource-claim checks (`is_vehicle_available`, + `is_trip_available`, `is_operator_available`), the `is_run_validated` + revalidation guard, authorization checks for cancel/interrupt/short-turn, + and telemetry-freshness guards (`is_telemetry_stale`, `is_telemetry_fresh`, + `is_telemetry_grace_period_exceeded`) built on the shared thresholds in + `runs.domain.detection.thresholds`. +- `actions.py` — `RunLifecycleActions`, the Redis side-effects a successful + transition performs: writing/clearing the `run:` hash and its + `run::trip` GTFS-RT projection, claiming/releasing + `vehicle|operator|trip::current_run` assignment keys, and maintaining + the `runs:tracking` / `runs:in_progress` sets. +- Submodules are lazy-loaded via `__getattr__` in `__init__.py` so importing + `runs.domain.lifecycle` doesn't eagerly pull in the Redis/Django-touching + `actions`/`guards` modules. + +## `domain/detection` — telemetry/staleness → lifecycle events + +Detectors are pure functions of state + one signal; a dispatch layer wires +them to Redis and the Celery lifecycle task. + +- `lifecycle_detectors.py` — evaluated per incoming telemetry message: + `RunTrackingStartedDetector` (any telemetry while `Confirmed`), + `RunStartedDetector` (`Tracking` + `position.speed > 0.5` m/s), + `RunTrackingRestoredDetector` (any telemetry while `No Signal`), + `RunCompletedDetector` (`In Progress` + `progression` leaf reporting + `STOPPED_AT` with a `stop_id`). +- `periodic_detectors.py` — evaluated by the periodic staleness scan: + `RunTrackingLostDetector` (`In Progress`, `60 s < staleness ≤ 600 s`), + `RunTrackingExpiredDetector` (`No Signal`, `staleness > 600 s`). Thresholds + come from the single source `thresholds.py` + (`TELEMETRY_GRACE_S = 60`, `TELEMETRY_EXPIRY_S = 600`) — previously these + lived duplicated in `realtime_engine/tasks.py` (300 s) and + `runs/domain/lifecycle/guards.py` (600 s) and disagreed; both now import + from here. +- `registry.py` — ordered `TELEMETRY_DETECTORS` / `PERIODIC_DETECTORS` lists; + the planner fires at most one event per FSM per evaluation (first match). +- `dispatch.py` — pure planners (`plan_telemetry_events`, `plan_scan_events`, + unit-testable, no I/O) plus impure wrappers (`detect_from_telemetry`, + `detect_from_scan`) that read run state from Redis, seed `runs:tracking` + membership for `run_tracking_started`/`run_tracking_restored`, and queue + the fired event onto `realtime_engine.tasks.run_lifecycle_event`. + `realtime_engine/mqtt.py` and `scan_stale_runs` call only the wrappers. + +## `domain/progression` — map-matching + ETA + +- `compute.py` / `producer.py` — server-side stop-status: `produce_stop_status` + (called from `realtime_engine.tasks.process_position_update` after every + position write) reads the latest position + run hash, delegates to + `compute_stop_status` for real GPS→polyline map-matching (projects onto the + cached shape geometry, picks the upcoming stop, applies `STOPPED_AT` / + `INCOMING_AT` / `IN_TRANSIT_TO` radius rules with a monotonic + stop-sequence floor), and writes `run::vehicle_stop_status`. Falls back + to `IN_TRANSIT_TO` + carry-forward of the previous state on any exception + (missing shape, ORM error, bad payload) — this producer must never raise. +- `stop_times.py` — `produce_stop_times` derives and writes + `run::stop_time_updates` (TTL 60 s). Calls the ETA estimator through a + **lazy import seam** — `gtfs_eta.eta_service.estimator` and + `gtfs_eta.feature_engineering.spatial` are imported inside the function, + not at module scope, so Django/Celery startup stays clean even when the + editable `gtfs-eta` path dependency isn't fully set up. No predictions + (e.g. no trained model) leaves the last-good projection to expire via TTL + rather than overwriting it. +- `geo.py` / `shapes.py` — pure geometry helpers (`haversine_m`, + `project_point_to_polyline`) and cached GTFS shape-geometry loading. + +## `domain/telemetry` — Redis key parsers/writers + +`keys.py` is the single source of truth for every Redis key template used +across `runs`, `realtime_engine`, and `schedule_engine` — no other module +should hardcode these strings. Each entity module (`position.py`, +`occupancy.py`, `vehicle_stop_status.py`, `stop_time_updates.py`, `trip.py`, +`congestion_level.py`) defines the field-name constants, a `from_redis` / +`validate_for_write` (or `to_redis`) pair, and documents its producer and +consumer. `congestion_level.py` is a stub — the key is reserved, no producer +exists yet. + +## `services/lifecycle.py` — driving the FSM + +`RunLifecycleService.process_event(event, payload)`: + +1. Loads the `Run` named by `payload["run_id"]`. +2. Looks up candidate transitions via `services/registry.py`'s + `TransitionRegistry.find(state, event)`. +3. Runs each candidate's guards; on the first fully-passing candidate, + executes its actions, updates `Run.run_lifecycle_state`/`last_event_at`, + and publishes the transition as a domain event via `messages.publisher` + to the durable `databus.events` topic exchange (routing key + `runs.lifecycle.`) — fire-and-forget; broker errors are logged and + swallowed, never raised into the lifecycle path. +4. Persists an immutable `RunLifecycleTransition` audit record (guards + + actions results) for every attempt, successful or not. +5. Raises `RunLifecycleError` (with the full attempt history) if no + candidate transition succeeds. + +Called from `realtime_engine.tasks.run_lifecycle_event`, which treats a +`RunLifecycleError` where the run already reached the event's target state +as a benign idempotent re-fire (logged as a warning), not a failure. diff --git a/backend/schedule_engine/README.md b/backend/schedule_engine/README.md index ba7d3d7..6efd198 100644 --- a/backend/schedule_engine/README.md +++ b/backend/schedule_engine/README.md @@ -1,14 +1,40 @@ -# MQTT topics and Redis keys - -```mermaid -mindmap - root((transit)) - vehicle - vehicle_id - data - position - progression - occupancy -``` - -MQTT topics are mapped 1:1 into Redis keys. +# schedule_engine + +Celery worker (queue `schedule_engine`) that builds the GTFS-RT feeds and the +GTFS Schedule zip. It only ever **reads** the real-time Redis state — +`realtime_engine` is the sole writer. + +## Tasks (`tasks.py`) + +| Task | Beat schedule | What it does | +|---|---|---| +| `build_vehicle_positions` | every 15 s | Reads Redis via `builders.build_vehicle_positions_feed`, writes `feed/files/vehicle_positions.json` + `.pb` (GTFS-RT `FeedMessage`, protobuf). | +| `build_trip_updates` | every 15 s | Same, via `build_trip_updates_feed` → `feed/files/trip_updates.json` + `.pb`. Also broadcasts a build-status message (`last_update`, count of `runs:in_progress`) to the `status` WebSocket group. | +| `build_schedule` | daily | Exports the current GTFS `Feed` (`is_current=True`) to a zip via `feed.schedule.exporter.publish_gtfs_zip`; skips (returns `None`, logs a warning) if no current feed exists. | +| `build_alerts` | **not scheduled** | Placeholder — returns a fixed string. The ServiceAlert feed builder is not yet implemented and this task is deliberately not registered in `databus/celery.py`'s `beat_schedule`. | + +Beat schedule is defined in `databus/celery.py` (`app.conf.beat_schedule`), +not Django admin. + +`build_vehicle_positions_feed` / `build_trip_updates_feed` +(`builders.py`) read the entity hashes `realtime_engine` writes — +`run:` / `run::trip` / `run::vehicle_stop_status` / +`run::stop_time_updates`, `vehicle::position` / +`vehicle::occupancy` / `vehicle::metadata` — over the run IDs in +`runs:in_progress`. See `runs/domain/telemetry/keys.py` for the canonical +key templates. + +## WebSocket consumer (`consumers.py`, `routing.py`) + +`StatusConsumer` (`AsyncWebsocketConsumer`) joins/broadcasts on the `status` +channel-layer group at `ws/status/`. `build_trip_updates` sends a status +message to that group after each build; `StatusConsumer.receive` also +re-broadcasts any client-sent message to the group, and `status_message` +forwards group events out to each connected socket. + +## Notes + +- `filters.py` has been removed from this app; there are no remaining + references to it. +- No feed-building code runs inline in the WebSocket path — `consumers.py` + only relays status, it never reads Redis or writes feed files itself. diff --git a/backend/scripts/README.md b/backend/scripts/README.md new file mode 100644 index 0000000..e808a51 --- /dev/null +++ b/backend/scripts/README.md @@ -0,0 +1,77 @@ +# scripts + +## `cleanup_runs.py` + +Wipes run state from PostgreSQL and/or Redis so you can start fresh without +restarting any services. + +```bash +docker compose -f compose.dev.yml exec -it orchestrator uv run scripts/cleanup_runs.py [options] +``` + +### PostgreSQL tables touched + +- `runs_run` — Run records. +- `runs_runlifecycletransition`, `runs_run_vehicle`, `runs_run_operator` — + cascade-deleted with the run (Django's `on_delete=CASCADE` is ORM-level + only, so the script deletes these child tables explicitly before + `runs_run`). +- With `--telemetry`: `runs_position`, `runs_progression`, `runs_occupancy` + (`runs_progression` is decommissioned — no longer written, but old rows + may still exist and are still cleaned up here). + +### Redis keys touched + +- `runs:tracking`, `runs:in_progress` (set membership). +- `run:` (flat hash), `run::trip`, `run::vehicle_stop_status`, + `run::congestion_level`, `runs:last_seen:`. +- `vehicle::position`, `vehicle::occupancy`, `vehicle::metadata`. +- `vehicle|operator|trip::current_run` assignment keys. +- `vehicle::progression` is decommissioned and intentionally not touched. + +### Modes (mutually exclusive) + +| Flag | Effect | +|---|---| +| *(default)* | Delete all runs from DB + purge all run state from Redis. | +| `--run ` | Delete one run by ID (DB + Redis). | +| `--vehicle ` | Delete all runs for a vehicle (DB + Redis); also frees the vehicle's `current_run` key if it has no matching run. | +| `--db-only` | Only clean PostgreSQL, skip Redis. | +| `--redis-only` | Only clean Redis, skip PostgreSQL. | + +### Options + +| Flag | Effect | +|---|---| +| `--telemetry` | Also wipe `runs_position` / `runs_progression` / `runs_occupancy` rows. | +| `--dry-run` | Preview only (counts what *would* be deleted/removed); touches nothing. | +| `--yes` | Skip the confirmation prompt (only prompted for the bulk default mode, not `--run`/`--vehicle`). | +| `--db-host`, `--db-port`, `--db-name`, `--db-user`, `--db-pass` | PostgreSQL connection overrides (default from `DB_HOST`/`DB_PORT`/`DB_NAME`/`DB_USER`/`DB_PASSWORD` env vars, else `localhost`). | +| `--redis-host`, `--redis-port`, `--redis-db` | Redis connection overrides (default from `REDIS_HOST`/`REDIS_PORT`/`REDIS_DB` env vars, else `localhost`). | + +### Examples + +```bash +# Preview only +uv run scripts/cleanup_runs.py --dry-run + +# Full reset: wipe all runs from DB + Redis +uv run scripts/cleanup_runs.py --yes + +# Also wipe position/occupancy telemetry rows +uv run scripts/cleanup_runs.py --yes --telemetry + +# Clear one specific run +uv run scripts/cleanup_runs.py --run + +# Clear all runs for one vehicle +uv run scripts/cleanup_runs.py --vehicle + +# DB only / Redis only +uv run scripts/cleanup_runs.py --yes --db-only +uv run scripts/cleanup_runs.py --redis-only +``` + +The script auto-loads a `.env` file (walking up from `scripts/` to the +project root) before resolving connection defaults; shell env vars take +precedence over `.env` values. From 6db20285b0426ac2ee34e5fec31ad78ca3c8f7f7 Mon Sep 17 00:00:00 2001 From: Jae Date: Thu, 20 Aug 2026 02:06:46 -0600 Subject: [PATCH 50/68] docs(site): update interfaces section against current code --- docs/content/interfaces/amqp-events.md | 234 ++++++++++++++++------ docs/content/interfaces/gtfs-rt-feeds.md | 20 +- docs/content/interfaces/mqtt-telemetry.md | 64 +++++- docs/content/interfaces/rest-api.md | 144 ++++++++++--- 4 files changed, 363 insertions(+), 99 deletions(-) diff --git a/docs/content/interfaces/amqp-events.md b/docs/content/interfaces/amqp-events.md index ab22a5d..124e069 100644 --- a/docs/content/interfaces/amqp-events.md +++ b/docs/content/interfaces/amqp-events.md @@ -4,19 +4,14 @@ icon: lucide/git-branch # AMQP Event Semantics -Databús uses RabbitMQ as its internal async message backbone. The design -defines three message types routed through a single direct exchange, and the -routing-key namespace for run-lifecycle events. +Databús uses RabbitMQ as its internal async message backbone for run lifecycle +domain events. Every completed run lifecycle FSM transition is published as a +fire-and-forget message on a durable topic exchange, so other services can +react to run state changes without polling the REST API. -!!! warning "Publisher stub — not yet wired" - The AMQP event publisher (`backend/messages/publisher.py`) is currently a - **stub**. The `publish_event` function prints to stdout instead of - publishing to RabbitMQ. The exchange declaration and producer are - instantiated at module import, but no message is actually sent. - - Domain event emission is **designed, not fully wired**. This page - documents the intended semantics so integrators can plan against the - target API. +The publisher (`backend/messages/publisher.py`) is fully implemented — it is +not a stub. It is called from a single seam in the run lifecycle service and +never blocks or fails the caller's request path. --- @@ -25,90 +20,199 @@ routing-key namespace for run-lifecycle events. | Attribute | Value | | --- | --- | | Name | `databus.events` | -| Type | `direct` | +| Type | `topic` | +| Durable | Yes | | Protocol | AMQP 0-9-1 via Kombu | -| Broker | RabbitMQ (`message-broker` service) | +| Broker | RabbitMQ (`message-broker` service), same connection Celery uses as its broker | +| Connection | `Connection(settings.CELERY_BROKER_URL)`, built lazily on first publish — importing the module never opens a socket | ---- +Source: `backend/messages/publisher.py`. -## Message types +--- -From `ARCHITECTURE.md §6`: +## Routing keys — `runs.lifecycle.*` namespace -| Type | Producer | Meaning | -| --- | --- | --- | -| **Command** | Orchestrator (REST API) | An intentional request directed at another service | -| **Observation** | Realtime-engine | A derived fact detected from telemetry | -| **Assertion** | Schedule-engine (publisher) | A claim about what was published to GTFS-RT | +Every publish is keyed `runs.lifecycle.`, where `` is the +lowercased `.value` of the `RunLifecycleEvents` enum member for the transition +that just completed (`routing_key_for`, `backend/messages/publisher.py`). -All internal messages share a common envelope and include correlation metadata -(intended; not yet enforced by the stub). +| Event (`RunLifecycleEvents`) | Routing key | +| --- | --- | +| `run_requested` | *(not published — set at record creation, not via `process_event`)* | +| `validate_run` | `runs.lifecycle.validate_run` | +| `initialize_run` | `runs.lifecycle.initialize_run` | +| `run_rejected` | `runs.lifecycle.run_rejected` | +| `run_confirmed_by_operator` | `runs.lifecycle.run_confirmed_by_operator` | +| `cancel_run` | `runs.lifecycle.cancel_run` | +| `run_tracking_started` | `runs.lifecycle.run_tracking_started` | +| `run_started` | `runs.lifecycle.run_started` | +| `run_tracking_lost` | `runs.lifecycle.run_tracking_lost` | +| `run_interrupted` | `runs.lifecycle.run_interrupted` | +| `run_short_turned` | `runs.lifecycle.run_short_turned` | +| `run_completed` | `runs.lifecycle.run_completed` | +| `run_tracking_restored` | `runs.lifecycle.run_tracking_restored` | +| `run_tracking_expired` | `runs.lifecycle.run_tracking_expired` | + +Every event in `RunLifecycleEvents` that has at least one entry in the FSM +transition table (`backend/runs/domain/lifecycle/transitions.py`) publishes a +message the moment its transition succeeds. Consumers should bind: + +- `runs.lifecycle.#` — all run lifecycle events, or +- `runs.lifecycle.run_completed` (etc.) — a single event, or +- `runs.#` — everything under the `runs` namespace (forward-compatible with + any future non-lifecycle `runs.*` routing keys). + +Source: `backend/runs/domain/lifecycle/transitions.py`, `backend/messages/publisher.py`. --- -## Routing keys — `runs.*` namespace +## Message envelope + +`build_envelope` (`backend/messages/publisher.py`) produces this JSON body: + +```json +{ + "event": "run_confirmed_by_operator", + "version": 1, + "occurred_at": "2026-08-19T00:00:00+00:00", + "producer": "databus", + "run_id": "0b2b6b2e-...-uuid", + "from_state": "Initialized", + "to_state": "Confirmed", + "data": { + "vehicle_id": "...", + "trip_id": "...", + "route_id": "..." + } +} +``` -The docstring in `backend/messages/publisher.py` sketches the intended -routing-key set: +| Field | Type | Notes | +| --- | --- | --- | +| `event` | string | `RunLifecycleEvents..value` — lowercase snake_case | +| `version` | int | Envelope schema version, currently `1`. Consumers should branch on this if the shape ever changes | +| `occurred_at` | string | ISO-8601 UTC timestamp, generated at publish time (`datetime.now(UTC)`) | +| `producer` | string | Always `"databus"` | +| `run_id` | string | The run's UUID, stringified | +| `from_state` | string | `RunLifecycleStates..value` (e.g. `"Initialized"`) — the state the run transitioned *from* | +| `to_state` | string | `RunLifecycleStates..value` (e.g. `"Confirmed"`) — the state the run transitioned *to* | +| `data` | object | Best-effort extras. The lifecycle service populates whichever of `vehicle_id`, `trip_id`, `route_id` are available on the `Run` at publish time; any missing field is simply omitted, never sent as `null` | -| Routing key | Meaning | -| --- | --- | -| `runs.submission.requested` | A run creation was requested | -| `runs.submission.succeeded` | Run creation and initialization succeeded | -| `runs.submission.failed` | Run creation or initialization failed | -| `runs.validation.succeeded` | GTFS consistency check passed | -| `runs.validation.failed` | GTFS consistency check failed | -| `runs.initialization.succeeded` | Redis state written successfully | -| `runs.initialization.failed` | Redis state write failed | +Note `from_state`/`to_state` carry the FSM's display-style state values +(`"Initialized"`, `"Confirmed"`, `"In Progress"`, …) as defined in +`RunLifecycleStates`, not the upper-snake enum member names. -Client bindings should use `runs.*` to receive all run-lifecycle events. +Source: `backend/messages/publisher.py`, `backend/runs/services/lifecycle.py`. --- -## Current stub implementation - -```python -# backend/messages/publisher.py +## Where events are emitted from + +Every event is published from a single seam: +`RunLifecycleService._publish_run_lifecycle_transition` in +`backend/runs/services/lifecycle.py`, called by `_apply_transition` +immediately after the transition's actions run and the new +`run_lifecycle_state` is persisted to Postgres — but the publish itself is a +fire-and-forget side effect that does not block the request/task path. + +```mermaid +sequenceDiagram + participant Caller as REST view / Celery task + participant Service as RunLifecycleService + participant DB as PostgreSQL (Run) + participant Publisher as messages.publisher + participant RMQ as RabbitMQ (databus.events) + + Caller->>Service: process_event(event, payload) + Service->>Service: check guards, run actions + Service->>DB: run.run_lifecycle_state = to_state; run.save() + Service->>Publisher: publish_event(event, run_id, from_state, to_state, data) + Publisher-->>RMQ: producer.publish(envelope, routing_key="runs.lifecycle.") + Note over Publisher,RMQ: On any broker error: logged and dropped.
Never raised back to Service or Caller. + Service-->>Caller: (to_state, guards, actions) +``` -from kombu import Connection, Exchange, Producer +This means every REST-triggered transition (`POST /api/runs//update/`, +`POST /api/create-run/`) and every telemetry-triggered transition (fired from +`realtime_engine.tasks.run_lifecycle_event`, driven by the detection layer) +produces the same event shape on the same exchange — there is no separate +"internal" vs "external" event path. -connection = Connection("amqp://guest:guest@localhost/") -exchange = Exchange("databus.events", type="direct") -producer = Producer(connection, exchange=exchange) +--- +## Error policy: fire-and-forget, log-and-drop + +Publishing a domain event is a deliberate best-effort side effect, not a +guaranteed delivery: + +- `publish_event` wraps the entire publish in a `try`/`except Exception`. Any + connection error, channel error, or broker rejection is caught, logged with + `logger.warning(..., exc_info=True)`, and **swallowed** — it never + propagates back into the FSM transition path. +- A small bounded retry is attempted first (`max_retries=2`, + `interval_start=0`, `interval_step=0.2`, `interval_max=0.5`, passed to + kombu's `Producer.publish(retry=True, retry_policy=...)`), but there are no + publisher confirms and no outbox/at-least-once guarantee beyond that. +- This is intentional: **telemetry and lifecycle processing must never block + or fail because RabbitMQ is unavailable.** A run's FSM transition, its + Postgres persistence, and its audit-log entry (`RunLifecycleTransition`, via + `GET /api/runs//history/`) all complete regardless of whether the AMQP + publish succeeds. +- Consequence for integrators: a consumer that needs strict at-least-once + semantics should treat these AMQP messages as a best-effort notification + stream and reconcile against `GET /api/runs//history/` — the + authoritative, durable audit log — rather than relying on AMQP delivery + alone. + +Source: `backend/messages/publisher.py`, `backend/messages/README.md`. -def publish_event(name: str, data: dict): - """Publish an event to the databus.events exchange.""" - print(f"Printing event {name} with data: {data}") -``` +--- -The `connection`, `exchange`, and `producer` objects are instantiated but -`publish_event` only prints. No `producer.publish()` call exists yet. +## Which transitions produce events + +Any transition executed through `RunLifecycleService.process_event` that +passes its guards publishes an event — this covers essentially the whole FSM: +registration (`validate_run`, `initialize_run`), rejection/cancellation +(`run_rejected`, `cancel_run`), operator confirmation +(`run_confirmed_by_operator`), tracking and progress +(`run_tracking_started`, `run_started`), deviations +(`run_tracking_lost`, `run_interrupted`, `run_short_turned`), completion +(`run_completed`), and recovery/expiry (`run_tracking_restored`, +`run_tracking_expired`). The one exception is `run_requested`: a run enters +`Requested` state at record creation (`Run.objects.create(...)` in +`CreateRunViewSet`), not through `process_event`, so no lifecycle event is +published for it. + +See the full transition table in +`backend/runs/domain/lifecycle/transitions.py` and the REST-facing surface in +[REST API › Run lifecycle endpoints](rest-api.md#run-lifecycle-endpoints). --- -## What this means for integrators +## Integration guidance - RabbitMQ (`message-broker`) is running and healthy in both dev and prod compose stacks. -- The exchange `databus.events` will need to be declared and bound before any - consumer can receive messages. -- Do not build production integrations against AMQP events until the publisher - is wired. Check the git log or CHANGELOG for the commit that replaces the - `print(...)` stub with a real `producer.publish(...)` call. -- The REST API (`POST /api/runs//update/`) and the run lifecycle audit log - (`GET /api/runs//history/`) are the stable integration points today. +- The publisher declares the `databus.events` exchange on every publish + (`declare=[events_exchange]`), so a consumer does not strictly need to + declare it first — but should still declare it (idempotent) plus its own + durable queue, to avoid depending on publish timing. +- Bind your queue with `runs.lifecycle.#` (all run lifecycle events) or a + narrower pattern for the specific events you care about. +- Deserialize the body as JSON and branch on `version` for forward + compatibility. +- Treat delivery as best-effort (see error policy above); use + `GET /api/runs//history/` to reconcile or backfill missed events. --- ## Communication boundaries -From `ARCHITECTURE.md §7`: - -- **Internal messaging** (AMQP): services within the compose network. - Spec: AsyncAPI (domain). Currently stub. +- **Internal messaging** (AMQP): services within the compose network, + currently limited to run lifecycle domain events described on this page. - **External telemetry** (MQTT): vehicles and devices. Spec: `backend/api/realtime.yml`. See [MQTT telemetry](mqtt-telemetry.md). -External telemetry is treated as untrusted signal and must be validated before -entering the domain messaging layer. +External telemetry is treated as untrusted signal and must be validated +before entering the domain messaging layer (see +[MQTT telemetry › Untrusted edge signal stance](mqtt-telemetry.md#untrusted-edge-signal-stance)). diff --git a/docs/content/interfaces/gtfs-rt-feeds.md b/docs/content/interfaces/gtfs-rt-feeds.md index de437db..fb2a23f 100644 --- a/docs/content/interfaces/gtfs-rt-feeds.md +++ b/docs/content/interfaces/gtfs-rt-feeds.md @@ -23,11 +23,13 @@ served statically in production). | `trip_updates.pb` | Protocol Buffer (binary) | `TripUpdate` | 15 s | | `trip_updates.json` | JSON (debug) | `TripUpdate` | 15 s | -!!! warning "ServiceAlert feed: stub" - `build_alerts` runs every 10 s but returns the string - `"Feed ServiceAlert built"` without producing a file. No - `service_alerts.pb` is written. ServiceAlert emission is planned for a - future release. +!!! warning "ServiceAlert feed: stub, not scheduled" + `schedule_engine.tasks.build_alerts` exists but only returns the string + `"Feed ServiceAlert built"` — it never produces a file, so no + `service_alerts.pb`/`.json` is written. It is also **not registered in + the Celery Beat schedule** (`backend/databus/celery.py`) — it never runs + automatically at all, deliberately, per its own docstring. ServiceAlert + emission is planned for a future release. --- @@ -50,10 +52,12 @@ Assembled by `schedule_engine.tasks.build_vehicle_positions` → | `vehicle.vehicle.id` | `vehicle::metadata` → `id` | | | `vehicle.vehicle.label` | `vehicle::metadata` → `label` | | | `vehicle.vehicle.license_plate` | `vehicle::metadata` → `license_plate` | Omitted if absent | +| `vehicle.vehicle.wheelchair_accessible` | `vehicle::metadata` → `wheelchair_accessible` | Omitted if absent | | `vehicle.position.latitude` | `vehicle::position` → `latitude` | | | `vehicle.position.longitude` | `vehicle::position` → `longitude` | | | `vehicle.position.bearing` | `vehicle::position` → `bearing` | Omitted if absent | | `vehicle.position.speed` | `vehicle::position` → `speed` | Omitted if absent | +| `vehicle.position.odometer` | `vehicle::position` → `odometer` | Omitted if absent | | `vehicle.timestamp` | `vehicle::position` → `timestamp` | Lifted from position hash; falls back to `now()` | | `vehicle.current_stop_sequence` | `run::vehicle_stop_status` | Omitted if absent | | `vehicle.stop_id` | `run::vehicle_stop_status` | Omitted if absent | @@ -167,6 +171,10 @@ the protobuf files for that). - `backend/schedule_engine/tasks.py` — Celery tasks - `backend/schedule_engine/builders.py` — pure assembly functions -- `backend/databus/celery.py` — beat schedule (15 s / 15 s / 10 s cadence) +- `backend/databus/celery.py` — beat schedule: `build_vehicle_positions` and + `build_trip_updates` every 15 s, `build_schedule` (GTFS Schedule zip) daily. + The other beat entries (`fetch_positions` every 10 s, `scan_stale_runs` + every 30 s) belong to `realtime_engine`, not the feed-building pipeline — + see [MQTT telemetry › HTTP polling ingestion path](mqtt-telemetry.md#http-polling-ingestion-path) - `backend/runs/domain/telemetry/` — contract modules used by builders - `backend/feed/files/` — output directory (mounted as a volume in production) diff --git a/docs/content/interfaces/mqtt-telemetry.md b/docs/content/interfaces/mqtt-telemetry.md index e1b5e77..6e544c2 100644 --- a/docs/content/interfaces/mqtt-telemetry.md +++ b/docs/content/interfaces/mqtt-telemetry.md @@ -11,6 +11,15 @@ Vehicles (or simulators) publish telemetry to the NanoMQ broker. The Broker: **NanoMQ** at `telemetry-broker:1883` (internal) / `mqtt.:8883` (TLS, production). +!!! note "Two producers, one topic contract" + Position data reaches the `transit/vehicle//position` topic through + two paths: devices/simulators that speak MQTT publish there directly, and + devices that only expose an HTTP+JSON endpoint are polled every 10 s by + the `fetch_positions` Celery task, which republishes what it fetches onto + the same topic. Both paths converge on the single MQTT contract described + below — see [HTTP polling ingestion path](#http-polling-ingestion-path) + for how the second path works. + --- ## Topic grammar @@ -116,10 +125,61 @@ Reports passenger load. 2. `classify_status(occupancy_percentage)` computes the server-policy enum value. 3. `validate_for_write(occ_payload)` validates the combined payload. 4. `r.hset(vehicle::occupancy, mapping=...)` writes the hash. -5. `detect_from_telemetry(run_id, vehicle_id, "occupancy", data)` is called +5. `r.set(runs:last_seen:, now().isoformat())` is written synchronously. +6. `detect_from_telemetry(run_id, vehicle_id, "occupancy", data)` is called inline (not via the Celery queue) — occupancy detection is cheap and must fire lifecycle events immediately for tracking-start and restore detectors. -6. `r.set(runs:last_seen:, now().isoformat())` is written synchronously. + +--- + +## HTTP polling ingestion path + +Not every telemetry device exposes an MQTT publisher — some fleet-tracking +providers (e.g. NavSat-style endpoints) only expose an HTTP+JSON polling +endpoint. For those, `realtime_engine.tasks.fetch_positions` +(`backend/realtime_engine/tasks.py`) is a Celery Beat task, scheduled every +**10 seconds** (`fetch-positions` in `backend/databus/celery.py`, with +`expires=10` so a poll that couldn't even start within its own cycle is +revoked rather than queuing up behind a slow source), that: + +1. Builds the in-service vehicle-id set from every `vehicle::current_run` + key present in Redis — the same gate the MQTT consumer itself uses. +2. Queries `operations.Sensor` rows that are `status="ACTIVE"`, + `provides_position=True`, and `source_type` in `["http", "both"]`. +3. Skips any sensor whose own `equipment.vehicle` is not in the in-service + set (avoids paying the HTTP cost for out-of-service vehicles), then + fetches the remaining sensors via the registered `"http"` adapter + (`backend/realtime_engine/sources/http_json.py`), each call independently + try/excepted so one failing source can't sink the poll. +4. Filters the fetched readings down to in-service vehicles again (a fleet + endpoint can return many vehicles from a single sensor's URL, not just the + one tied to that sensor's own equipment). +5. Publishes the survivors via `MqttPublisher.publish_batch` + (`backend/realtime_engine/sources/publisher.py`) onto + `transit/vehicle//position`, QoS 0, not retained — **the exact + same topic and payload shape** the MQTT consumer already subscribes to. + +The task carries a `soft_time_limit=25` so one pathological source (a host +that hangs on every request) can't hold a worker slot indefinitely; on +`SoftTimeLimitExceeded` it logs the in-flight sensor and returns early +without publishing. + +**HTTP+JSON adapter mapping:** a `Sensor` with `source_type="http"` (or +`"both"`) configures `source_http_url` and `source_json_mapping` — a small +schema of JSON-path mappings (`paths.lat`, `paths.lon`, optionally +`paths.speed`, `paths.odometer`, `paths.bearing`, `paths.timestamp`, +`paths.vehicle_id`) plus unit hints (`units.speed: "kmh"`, +`units.odometer: "km"`, converted to SI) and a timestamp format/timezone. +Only `lat`/`lon` are effectively required — a record that can't yield both is +skipped. If the mapping doesn't resolve a `vehicle_id`, the adapter falls +back to the sensor's own `equipment.vehicle`. + +This path only ever produces `position` leaf messages — there is no HTTP +polling equivalent for `occupancy`. + +Source: `backend/realtime_engine/tasks.py::fetch_positions`, +`backend/realtime_engine/sources/http_json.py`, +`backend/realtime_engine/sources/publisher.py`, `backend/databus/celery.py`. --- diff --git a/docs/content/interfaces/rest-api.md b/docs/content/interfaces/rest-api.md index ef4350b..4a1ef2d 100644 --- a/docs/content/interfaces/rest-api.md +++ b/docs/content/interfaces/rest-api.md @@ -12,8 +12,11 @@ layer for GTFS Schedule data. **OpenAPI / ReDoc:** `GET /api/docs/` — interactive documentation generated by `drf-spectacular`. -**Schema download:** `GET /api/docs/schema/` — returns the AsyncAPI YAML for -the realtime interface (`backend/api/realtime.yml`). +**Schema download:** `GET /api/docs/schema/` — returns the OpenAPI 3.0 YAML +that documents the realtime/telemetry submission interface +(`backend/api/realtime.yml`). This is the same file `/api/docs/` renders as +ReDoc — `get_schema` serves it as a static file rather than a dynamically +generated `drf-spectacular` schema. **Authentication:** Token authentication (`TokenAuthentication`) via the `Authorization: Token ` header. Obtain a token with `POST /api/login/`. @@ -61,20 +64,25 @@ Request creation of a new run. This is a synchronous multi-step call: 4. Applies `VALIDATE_RUN` (GTFS consistency check) → state `VALIDATED`. 5. Applies `INITIALIZE_RUN` (writes Redis state, vehicle metadata) → state `INITIALIZED`. -**Request body fields:** +**Request body fields** (validated by `CreateRunSerializer`, +`backend/api/serializers.py`): | Field | Type | Required | Notes | | --- | --- | --- | --- | | `route_id` | string | Yes | GTFS route_id | | `trip_id` | string | Yes | GTFS trip_id | | `shape_id` | string | Yes | GTFS shape_id | -| `direction_id` | int | No | GTFS direction_id | -| `start_date` | date | Yes | Service date (YYYY-MM-DD) | -| `start_time` | duration | No | Scheduled start time | -| `schedule_relationship` | string | No | SCHEDULED / ADDED / UNSCHEDULED / etc. | +| `direction_id` | int | Yes | GTFS direction_id, `>= 0` | +| `schedule_relationship` | string | Yes | One of `SCHEDULED`, `ADDED`, `UNSCHEDULED`, `CANCELED`, `DUPLICATED`, `DELETED` | | `vehicle_id` | string | Yes | Must exist in `operations.Vehicle` | | `operator_id` | string | Yes | Must exist in `operations.Operator` | +!!! note + `Run` has `start_date` and `start_time` model fields + (`backend/runs/models.py`), but `CreateRunSerializer` does not currently + accept either as input — they cannot be set through this endpoint and are + left `null` on the created `Run`. + **Response 200 (success):** ```json { @@ -132,22 +140,37 @@ used by the operator UI and the simulator to send operator commands. | `event` | string | Yes | One of the allowed event values (see below) | | `details` | object | No | Additional payload merged into the event context | -**Allowed event values** (from `RunLifecycleEvents`): +**Allowed event values:** `RunUpdateSerializer.event` is a `ChoiceField` over +every member of `RunLifecycleEvents` +(`backend/runs/domain/lifecycle/events.py`), so any of the values below pass +serializer validation. Whether the request actually succeeds still depends on +the run's current lifecycle state matching a transition for that event in +`backend/runs/domain/lifecycle/transitions.py` — an event with no matching +`(from_state, event)` transition, or one whose guards fail, returns a 422. -| Event string | Meaning | -| --- | --- | -| `run_confirmed_by_operator` | Operator confirms they are ready (`RUN_CONFIRMED`) | -| `run_completed` | Manual completion — run ended successfully (`RUN_COMPLETED`) | -| `run_interrupted` | Manual interrupt — run ended unexpectedly (`RUN_INTERRUPTED`) | -| `run_short_turned` | Manual short-turn — vehicle turned around early (`RUN_SHORT_TURNED`) | -| `cancel_run` | Cancel before the run started | -| `run_tracking_started` | (Usually detected, but can be sent manually) | -| `run_started` | (Usually detected, but can be sent manually) | +| Event string | Meaning | Typical caller | +| --- | --- | --- | +| `validate_run` | GTFS consistency check | Internal (`create-run` flow) | +| `initialize_run` | Writes Redis state | Internal (`create-run` flow) | +| `run_rejected` | Reject/cancel during registration | Internal (`create-run` flow on validation failure) | +| `run_confirmed_by_operator` | Operator confirms they are ready | Operator UI | +| `cancel_run` | Cancel after confirmation, before/while tracking | Operator UI | +| `run_tracking_started` | Vehicle telemetry confirms tracking | Usually detected; can be sent manually | +| `run_started` | Vehicle confirmed moving | Usually detected; can be sent manually | +| `run_tracking_lost` | Telemetry has gone stale | Usually detected (`scan_stale_runs`); can be sent manually | +| `run_interrupted` | Manual interrupt — run ended unexpectedly | Operator UI | +| `run_short_turned` | Manual short-turn — vehicle turned around early | Operator UI | +| `run_completed` | Run ended successfully (manual or automatic) | Operator UI or detection layer | +| `run_tracking_restored` | Telemetry resumed after `run_tracking_lost` | Usually detected; can be sent manually | +| `run_tracking_expired` | Grace period after `run_tracking_lost` exceeded | Usually detected (`scan_stale_runs`) | + +`run_requested` is also a valid enum value but has no entry in the transition +table, so sending it here always returns 422 — a run only reaches `Requested` +via `POST /api/create-run/`'s record creation, not via `process_event`. !!! note - `run_completed` is the event string for both manual and automatic completion. - Commit `54e23f3` renamed `complete_run` → `run_completed` to make clear it is - a **fact** (something that happened), not a command. The REST endpoint + `run_completed` is the event string for both manual and automatic completion — + it is a **fact** (something that happened), not a command. The REST endpoint accepts it as a command in the operator-triggered path; the detection layer fires it automatically in the telemetry-driven path. @@ -169,7 +192,16 @@ used by the operator UI and the simulator to send operator commands. ### `GET /api/runs//history/` -Return the ordered FSM transition audit log for a run. +Return the ordered FSM transition audit log for a run — every `(event, +from_state, to_state)` attempt processed through +`RunLifecycleService.process_event`, whether or not its guards passed. + +!!! note + The run's initial `Requested` state is set by `Run.objects.create(...)` + (a model field default), not by dispatching a `run_requested` event + through `process_event` — so `run_requested` never appears as a + transition here. The first entry for a run created via + `POST /api/create-run/` is its `validate_run` attempt. **Response 200:** ```json @@ -177,12 +209,17 @@ Return the ordered FSM transition audit log for a run. "run_id": "uuid", "transitions": [ { - "event": "run_requested", - "from_state": null, - "to_state": "Requested", + "event": "validate_run", + "from_state": "Requested", + "to_state": "Validated", "timestamp": "2026-06-19T12:00:00+00:00", "actions": {}, - "guards": {} + "guards": { + "is_gtfs_valid": true, + "is_trip_available": true, + "is_vehicle_available": true, + "is_operator_available": true + } } ] } @@ -197,7 +234,7 @@ unless noted. | Endpoint prefix | Model | Notes | | --- | --- | --- | -| `/api/company/` | `Company` | Token auth currently commented out | +| `/api/company/` | `Company` | Token auth currently commented out. `CompanySerializer` is a `HyperlinkedModelSerializer` with `fields = "__all__"` — the response is keyed by `url` (not a bare `id`), and `linked_agency` (the M2M to `Agency`) serializes as a list of hyperlinks | | `/api/operator/` | `Operator` | | | `/api/vehicle/` | `Vehicle` | Filterable by `company` | | `/api/data-provider/` | `DataProvider` | | @@ -249,6 +286,61 @@ Read-only schedule data. Token authentication is currently not enforced. | `GET /api/which-shapes/` | `?route_id=` | Returns GeoShapes for a route | | `GET /api/find-trips/` | `?route_id=&service_id=&shape_id=` | Returns trips with start times and run lifecycle states | +`which-shapes` and `find-trips` back the run-registration UI cascade (pick a +route → its shapes → a candidate trip). Commit `5489fe4` repaired both: the +views previously queried FK/field names that didn't exist on the models +(`RouteStop.route`/`.shape` instead of `linked_route`/`linked_shape`; +`TripTime.trip_time` instead of `departure_time`), so neither endpoint had +ever worked. + +### `GET /api/which-shapes/?route_id=` + +`WhichShapesView` looks up the current `Feed`'s `Route` for `route_id`, then +the distinct `GeoShape`s reachable from it via `RouteStop.linked_route` → +`RouteStop.linked_shape`. Returns `[]` if the route or current feed can't be +resolved. + +**Response 200** (`WhichShapesSerializer`, one object per distinct shape): +```json +[ + { + "shape_id": "string", + "shape_name": "string | null", + "shape_desc": "string | null", + "shape_from": "string | null", + "shape_to": "string | null" + } +] +``` + +### `GET /api/find-trips/?route_id=&service_id=&shape_id=` + +`FindTripsView` filters `Trip` by `route_id`/`service_id`/`shape_id` within +the current feed, resolves each trip's earliest `TripTime` via the +`TripTime.linked_trip` FK (not a bare `trip_id` string match, which could +cross-match a same-numbered trip from a different feed), and tags each result +with the matching `Run`'s current lifecycle state for today's `start_date` — +or `"UNKNOWN"` if no such run exists. All three query parameters are +required; missing any returns 400. + +**Response 200** (`FindTripsSerializer`, one object per trip): +```json +[ + { + "trip_id": "string", + "trip_time": "HH:MM:SS", + "run_lifecycle_state": "Requested | Validated | ... | UNKNOWN", + "direction_id": 0, + "trip_headsign": "string" + } +] +``` + +**Response 400** (missing parameter): +```json +{"error": "Todos los parámetros route_id, service_id, shape_id son requeridos"} +``` + --- ## URL structure From 5796aaa9049a82ff7ff328f0e4e4ffe0666f0557 Mon Sep 17 00:00:00 2001 From: Jae Date: Thu, 20 Aug 2026 02:11:05 -0600 Subject: [PATCH 51/68] docs(site): update runs section against current code --- docs/content/runs/detection.md | 5 ++- docs/content/runs/index.md | 8 ++-- docs/content/runs/lifecycle-states.md | 18 ++++----- docs/content/runs/progress-fsm.md | 57 +++++++++++---------------- docs/content/runs/stale-runs.md | 3 -- 5 files changed, 39 insertions(+), 52 deletions(-) diff --git a/docs/content/runs/detection.md b/docs/content/runs/detection.md index e78d65c..048b1a6 100644 --- a/docs/content/runs/detection.md +++ b/docs/content/runs/detection.md @@ -123,7 +123,8 @@ TELEMETRY_EXPIRY_S = 600 # NO_SIGNAL + silent > 600 s → CANCELLED ```python _TRACKING_SEED_EVENTS = {"run_tracking_started", "run_tracking_restored"} -def _fire(result: DetectionResult, base_payload: dict) -> None: +def _fire(result: DetectionResult, base_payload: dict[str, Any]) -> None: + payload = {**base_payload, **result.extra_payload} if result.event in _TRACKING_SEED_EVENTS: r.sadd("runs:tracking", base_payload["run_id"]) run_lifecycle_event.delay(result.event, payload) @@ -143,7 +144,7 @@ class DetectionResult: ## Lifecycle event trigger table -From `backend/realtime_engine/README.md`: +Consistent with `backend/realtime_engine/README.md` and the detector conditions in `lifecycle_detectors.py` / `periodic_detectors.py` above: | Run state | Trigger condition | Event fired | |---|---|---| diff --git a/docs/content/runs/index.md b/docs/content/runs/index.md index 7890385..27b6152 100644 --- a/docs/content/runs/index.md +++ b/docs/content/runs/index.md @@ -6,11 +6,11 @@ icon: lucide/route A **run** is the unit of operational work in Databús: a vehicle assigned to a trip, tracked from the first GPS ping to the last stop. The run lifecycle governs how that work progresses through states and how the system reacts to events. -The lifecycle is implemented as two cooperating finite state machines: +The lifecycle is implemented as one finite state machine, plus a per-tick computation that plays a related but separate role: -1. **Lifecycle FSM** — tracks the operational phase of the run (`Requested` → `Confirmed` → `Tracking` → `In Progress` → `Completed`, plus deviation paths). Driven by commands from operators and by detected facts from telemetry. +1. **Lifecycle FSM** — tracks the operational phase of the run (`Requested` → `Confirmed` → `Tracking` → `In Progress` → `Completed`, plus deviation paths). Driven by commands from operators and by detected facts from telemetry. Implemented in `backend/runs/domain/lifecycle/`. -2. **Progress FSM** — tracks the vehicle's motion state within a run. A parallel FSM in `backend/runs/domain/progress/`. +2. **Progress FSM (motion)** — a second, separate state machine for vehicle motion (`IS_MOVING` / `IS_STOPPED` / `IS_PAUSED`) described in `MODEL.md`. This is design intent only: no such FSM exists in the code. A structural scaffold once lived at `backend/runs/domain/progress/`, but it was dead code (never wired to a live call path) and was deleted in commit `a3cbb0a`. The active stand-in is a stateless per-tick computation in `backend/runs/domain/progression/compute.py` that classifies the vehicle's relationship to its next stop (`STOPPED_AT` / `INCOMING_AT` / `IN_TRANSIT_TO`) on every position update — see [progress-fsm.md](progress-fsm.md). The detection layer sits between the MQTT telemetry stream and the lifecycle FSM. It converts raw position and occupancy signals into lifecycle events without any I/O of its own. @@ -28,5 +28,5 @@ flowchart LR | [States & transitions](lifecycle-states.md) | All 11 states, the full transition table, guards, and actions | | [Commands vs detected facts](commands-vs-detections.md) | Which events are operator-driven vs telemetry-driven; the `run_completed` rename | | [Detection layer](detection.md) | Pure planners, detector registry, impure wrappers | -| [Progress FSM (motion)](progress-fsm.md) | The separate motion-state machine (IS_MOVING / IS_STOPPED / IS_PAUSED) | +| [Progress FSM (motion)](progress-fsm.md) | Design intent for a motion-state machine (IS_MOVING / IS_STOPPED / IS_PAUSED); the active per-tick stop-status computation that stands in for it today | | [Stale-run scanning](stale-runs.md) | `scan_stale_runs` periodic task, grace/expiry thresholds | diff --git a/docs/content/runs/lifecycle-states.md b/docs/content/runs/lifecycle-states.md index 7c2da4a..b7d8c0d 100644 --- a/docs/content/runs/lifecycle-states.md +++ b/docs/content/runs/lifecycle-states.md @@ -6,8 +6,8 @@ icon: lucide/git-branch The run lifecycle FSM is defined in `backend/runs/domain/lifecycle/`. Every run moves through exactly one state at a time; every state change requires a matching event, a passing set of guards, and the execution of a set of actions. -!!! warning "State name correction" - The existing placeholder diagram in `docs/content/processes/run-lifecycle.md` uses `CANCELED`. The code uses `"Cancelled"` (British spelling, mixed case). Always use the value from `RunLifecycleStates` — never the enum member name. +!!! note "Spelling: use the enum value, not the member name" + The code spells the cancelled state `"Cancelled"` (British spelling, mixed case) as the `RunLifecycleStates.CANCELLED` value — not `CANCELED`. Always use the value from `RunLifecycleStates`, never the enum member name, when comparing against Redis or API responses. ## State set @@ -96,10 +96,10 @@ Defined in `backend/runs/domain/lifecycle/guards.py`. **Registration guards:** - `is_gtfs_valid` — checks that `route_id`, `trip_id`, `direction_id`, `shape_id`, and `schedule_relationship` are present and consistent with the current GTFS feed in PostgreSQL. -- `is_trip_available` — checks Redis `trip::current_run` is not already assigned to another run. -- `is_vehicle_available` — checks Redis `vehicle::current_run` is not assigned elsewhere. -- `is_operator_available` — checks Redis `operator::current_run` is not assigned elsewhere. -- `is_run_validated` — always returns `True`; placeholder for future validation checks. +- `is_trip_available` — checks Redis `trip::current_run` is not claimed by a *different* run, raising `RunLifecycleError` if it is. `trip_id` comes from the payload, falling back to the run record's `trip_id` when the payload omits it; if neither is set the guard passes trivially. +- `is_vehicle_available` — checks Redis `vehicle::current_run` is not claimed by a *different* run, raising `RunLifecycleError` if it is. `vehicle_id` comes from the payload, falling back to the run's assigned vehicle when the payload omits it; if neither is set the guard passes trivially. +- `is_operator_available` — checks Redis `operator::current_run` is not claimed by a *different* run, raising `RunLifecycleError` if it is. `operator_id` comes from the payload, falling back to the run's assigned operator when the payload omits it; if neither is set the guard passes trivially. +- `is_run_validated` — revalidates before `INITIALIZE_RUN`, closing the race window between `VALIDATE_RUN` and `INITIALIZE_RUN` (commit `2770788`): re-runs `is_vehicle_available`, `is_trip_available`, and `is_operator_available` (each only raises if the resource is claimed by a *different* run, so a re-fire where this run already holds its own claims still passes), then re-confirms the run's `trip_id` still exists in whichever GTFS feed is current *now* — covering the nightly `build_schedule` feed rotation that may have happened between validation and initialization. Raises `RunLifecycleError` with field-keyed detail on any failure. **Authorization guards:** @@ -112,9 +112,9 @@ Defined in `backend/runs/domain/lifecycle/guards.py`. - `is_vehicle_tracked` — checks `SISMEMBER runs:tracking ` in Redis. - `is_vehicle_moving` — checks `speed > 0.5` m/s in the payload. -- `is_telemetry_stale` — checks `staleness > TELEMETRY_GRACE_S` (60 s). -- `is_telemetry_fresh` — checks `staleness <= TELEMETRY_GRACE_S` (60 s). -- `is_telemetry_grace_period_exceeded` — checks `staleness > TELEMETRY_EXPIRY_S` (600 s). +- `is_telemetry_stale` — checks `staleness > TELEMETRY_GRACE_S` (60 s), where `staleness` is computed from the payload's `last_seen_at` (falling back to the run record's `last_event_at` if absent). +- `is_telemetry_fresh` — checks `staleness <= TELEMETRY_GRACE_S` (60 s), same `last_seen_at`/`last_event_at` fallback. +- `is_telemetry_grace_period_exceeded` — checks `staleness > TELEMETRY_EXPIRY_S` (600 s), same `last_seen_at`/`last_event_at` fallback. - `is_at_terminal_stop` — checks that the `stop_id` in the payload matches the last stop of the run's trip in the current GTFS feed. ## Actions diff --git a/docs/content/runs/progress-fsm.md b/docs/content/runs/progress-fsm.md index 9270c9c..d870dbd 100644 --- a/docs/content/runs/progress-fsm.md +++ b/docs/content/runs/progress-fsm.md @@ -6,8 +6,8 @@ icon: lucide/activity `MODEL.md` describes a second, separate state machine for vehicle motion that runs concurrently with the lifecycle FSM. This page documents the design intent and the current implementation status. -!!! warning "Implementation gap" - The motion FSM described in `MODEL.md` (`IS_MOVING` / `IS_STOPPED` / `IS_PAUSED`) does not yet exist in the code as a working service. The `backend/runs/domain/progress/` module exists as a structural scaffold, but its state enum (`RunProgressStates`) mirrors the lifecycle states rather than the motion states, and the `RunProgressService` in `backend/runs/services/progress.py` is a stub (no active call path, hardcoded `current_stop = 1`). This page describes both the design intent and the actual code state. +!!! warning "Design intent only — the scaffold was removed" + The motion FSM described in `MODEL.md` (`IS_MOVING` / `IS_STOPPED` / `IS_PAUSED`) does not exist in the code, as a working service or otherwise. A structural scaffold once lived at `backend/runs/domain/progress/` (states/events/transitions/guards/actions mirroring the lifecycle FSM) plus a stub `RunProgressService` in `backend/runs/services/progress.py`, but neither ever had a live call path — the scaffold's state enum mirrored `RunLifecycleStates` rather than the motion states, and the service hardcoded `current_stop = 1`. Both were deleted as dead code during release cleanup, commit `a3cbb0a` ("refactor(runs): drop dead RunProgress FSM chain"). This page describes the design intent and the actual active implementation of stop-state detection, which is a different, simpler mechanism than the planned motion FSM. ## Design intent (MODEL.md) @@ -35,51 +35,40 @@ stateDiagram-v2 The FSM was designed to emit a trace — a sequence of labeled transitions carrying timestamps and position data — that could be consumed by the analytics pipeline for scheduling and on-time performance analysis. -## What exists in the code +This remains future design intent. Nothing below is a step toward it; it is a separate, already-shipped mechanism that happens to answer a related question ("is the vehicle stopped at a stop right now?") without any FSM. -`backend/runs/domain/progress/` contains: +## What exists in the code: per-tick stop-status computation -- `states.py` — `RunProgressStates` enum: **identical to `RunLifecycleStates`** (Requested, Validated, …, Cancelled). Not the IS_MOVING/IS_STOPPED/IS_PAUSED states. -- `events.py` — `RunProgressEvents` enum: identical to `RunLifecycleEvents`. -- `transitions.py` — A transition table that mirrors `backend/runs/domain/lifecycle/transitions.py` exactly, using `RunProgressStates` and `RunProgressEvents`. -- `guards.py` — Copy of lifecycle guards. -- `actions.py` — Copy of lifecycle actions. +There is no motion FSM in the code, dead or otherwise — the `progress/` scaffold and `RunProgressService` described above are gone. The **active** implementation of stop-state detection is a stateless, per-tick computation in `backend/runs/domain/progression/compute.py`, function `compute_stop_status`. -The `RunProgressService` in `backend/runs/services/progress.py` is a stub: +On every position update, `compute_stop_status`: -```python -class RunProgressService: - def process_event(self, event, payload): - run = self._load_run(payload) - if not self._is_active(run): # checks run_lifecycle_state == "IN_PROGRESS" - return None - ... - def _detect_stop_events(self, run, context): - current_stop = 1 # TODO: self._infer_current_stop(run, context) - ... -``` - -No task, celery entry point, or MQTT handler calls `RunProgressService.process_event`. +1. Loads the cached GTFS shape geometry for the run's `(shape_id, trip_id)`. +2. Projects the observed GPS point onto the shape polyline to get the along-track progress distance. +3. Picks the upcoming stop (the next stop ahead by progress distance, or the last stop if the vehicle has passed all of them). +4. Applies radius/speed rules to classify the vehicle against that stop: + - `distance <= STOP_RADIUS_M` (20.0 m) AND (speed unknown OR `speed <= STATIONARY_SPEED_MPS` (0.5 m/s)) → `STOPPED_AT` + - `distance <= INCOMING_AT_RADIUS_M` (50.0 m) AND still approaching (`point_progress_m < stop.progress_m`) → `INCOMING_AT` + - otherwise → `IN_TRANSIT_TO` +5. Enforces a monotonic sequence floor: if the new candidate's `stop_sequence` would regress below the previous tick's, the previous sequence/stop_id are kept instead. -## Relationship to server-side progression +The whole computation is wrapped in `try/except Exception` and falls back to `IN_TRANSIT_TO` plus carry-forward of the previous state on any error (missing GTFS data, ORM errors, bad payloads) — it must never raise, since the caller runs it on every position tick. -The server-side map-matching in `backend/runs/domain/progression/compute.py` produces a `vehicle_stop_status` dict with three states: `STOPPED_AT`, `INCOMING_AT`, `IN_TRANSIT_TO`. These correspond loosely to the motion FSM concept but are computed per telemetry tick and written to Redis as `run::vehicle_stop_status`, not as FSM transitions. +This is a **stateless classification, not an FSM**: there are no explicit states, transitions, guards, or actions — just a pure function computing one of three status strings from the current tick's geometry. The only "memory" across ticks is the monotonic sequence floor. -The stop-status computation uses: +### Where it's called and stored -- `STOP_RADIUS_M = 20.0` m — within this distance and low speed → `STOPPED_AT` -- `INCOMING_AT_RADIUS_M = 50.0` m — within this distance and still approaching → `INCOMING_AT` -- `STATIONARY_SPEED_MPS = 0.5` m/s — speed at or below this is considered dwell +`backend/runs/domain/progression/producer.py::produce_stop_status` is the impure wrapper: it reads `vehicle::position` and `run:` from Redis, calls `compute_stop_status`, validates the result, and writes it to `run::vehicle_stop_status` (Redis hash key from `backend/runs/domain/telemetry/keys.py::stop_status_key`). -This is the active implementation of stop-state detection. The motion FSM scaffold in `progress/` is not yet connected to it. +It is invoked from `process_position_update` (`backend/realtime_engine/tasks.py`), which runs after every MQTT position write. The resulting `vehicle_stop_status` dict is then re-fed into `detect_from_telemetry(..., leaf="progression", ...)` so `RunCompletedDetector` can fire `run_completed` when `current_status == "STOPPED_AT"` — see [detection.md](detection.md) and [commands-vs-detections.md](commands-vs-detections.md) for that path. ## Summary | Aspect | Design intent (MODEL.md) | Current code | |---|---|---| | Motion states | `IS_MOVING`, `IS_STOPPED`, `IS_PAUSED` | Not implemented | -| Module location | `runs/domain/progress/` | Exists as a lifecycle mirror scaffold | -| Active service | `RunProgressService` | Stub — no live call path | -| Stop-state detection | Motion FSM transitions | Per-tick `compute.py` → `vehicle_stop_status` Redis hash | +| Scaffold module | (none planned — would be new) | `runs/domain/progress/` existed as an unused lifecycle-mirror scaffold; deleted in `a3cbb0a` | +| Stub service | (none planned — would be new) | `RunProgressService` existed as a dead stub; deleted in `a3cbb0a` | +| Stop-state detection | Motion FSM transitions with a trace | Stateless per-tick `compute_stop_status()` → `vehicle_stop_status` Redis hash (`run::vehicle_stop_status`) | -The motion FSM is planned for implementation. When implemented, it will run alongside the lifecycle FSM and produce structured traces for the analytics pipeline. +The motion FSM is still only a design idea in `MODEL.md`. If it is ever implemented, it would run alongside the lifecycle FSM and produce structured traces for the analytics pipeline — but that is unrelated to the per-tick stop-status computation described above, which already ships and already drives `run_completed` detection. diff --git a/docs/content/runs/stale-runs.md b/docs/content/runs/stale-runs.md index e1c4d55..bbea1a7 100644 --- a/docs/content/runs/stale-runs.md +++ b/docs/content/runs/stale-runs.md @@ -49,9 +49,6 @@ TELEMETRY_EXPIRY_S = 600 # seconds | `IN_PROGRESS` AND `60 < staleness <= 600` | `run_tracking_lost` | `No Signal` | | `NO_SIGNAL` AND `staleness > 600` | `run_tracking_expired` | `Cancelled` | -!!! note "README vs thresholds.py discrepancy" - `backend/realtime_engine/README.md` states the expiry threshold as 300 s. The actual code value in `backend/runs/domain/detection/thresholds.py` (the single source of truth for both detectors and guards) is **600 s**. The README predates the thresholds unification and has not been updated. Trust `thresholds.py`. - The two-stage design gives the vehicle a grace window (60 s) to reconnect before the run enters `No Signal`, and then a longer window (up to 600 s total from last seen) before it is permanently cancelled. ## Why `runs:tracking` includes NO_SIGNAL runs From 03f109c8bd895d20fb56ed99d9be4e870b262625 Mon Sep 17 00:00:00 2001 From: Jae Date: Thu, 20 Aug 2026 02:18:10 -0600 Subject: [PATCH 52/68] docs(site): update data-flow section against current code --- docs/content/data-flow/gtfs-rt-publishing.md | 50 ++++++++++++++----- docs/content/data-flow/index.md | 5 +- docs/content/data-flow/map-matching.md | 19 ++++++- docs/content/data-flow/server-processing.md | 27 ++++++++-- docs/content/data-flow/telemetry-ingestion.md | 18 ++++++- 5 files changed, 98 insertions(+), 21 deletions(-) diff --git a/docs/content/data-flow/gtfs-rt-publishing.md b/docs/content/data-flow/gtfs-rt-publishing.md index f012ad4..b6eb426 100644 --- a/docs/content/data-flow/gtfs-rt-publishing.md +++ b/docs/content/data-flow/gtfs-rt-publishing.md @@ -23,26 +23,46 @@ app.conf.beat_schedule = { "task": "schedule_engine.tasks.build_trip_updates", "schedule": timedelta(seconds=15), }, - "build-alerts-every-10s": { - "task": "schedule_engine.tasks.build_alerts", - "schedule": timedelta(seconds=10), - }, "scan-stale-runs-every-30s": { "task": "realtime_engine.tasks.scan_stale_runs", "schedule": timedelta(seconds=30), }, + "fetch-positions": { + "task": "realtime_engine.tasks.fetch_positions", + "schedule": timedelta(seconds=10), + # A task that couldn't even start within its own 10s cycle is stale + # by the time a worker slot frees up -- revoke it instead of letting + # queued fetch_positions runs pile up behind a slow/unreachable + # source. + "options": {"expires": 10}, + }, + "build-schedule-daily": { + "task": "schedule_engine.tasks.build_schedule", + "schedule": timedelta(days=1), + }, } ``` +`build_alerts` (`schedule_engine.tasks.build_alerts`) is **not** in this dict — +it is deliberately excluded from beat, see the warning below. + | Task | Queue | Cadence | Output | |---|---|---|---| | `build_vehicle_positions` | `schedule_engine` | 15 s | `vehicle_positions.{pb,json}` | | `build_trip_updates` | `schedule_engine` | 15 s | `trip_updates.{pb,json}` + WebSocket push | -| `build_alerts` | `schedule_engine` | 10 s | stub (returns `"Feed ServiceAlert built"`) | -| `scan_stale_runs` | `realtime_engine` | 30 s | lifecycle events only | +| `build_schedule` | `schedule_engine` | daily | GTFS Schedule zip, via `feed.schedule.exporter.publish_gtfs_zip` | + +Two more beat entries fire on this same schedule but are **not** part of the +feed-building pipeline — they belong to `realtime_engine` ingestion and are +covered on [Telemetry ingestion](telemetry-ingestion.md), not here: -!!! warning "Alerts are a stub" - `build_alerts` returns a string and does not write any file. ServiceAlert support is designed but not yet implemented. +| Task | Queue | Cadence | Role | +|---|---|---|---| +| `scan_stale_runs` | `realtime_engine` | 30 s | Fires lifecycle events for quiet runs; writes no feed output. | +| `fetch_positions` | `realtime_engine` | 10 s (`expires=10`) | Polls HTTP telemetry sources and republishes onto MQTT — an ingestion task, not a publisher. | + +!!! warning "Alerts are a stub, and it is not beat-scheduled" + `build_alerts` (`backend/schedule_engine/tasks.py`) still exists as a Celery task — it returns the string `"Feed ServiceAlert built"` and writes no file — but it was removed from `app.conf.beat_schedule`. It only runs if invoked manually (shell, Django admin); nothing calls it on a cadence. ServiceAlert support is designed but not yet implemented. ## Feed assembly: pure builders @@ -120,7 +140,7 @@ backend/feed/files/ └── trip_updates.json # Debug JSON, same content ``` -The `feed` Django app serves these files via a static-file route. In production the `static_files` nginx service (see [Deployment](../operations/deployment.md)) serves them from a shared volume. +These files are served by explicit `feed` app views (`backend/feed/views.py`, routed in `backend/feed/urls.py`) — `GET /realtime/vehicle_positions.{json,pb}` and `/realtime/trip_updates.{json,pb}` each `FileResponse` the corresponding file — not by a generic static-file/nginx route. In `compose.dev.yml` all three backend services bind-mount the same `./backend` host directory, so `feed/files/` written by `schedule-engine` is immediately visible to `orchestrator`. See [Deployment](../operations/deployment.md) for how the output directory is exposed in other environments. ## Feed cadence diagram @@ -143,12 +163,18 @@ sequenceDiagram W-->>W: group_send("status", …) end - loop Every 10 s - B->>W: build_alerts - W-->>W: return stub string + loop Once a day + B->>W: build_schedule + W->>F: gtfs.zip end ``` +`build_alerts` fires on no schedule — it is not in `app.conf.beat_schedule`. +`fetch_positions` (every 10 s, `expires=10`) and `scan_stale_runs` (every 30 s) +also fire on Celery Beat, but on the `realtime_engine` worker, as ingestion +tasks — see [Telemetry ingestion](telemetry-ingestion.md) rather than this +diagram, which covers feed *publishing* only. + ## Related pages - [Live updates (WebSocket)](live-updates.md) — the `group_send` call inside `build_trip_updates`. diff --git a/docs/content/data-flow/index.md b/docs/content/data-flow/index.md index 4ecb89d..f6964c6 100644 --- a/docs/content/data-flow/index.md +++ b/docs/content/data-flow/index.md @@ -43,9 +43,12 @@ sequenceDiagram S->>W: channel_layer.group_send("status", …) ``` +!!! note "This diagram shows the MQTT-native path" + Devices that only expose an HTTP+JSON endpoint don't publish MQTT directly. Instead `realtime_engine.tasks.fetch_positions` polls them every 10 s and republishes onto the same `transit/vehicle//position` topic — from step 2 onward the pipeline is identical either way. See [Telemetry ingestion](telemetry-ingestion.md#http-polling-a-second-producer). + | Page | What it covers | |---|---| -| [Telemetry ingestion](telemetry-ingestion.md) | MQTT consumer bootstep, topic subscriptions, per-leaf pipeline | +| [Telemetry ingestion](telemetry-ingestion.md) | MQTT consumer bootstep, topic subscriptions, per-leaf pipeline, HTTP-polling ingestion path | | [Server-side processing](server-processing.md) | `process_position_update` Celery task and its four steps | | [Map-matching & progression](map-matching.md) | GPS→polyline projection, three-state radius rules, monotonic guard | | [GTFS Realtime publishing](gtfs-rt-publishing.md) | Beat schedule, builders, output files | diff --git a/docs/content/data-flow/map-matching.md b/docs/content/data-flow/map-matching.md index 77885f6..e005d82 100644 --- a/docs/content/data-flow/map-matching.md +++ b/docs/content/data-flow/map-matching.md @@ -160,9 +160,24 @@ Defined at the top of `compute.py`: This dict is written to `run::vehicle_stop_status` by `producer.py` and then re-fed into the detection layer as the synthetic `"progression"` leaf to drive `RunCompletedDetector`. +## Downstream: the ETA / stop-time-updates projection + +`run::vehicle_stop_status` (produced above) feeds a second projection: predicted arrival/departure times for upcoming stops, written to `run::stop_time_updates` and consumed by the TripUpdates GTFS-RT feed (see [Server-side processing](server-processing.md), step 3, and [GTFS Realtime publishing](gtfs-rt-publishing.md)). + +The pure/impure split mirrors `compute.py` / `producer.py`: + +| Module | Role | +|---|---| +| `compute_stop_time_updates` (`backend/runs/domain/progression/stop_times.py`) | Pure: builds the `upcoming_stops` list from `geom.stops` filtered by `current_stop_sequence`/`current_status`, then calls the ETA estimator. | +| `produce_stop_times` (same file) | Impure glue: reads `run:`, `vehicle::position`, and `run::vehicle_stop_status` from Redis, resolves `ShapeGeometry` via the same `shapes.get_shape_geometry` cache used above, and conditionally writes the result. | + +The estimator call itself, `gtfs_eta.eta_service.estimator.estimate_stop_times(...)`, is imported **lazily inside the function** — this is a deliberate seam so a missing/unconfigured ETA model registry (`MODEL_REGISTRY_DIR`) never breaks Celery worker startup. `ETA_MAX_STOPS` (default `3`) caps how many upcoming stops are sent to the estimator per tick; `ETA_DEFAULT_UNCERTAINTY_S` (default `120`) is the uncertainty value attached to every prediction. + +Unlike `compute_stop_status`, which always writes a fallback, `produce_stop_times` writes **only when the estimator returns at least one prediction** — an estimator error or an untrained route leaves the previous `run::stop_time_updates` value untouched, to expire on its own 60-second TTL rather than being overwritten with an empty array. + ## Related pages -- [Server-side processing](server-processing.md) — where `produce_stop_status` is called in the task pipeline. +- [Server-side processing](server-processing.md) — where `produce_stop_status` and `produce_stop_times` are called in the task pipeline. - [Detection layer](../runs/detection.md) — how the computed stop status drives the run lifecycle. - [Data model: telemetry contracts](../data-model/telemetry-contracts.md) — `vehicle_stop_status` contract definition. -- [GTFS Realtime publishing](gtfs-rt-publishing.md) — how the computed status appears in GTFS-RT feeds. +- [GTFS Realtime publishing](gtfs-rt-publishing.md) — how the computed status and stop-time-updates appear in GTFS-RT feeds. diff --git a/docs/content/data-flow/server-processing.md b/docs/content/data-flow/server-processing.md index bbe0c70..10a6296 100644 --- a/docs/content/data-flow/server-processing.md +++ b/docs/content/data-flow/server-processing.md @@ -63,21 +63,28 @@ This is how `RunCompletedDetector` works post-decommission: it no longer reads a !!! note "Why the leaf name is still 'progression'" `RunCompletedDetector` was written to match the `"progression"` leaf and inspect `current_status`. Passing the server-computed dict under the same leaf name preserved backward compatibility with the detector contract without touching the detection layer. The leaf is now synthetic (server-generated), not edge-sent. -### Step 3: stop-time-updates projection +### Step 3: stop-time-updates projection (real ETA estimation) ```python from runs.domain.progression.stop_times import produce_stop_times produce_stop_times(run_id, vehicle_id) ``` -`produce_stop_times` (`backend/runs/domain/progression/stop_times.py`) reads the current run hash and stop-status progression from Redis, delegates to `schedule_engine.fake_stop_times.build_stop_time_updates`, maps the output to the typed contract, and writes the JSON array to `run::stop_time_updates` with a 60-second TTL: +`produce_stop_times` (`backend/runs/domain/progression/stop_times.py`) is the impure glue layer for a real ETA estimator — not a fake/placeholder generator: + +1. Read the run hash and the latest position from Redis. Exit without writing if the run hash is missing, or the position has no `latitude`/`longitude`. +2. Resolve `shape_id`/`trip_id` from the run hash and load the cached `ShapeGeometry` (`runs/domain/progression/shapes.py`, the same geometry map-matching uses). Exit without writing if either id is missing or the geometry can't be loaded — this leaves the last-good projection in Redis to expire naturally via its TTL rather than clobbering it with an empty result. +3. Project the vehicle onto the polyline and build the `upcoming_stops` list: stops at/after the current `current_stop_sequence` (strictly after it when `current_status == "STOPPED_AT"`). +4. Call `gtfs_eta.eta_service.estimator.estimate_stop_times(...)`, imported lazily inside the function so a missing/unconfigured ETA model registry never breaks Celery worker startup. `MODEL_REGISTRY_DIR` (read by `gtfs_eta` itself), `ETA_MAX_STOPS` (default `3`), and `ETA_DEFAULT_UNCERTAINTY_S` (default `120`) control the call. +5. Map each prediction to the `stop_time_updates` contract (`stop_sequence`, `stop_id`, `arrival_time`, `departure_time`, `uncertainty`), dedup by `stop_sequence`, sort ascending. +6. **Write only when the estimator returns at least one prediction.** If the estimator errors, or the route has no trained model, `produce_stop_times` returns without touching Redis at all — the previous projection is left in place to TTL-expire on its own, rather than being overwritten with an empty array. ```python STOP_TIME_UPDATES_TTL_S = 60 r.set(keys.stop_time_updates_key(run_id), payload, ex=STOP_TIME_UPDATES_TTL_S) ``` -The TTL ensures that if a vehicle goes silent, the GTFS-RT builder reads an empty/expired key rather than serving stale arrival predictions. +The TTL ensures that if a vehicle goes silent and nothing refreshes the key, the GTFS-RT builder eventually reads an empty/expired key rather than serving indefinitely stale arrival predictions. ### Step 4: position-leaf detection @@ -107,6 +114,17 @@ flowchart TD Each step is wrapped in its own `try/except`. A failure in any one step is logged and does not abort the remaining steps — the task always attempts all four phases. +## Downstream: `run_lifecycle_event` and idempotent re-fires + +Steps 2 and 4 call `detect_from_telemetry` (`backend/runs/domain/detection/dispatch.py`). When a detector matches, the dispatcher itself queues `realtime_engine.tasks.run_lifecycle_event.delay(event, payload)` — that task, not `process_position_update`, is what actually calls `RunLifecycleService.process_event` and commits the FSM transition. + +Detectors already gate on the run's current lifecycle state before firing, but a detection can still lose a race against an in-flight transition for the same run — e.g. two position pings both observe `Tracking` before the first `RUN_STARTED` transition has landed, so both queue a `run_started` event. `run_lifecycle_event` (`backend/realtime_engine/tasks.py`) tells that harmless re-fire apart from a genuine invalid transition using `target_state_for_event()` (`backend/runs/domain/lifecycle/transitions.py`), which resolves the single `to_state` an event deterministically leads to (or `None` if the event has no transitions or maps to more than one distinct target): + +- If the event's target state resolves unambiguously and the run has *already* reached it, the re-fire is logged at `WARNING` ("no-op re-fire, run already ``") and swallowed — not a failure. +- Any other `RunLifecycleError` — a real invalid transition, or a target state that can't be resolved unambiguously — is logged at `ERROR` via `logger.exception`. + +(commit `452ce10`, which downgraded these benign re-fires from `ERROR` to `WARNING`.) + ## Occupancy: inline, not off-thread Occupancy processing (`HSET vehicle::occupancy` + lifecycle detection) remains inline in the MQTT callback and is not delegated to a Celery task. There are two reasons: @@ -117,6 +135,7 @@ Occupancy processing (`HSET vehicle::occupancy` + lifecycle detection) remai ## Related pages - [Telemetry ingestion](telemetry-ingestion.md) — the MQTT callback that enqueues this task. -- [Map-matching & progression](map-matching.md) — step 1 in detail. +- [Map-matching & progression](map-matching.md) — step 1 in detail, plus the ETA/stop-time projection covered in step 3. - [Celery workers, queues & beat](../operations/celery.md) — queue routing and worker configuration. - [Detection layer](../runs/detection.md) — how `detect_from_telemetry` works. +- [Lifecycle states](../runs/lifecycle-states.md) — the FSM `run_lifecycle_event` drives. diff --git a/docs/content/data-flow/telemetry-ingestion.md b/docs/content/data-flow/telemetry-ingestion.md index 356d4d1..c8e27e6 100644 --- a/docs/content/data-flow/telemetry-ingestion.md +++ b/docs/content/data-flow/telemetry-ingestion.md @@ -2,9 +2,9 @@ icon: lucide/radio --- -# Telemetry ingestion (MQTT) +# Telemetry ingestion (MQTT + HTTP polling) -Vehicles publish telemetry to NanoMQ over MQTT. The `realtime-engine` Celery worker picks it up through an in-process bootstep and routes it into Redis. +Vehicles publish telemetry to NanoMQ over MQTT. The `realtime-engine` Celery worker picks it up through an in-process bootstep and routes it into Redis. A second path exists for devices that only expose an HTTP+JSON endpoint: the `fetch_positions` Celery Beat task polls them and republishes onto the same MQTT topic, so everything below this point in the pipeline is identical regardless of which path produced the message (see [HTTP polling: a second producer](#http-polling-a-second-producer) below). ## The MQTT consumer is a Celery bootstep @@ -132,6 +132,20 @@ r.set(keys.last_seen_key(run_id), now().isoformat()) This key drives the stale-run scanner (`scan_stale_runs`, every 30 s). Writing it synchronously ensures staleness detection is never delayed by queue backlog, even when the `realtime_engine` Celery queue is under load. +## HTTP polling: a second producer + +Not every telemetry device speaks MQTT. `realtime_engine.tasks.fetch_positions` (`backend/realtime_engine/tasks.py`) is a Celery Beat task — scheduled every 10 s as `fetch-positions` in `backend/databus/celery.py`, with `expires=10` so a poll that couldn't even start within its own cycle is revoked instead of queuing up behind a slow/unreachable source — that polls HTTP+JSON telemetry sources (`backend/realtime_engine/sources/http_json.py`) and republishes what it fetches onto the same `transit/vehicle//position` topic this bootstep subscribes to. From that point on, ingestion is indistinguishable from a native MQTT publish. + +Key behaviors: + +- **Same in-service gate as the MQTT consumer.** Only sensors whose assigned vehicle has a `vehicle::current_run` Redis key are fetched at all (commit `6936b30`) — gating on `runs:in_progress` instead would deadlock a `CONFIRMED` run, since it only reaches `IN_PROGRESS` once telemetry proves the vehicle is moving. +- **`soft_time_limit=25`** on the task: a single pathological source (a host that hangs on every request) can't hold a worker slot indefinitely. On `SoftTimeLimitExceeded` the in-flight sensor is logged and the task returns early without publishing. +- **`DEFAULT_TIMEOUT_S = 5`** on the underlying HTTP adapter's own request (`http_json.py`), independent of the task-level soft limit. +- **Misconfigured sensors are skipped with explicit guards, not exceptions** (commit `ee39467`): a sensor with `source_type="http"`/`"both"` but no `source_http_url` is skipped and logged; a record whose mapping doesn't resolve a `vehicle_id` and whose sensor has no `equipment` association is skipped and logged. +- Fetched readings are filtered down to in-service vehicles a second time after the HTTP call returns (a fleet endpoint can report many vehicles from one sensor's URL), then published via `MqttPublisher.publish_batch` (`backend/realtime_engine/sources/publisher.py`) — QoS 0, not retained, same topic and payload shape as a direct device publish. + +This page only summarizes the ingestion mechanics; the full field-by-field mapping contract (JSON-path mapping schema, unit conversions, pre-fetch vs. post-fetch filtering) is documented on [MQTT telemetry contract → HTTP polling ingestion path](../interfaces/mqtt-telemetry.md#http-polling-ingestion-path) — read that page rather than duplicating it here. + ## Consumer pipeline summary ```mermaid From 30f599a7fdfb1ead18b4eb4f9b8160b47e6f15e2 Mon Sep 17 00:00:00 2001 From: Jae Date: Thu, 20 Aug 2026 02:28:25 -0600 Subject: [PATCH 53/68] docs(site): update operations section against current code --- docs/content/operations/celery.md | 37 +++++++++---- docs/content/operations/configuration.md | 22 +++++++- docs/content/operations/deployment.md | 9 +++- docs/content/operations/development.md | 63 +++++++++++++++------- docs/content/operations/troubleshooting.md | 37 ++++++++++++- 5 files changed, 132 insertions(+), 36 deletions(-) diff --git a/docs/content/operations/celery.md b/docs/content/operations/celery.md index 38ac740..8024d2b 100644 --- a/docs/content/operations/celery.md +++ b/docs/content/operations/celery.md @@ -16,7 +16,8 @@ Databús runs three Celery processes: two workers consuming different queues, an │ Tasks: │ │ Tasks: │ │ • process_position_update │ │ • build_vehicle_positions │ │ • run_lifecycle_event │ │ • build_trip_updates │ -│ • scan_stale_runs │ │ • build_alerts │ +│ • scan_stale_runs │ │ • build_alerts (stub, unscheduled) │ +│ • fetch_positions │ │ • build_schedule │ │ │ │ │ │ Bootstep: MQTTConsumerStep │ │ No bootstep active │ │ (gated by MQTT_CONSUMER_ENABLED) │ │ │ @@ -35,8 +36,8 @@ All three processes load `backend/databus/celery.py` as the Celery app. The queu | Queue | Consumed by | Tasks | |---|---|---| -| `realtime_engine` | `realtime-engine` worker | `process_position_update`, `run_lifecycle_event`, `scan_stale_runs` | -| `schedule_engine` | `schedule-engine` worker | `build_vehicle_positions`, `build_trip_updates`, `build_alerts` | +| `realtime_engine` | `realtime-engine` worker | `process_position_update`, `run_lifecycle_event`, `scan_stale_runs`, `fetch_positions` | +| `schedule_engine` | `schedule-engine` worker | `build_vehicle_positions`, `build_trip_updates`, `build_alerts`, `build_schedule` | Queue separation ensures that a spike in MQTT telemetry (many `process_position_update` tasks) does not starve GTFS-RT building tasks, and vice versa. @@ -70,14 +71,24 @@ app.conf.beat_schedule = { "task": "schedule_engine.tasks.build_trip_updates", "schedule": timedelta(seconds=15), }, - "build-alerts-every-10s": { - "task": "schedule_engine.tasks.build_alerts", - "schedule": timedelta(seconds=10), - }, "scan-stale-runs-every-30s": { "task": "realtime_engine.tasks.scan_stale_runs", "schedule": timedelta(seconds=30), }, + "fetch-positions": { + "task": "realtime_engine.tasks.fetch_positions", + "schedule": timedelta(seconds=10), + # A task that couldn't even start within its own 10s cycle is stale + # by the time a worker slot frees up -- revoke it instead of letting + # queued fetch_positions runs pile up behind a slow/unreachable + # source (see fetch_positions' soft_time_limit for the in-flight + # bound on runs that DO start). + "options": {"expires": 10}, + }, + "build-schedule-daily": { + "task": "schedule_engine.tasks.build_schedule", + "schedule": timedelta(days=1), + }, } ``` @@ -85,8 +96,12 @@ app.conf.beat_schedule = { |---|---|---|---|---| | `build-vehicle-positions-every-15s` | `build_vehicle_positions` | `schedule_engine` | 15 s | Rebuild `vehicle_positions.{pb,json}` | | `build-trip-updates-every-15s` | `build_trip_updates` | `schedule_engine` | 15 s | Rebuild `trip_updates.{pb,json}`, push WebSocket heartbeat | -| `build-alerts-every-10s` | `build_alerts` | `schedule_engine` | 10 s | Stub — returns a string, writes no file | | `scan-stale-runs-every-30s` | `scan_stale_runs` | `realtime_engine` | 30 s | Detect `run_tracking_lost` / `run_tracking_expired` | +| `fetch-positions` | `fetch_positions` | `realtime_engine` | 10 s (`expires=10`) | Poll ACTIVE HTTP-source sensors for in-service vehicles and publish their readings over MQTT. Gated on `vehicle::current_run` (the same in-service test the MQTT consumer uses), not on `runs:in_progress` — see the docstring in `backend/realtime_engine/tasks.py`. A cycle that can't even start within its own 10 s window is revoked (`expires=10`) instead of queuing behind a slow/unreachable source. | +| `build-schedule-daily` | `build_schedule` | `schedule_engine` | 1 day | Export the current GTFS Schedule to a zip via `feed.schedule.exporter.publish_gtfs_zip` | + +!!! note "`build_alerts` exists but is not scheduled" + `schedule_engine.tasks.build_alerts` is a real Celery task (queue `schedule_engine`) but is **deliberately not** in `app.conf.beat_schedule`. Its docstring says why: it's a placeholder that returns a fixed string and writes no feed file — the ServiceAlert feed builder isn't implemented yet. It can still be invoked manually (e.g. from the Django admin or a shell), but nothing fires it periodically. ## Celery task monitoring: Flower @@ -107,9 +122,9 @@ Flower connects to RabbitMQ and shows: | Compose service | Celery command | Build target | |---|---|---| -| `realtime-engine` | `celery -A databus worker -Q realtime_engine -l info` | `realtime-engine` | -| `schedule-engine` | `celery -A databus worker -Q schedule_engine -l info` | `schedule-engine` | -| `scheduler` | `celery -A databus beat -l info` | `scheduler` | +| `realtime-engine` | `celery -A databus worker -Q realtime_engine --loglevel=info` | `realtime-engine` | +| `schedule-engine` | `celery -A databus worker -Q schedule_engine --loglevel=info` | `schedule-engine` | +| `scheduler` | `celery -A databus beat --loglevel=info` | `scheduler` | Build targets are defined in `backend/Dockerfile`. Each target installs the same Python environment but sets a different `CMD`. diff --git a/docs/content/operations/configuration.md b/docs/content/operations/configuration.md index 564d3dd..515f946 100644 --- a/docs/content/operations/configuration.md +++ b/docs/content/operations/configuration.md @@ -12,7 +12,8 @@ Databús is configured entirely through environment variables loaded from `.env` |---|---| | `.env.example` | Template committed to the repository. Contains safe defaults and empty slots for secrets. | | `.env` | Your local configuration. **Never commit this file.** | -| `.env.prod` | Production overrides (domains, TLS, credentials). Loaded alongside `.env` by `compose.prod.yml`. | +| `.env.dev` | Development overrides (`DEBUG=True`, `DJANGO_SERVE_STATIC=True`, dev ETA-model defaults, `MQTT_HOST`/`MQTT_PORT`). Loaded alongside `.env` by `compose.dev.yml` (`env_file: [.env, .env.dev]` on every backend service). | +| `.env.prod` | Production overrides (`DEBUG=False` today; add domains/TLS/credential overrides here if they differ from `.env`). Loaded alongside `.env` by `compose.prod.yml`. | ## Variable reference @@ -25,6 +26,7 @@ Databús is configured entirely through environment variables loaded from `.env` | `DEBUG` | *(not set)* | No | Set to `True` for development. Never set in production. | | `STATIC_URL` | `/static/` | No | URL prefix for static files. | | `MEDIA_URL` | `/media/` | No | URL prefix for media files. | +| `DJANGO_SERVE_STATIC` | *(unset, i.e. falsy)* | No | When truthy (`1`/`true`/`yes`/`on`), serves `STATIC_URL`/`MEDIA_URL` through Django even outside `DEBUG` (`databus/urls.py`). `DEBUG=True` already implies this; set it explicitly to serve static/media without full `DEBUG`. `.env.dev` sets it to `True`. | ### Database (PostgreSQL / PostGIS) @@ -45,6 +47,9 @@ Databús is configured entirely through environment variables loaded from `.env` | `REDIS_PASSWORD` | `redispassword` | Yes (prod) | Redis AUTH password. Required in `compose.prod.yml` (the `state` service starts with `--requirepass`). Leave empty for bare-metal dev without auth. | | `REDIS_DB` | `0` | No | Redis database index. | +!!! warning "`REDIS_PASSWORD` is not currently consumed by any Redis client" + Every place `databus` connects to Redis — `realtime_engine/tasks.py`, `realtime_engine/mqtt.py`, `schedule_engine/tasks.py`, `runs/domain/lifecycle/{guards,actions}.py`, `runs/domain/detection/dispatch.py`, `runs/domain/progression/{producer,stop_times}.py`, and the Channels `CHANNEL_LAYERS` config in `databus/settings.py` — builds its `redis.Redis(...)` / channel-layer host from `REDIS_HOST`/`REDIS_PORT` (or a hardcoded `"state"` in the two `runs/domain/lifecycle` modules) with no password argument. `compose.prod.yml` starts `state` with `--requirepass ${REDIS_PASSWORD}`, so as configured today those clients would fail to authenticate against a production Redis that actually enforces the password. Verified by reading every `redis.Redis(` call site and `settings.py` in this session — flagging as a known gap, not fixing it here (docs-only scope). + ### RabbitMQ (AMQP message broker) | Variable | Default | Required | Purpose | @@ -65,6 +70,16 @@ Databús is configured entirely through environment variables loaded from `.env` !!! warning "Do not set MQTT_CONSUMER_ENABLED=true on multiple workers" Each worker that has this variable enabled will subscribe to the broker and process every MQTT message. That means double-processing all telemetry. The compose files are pre-configured correctly; only change this if you know what you are doing. +### ETA prediction (gtfs-eta) + +Read by `backend/runs/domain/progression/stop_times.py`, which is called by `realtime_engine.tasks.process_position_update` after every position write to keep `run::stop_time_updates` current for the GTFS-RT `trip_updates` builder. + +| Variable | Default | Required | Purpose | +|---|---|---|---| +| `MODEL_REGISTRY_DIR` | *(none in databus code)* | Yes | Directory where the `gtfs_eta` model registry lives. Read directly by the `gtfs_eta` package itself, not by a `databus` default — must be set before starting a worker that runs `process_position_update`. `.env.example`/`.env.dev` set it to `eta_models`. | +| `ETA_MAX_STOPS` | `3` | No | Maximum number of upcoming stops passed to the ETA estimator per position tick. `.env.dev` overrides this to `10` for local development. | +| `ETA_DEFAULT_UNCERTAINTY_S` | `120` | No | Uncertainty (seconds) attached to every predicted arrival, passed through to the GTFS-RT feed. | + ### Production domain routing (Traefik) These variables are only meaningful when running `compose.prod.yml`. They configure Traefik router rules. @@ -87,15 +102,18 @@ These variables control which host ports the compose services bind to in develop | Variable | Default | Mapped service | |---|---|---| | `BACKEND_PORT` | `8000` | Django (orchestrator) | -| `DATABASE_PORT` | `5432` | PostgreSQL | | `STATE_PORT` | `6379` | Redis | | `MQTT_BROKER_PORT` | `1883` | NanoMQ | | `MESSAGE_BROKER_AMQP_PORT` | `5672` | RabbitMQ AMQP | | `MESSAGE_BROKER_MANAGEMENT_PORT` | `15672` | RabbitMQ management UI | +| `MESSAGE_BROKER_PROMETHEUS_PORT` | `15692` | RabbitMQ Prometheus metrics | | `ANALYTICS_PORT` | `4200` | Prefect | | `TASK_MONITORING_PORT` | `5555` | Flower | | `USER_INTERFACE_PORT` | `13000` | Nuxt frontend | +!!! note "PostgreSQL has no host port mapping in `compose.dev.yml`" + `.env.example` still defines `DATABASE_PORT=5432`, but the `database` service in `compose.dev.yml` has no `ports:` entry — it is internal-only, reachable from other containers but not from the host. `./scripts/dev.sh` prints the same thing at startup ("PostgreSQL (database) internal only"). Reach it from the host with `docker compose -f compose.dev.yml exec database psql -U postgres`. + ### Other | Variable | Default | Purpose | diff --git a/docs/content/operations/deployment.md b/docs/content/operations/deployment.md index acc3e7f..d151a05 100644 --- a/docs/content/operations/deployment.md +++ b/docs/content/operations/deployment.md @@ -27,7 +27,10 @@ cp .env.example .env ./scripts/prod.sh ``` -`prod.sh` initialises submodules, builds images, and starts `compose.prod.yml`. +`prod.sh` builds images and starts `compose.prod.yml`. + +!!! warning "gtfs-eta has no production dependency path yet" + `backend/gtfs-eta` is a committed symlink to `../../gtfs-eta` (a sibling repo, `simovilab/gtfs-eta`), and `backend/pyproject.toml` declares it as an editable `[tool.uv.sources]` path dependency. `compose.dev.yml` makes this work by bind-mounting `../gtfs-eta:/gtfs-eta` into every backend service — but `compose.prod.yml` has **no equivalent bind mount or build-context provision** for `gtfs-eta`. The `backend` build stage's `COPY --chown=app:app . .` (`backend/Dockerfile`) only has access to `./backend` as its build context, so the symlink has no target to resolve inside the image, and the `uv sync` that installs it as an editable path dependency will fail. This is a known pre-release gap — the deployment host needs a working `gtfs-eta` dependency path before a production build succeeds; how that gets resolved is not yet decided. ## Environment variables @@ -138,12 +141,14 @@ Redis runs with `--appendonly yes` for durability. The AOF journal persists the ## Common operations +`backend/docker-entrypoint.sh` already runs `manage.py migrate --noinput` automatically every time the `orchestrator` container starts (gated on `DJANGO_SETUP=True`, which only `orchestrator` sets). Unlike development, it does **not** run `makemigrations` in production — that step is gated on `DEBUG`, and `.env.prod` sets `DEBUG=False`. Migration directories are gitignored (not committed), so `manage.py migrate` in production applies whatever migration files happen to be present in the Docker build context when `compose.prod.yml build` runs — a fresh `git clone` with no prior dev build has none. In practice this means production deploys today rely on migrations already having been generated on the build machine (e.g. by a prior dev build) rather than on a committed or CI-generated set. + ```bash # Rebuild and restart after code changes docker compose -f compose.prod.yml build orchestrator user-interface docker compose -f compose.prod.yml up -d orchestrator user-interface -# Django management in production +# Django management in production (manual migrate is rarely needed — see above) docker compose -f compose.prod.yml exec orchestrator uv run python manage.py migrate docker compose -f compose.prod.yml exec orchestrator uv run python manage.py createsuperuser diff --git a/docs/content/operations/development.md b/docs/content/operations/development.md index 254d3e6..4648360 100644 --- a/docs/content/operations/development.md +++ b/docs/content/operations/development.md @@ -4,7 +4,7 @@ icon: lucide/terminal # Local development -All development is Docker-based. The `scripts/dev.sh` wrapper handles submodule initialisation, image pulls, and health-check waiting, so the recommended workflow is a single command. +All development is Docker-based. The `scripts/dev.sh` wrapper handles image pulls and health-check waiting, so the recommended workflow is a single command. (It also runs a legacy Git-submodule step that is a no-op today — see the note below.) ## Prerequisites @@ -13,7 +13,7 @@ All development is Docker-based. The `scripts/dev.sh` wrapper handles submodule For macOS/Linux bare-metal work (without Docker), you additionally need: -- Python 3.11+ +- Python 3.14+ (`backend/pyproject.toml` pins `requires-python = ">=3.14"`) - `uv` (package manager) - Redis, PostgreSQL/PostGIS, RabbitMQ, NanoMQ running locally @@ -31,7 +31,15 @@ cp .env.example .env ./scripts/dev.sh ``` -`dev.sh` initialises Git submodules (the `gtfs` submodule under `backend/`), pulls and builds images, starts all compose services, and waits for health checks to pass. On first run this takes 1–2 minutes. +`dev.sh` pulls and builds images, starts all compose services, and waits for health checks to pass. On first run this takes 1–2 minutes. + +!!! note "GTFS dependencies: three different mechanisms, not a submodule" + `scripts/dev.sh` still contains a legacy step that tries to `git submodule update --init --recursive` for a `backend/gtfs` submodule — but the repo has no `.gitmodules` file and no `backend/gtfs` directory, so that step is a no-op today. The GTFS dependencies actually come from: + + - **`gtfs-io`** and **`gtfs-django`** — cloned directly from GitHub (`simovilab/gtfs-io`, `simovilab/gtfs-django`) by `backend/docker-entrypoint.sh` the first time any backend container starts, then installed editable (`uv add --editable ./gtfs-io`, `./gtfs-django`) as part of Django setup on the `orchestrator` container (gated by `DJANGO_SETUP=True`). All four Python services share the resulting `backend_venv` volume. + - **`gtfs-eta`** — a sibling-repo path dependency, *not* cloned automatically. `backend/gtfs-eta` is a committed symlink to `../../gtfs-eta`, and `compose.dev.yml` bind-mounts `../gtfs-eta:/gtfs-eta` (read-write, since `uv sync`'s editable install writes a gitignored `.egg-info/` into the source tree) for `orchestrator`, `realtime-engine`, `schedule-engine`, and `scheduler`. You must have `simovilab/gtfs-eta` checked out as a sibling directory of `databus/` (i.e. `../gtfs-eta` relative to this repo) before `docker compose -f compose.dev.yml up` will build successfully. See `backend/pyproject.toml`'s `[tool.uv.sources]` comment for the full path-resolution rationale. + + `compose.prod.yml` has no equivalent `gtfs-eta` bind mount yet — this is a known pre-release gap, not something resolved in the current compose files. ## Daily workflow @@ -56,8 +64,11 @@ docker compose -f compose.dev.yml down All management commands run inside the `orchestrator` container: +!!! note "Migrations are regenerated automatically at container start" + `backend/docker-entrypoint.sh` runs `manage.py makemigrations feed schedule_engine realtime_engine operations` (when `DEBUG` is true) followed by `manage.py migrate --noinput` every time the `orchestrator` container starts (gated by `DJANGO_SETUP=True`, which only `orchestrator` sets in both compose files). Migration directories are gitignored (`migrations/` in the root `.gitignore`) and regenerated from current models rather than committed — you normally don't need to run `makemigrations`/`migrate` by hand in dev; the commands below are for the cases where you do (e.g. re-running after editing models without restarting the container). + ```bash -# Migrations +# Migrations (usually not needed — see note above) docker compose -f compose.dev.yml exec orchestrator uv run python manage.py makemigrations docker compose -f compose.dev.yml exec orchestrator uv run python manage.py migrate @@ -89,7 +100,17 @@ docker compose -f compose.dev.yml exec orchestrator uv run python manage.py upda ## Code quality -All quality tools run from `backend/`: +The repository root has a `Makefile` with the three canonical entry points — use these unless you have a reason not to: + +```bash +make lint # ruff check . — runs locally against backend/, no Docker needed +make typecheck # mypy . — runs inside the orchestrator container (docker compose run --rm) +make test # pytest -q — runs inside the orchestrator container (docker compose run --rm) +``` + +`lint` runs locally because `ruff` doesn't import Django settings. `typecheck` and `test` run inside the `orchestrator` container because `mypy`'s `django-stubs` plugin (and `pytest-django`) import `databus.settings`, which reads env vars via `python-decouple` and fails outside the container. See the comments in the root `Makefile` for the full rationale. + +Equivalently, from `backend/` (matches what the Makefile invokes): ```bash cd backend @@ -98,49 +119,51 @@ cd backend ruff check . ruff format . -# Type checking +# Type checking (inside the orchestrator container — see above) mypy . -# Tests +# Tests (inside the orchestrator container — see above) pytest pytest tests/ -v pytest tests/test_specific.py::test_function # single test ``` +`ruff` enforces the `D1` (missing-docstring) rule family — every module, class, and function needs a docstring (see `[tool.ruff.lint]` in `backend/pyproject.toml`). `mypy` runs with `django-stubs` and `check_untyped_defs = false`. Both exclude `gtfs-eta` (the sibling repo's own lint/type baseline) and `migrations/` (gitignored, regenerated at container start — see above). + ## Non-Docker (bare-metal) setup For situations where Docker is not available: ```bash -# Create and activate virtual environment -python -m venv .venv -source .venv/bin/activate # Linux / macOS - -# Install dependencies -uv pip install -r backend/requirements.txt - # Copy environment variables cp .env.example .env # Edit .env: set DB_HOST=localhost, REDIS_HOST=localhost, etc. -# Run migrations +# Install dependencies (creates backend/.venv from pyproject.toml + uv.lock — +# there is no backend/requirements.txt in this project) cd backend -python manage.py migrate +uv sync + +# Run migrations +uv run python manage.py migrate # Start workers separately (requires Redis, RabbitMQ, NanoMQ running locally) # Terminal 1: Django -python manage.py runserver +uv run python manage.py runserver # Terminal 2: realtime-engine Celery worker (with MQTT consumer) -MQTT_CONSUMER_ENABLED=true celery -A databus worker -Q realtime_engine -l info +MQTT_CONSUMER_ENABLED=true uv run celery -A databus worker -Q realtime_engine --loglevel=info # Terminal 3: schedule-engine Celery worker -celery -A databus worker -Q schedule_engine -l info +uv run celery -A databus worker -Q schedule_engine --loglevel=info # Terminal 4: Celery beat -celery -A databus beat -l info +uv run celery -A databus beat --loglevel=info ``` +!!! note "GTFS workspace members aren't fetched automatically outside Docker" + `backend/pyproject.toml` declares `gtfs-io` and `gtfs-django` as `[tool.uv.workspace]` members and `gtfs-eta` as an editable `[tool.uv.sources]` path dependency (`backend/gtfs-eta`). Inside Docker, `backend/docker-entrypoint.sh` clones `gtfs-io`/`gtfs-django` from GitHub automatically and `gtfs-eta` arrives via the `compose.dev.yml` bind mount (see the GTFS dependencies note above) — none of that automation runs bare-metal. For a bare-metal `uv sync` to succeed you need `backend/gtfs-io/` and `backend/gtfs-django/` cloned manually (`git clone https://github.com/simovilab/gtfs-io.git backend/gtfs-io`, same for `gtfs-django`) and a `gtfs-eta` checkout reachable at the path `backend/gtfs-eta` resolves to. + !!! note "macOS GDAL/GEOS" PostGIS/GeoDjango on macOS requires GDAL and GEOS to be installed and discoverable. A common approach is `brew install gdal geos`. If Django raises `OSError: Could not find the GDAL library`, set `GDAL_LIBRARY_PATH` and `GEOS_LIBRARY_PATH` in your environment to point to the Homebrew lib paths (e.g. `/opt/homebrew/lib/libgdal.dylib`). diff --git a/docs/content/operations/troubleshooting.md b/docs/content/operations/troubleshooting.md index f40bb4e..467df45 100644 --- a/docs/content/operations/troubleshooting.md +++ b/docs/content/operations/troubleshooting.md @@ -144,7 +144,11 @@ GET run::stop_time_updates ## Stale run cleanup -After stopping the simulator or during testing, Redis may hold state for runs that are no longer active. The `scripts/cleanup_redis.py` script (added in commit `18f9bde`) handles this. +After stopping the simulator or during testing, Redis (and PostgreSQL) may hold state for runs that are no longer active. Two scripts handle this at different scopes; commit `18f9bde` (`chore(scripts): add run-state cleanup script and refresh Redis utilities`) added `backend/scripts/cleanup_runs.py` and refreshed `scripts/cleanup_redis.py` to the current Redis key schema. + +### `scripts/cleanup_redis.py` — Redis-only, age-based + +Removes stale vehicle data from Redis based on a data-age threshold. Does not touch PostgreSQL. ```bash # Dry run — see what would be deleted @@ -177,6 +181,35 @@ run:*:stop_time_updates It does **not** delete `run:` (the run hash), `runs:in_progress`, or `runs:tracking` — those are owned by the lifecycle layer and cleaned up by the run completion/cancellation actions. +### `backend/scripts/cleanup_runs.py` — PostgreSQL + Redis, run-scoped + +A more complete reset: wipes run state from **both** PostgreSQL (`runs_run` and its cascade-deleted child tables — `runs_runlifecycletransition`, `runs_run_vehicle`, `runs_run_operator`) and Redis (`runs:tracking`/`runs:in_progress` set membership, `run:` and its sub-keys, `vehicle::*` keys, and the `vehicle|operator|trip::current_run` assignment keys) so a dev box can start fresh without restarting any service. + +```bash +docker compose -f compose.dev.yml exec -it orchestrator uv run scripts/cleanup_runs.py [options] +``` + +| Mode (mutually exclusive) | Effect | +|---|---| +| *(default)* | Delete all runs from DB + purge all run state from Redis. | +| `--run ` | Delete one run by ID (DB + Redis). | +| `--vehicle ` | Delete all runs for a vehicle (DB + Redis); also frees the vehicle's `current_run` key if it has no matching run. | +| `--db-only` / `--redis-only` | Restrict to one store. | + +Other flags: `--telemetry` (also wipe `runs_position`/`runs_progression`/`runs_occupancy` rows), `--dry-run` (preview, touches nothing), `--yes` (skip the confirmation prompt), plus `--db-*`/`--redis-*` connection overrides. Full flag reference: `backend/scripts/README.md`. + +```bash +# Preview only +uv run scripts/cleanup_runs.py --dry-run + +# Full reset: wipe all runs from DB + Redis +uv run scripts/cleanup_runs.py --yes + +# Clear one specific run / one vehicle's runs +uv run scripts/cleanup_runs.py --run +uv run scripts/cleanup_runs.py --vehicle +``` + ## GTFS-RT feeds not updating **Symptom:** `backend/feed/files/` is empty or files are not refreshing every 15 seconds. @@ -225,6 +258,8 @@ To force immediate cleanup: 2. Use `scripts/cleanup_redis.py --force-all` to clear the Redis entity hashes. 3. Verify with `inspect_redis.py` that the run is gone from `runs:tracking` and `runs:in_progress`. +For a single known run ID, `docker compose -f compose.dev.yml exec -it orchestrator uv run scripts/cleanup_runs.py --run ` is a faster alternative to steps 1–3 — it **deletes** the run row and its Redis keys outright (rather than cancelling and leaving the row), so use it only when you don't need to keep the run record. See [Stale run cleanup](#stale-run-cleanup) above. + ## Common log messages | Message | Level | Meaning | From b17b18bbded734f9f6e40be02121704bd86e9579 Mon Sep 17 00:00:00 2001 From: Jae Date: Thu, 20 Aug 2026 02:38:35 -0600 Subject: [PATCH 54/68] docs(site): update architecture, concepts, and data-model sections against current code --- .../architecture/deployment-topology.md | 4 +- docs/content/architecture/index.md | 4 +- docs/content/architecture/messaging.md | 46 ++++----------- docs/content/architecture/overview.md | 5 +- docs/content/architecture/services.md | 19 +++++-- .../architecture/state-and-persistence.md | 9 ++- docs/content/concepts/glossary.md | 11 +++- docs/content/concepts/gtfs.md | 12 ++-- docs/content/concepts/principles.md | 20 +++++-- docs/content/concepts/what-is-databus.md | 2 +- docs/content/data-model/django-models.md | 56 +++++++++++++------ docs/content/data-model/redis-keys.md | 35 ++++++++---- docs/content/data-model/schedule-engine.md | 7 ++- 13 files changed, 139 insertions(+), 91 deletions(-) diff --git a/docs/content/architecture/deployment-topology.md b/docs/content/architecture/deployment-topology.md index 462ba35..c11827a 100644 --- a/docs/content/architecture/deployment-topology.md +++ b/docs/content/architecture/deployment-topology.md @@ -49,11 +49,13 @@ realtime_engine queue → realtime-engine worker - process_position_update - run_lifecycle_event - scan_stale_runs + - fetch_positions schedule_engine queue → schedule-engine worker - build_vehicle_positions - build_trip_updates - - build_alerts + - build_schedule + - build_alerts (routed here if ever called, but not in the beat schedule — see services.md) ``` Tasks are routed by the `queue=` argument on the `@shared_task` decorator in the respective `tasks.py` modules. diff --git a/docs/content/architecture/index.md b/docs/content/architecture/index.md index d94ebd7..0859a4f 100644 --- a/docs/content/architecture/index.md +++ b/docs/content/architecture/index.md @@ -31,11 +31,11 @@ flowchart TD subgraph realtime_worker["realtime-engine (Celery worker)"] mqtt_bootstep[MQTT bootstep] - re_tasks[process_position_update\nrun_lifecycle_event\nscan_stale_runs] + re_tasks[process_position_update\nrun_lifecycle_event\nscan_stale_runs\nfetch_positions] end subgraph schedule_worker["schedule-engine (Celery worker)"] - se_tasks[build_vehicle_positions\nbuild_trip_updates\nbuild_alerts] + se_tasks[build_vehicle_positions\nbuild_trip_updates\nbuild_schedule] end scheduler_node(("scheduler\n(Celery Beat)")) diff --git a/docs/content/architecture/messaging.md b/docs/content/architecture/messaging.md index 416d9cf..80bcf26 100644 --- a/docs/content/architecture/messaging.md +++ b/docs/content/architecture/messaging.md @@ -20,39 +20,15 @@ See [../runs/commands-vs-detections.md](../runs/commands-vs-detections.md) for a ## AMQP layout -The designed exchange topology is: +The publisher module `backend/messages/publisher.py` is fully implemented — not a stub. It is called from a single seam, `RunLifecycleService._publish_run_lifecycle_transition` (`backend/runs/services/lifecycle.py`), immediately after every successful FSM transition except `run_requested` (that event enters `Requested` at record creation, outside `process_event`). -- **Exchange:** `databus.events` (type: `direct`) -- **Routing key namespace:** `runs.*` +- **Exchange:** `databus.events` — a durable **topic** exchange (not `direct`). +- **Routing key:** `runs.lifecycle.`, where `` is the lowercased `.value` of the `RunLifecycleEvents` member for the transition that just completed (`routing_key_for`, `publisher.py`) — e.g. `runs.lifecycle.run_confirmed_by_operator`. +- **Binding:** subscribers interested in every run lifecycle event bind `runs.lifecycle.#`. +- **Envelope:** a versioned JSON body — `event`, `version`, `occurred_at`, `producer`, `run_id`, `from_state`, `to_state`, `data` (`build_envelope`, `publisher.py`). `from_state`/`to_state` carry the FSM's display-style values (e.g. `"Initialized"`, `"Confirmed"`), not upper-snake enum member names. +- **Delivery:** fire-and-forget. Publishing goes through kombu's connection pool with a small bounded retry (`max_retries=2`), but there are no publisher confirms — any broker/connection error is caught, logged, and dropped. This is deliberate: telemetry and lifecycle processing must never block or fail because RabbitMQ is unavailable. The durable audit trail is `GET /api/runs//history/`, not the AMQP stream. -Routing keys sketched in `backend/messages/publisher.py`: - -``` -runs.submission.requested -runs.submission.succeeded -runs.submission.failed -runs.validation.succeeded -runs.validation.failed -runs.initialization.succeeded -runs.initialization.failed -``` - -Subscribers interested in all run events bind with `runs.*`. - -## Implementation status - -!!! warning "AMQP publisher is a stub" - The publisher module at `backend/messages/publisher.py` is **not yet wired**. The `publish_event` function currently only prints to stdout: - - ```python - def publish_event(name: str, data: dict): - """Publish an event to the databus.events exchange.""" - print(f"Printing event {name} with data: {data}") - ``` - - The `Connection`, `Exchange`, and `Producer` objects are instantiated at module import but `publish_event` does not use them. Domain event emission via AMQP is designed and the routing-key namespace is settled, but the actual publish call and delivery guarantees are not yet implemented. - - Celery task routing (the RabbitMQ backbone that drives `realtime-engine` and `schedule-engine`) is fully operational and unaffected by this stub. The stub only concerns application-level domain events that other systems might subscribe to. +Full contract details (the complete routing-key table, envelope field reference, sequence diagram, and integration guidance for consumers) live on [Interfaces › AMQP event semantics](../interfaces/amqp-events.md). This page stays at the architectural level; that page is the authoritative reference. ## Current inter-service communication @@ -61,12 +37,14 @@ In the current implementation, inter-service coordination happens via: 1. **Celery tasks over RabbitMQ** — `scheduler` fires beat tasks; `realtime-engine` and `schedule-engine` consume them. This is the primary coordination mechanism and is fully operational. 2. **Redis** — `realtime-engine` writes state; `schedule-engine` reads snapshots. No pub/sub; pure key-value reads. 3. **Django ORM (PostgreSQL)** — `orchestrator` persists domain records; `realtime-engine` reads run metadata during lifecycle service calls. - -The AMQP domain event layer (`databus.events` exchange) sits alongside this and will emit structured domain events for external subscribers once the stub is replaced. +4. **AMQP domain events** (`databus.events` topic exchange) — live, not designed-but-pending. Every run lifecycle transition is broadcast fire-and-forget for external subscribers, alongside (not instead of) the three mechanisms above. ## Message envelope -All internal messages share a common envelope that includes correlation metadata (run_id, vehicle_id, actor_role, last_seen_at). The Celery payload dict is the current concrete form of this envelope — see `backend/runs/domain/detection/dispatch.py` for how the dispatcher assembles it. +Two distinct "envelope" concepts exist in the system — don't conflate them: + +- **AMQP domain-event envelope** — the JSON body described under [AMQP layout](#amqp-layout) above, built by `build_envelope` in `backend/messages/publisher.py`. See [Interfaces › AMQP event semantics](../interfaces/amqp-events.md) for the full field reference. +- **Celery task payload** — the internal dict passed between the detection layer and `run_lifecycle_event`, carrying correlation metadata (`run_id`, `vehicle_id`, `actor_role`, `last_seen_at`). This is not published anywhere external; it only exists for the duration of one Celery task dispatch. See `backend/runs/domain/detection/dispatch.py` for how the dispatcher assembles it. ## External telemetry diff --git a/docs/content/architecture/overview.md b/docs/content/architecture/overview.md index 8b95525..2fbebb5 100644 --- a/docs/content/architecture/overview.md +++ b/docs/content/architecture/overview.md @@ -23,12 +23,13 @@ External signals enter the platform at two surfaces: - **REST API** — the `api` Django app accepts operator commands (create-run, confirm, complete, interrupt, short-turn). Authenticated via DRF token auth. - **MQTT telemetry** — vehicles publish GPS and occupancy to the `telemetry-broker` (NanoMQ) on topics of the form `transit/vehicle//{position,occupancy}`. The `realtime-engine` Celery worker picks these up via its embedded MQTT bootstep. +- **HTTP telemetry (polled)** — some vehicles are only reachable via a third-party HTTP+JSON endpoint rather than native MQTT. The `fetch_positions` beat task (every 10 s) polls ACTIVE `operations.Sensor` rows configured for HTTP, then republishes the readings onto the same `transit/vehicle//position` MQTT topic — so from the MQTT bootstep's point of view, HTTP-sourced and natively-MQTT vehicles are indistinguishable. ### Processing The `realtime-engine` worker converts raw telemetry into domain state: -1. Parses and validates each MQTT message. +1. Parses and validates each MQTT message (whether device-originated or bridged in by `fetch_positions`). 2. Writes the telemetry leaf to Redis (`vehicle::position` or `:occupancy`). 3. Enqueues `process_position_update` as a Celery task, which runs server-side map-matching and detection off the paho network thread. 4. Fires lifecycle events (`run_tracking_started`, `run_started`, `run_completed`, …) via `run_lifecycle_event` tasks. @@ -39,7 +40,7 @@ Redis (`state` service) holds the **authoritative real-time picture** of every a ### Projection -Every 15 seconds the `scheduler` fires `build_vehicle_positions` and `build_trip_updates` on the `schedule-engine` worker. That worker reads the Redis snapshot, converts it to protobuf and JSON, and writes GTFS-RT files to `backend/feed/files/`. Alerts are rebuilt every 10 seconds (currently a stub returning an empty feed). See [../data-flow/gtfs-rt-publishing.md](../data-flow/gtfs-rt-publishing.md). +Every 15 seconds the `scheduler` fires `build_vehicle_positions` and `build_trip_updates` on the `schedule-engine` worker. That worker reads the Redis snapshot, converts it to protobuf and JSON, and writes GTFS-RT files to `backend/feed/files/`. A `build_alerts` task exists but is a stub (returns a placeholder string, writes no feed file) and is **not** registered in the beat schedule — it is not currently fired periodically. Separately, `build_schedule` runs once a day to export the current GTFS Schedule zip. See [../data-flow/gtfs-rt-publishing.md](../data-flow/gtfs-rt-publishing.md). ### Persistence diff --git a/docs/content/architecture/services.md b/docs/content/architecture/services.md index 421064d..9c4e489 100644 --- a/docs/content/architecture/services.md +++ b/docs/content/architecture/services.md @@ -25,7 +25,7 @@ Every Databús component has exactly one role and a hard "Does NOT" boundary. Th - `feed` — GTFS data models (Agency, Route, Trip, Stop, StopTime, Shape, Calendar). - `operations` — Vehicle and operator models. - `website` — UI-facing views. -- `messages` — AMQP event publisher (see caveat below). +- `messages` — AMQP domain-event publisher. Not registered in `INSTALLED_APPS` (no `apps.py`, no models) — it is a plain module (`backend/messages/publisher.py`) imported directly by `runs.services.lifecycle.RunLifecycleService`. Fully implemented (durable topic exchange, JSON envelope); see [Messaging model](messaging.md). - `gtfs` — GTFS submodule. **Responsibilities:** @@ -69,6 +69,7 @@ Every Databús component has exactly one role and a hard "Does NOT" boundary. Th 4. Re-reads the latest position from Redis and runs position-leaf detection (`RunStartedDetector`, etc.). - Processes `run_lifecycle_event(event, payload)` tasks — these call `RunLifecycleService.process_event` which executes FSM guards and actions. - Runs `scan_stale_runs` every 30 seconds (scheduled by the `scheduler`) to detect telemetry silence. +- Runs `fetch_positions` every 10 seconds (scheduled by the `scheduler`) to poll HTTP telemetry sources: it builds the in-service vehicle-id set from `vehicle::current_run` keys, queries ACTIVE `operations.Sensor` rows with `source_type` `http`/`both` and `provides_position=True`, fetches each remaining sensor via the registered `"http"` adapter (`realtime_engine/sources/http_json.py`), keeps only readings for in-service vehicles, and republishes the survivors onto `transit/vehicle//position` via `realtime_engine/sources/publisher.py::MqttPublisher`. This re-enters the same NanoMQ topic the MQTT bootstep subscribes to — `fetch_positions` is an HTTP→MQTT bridge, not a separate ingestion path. A `soft_time_limit=25` bounds a single pathological source; the beat entry itself carries `expires=10` so a stale run is revoked rather than queued behind a slow source. **Does NOT:** @@ -82,6 +83,7 @@ Every Databús component has exactly one role and a hard "Does NOT" boundary. Th - `process_position_update(run_id, vehicle_id)` - `run_lifecycle_event(event, payload)` - `scan_stale_runs()` +- `fetch_positions()` --- @@ -96,9 +98,10 @@ Every Databús component has exactly one role and a hard "Does NOT" boundary. Th **Responsibilities:** - Reads Redis snapshots of active runs and vehicles. -- Builds GTFS-RT protobuf and JSON outputs for VehiclePositions, TripUpdates, and Alerts. -- Writes output files to `backend/feed/files/` (`vehicle_positions.{pb,json}`, `trip_updates.{pb,json}`, `alerts.{pb,json}`). +- Builds GTFS-RT protobuf and JSON outputs for VehiclePositions and TripUpdates. +- Writes output files to `backend/feed/files/` (`vehicle_positions.{pb,json}`, `trip_updates.{pb,json}`). - Pushes a WebSocket `"status"` group message via Django Channels after each `build_trip_updates` call. +- Exports the current GTFS Schedule zip daily via `build_schedule()`, which publishes it under `backend/feed/files/` through `feed.schedule.exporter.publish_gtfs_zip`. **Does NOT:** @@ -111,7 +114,8 @@ Every Databús component has exactly one role and a hard "Does NOT" boundary. Th **Key tasks** (`backend/schedule_engine/tasks.py`): - `build_vehicle_positions()` — every 15 s - `build_trip_updates()` — every 15 s -- `build_alerts()` — every 10 s (currently stub: returns `"Feed ServiceAlert built"`) +- `build_schedule()` — daily +- `build_alerts()` — defined but **not registered in the Celery beat schedule** (see its own docstring: "Deliberately NOT registered in the Celery beat schedule"). It is routed to the `schedule_engine` queue if invoked, and currently just returns the placeholder string `"Feed ServiceAlert built"` without writing a feed file. !!! note "AGENTS.md calls this the 'Publisher'" `ARCHITECTURE.md §5` and `AGENTS.md` describe a separate "Publisher" service. In the actual code the projection role is fulfilled by `schedule_engine` running inside the `schedule-engine` Celery worker. There is no standalone publisher process. @@ -134,8 +138,11 @@ Every Databús component has exactly one role and a hard "Does NOT" boundary. Th |---|---| | `schedule_engine.tasks.build_vehicle_positions` | every 15 s | | `schedule_engine.tasks.build_trip_updates` | every 15 s | -| `schedule_engine.tasks.build_alerts` | every 10 s | | `realtime_engine.tasks.scan_stale_runs` | every 30 s | +| `realtime_engine.tasks.fetch_positions` | every 10 s (`expires=10`) | +| `schedule_engine.tasks.build_schedule` | daily | + +`schedule_engine.tasks.build_alerts` is **not** in this schedule — it is a stub task, callable but never fired by beat. !!! note "Beat schedule is in code, not admin" `AGENTS.md` states that the beat schedule is managed via `django_celery_beat` in the admin UI. This is incorrect. The schedule is hardcoded in `app.conf.beat_schedule` in `backend/databus/celery.py` and requires a code change to modify. @@ -193,7 +200,7 @@ In production, Traefik terminates TLS on port 8883 and forwards plain MQTT to Na **Primary use:** Celery task routing between `scheduler`, `realtime-engine`, and `schedule-engine`. -**Designed use (not yet implemented):** AMQP domain events on exchange `databus.events`. See [messaging.md](messaging.md). +**Also carries:** AMQP domain events on the durable topic exchange `databus.events` — live, published by `backend/messages/publisher.py` on every run lifecycle transition. See [messaging.md](messaging.md). --- diff --git a/docs/content/architecture/state-and-persistence.md b/docs/content/architecture/state-and-persistence.md index f137c84..2e8f2bf 100644 --- a/docs/content/architecture/state-and-persistence.md +++ b/docs/content/architecture/state-and-persistence.md @@ -58,16 +58,19 @@ runs:* — index sets and timestamps (realtime-engine) | `run::trip` | Hash | `trip_id`, `route_id`, `direction_id?`, `schedule_relationship?`, `start_time?`, `start_date?` | `update_system_state` action | | `run::vehicle_stop_status` | Hash | `current_status`, `current_stop_sequence?`, `stop_id?` | `produce_stop_status` (progression producer) | | `run::congestion_level` | Hash | `congestion_level` | Producer TBD | -| `run::stop_time_updates` | String (JSON) | JSON array of stop-time-update entries | `produce_stop_times` | +| `run::stop_time_updates` | String (JSON) | JSON array of stop-time-update entries | `produce_stop_times` (60 s staleness TTL) | #### Index and timestamp keys | Key | Type | Purpose | Writer | |---|---|---|---| -| `runs:tracking` | Set | Run IDs currently being tracked (scope for stale scan) | `add_to_tracking_set` / `remove_from_tracking_set` actions | -| `runs:in_progress` | Set | Run IDs in the IN_PROGRESS state | `add_to_in_progress_set` / `remove_from_in_progress_set` actions | +| `runs:tracking` | Set | Scan work queue for `scan_stale_runs`, not a state flag (see note below) | `add_to_tracking_set` / `remove_from_tracking_set` actions | +| `runs:in_progress` | Set | Run IDs in `In Progress` **or** `No Signal` state (see note below) | `add_to_in_progress_set` / `remove_from_in_progress_set` actions | | `runs:last_seen:` | String | ISO-8601 timestamp of last telemetry | MQTT consumer | +!!! note "`runs:tracking` and `runs:in_progress` both outlive `run_tracking_lost`" + The `IN_PROGRESS → NO_SIGNAL` transition (`run_tracking_lost`, `backend/runs/domain/lifecycle/transitions.py`) only runs `sync_lifecycle_state` — it does **not** call `remove_from_tracking_set` or `remove_from_in_progress_set`. A `No Signal` run therefore stays in both sets until it reaches a fully-terminal outcome: `run_tracking_expired` (→ Cancelled), `run_interrupted`, `run_short_turned`, or `run_completed`, all of which do remove it from both. This is deliberate — the code comment on the transition calls `runs:tracking` "the work queue, not a status flag": staying in the set is what lets `scan_stale_runs` later fire `run_tracking_expired` for that same run. One consequence: the GTFS-RT feed builders, which iterate `runs:in_progress`, will still emit an entity for a `No Signal` run (using its last-written Redis snapshot) until it is removed by one of the terminal transitions above. + !!! note "stop_time_updates is a string, not a hash" `run::stop_time_updates` is a Redis **string** key holding a JSON-encoded array, not a hash. It is written with a staleness TTL so a stalled producer lets it expire cleanly rather than serving stale arrival estimates. The GTFS-RT builder treats a missing or empty value as "skip stop_time_update entries." diff --git a/docs/content/concepts/glossary.md b/docs/content/concepts/glossary.md index b646851..f0f56c6 100644 --- a/docs/content/concepts/glossary.md +++ b/docs/content/concepts/glossary.md @@ -83,7 +83,9 @@ A message produced by the realtime-engine when it detects a meaningful state change from telemetry — e.g., `run_tracking_started` or `run_completed`. In the ARCHITECTURE.md messaging model, observations are "derived facts" emitted by the engine and consumed by the orchestrator. The AMQP event publisher -(`backend/messages/publisher.py`) is the intended transport. +(`backend/messages/publisher.py`) is now live and carries these: every FSM +transition (whether command- or detection-triggered) is broadcast on the +`databus.events` topic exchange. See [Interfaces › AMQP event semantics](../interfaces/amqp-events.md). @@ -105,7 +107,12 @@ the lifecycle. See [Run lifecycle › Commands vs detected facts](../runs/comman A message type in the ARCHITECTURE.md model: a claim by the schedule-engine about the published GTFS-RT output (e.g., "VehiclePositions feed written with -N entities"). Currently not emitted (the publisher is a stub). +N entities"). Not currently emitted as an AMQP message — the publisher +(`backend/messages/publisher.py`) is fully implemented but is only called from +the run lifecycle service (see [Observation](#observation)), not from +`schedule_engine`. The closest existing analog is the WebSocket `"status"` +group message `build_trip_updates` pushes via Django Channels after each +build. --- diff --git a/docs/content/concepts/gtfs.md b/docs/content/concepts/gtfs.md index c573b3e..de830bf 100644 --- a/docs/content/concepts/gtfs.md +++ b/docs/content/concepts/gtfs.md @@ -89,11 +89,13 @@ Output file: `backend/feed/files/trip_updates.{pb,json}` — refreshed every 15 ## Feed assembly Both feeds are assembled by the `schedule_engine` app. The beat fires -`build_vehicle_positions` and `build_trip_updates` every 15 seconds, and -`build_alerts` every 10 seconds. The builders read the Redis snapshot via -the telemetry contract `from_redis` helpers, assemble a Python dict in GTFS-RT -shape, convert it with `json_format.ParseDict`, and write both `.json` and -`.pb` variants to `backend/feed/files/`. +`build_vehicle_positions` and `build_trip_updates` every 15 seconds (`build_alerts` +is a stub and is not on the beat schedule — see the warning above). The builders +read the Redis snapshot via the telemetry contract `from_redis` helpers, assemble +a Python dict in GTFS-RT shape, convert it with `json_format.ParseDict`, and write +both `.json` and `.pb` variants to `backend/feed/files/`. Separately, a daily +`build_schedule` task exports the current GTFS Schedule zip via +`feed.schedule.exporter.publish_gtfs_zip`. See [Data flow › GTFS Realtime publishing](../data-flow/gtfs-rt-publishing.md) for the full pipeline and diff --git a/docs/content/concepts/principles.md b/docs/content/concepts/principles.md index cd69249..bc95a97 100644 --- a/docs/content/concepts/principles.md +++ b/docs/content/concepts/principles.md @@ -80,14 +80,26 @@ possible. Meaningful derived facts are preserved; raw signals are transient. -Raw GPS pings are not persisted individually. What is persisted is: +Raw GPS pings are not persisted individually. What is actually persisted +today is: - The `RunLifecycleTransition` record for every FSM state change (with event, - from-state, to-state, guards, actions, and timestamp). -- The `RunProgressEvent` record for stop-arrival events. + from-state, to-state, guards, actions, and timestamp) — this is the one + table with a live writer (`RunLifecycleService`). - GTFS-RT feed blobs (retained approximately one year) as durable snapshots of what was published. -- Position and occupancy records for historical analysis. + +`backend/runs/models.py` also defines `Position`, `VehicleStopStatus`, +`CongestionLevel`, and `OccupancyStatus` tables intended for historical +position/occupancy analysis, but no current code path writes to them (the +`Position.objects.create(...)` call in the API serializer is commented out) — +treat them as reserved schema, not an active audit trail, until a producer +exists. + +!!! note "`RunProgressEvent` does not exist in current code" + Earlier docs and the single checked-in migration (`runs/migrations/0001_initial.py`) + reference a `RunProgressEvent` model. It is not defined in the current + `backend/runs/models.py` — do not rely on it. This keeps the database size manageable and keeps the audit trail focused on what the system concluded, not every raw byte it received. diff --git a/docs/content/concepts/what-is-databus.md b/docs/content/concepts/what-is-databus.md index 5a597f2..905d2cc 100644 --- a/docs/content/concepts/what-is-databus.md +++ b/docs/content/concepts/what-is-databus.md @@ -41,7 +41,7 @@ Vehicle (GPS + occupancy) `trip_updates.pb` — refreshed every 15 seconds, written to `backend/feed/files/`. 4. **Manages** run lifecycle: from a dispatcher creating a run - (`POST /api/create-run`) through detection of tracking, motion, + (`POST /api/create-run/`) through detection of tracking, motion, completion, and eventual expiry. 5. **Persists** durable operational traces in PostgreSQL (with PostGIS for geospatial queries) for auditing and analytics. diff --git a/docs/content/data-model/django-models.md b/docs/content/data-model/django-models.md index b076018..2702df1 100644 --- a/docs/content/data-model/django-models.md +++ b/docs/content/data-model/django-models.md @@ -58,25 +58,24 @@ Indexed on `(run, timestamp)` and `event_name`. The `GET /api/runs//history/` endpoint returns this log ordered by `(timestamp, created_at)`. -### `RunProgressEvent` - -Records stop-level progress events (vehicle arrived at stop, departed, etc.) -for analytics. - -| Field | Notes | -| --- | --- | -| `run` | ForeignKey to `Run` | -| `event_type` | String event type | -| `stop_id` | GTFS stop_id (nullable) | -| `payload` | JSONField | -| `timestamp` | Event time | +!!! note "`RunProgressEvent` does not exist in current code" + The single checked-in migration (`runs/migrations/0001_initial.py`) + defines a `RunProgressEvent` model, but it is **not** present in the + current `backend/runs/models.py`. Do not document or rely on it — the + model file is the source of truth, not the migration. ### `Position`, `VehicleStopStatus`, `CongestionLevel`, `OccupancyStatus` -Normalized GTFS-RT entity records for durable persistence and analytics. -Written by the realtime-engine after processing. These are separate from the -Redis keys — Redis holds the *live* snapshot; these models hold the -*historical trace*. +Normalized GTFS-RT entity tables intended for durable persistence and +analytics, separate from the Redis keys (Redis holds the *live* snapshot; +these models would hold the *historical trace*). All four are defined in +`backend/runs/models.py` and exposed read-only-in-practice through DRF +ViewSets in `backend/api/views.py`, but **no current code path writes rows +into them** — a repo-wide search finds no `.objects.create(...)` call for any +of the four, and the one write path that exists, +`Position.objects.create(...)` in `api/serializers.py`, is commented out. +Treat these as reserved schema until a producer is implemented, not as an +active audit trail. --- @@ -121,7 +120,30 @@ A physical vehicle that can be assigned to a run. ### `DataProvider`, `Equipment`, `EquipmentLog` Support models for on-board equipment registration and telemetry source -tracking. +tracking. `Equipment.save()` appends an immutable snapshot to `EquipmentLog` +on every save. + +### `Sensor` + +A logical telemetry feed (of one or more data types) registered on a piece of +`Equipment`. Most fields are nullable — code that reads a `Sensor` guards +against `equipment`, `equipment.vehicle`, and the `source_*` fields all being +absent. + +| Field | Notes | +| --- | --- | +| `id` | UUID primary key | +| `equipment` | ForeignKey to `Equipment` (nullable) | +| `provides_position`, `provides_occupancy`, `provides_vehicle`, … | Booleans flagging which data types this sensor supplies | +| `source_type` | `mqtt` / `http` / `both` (nullable) | +| `source_http_url` | URL polled by the `"http"` adapter when `source_type` is `http` or `both` | +| `source_json_mapping` | JSONField describing how to extract `lat`/`lon`/`speed`/`odometer`/`timestamp`/`vehicle_id` from the endpoint's response | +| `status` | `ACTIVE` / `INACTIVE` | + +`realtime_engine.tasks.fetch_positions` (every 10 s) queries `ACTIVE` sensors +with `provides_position=True` and `source_type` in `["http", "both"]`, fetches +each via `realtime_engine/sources/http_json.py`, and republishes readings for +in-service vehicles onto MQTT. See [Architecture › Services & mandates](../architecture/services.md#realtime-engine). --- diff --git a/docs/content/data-model/redis-keys.md b/docs/content/data-model/redis-keys.md index 7e5ad51..e649283 100644 --- a/docs/content/data-model/redis-keys.md +++ b/docs/content/data-model/redis-keys.md @@ -237,7 +237,7 @@ stop. See [Run lifecycle › Detection layer](../runs/detection.md). | Function | `keys.stop_time_updates_key(run_id)` | | Writer | Stop-times producer (`runs/domain/progression/stop_times.py`) | | Reader | `schedule_engine/builders.py::build_trip_update_entity` | -| TTL | Staleness TTL (set by producer; absent key = skip stop_time_update in feed) | +| TTL | 60 s (`STOP_TIME_UPDATES_TTL_S` in `runs/domain/progression/stop_times.py`); absent key = skip stop_time_update in feed | !!! warning "Not a hash" This key is a Redis **string** holding a JSON-encoded array. Do not @@ -285,8 +285,13 @@ Holds an ISO-8601 timestamp of the last telemetry received for this run. Written synchronously (not via the Celery task queue) so staleness detection is never delayed by queue latency. -Used by `scan_stale_runs` to trigger `run_tracking_lost` (> 60 s staleness -while `IN_PROGRESS`) and `run_tracking_expired` (> 300 s while `NO_SIGNAL`). +Used by `scan_stale_runs` to trigger `run_tracking_lost` (staleness beyond +`TELEMETRY_GRACE_S` = 60 s while `IN_PROGRESS`) and `run_tracking_expired` +(staleness beyond `TELEMETRY_EXPIRY_S` = 600 s while `NO_SIGNAL`). Both +constants live in `runs/domain/detection/thresholds.py` — the module's own +docstring notes these two values previously disagreed between +`realtime_engine/tasks.py` (300 s) and `runs/domain/lifecycle/guards.py` +(600 s) and were consolidated to this single source of truth at 600 s. --- @@ -295,13 +300,17 @@ while `IN_PROGRESS`) and `run_tracking_expired` (> 300 s while `NO_SIGNAL`). | Attribute | Value | | --- | --- | | Redis type | Set | -| Writer | Lifecycle action | +| Writer | Lifecycle actions `add_to_tracking_set` / `remove_from_tracking_set` (`runs/domain/lifecycle/actions.py`) | | Reader | `scan_stale_runs`, `RunTrackingStartedDetector` | | TTL | None | -Set of `run_id` values for runs that have started receiving telemetry -(i.e., have reached `Tracking` state or beyond). Used as the scan target for -stale-run detection. +Set of `run_id` values for runs that have started receiving telemetry (added +on `Confirmed → Tracking`, `run_tracking_started`). This is the **scan work +queue** for `scan_stale_runs`, not a live status flag: entering `No Signal` +(`run_tracking_lost`) does **not** remove the run — the transition's action +list is only `sync_lifecycle_state` (`runs/domain/lifecycle/transitions.py`). +A run is removed only on a fully-terminal outcome: `run_tracking_expired`, +`run_interrupted`, `run_short_turned`, or `run_completed`. --- @@ -310,13 +319,17 @@ stale-run detection. | Attribute | Value | | --- | --- | | Redis type | Set | -| Writer | Lifecycle action | +| Writer | Lifecycle actions `add_to_in_progress_set` / `remove_from_in_progress_set` (`runs/domain/lifecycle/actions.py`) | | Reader | Feed builders (`build_vehicle_positions_feed`, `build_trip_updates_feed`) | | TTL | None | -Set of `run_id` values for runs currently in `In Progress` state. The feed -builders iterate this set to determine which runs to include in the GTFS-RT -output. +Set of `run_id` values for runs in `In Progress` **or** `No Signal` state — +not `In Progress` alone. Same reasoning as `runs:tracking` above: +`run_tracking_lost` (`In Progress → No Signal`) does not call +`remove_from_in_progress_set`, so the run stays in the set until a terminal +transition removes it. The feed builders iterate this set to determine which +runs to include in the GTFS-RT output, so a `No Signal` run's last-written +Redis snapshot keeps appearing in the feed until it is removed. --- diff --git a/docs/content/data-model/schedule-engine.md b/docs/content/data-model/schedule-engine.md index 724f583..f7ec3f7 100644 --- a/docs/content/data-model/schedule-engine.md +++ b/docs/content/data-model/schedule-engine.md @@ -81,14 +81,15 @@ Key constants: ## Celery tasks -`backend/schedule_engine/tasks.py` contains the four periodic Celery tasks on -the `schedule_engine` queue: +`backend/schedule_engine/tasks.py` contains four Celery tasks routed to the +`schedule_engine` queue; three of them are on the beat schedule: | Task | Schedule | Notes | | --- | --- | --- | | `build_vehicle_positions` | Every 15 s | Writes `vehicle_positions.{pb,json}` | | `build_trip_updates` | Every 15 s | Writes `trip_updates.{pb,json}` + pushes WebSocket heartbeat | -| `build_alerts` | Every 10 s | **Stub** — returns `"Feed ServiceAlert built"` | +| `build_schedule` | Daily | Exports the current GTFS Schedule zip via `feed.schedule.exporter.publish_gtfs_zip` | +| `build_alerts` | **Not scheduled** | **Stub** — returns the placeholder string `"Feed ServiceAlert built"`, writes no feed file. Its own docstring notes it is "Deliberately NOT registered in the Celery beat schedule." Callable directly (routed to `schedule_engine`), but beat never fires it. | The schedule is configured in `backend/databus/celery.py` via `app.conf.beat_schedule` and **not** in `django_celery_beat` admin (despite what `AGENTS.md` states). From 4228091cd78a6d26c53b39ca79cf9eb6c8b4b563 Mon Sep 17 00:00:00 2001 From: Jae Date: Thu, 20 Aug 2026 02:38:45 -0600 Subject: [PATCH 55/68] docs(site): set production site_url --- docs/zensical.toml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/docs/zensical.toml b/docs/zensical.toml index 8f11130..8910547 100644 --- a/docs/zensical.toml +++ b/docs/zensical.toml @@ -35,10 +35,7 @@ edit_uri = "edit/main/docs/content/" # The site_url is the canonical URL for your site. When building online # documentation you should set this. # Read more: https://zensical.org/docs/setup/basics/#site_url -# -# TODO: set to the production docs host. In prod this is the `DOCS_DOMAIN` -# Traefik env var (compose.prod.yml). Confirm the exact host with the team, e.g.: -#site_url = "https://docs.databus.cr/" +site_url = "https://databus.simovilab.org/" # The copyright notice appears in the page footer and can contain an HTML # fragment. From f3595ae17a156cbf2154eb9c0674ff62ffd215ce Mon Sep 17 00:00:00 2001 From: Jae Date: Thu, 20 Aug 2026 02:39:03 -0600 Subject: [PATCH 56/68] docs(messages): fix envelope example to use real state values --- backend/messages/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/messages/README.md b/backend/messages/README.md index 99ddbf2..71146f8 100644 --- a/backend/messages/README.md +++ b/backend/messages/README.md @@ -30,8 +30,8 @@ "occurred_at": "2026-08-19T00:00:00+00:00", "producer": "databus", "run_id": "", - "from_state": "INITIALIZED", - "to_state": "CONFIRMED", + "from_state": "Initialized", + "to_state": "Confirmed", "data": { "vehicle_id": "...", "trip_id": "...", "route_id": "..." } } ``` From efe6aba2178e135a7180dcf09e8aac394c203226 Mon Sep 17 00:00:00 2001 From: Jae Date: Thu, 20 Aug 2026 02:40:08 -0600 Subject: [PATCH 57/68] docs(messages): drop stale docs-drift note --- backend/messages/README.md | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/backend/messages/README.md b/backend/messages/README.md index 71146f8..84005d3 100644 --- a/backend/messages/README.md +++ b/backend/messages/README.md @@ -69,10 +69,8 @@ docker compose -f compose.dev.yml run --rm orchestrator uv run pytest messages/ publish-with-mocked-pool happy path, error-swallowing on connection/publish failures, and lazy connection caching. `make test` runs the full suite. -## Note on docs drift +## See also -`docs/content/interfaces/amqp-events.md` currently describes this publisher as an unwired stub -(direct exchange, `print()` instead of `producer.publish()`, different routing-key namespace). That -page is stale — the code in this app is fully implemented as described above (topic exchange, -`runs.lifecycle.*` routing keys, real `producer.publish()` via kombu's pool). Worth a doc refresh, -out of scope for this README. +`docs/content/interfaces/amqp-events.md` documents this publisher's exchange, routing-key +namespace, envelope schema, and error policy in more detail, including a sequence diagram of the +publish path. From a455ef251e977068808aa40f667d3fbedd174ace Mon Sep 17 00:00:00 2001 From: Jae Date: Thu, 20 Aug 2026 10:04:53 -0600 Subject: [PATCH 58/68] chore: remove dead test stubs and scratch test scripts MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Delete never-collected test artifacts (pytest only collects test_*.py, so none of these ever ran): - operations/tests.py, runs/tests.py, schedule_engine/tests.py, website/tests.py: 1-line empty Django app stubs - api/tests.py: stale test asserting a "Hello world!" response from a reverse("runs") route that no longer exists - realtime_engine/tests.py: broken import of end_run, initialize_run, register_run, validate_run from realtime_engine.tasks — none of which exist anymore - tests/: entire directory removed (api_tester.py was a one-off manual script, backup.md was old scratch notes) tests/fake_trip.py contained a hardcoded API token committed to git history. That token must be rotated. feed/tests.py is untouched — it holds real exporter tests. --- backend/api/tests.py | 10 - backend/operations/tests.py | 1 - backend/realtime_engine/tests.py | 371 ------------------------------- backend/runs/tests.py | 1 - backend/schedule_engine/tests.py | 1 - backend/tests/api_tester.py | 23 -- backend/tests/backup.md | 47 ---- backend/tests/fake_trip.py | 63 ------ backend/website/tests.py | 1 - 9 files changed, 518 deletions(-) delete mode 100644 backend/api/tests.py delete mode 100644 backend/operations/tests.py delete mode 100644 backend/realtime_engine/tests.py delete mode 100644 backend/runs/tests.py delete mode 100644 backend/schedule_engine/tests.py delete mode 100644 backend/tests/api_tester.py delete mode 100644 backend/tests/backup.md delete mode 100644 backend/tests/fake_trip.py delete mode 100644 backend/website/tests.py diff --git a/backend/api/tests.py b/backend/api/tests.py deleted file mode 100644 index 8c2af81..0000000 --- a/backend/api/tests.py +++ /dev/null @@ -1,10 +0,0 @@ -from django.test import TestCase -from django.urls import reverse - - -class RunsViewSetTests(TestCase): - def test_runs_get_returns_200(self): - response = self.client.get(reverse("runs")) - - self.assertEqual(response.status_code, 200) - self.assertEqual(response.json(), {"message": "Hello world!"}) diff --git a/backend/operations/tests.py b/backend/operations/tests.py deleted file mode 100644 index a39b155..0000000 --- a/backend/operations/tests.py +++ /dev/null @@ -1 +0,0 @@ -# Create your tests here. diff --git a/backend/realtime_engine/tests.py b/backend/realtime_engine/tests.py deleted file mode 100644 index aca2ffd..0000000 --- a/backend/realtime_engine/tests.py +++ /dev/null @@ -1,371 +0,0 @@ -from datetime import date - -from django.contrib.auth.models import User -from django.test import TestCase - -from feed.models import Feed, Trip -from realtime_engine.tasks import end_run, initialize_run, register_run, validate_run -from operations.models import Operator, Vehicle -from runs.models import Run - - -# --------------------------------------------------------------------------- -# Base valid payload — all cases start from this and mutate one field -# --------------------------------------------------------------------------- -def valid_run(): - return { - "vehicle_id": "v-test", - "operator_id": "op-test", - "route_id": "r-test", - "trip_id": "t-test", - "direction_id": 0, - "shape_id": "s-test", - "start_date": date.today().strftime("%Y-%m-%d"), - "start_time": "07:15:00", - "schedule_relationship": "SCHEDULED", - } - - -def run(data): - """Call validate_run synchronously (no Celery broker needed).""" - return validate_run.apply(args=[data]).get() - - -def show(case_num, description, data, result, expected): - status = "PASS" if result == expected else "FAIL" - print(f"\n[{status}] Case {case_num}: {description}") - print(f" Input : {data}") - print(f" Result : {result} (expected {expected})") - - -class ValidateRunTests(TestCase): - @classmethod - def setUpTestData(cls): - cls.vehicle = Vehicle.objects.create(id="v-test", license_plate="TST-001") - - user = User.objects.create_user(username="op_test", password="pw") - cls.operator = Operator.objects.create(id="op-test", user=user) - - cls.feed = Feed.objects.create(feed_id="feed-test", is_current=True) - - # bulk_create skips the overridden save() that requires Route + Calendar to exist - Trip.objects.bulk_create( - [ - Trip( - feed=cls.feed, - trip_id="t-test", - route_id="r-test", - service_id="svc-test", - direction_id=0, - shape_id="s-test", - wheelchair_accessible=0, - bikes_allowed=0, - ) - ] - ) - - # ------------------------------------------------------------------ - # Case 1 — Happy path - # ------------------------------------------------------------------ - def test_case_01_valid(self): - data = valid_run() - result = run(data) - show(1, "All fields correct", data, result, True) - self.assertTrue(result) - - # ------------------------------------------------------------------ - # Case 2 — Required field completely absent - # ------------------------------------------------------------------ - def test_case_02_missing_vehicle_id(self): - data = valid_run() - del data["vehicle_id"] - result = run(data) - show(2, "vehicle_id key missing from payload", data, result, False) - self.assertFalse(result) - - # ------------------------------------------------------------------ - # Case 3 — Required field present but empty string - # ------------------------------------------------------------------ - def test_case_03_empty_trip_id(self): - data = valid_run() - data["trip_id"] = "" - result = run(data) - show(3, "trip_id is empty string", data, result, False) - self.assertFalse(result) - - # ------------------------------------------------------------------ - # Case 4 — direction_id cannot be cast to int - # ------------------------------------------------------------------ - def test_case_04_invalid_direction_id(self): - data = valid_run() - data["direction_id"] = "norte" - result = run(data) - show(4, "direction_id is non-numeric string 'norte'", data, result, False) - self.assertFalse(result) - - # ------------------------------------------------------------------ - # Case 5 — start_date has wrong format - # ------------------------------------------------------------------ - def test_case_05_bad_date_format(self): - data = valid_run() - data["start_date"] = "26/04/2026" # dd/mm/yyyy instead of yyyy-mm-dd - result = run(data) - show(5, "start_date format is dd/mm/yyyy (invalid)", data, result, False) - self.assertFalse(result) - - # ------------------------------------------------------------------ - # Case 6 — start_date is not today - # ------------------------------------------------------------------ - def test_case_06_date_not_today(self): - data = valid_run() - data["start_date"] = "2024-05-03" - result = run(data) - show(6, "start_date is a past date (not today)", data, result, False) - self.assertFalse(result) - - # ------------------------------------------------------------------ - # Case 7 — vehicle does not exist in DB - # ------------------------------------------------------------------ - def test_case_07_vehicle_not_found(self): - data = valid_run() - data["vehicle_id"] = "ghost-vehicle" - result = run(data) - show(7, "vehicle_id not in Vehicle table", data, result, False) - self.assertFalse(result) - - # ------------------------------------------------------------------ - # Case 8 — operator does not exist in DB - # ------------------------------------------------------------------ - def test_case_08_operator_not_found(self): - data = valid_run() - data["operator_id"] = "ghost-operator" - result = run(data) - show(8, "operator_id not in Operator table", data, result, False) - self.assertFalse(result) - - # ------------------------------------------------------------------ - # Case 9 — vehicle already in an active run - # ------------------------------------------------------------------ - def test_case_09_vehicle_already_in_progress(self): - Run.objects.create( - vehicle=self.vehicle, - operator=self.operator, - route_id="r-test", - trip_id="t-test", - direction_id=0, - shape_id="s-test", - start_date=date.today(), - run_lifecycle_state="IN_PROGRESS", - ) - data = valid_run() - result = run(data) - show(9, "vehicle already has a run IN_PROGRESS", data, result, False) - self.assertFalse(result) - - # ------------------------------------------------------------------ - # Case 10 — no feed with is_current=True - # ------------------------------------------------------------------ - def test_case_10_no_current_feed(self): - Feed.objects.filter(feed_id="feed-test").update(is_current=False) - data = valid_run() - result = run(data) - show(10, "no Feed with is_current=True exists", data, result, False) - self.assertFalse(result) - - # ------------------------------------------------------------------ - # Case 11 — trip not found in current feed - # ------------------------------------------------------------------ - def test_case_11_trip_not_in_feed(self): - data = valid_run() - data["trip_id"] = "trip-fantasma" - result = run(data) - show(11, "trip_id does not exist in current feed", data, result, False) - self.assertFalse(result) - - -class InitializeRunTests(TestCase): - @classmethod - def setUpTestData(cls): - cls.vehicle = Vehicle.objects.create(id="v-test", license_plate="TST-001") - user = User.objects.create_user(username="op_test", password="pw") - cls.operator = Operator.objects.create(id="op-test", user=user) - - # ------------------------------------------------------------------ - # Case 1 — Happy path: Run is created and its id is returned - # ------------------------------------------------------------------ - def test_case_01_creates_run_and_returns_id(self): - data = valid_run() - ok, run_id = initialize_run.apply(args=[data]).get() - show( - 1, - "Valid data → Run created in DB", - data, - (ok, run_id is not None), - (True, True), - ) - self.assertTrue(ok) - self.assertIsNotNone(run_id) - self.assertTrue(Run.objects.filter(id=run_id).exists()) - - # ------------------------------------------------------------------ - # Case 2 — Bad start_time format → exception caught → (False, None) - # ------------------------------------------------------------------ - def test_case_02_bad_start_time_format(self): - data = valid_run() - data["start_time"] = "7h15m" - ok, run_id = initialize_run.apply(args=[data]).get() - show( - 2, - "start_time has invalid format '7h15m'", - data, - (ok, run_id), - (False, None), - ) - self.assertFalse(ok) - self.assertIsNone(run_id) - - # ------------------------------------------------------------------ - # Case 3 — Run with same vehicle+trip already exists (duplicate) - # ------------------------------------------------------------------ - def test_case_03_run_created_with_correct_status(self): - data = valid_run() - ok, run_id = initialize_run.apply(args=[data]).get() - run = Run.objects.get(id=run_id) - show( - 3, - "Run is stored with status REGISTERED", - data, - run.run_lifecycle_state, - "REGISTERED", - ) - self.assertTrue(ok) - self.assertEqual(run.run_lifecycle_state, "REGISTERED") - - -class RegisterRunTests(TestCase): - @classmethod - def setUpTestData(cls): - cls.vehicle = Vehicle.objects.create(id="v-test", license_plate="TST-001") - user = User.objects.create_user(username="op_test", password="pw") - cls.operator = Operator.objects.create(id="op-test", user=user) - cls.feed = Feed.objects.create(feed_id="feed-test", is_current=True) - Trip.objects.bulk_create( - [ - Trip( - feed=cls.feed, - trip_id="t-test", - route_id="r-test", - service_id="svc-test", - direction_id=0, - shape_id="s-test", - wheelchair_accessible=0, - bikes_allowed=0, - ) - ] - ) - - # ------------------------------------------------------------------ - # Case 1 — Valid data: validation + initialization both succeed - # ------------------------------------------------------------------ - def test_case_01_valid_full_flow(self): - data = valid_run() - ok, run_id = register_run.apply(args=[data]).get() - show( - 1, - "Valid data → validate + initialize → Run in DB", - data, - (ok, run_id is not None), - (True, True), - ) - self.assertTrue(ok) - self.assertIsNotNone(run_id) - self.assertTrue(Run.objects.filter(id=run_id).exists()) - - # ------------------------------------------------------------------ - # Case 2 — Validation fails: register_run short-circuits → (False, None) - # ------------------------------------------------------------------ - def test_case_02_validation_fails(self): - data = valid_run() - data["start_date"] = "2024-05-03" # not today - ok, run_id = register_run.apply(args=[data]).get() - show( - 2, - "Date not today → validation fails → no Run created", - data, - (ok, run_id), - (False, None), - ) - self.assertFalse(ok) - self.assertIsNone(run_id) - self.assertFalse(Run.objects.exists()) - - -class EndRunTests(TestCase): - @classmethod - def setUpTestData(cls): - cls.vehicle = Vehicle.objects.create(id="v-test", license_plate="TST-001") - user = User.objects.create_user(username="op_test", password="pw") - cls.operator = Operator.objects.create(id="op-test", user=user) - - def make_run(self, status="IN_PROGRESS"): - return Run.objects.create( - vehicle=self.vehicle, - operator=self.operator, - route_id="r-test", - trip_id="t-test", - direction_id=0, - shape_id="s-test", - start_date=date.today(), - run_lifecycle_state=status, - ) - - def call(self, data): - return end_run.apply(args=[data]).get() - - # ------------------------------------------------------------------ - # Case 1 — IN_PROGRESS run → transitions to COMPLETED → True - # ------------------------------------------------------------------ - def test_case_01_valid(self): - run = self.make_run("IN_PROGRESS") - data = {"run_id": run.id} - result = self.call(data) - show(1, "IN_PROGRESS run → COMPLETED", data, result, True) - self.assertTrue(result) - self.assertEqual(Run.objects.get(id=run.id).run_lifecycle_state, "COMPLETED") - - # ------------------------------------------------------------------ - # Case 2 — run_id is None - # ------------------------------------------------------------------ - def test_case_02_run_id_none(self): - data = {"run_id": None} - result = self.call(data) - show(2, "run_id is None", data, result, False) - self.assertFalse(result) - - # ------------------------------------------------------------------ - # Case 3 — run_id is empty string - # ------------------------------------------------------------------ - def test_case_03_run_id_empty(self): - data = {"run_id": ""} - result = self.call(data) - show(3, "run_id is empty string", data, result, False) - self.assertFalse(result) - - # ------------------------------------------------------------------ - # Case 4 — run_id does not exist in DB - # ------------------------------------------------------------------ - def test_case_04_run_not_found(self): - data = {"run_id": 99999} - result = self.call(data) - show(4, "run_id 99999 does not exist in DB", data, result, False) - self.assertFalse(result) - - # ------------------------------------------------------------------ - # Case 5 — Run exists but is already COMPLETED (non-completable state) - # ------------------------------------------------------------------ - def test_case_05_already_completed(self): - run = self.make_run("COMPLETED") - data = {"run_id": run.id} - result = self.call(data) - show(5, "Run is already COMPLETED → cannot complete again", data, result, False) - self.assertFalse(result) diff --git a/backend/runs/tests.py b/backend/runs/tests.py deleted file mode 100644 index a39b155..0000000 --- a/backend/runs/tests.py +++ /dev/null @@ -1 +0,0 @@ -# Create your tests here. diff --git a/backend/schedule_engine/tests.py b/backend/schedule_engine/tests.py deleted file mode 100644 index a39b155..0000000 --- a/backend/schedule_engine/tests.py +++ /dev/null @@ -1 +0,0 @@ -# Create your tests here. diff --git a/backend/tests/api_tester.py b/backend/tests/api_tester.py deleted file mode 100644 index 1304dcf..0000000 --- a/backend/tests/api_tester.py +++ /dev/null @@ -1,23 +0,0 @@ -import requests -from decouple import config - -url = "http://localhost:3456/api/path/" - -token = config("API_TOKEN") -data = { - "trip": 1, - "current_stop_sequence": 5, - "stop_id": "5", - "current_status": "INCOMING_AT", - "congestion_level": "STOP_AND_GO", -} -headers = { - "Authorization": f"Token {token}", - "Content-Type": "application/json", -} -response = requests.post(url, json=data, headers=headers) - -if response.status_code == 201: - print("POST was successful.") -else: - print(f"POST failed. Status code: {response.status_code}.") diff --git a/backend/tests/backup.md b/backend/tests/backup.md deleted file mode 100644 index 3c9d939..0000000 --- a/backend/tests/backup.md +++ /dev/null @@ -1,47 +0,0 @@ -# Databús - -Implementación de GTFS Realtime - -### Especificación del formato de transmisión de datos de telemetría - -> "¿Cómo se van a transmitir los datos por la red desde los buses hasta el servidor en tiempo real?" - -Esto es independiente de GTFS Realtime, en cuanto al formato. Debe incluir las variables deseadas en GTFS Realtime pero también contemplar todas las variables posibles para un sistema inteligente de transporte público, en general, según la referencia de ARC-IT o las necesidades del sistema en Costa Rica. - -Según GTFS: - -- Ubicación geográfica -- Dirección -- Velocidad -- Ocupación - -Según ARC-IT: - -- Presión de las llantas -- Etc. - -Según necesidades específicas: - -- Presión barométrica -- Contaminación del aire -- Etc. - -(Ver issue #1) - -### Recopilación de datos de telemetría para GTFS Realtime - -> "¿Cuáles datos vamos a mostrar en el prototipo?" - -Para nuestra implementación del prototipo, esto puede ser de varias formas: - -- Con una implementación a escala real en conjunto con RACSA -- Con una implementación de prueba con una plataforma de desarrollo -- Con datos sintéticos generados para mostrar la visualización (_hardcoded_) - -Es necesario revisar la plataforma para recolección de datos en tiempo real. Podría ser Apache Pulsar. - -### Construcción y entrega del `FeedMessage` de GTFS Realtime - -Un _script_ para tomar las variables de interés de GTFS Realtime y construir un archivo binario `.pb` para distribución (será recopilado por el proyecto `gtfs-screens`). - -Seguir la secuencia: diccionario de Python --> JSON (publicación de cortesía) --> (paquete de Google que lo hace) --> Protobuf --> colocar en el servidor para ser recopilado. diff --git a/backend/tests/fake_trip.py b/backend/tests/fake_trip.py deleted file mode 100644 index 7c55999..0000000 --- a/backend/tests/fake_trip.py +++ /dev/null @@ -1,63 +0,0 @@ -import requests - -api = "https://realtime.bucr.digital/api/" -token = "ad936c7ae11a9b96e55bc3c54a91972f9896a854" -headers = { - "Authorization": f"Token {token}", - "Content-Type": "application/x-www-form-urlencoded", -} - -run = { - "vehicle": "SJB1234", - "equipment": "2d01a00e-6287-4bfe-8a2b-7bc8a4e2aa5c", - "operator": "1-1234-5678", - "trip_id": "desde_educacion_con_milla_entresemana_13:33", - "route_id": "bUCR_L1", - "direction_id": 0, - "start_time": "13:33:06", - "start_date": "2024-08-29", - "schedule_relationship": "SCHEDULED", - "shape_id": "desde_educacion_con_milla", - "run_lifecycle_state": "IN_PROGRESS", -} - -api_url = f"{api}run/" -response = requests.post(api_url, data=run, headers=headers) -run_id = response.json()["id"] -print(f"Run: {run_id}") - -endpoints = {} - -endpoints["position"] = { - "run": run_id, - "timestamp": "2024-08-29T13:35:55-06:00", - # "point": "SRID=4326;POINT (-84.04555530733563 9.93540698388418)", - "latitude": 9.93540698388418, - "longitude": -84.04555530733563, - "bearing": 0.0, - "odometer": 9.0, - "speed": 12.0, -} - -endpoints["progression"] = { - "run": run_id, - "timestamp": "2024-08-29T13:36:29.055000-06:00", - "current_stop_sequence": 3, - "stop_id": "bUCR_0_04", - "current_status": "INCOMING_AT", - "congestion_level": "RUNNING_SMOOTHLY", -} - -endpoints["occupancy"] = { - "run": run_id, - "timestamp": "2024-08-29T13:36:44.101000-06:00", - "occupancy_status": "CRUSHED_STANDING_ROOM_ONLY", - "occupancy_percentage": 81, - "occupancy_count": 35, -} - -for endpoint in endpoints: - api_url = f"{api}{endpoint}/" - response = requests.post(api_url, data=endpoints[endpoint], headers=headers) - # Show response code - print(f"{endpoint}: {response.status_code}") diff --git a/backend/website/tests.py b/backend/website/tests.py deleted file mode 100644 index a39b155..0000000 --- a/backend/website/tests.py +++ /dev/null @@ -1 +0,0 @@ -# Create your tests here. From da5f7b9a29acb67d92254a402a100183c95f374e Mon Sep 17 00:00:00 2001 From: Jae Date: Thu, 20 Aug 2026 10:05:51 -0600 Subject: [PATCH 59/68] refactor(api): drop unused serializers and duplicate field declarations LoginSerializer and RunSerializer have zero references outside this file (grep-verified); CreateRunSerializer and RunUpdateSerializer remain in use and are untouched. PositionSerializer had a duplicated vehicle field declaration, a duplicated "vehicle" entry in fields, and a stale commented-out create() block. VehicleStopStatusSerializer, CongestionLevelSerializer, and OccupancyStatusSerializer each had fields = "__all__" written twice in Meta. Also dropped the now-unused Run import. No behavior changes beyond removing dead/duplicate declarations. --- backend/api/serializers.py | 36 ------------------------------------ 1 file changed, 36 deletions(-) diff --git a/backend/api/serializers.py b/backend/api/serializers.py index be692e3..264f189 100644 --- a/backend/api/serializers.py +++ b/backend/api/serializers.py @@ -9,7 +9,6 @@ EquipmentLog, ) from runs.models import ( - Run, Position, VehicleStopStatus, CongestionLevel, @@ -34,18 +33,6 @@ from rest_framework import serializers from rest_framework_gis.serializers import GeoFeatureModelSerializer, GeometryField -# -------------- -# Login data -# -------------- - - -class LoginSerializer(serializers.Serializer): - """Serialize an auth token issued alongside the authenticated operator's ID.""" - - token = serializers.CharField() - operator_id = serializers.CharField() - - # -------------- # Telemetry data # -------------- @@ -127,18 +114,6 @@ class Meta: ordering = ["id"] -class RunSerializer(serializers.HyperlinkedModelSerializer): - """Serialize a Run with its assigned vehicle and operator (currently unused; no route registers it).""" - - vehicle = serializers.PrimaryKeyRelatedField(queryset=Vehicle.objects.all()) - operator = serializers.PrimaryKeyRelatedField(queryset=Operator.objects.all()) - - class Meta: - model = Run - fields = "__all__" - ordering = ["id"] - - class CreateRunSerializer(serializers.Serializer): """Validate the payload for requesting a new run (vehicle, operator, and GTFS trip identifiers).""" @@ -170,7 +145,6 @@ class RunUpdateSerializer(serializers.Serializer): class PositionSerializer(serializers.HyperlinkedModelSerializer): """Serialize a vehicle Position sample, exposing latitude/longitude alongside the raw point.""" - vehicle = serializers.PrimaryKeyRelatedField(queryset=Vehicle.objects.all()) vehicle = serializers.PrimaryKeyRelatedField(queryset=Vehicle.objects.all()) latitude = serializers.SerializerMethodField() longitude = serializers.SerializerMethodField() @@ -180,7 +154,6 @@ class Meta: fields = [ "url", "vehicle", - "vehicle", "timestamp", "point", "latitude", @@ -203,12 +176,6 @@ def get_longitude(self, obj: Position) -> float | None: return obj.point.x return None - # def create(self, validated_data): - # latitude = validated_data.pop("latitude") - # longitude = validated_data.pop("longitude") - # point = Point(longitude, latitude) - # return Position.objects.create(point=point, **validated_data) - class VehicleStopStatusSerializer(serializers.HyperlinkedModelSerializer): """Serialize a vehicle's relationship to its current/next stop (GTFS-RT VehicleStopStatus).""" @@ -218,7 +185,6 @@ class VehicleStopStatusSerializer(serializers.HyperlinkedModelSerializer): class Meta: model = VehicleStopStatus fields = "__all__" - fields = "__all__" ordering = ["id"] @@ -230,7 +196,6 @@ class CongestionLevelSerializer(serializers.HyperlinkedModelSerializer): class Meta: model = CongestionLevel fields = "__all__" - fields = "__all__" ordering = ["id"] @@ -242,7 +207,6 @@ class OccupancyStatusSerializer(serializers.HyperlinkedModelSerializer): class Meta: model = OccupancyStatus fields = "__all__" - fields = "__all__" ordering = ["id"] From bc0a0d8ce0d0f43ce087e58fa8658afe301e40c3 Mon Sep 17 00:00:00 2001 From: Jae Date: Thu, 20 Aug 2026 10:06:19 -0600 Subject: [PATCH 60/68] style(realtime_engine): move test imports to module top realtime_engine.tasks (module and process_position_update) were imported mid-file for the task-level test section, triggering two E402 violations. Moved both imports to the top-level import block; the section comment marking the task-level tests stays in place. --- backend/realtime_engine/tests/test_mqtt_ingestion.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/backend/realtime_engine/tests/test_mqtt_ingestion.py b/backend/realtime_engine/tests/test_mqtt_ingestion.py index afc69ae..52c9be1 100644 --- a/backend/realtime_engine/tests/test_mqtt_ingestion.py +++ b/backend/realtime_engine/tests/test_mqtt_ingestion.py @@ -26,7 +26,9 @@ import pytest import realtime_engine.mqtt as mqtt_module +import realtime_engine.tasks as tasks_module from realtime_engine.mqtt import _handle_telemetry +from realtime_engine.tasks import process_position_update from runs.domain.telemetry import keys, occupancy @@ -313,9 +315,6 @@ def test_on_connect_subscribes_position_and_occupancy_only(): # --------------------------------------------------------------------------- -import realtime_engine.tasks as tasks_module -from realtime_engine.tasks import process_position_update - _POSITION_RAW_REDIS = { "latitude": "51.5074", "longitude": "-0.1278", From bfd2ad41ab9aae1efcfbc7edd1c8ef4c68d12062 Mon Sep 17 00:00:00 2001 From: Jae Date: Thu, 20 Aug 2026 10:16:25 -0600 Subject: [PATCH 61/68] test(feed): move exporter smoke tests into collected test package pytest only collects test_*.py, so backend/feed/tests.py (smoke tests for build_gtfs_zip) was never run. Move it to backend/feed/tests/test_schedule_exporter.py following the tests/ package convention already used by other apps. --- backend/feed/tests/__init__.py | 1 + backend/feed/{tests.py => tests/test_schedule_exporter.py} | 0 2 files changed, 1 insertion(+) create mode 100644 backend/feed/tests/__init__.py rename backend/feed/{tests.py => tests/test_schedule_exporter.py} (100%) diff --git a/backend/feed/tests/__init__.py b/backend/feed/tests/__init__.py new file mode 100644 index 0000000..12e8a01 --- /dev/null +++ b/backend/feed/tests/__init__.py @@ -0,0 +1 @@ +"""Tests for the feed app.""" diff --git a/backend/feed/tests.py b/backend/feed/tests/test_schedule_exporter.py similarity index 100% rename from backend/feed/tests.py rename to backend/feed/tests/test_schedule_exporter.py From 15dcfe151625554b217ab7ea03629dee794c0dd6 Mon Sep 17 00:00:00 2001 From: Jae Date: Thu, 20 Aug 2026 11:13:34 -0600 Subject: [PATCH 62/68] fix(databus): honor REDIS_PASSWORD in all Redis clients compose.prod.yml starts Redis with --requirepass, but no client in the codebase passed a password, so production auth would fail. Introduce databus/redis_client.py, a small dependency-light factory (plain os.getenv, no Django imports) that builds every Redis client from REDIS_HOST/REDIS_PORT/REDIS_PASSWORD, treating an empty password as unset so dev without auth keeps working. Route all inline redis.Redis(...) call sites through it, including the two lifecycle modules that hardcoded host="state", and wire the same password into Channels' CHANNEL_LAYERS via the redis:// URL form. --- backend/databus/redis_client.py | 30 +++++++++++++++++++ backend/databus/settings.py | 9 +++++- backend/realtime_engine/mqtt.py | 9 ++---- backend/realtime_engine/tasks.py | 10 ++----- backend/runs/domain/detection/dispatch.py | 10 ++----- backend/runs/domain/lifecycle/actions.py | 9 ++++-- backend/runs/domain/lifecycle/guards.py | 7 +++-- backend/runs/domain/progression/producer.py | 11 ++----- backend/runs/domain/progression/stop_times.py | 10 ++----- backend/schedule_engine/tasks.py | 8 ++--- backend/scripts/cleanup_runs.py | 9 ++++-- 11 files changed, 68 insertions(+), 54 deletions(-) create mode 100644 backend/databus/redis_client.py diff --git a/backend/databus/redis_client.py b/backend/databus/redis_client.py new file mode 100644 index 0000000..68c4c5e --- /dev/null +++ b/backend/databus/redis_client.py @@ -0,0 +1,30 @@ +"""Shared Redis client factory. + +Every Redis client in this codebase is built from the same three environment +variables (``REDIS_HOST``, ``REDIS_PORT``, ``REDIS_PASSWORD``) so that a +single place honors ``REDIS_PASSWORD`` — required by ``compose.prod.yml``, +which starts the ``state`` service with ``--requirepass ${REDIS_PASSWORD}``. + +Deliberately dependency-light: only ``os.getenv``, no Django imports, so +non-Django contexts (standalone scripts, management commands run outside the +app) can import this module too. +""" + +import os + +import redis + + +def create_redis_client(db: int = 0, decode_responses: bool = True) -> redis.Redis: + """Build a Redis client from REDIS_HOST/REDIS_PORT/REDIS_PASSWORD env vars. + + ``REDIS_PASSWORD`` is treated as unset when empty, so dev environments + without Redis auth keep working unauthenticated. + """ + return redis.Redis( + host=os.getenv("REDIS_HOST", "state"), + port=int(os.getenv("REDIS_PORT", "6379")), + db=db, + password=os.getenv("REDIS_PASSWORD") or None, + decode_responses=decode_responses, + ) diff --git a/backend/databus/settings.py b/backend/databus/settings.py index 1f43616..21f7e21 100644 --- a/backend/databus/settings.py +++ b/backend/databus/settings.py @@ -133,6 +133,7 @@ REDIS_HOST = config("REDIS_HOST") REDIS_PORT = config("REDIS_PORT") +REDIS_PASSWORD = config("REDIS_PASSWORD", default="") # RabbitMQ settings @@ -167,11 +168,17 @@ # Channels settings +_CHANNEL_LAYER_HOSTS: list[str | tuple[str, str]] = ( + [f"redis://:{REDIS_PASSWORD}@{REDIS_HOST}:{REDIS_PORT}/0"] + if REDIS_PASSWORD + else [(REDIS_HOST, REDIS_PORT)] +) + CHANNEL_LAYERS = { "default": { "BACKEND": "channels_redis.core.RedisChannelLayer", "CONFIG": { - "hosts": [(REDIS_HOST, REDIS_PORT)], + "hosts": _CHANNEL_LAYER_HOSTS, }, }, } diff --git a/backend/realtime_engine/mqtt.py b/backend/realtime_engine/mqtt.py index 2b51836..ed63ac4 100644 --- a/backend/realtime_engine/mqtt.py +++ b/backend/realtime_engine/mqtt.py @@ -26,10 +26,10 @@ from typing import Any, cast import paho.mqtt.client as mqtt -import redis from celery import bootsteps from django.utils.timezone import now +from databus.redis_client import create_redis_client from runs.domain.telemetry import keys, occupancy, position logger = logging.getLogger(__name__) @@ -42,12 +42,7 @@ "yes", ) -r = redis.Redis( - host=os.getenv("REDIS_HOST", "state"), - port=int(os.getenv("REDIS_PORT", "6379")), - db=0, - decode_responses=True, -) +r = create_redis_client() def _vehicle_id_from_topic(topic: str) -> str | None: diff --git a/backend/realtime_engine/tasks.py b/backend/realtime_engine/tasks.py index 102efe3..5236e14 100644 --- a/backend/realtime_engine/tasks.py +++ b/backend/realtime_engine/tasks.py @@ -1,15 +1,14 @@ """Celery tasks for the realtime-engine worker: lifecycle events, staleness scanning, HTTP polling.""" import logging -import os from datetime import datetime, timezone from typing import TYPE_CHECKING, Any, cast -import redis from celery import shared_task from celery.exceptions import SoftTimeLimitExceeded from django.utils.timezone import now +from databus.redis_client import create_redis_client from runs.services.lifecycle import RunLifecycleService if TYPE_CHECKING: @@ -17,12 +16,7 @@ logger = logging.getLogger(__name__) -redis_client = redis.Redis( - host=os.getenv("REDIS_HOST", "state"), - port=int(os.getenv("REDIS_PORT", "6379")), - db=0, - decode_responses=True, -) +redis_client = create_redis_client() def _smembers(key: str) -> set[str]: diff --git a/backend/runs/domain/detection/dispatch.py b/backend/runs/domain/detection/dispatch.py index 9f8ebbe..28f2b45 100644 --- a/backend/runs/domain/detection/dispatch.py +++ b/backend/runs/domain/detection/dispatch.py @@ -12,21 +12,15 @@ logic of their own. """ -import os from typing import Any, cast -import redis from django.utils.timezone import now +from databus.redis_client import create_redis_client from runs.domain.detection.result import DetectionResult from runs.domain.detection import registry -r = redis.Redis( - host=os.getenv("REDIS_HOST", "state"), - port=int(os.getenv("REDIS_PORT", "6379")), - db=0, - decode_responses=True, -) +r = create_redis_client() # Lifecycle events whose guard (``is_vehicle_tracked``) requires the run to # already be in ``runs:tracking``. The arrival of telemetry is precisely the diff --git a/backend/runs/domain/lifecycle/actions.py b/backend/runs/domain/lifecycle/actions.py index 3b43068..76316ac 100644 --- a/backend/runs/domain/lifecycle/actions.py +++ b/backend/runs/domain/lifecycle/actions.py @@ -2,13 +2,18 @@ from typing import Any, TYPE_CHECKING from runs.models import Run -import redis +from databus.redis_client import create_redis_client from runs.domain.telemetry import keys, trip if TYPE_CHECKING: from runs.domain.lifecycle import Transition -r = redis.Redis(host="state", port=6379, db=0) +# decode_responses=False preserves this module's prior hardcoded +# `redis.Redis(host="state", port=6379, db=0)` default — this module never +# reads back string values (only writes via hset/sadd/srem/delete), so the +# bytes-vs-str distinction is behaviorally inert here, but kept explicit and +# consistent with guards.py, which does depend on raw bytes. +r = create_redis_client(decode_responses=False) class RunLifecycleActions: diff --git a/backend/runs/domain/lifecycle/guards.py b/backend/runs/domain/lifecycle/guards.py index cc533be..886f17f 100644 --- a/backend/runs/domain/lifecycle/guards.py +++ b/backend/runs/domain/lifecycle/guards.py @@ -6,12 +6,15 @@ from runs.models import Run from runs.services.exceptions import RunLifecycleError from runs.domain.detection.thresholds import TELEMETRY_GRACE_S, TELEMETRY_EXPIRY_S -import redis +from databus.redis_client import create_redis_client if TYPE_CHECKING: from runs.domain.lifecycle import Transition -r = redis.Redis(host="state", port=6379, db=0) +# decode_responses=False preserves this module's prior hardcoded +# `redis.Redis(host="state", port=6379, db=0)` default — `_get_bytes` below +# relies on raw bytes (`.decode()` is called explicitly by callers). +r = create_redis_client(decode_responses=False) def _get_bytes(key: str) -> bytes | None: diff --git a/backend/runs/domain/progression/producer.py b/backend/runs/domain/progression/producer.py index 4f9f707..01c3693 100644 --- a/backend/runs/domain/progression/producer.py +++ b/backend/runs/domain/progression/producer.py @@ -13,22 +13,15 @@ """ import logging -import os from typing import cast -import redis - +from databus.redis_client import create_redis_client from runs.domain.telemetry import keys, position, vehicle_stop_status from runs.domain.progression.compute import compute_stop_status logger = logging.getLogger(__name__) -r = redis.Redis( - host=os.getenv("REDIS_HOST", "state"), - port=int(os.getenv("REDIS_PORT", "6379")), - db=0, - decode_responses=True, -) +r = create_redis_client() def _hgetall(key: str) -> dict[str, str]: diff --git a/backend/runs/domain/progression/stop_times.py b/backend/runs/domain/progression/stop_times.py index 75379e7..2bf3f01 100644 --- a/backend/runs/domain/progression/stop_times.py +++ b/backend/runs/domain/progression/stop_times.py @@ -26,8 +26,7 @@ from datetime import datetime, timezone from typing import cast -import redis - +from databus.redis_client import create_redis_client from runs.domain.telemetry import keys, stop_time_updates, vehicle_stop_status from runs.domain.progression.geo import project_point_to_polyline from runs.domain.progression.shapes import ShapeGeometry, get_shape_geometry @@ -50,12 +49,7 @@ # GTFS-RT feed; callers (e.g. apps) can use it for confidence UX. ETA_DEFAULT_UNCERTAINTY_S = int(os.getenv("ETA_DEFAULT_UNCERTAINTY_S", "120")) -r = redis.Redis( - host=os.getenv("REDIS_HOST", "state"), - port=int(os.getenv("REDIS_PORT", "6379")), - db=0, - decode_responses=True, -) +r = create_redis_client() def _hgetall(key: str) -> dict[str, str]: diff --git a/backend/schedule_engine/tasks.py b/backend/schedule_engine/tasks.py index 2834323..ba4596b 100644 --- a/backend/schedule_engine/tasks.py +++ b/backend/schedule_engine/tasks.py @@ -18,6 +18,7 @@ from google.protobuf import json_format from google.transit import gtfs_realtime_pb2 as gtfs_rt +from databus.redis_client import create_redis_client from .builders import ( build_trip_updates_feed, build_vehicle_positions_feed, @@ -34,12 +35,7 @@ def get_redis() -> redis.Redis: """Return the module-level Redis client, lazily creating it on first use.""" global _redis if _redis is None: - _redis = redis.Redis( - host=os.environ.get("REDIS_HOST", "state"), - port=int(os.environ.get("REDIS_PORT", "6379")), - db=int(os.environ.get("REDIS_DB", "0")), - decode_responses=True, - ) + _redis = create_redis_client(db=int(os.environ.get("REDIS_DB", "0"))) return _redis diff --git a/backend/scripts/cleanup_runs.py b/backend/scripts/cleanup_runs.py index 3a77b32..4a91dad 100644 --- a/backend/scripts/cleanup_runs.py +++ b/backend/scripts/cleanup_runs.py @@ -104,9 +104,11 @@ def get_db( ) -def get_redis(host: str, port: int, db: int) -> redis.Redis: +def get_redis(host: str, port: int, db: int, password: str | None = None) -> redis.Redis: """Open a Redis client with the given connection parameters.""" - return redis.Redis(host=host, port=port, db=db, decode_responses=True) + return redis.Redis( + host=host, port=port, db=db, password=password or None, decode_responses=True + ) # --------------------------------------------------------------------------- @@ -505,6 +507,7 @@ def main() -> None: parser.add_argument("--redis-host", default=os.getenv("REDIS_HOST", "localhost")) parser.add_argument("--redis-port", default=int(os.getenv("REDIS_PORT", "6379")), type=int) parser.add_argument("--redis-db", default=int(os.getenv("REDIS_DB", "0")), type=int) + parser.add_argument("--redis-password", default=os.getenv("REDIS_PASSWORD", "")) args = parser.parse_args() @@ -526,7 +529,7 @@ def main() -> None: if need_redis: try: - r = get_redis(args.redis_host, args.redis_port, args.redis_db) + r = get_redis(args.redis_host, args.redis_port, args.redis_db, args.redis_password) r.ping() except Exception as e: print(f"\n⚠️ Cannot connect to Redis at {args.redis_host}:{args.redis_port}") From 9059f96137c06858f988adb97c6e647f32b8d00d Mon Sep 17 00:00:00 2001 From: Jae Date: Thu, 20 Aug 2026 11:13:42 -0600 Subject: [PATCH 63/68] docs(operations): update REDIS_PASSWORD note now that clients honor it Replace the warning about REDIS_PASSWORD not being consumed by any Redis client with an accurate statement: all clients now go through databus/redis_client.py and honor the password when set. --- docs/content/operations/configuration.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/content/operations/configuration.md b/docs/content/operations/configuration.md index 515f946..dfcc28b 100644 --- a/docs/content/operations/configuration.md +++ b/docs/content/operations/configuration.md @@ -47,8 +47,7 @@ Databús is configured entirely through environment variables loaded from `.env` | `REDIS_PASSWORD` | `redispassword` | Yes (prod) | Redis AUTH password. Required in `compose.prod.yml` (the `state` service starts with `--requirepass`). Leave empty for bare-metal dev without auth. | | `REDIS_DB` | `0` | No | Redis database index. | -!!! warning "`REDIS_PASSWORD` is not currently consumed by any Redis client" - Every place `databus` connects to Redis — `realtime_engine/tasks.py`, `realtime_engine/mqtt.py`, `schedule_engine/tasks.py`, `runs/domain/lifecycle/{guards,actions}.py`, `runs/domain/detection/dispatch.py`, `runs/domain/progression/{producer,stop_times}.py`, and the Channels `CHANNEL_LAYERS` config in `databus/settings.py` — builds its `redis.Redis(...)` / channel-layer host from `REDIS_HOST`/`REDIS_PORT` (or a hardcoded `"state"` in the two `runs/domain/lifecycle` modules) with no password argument. `compose.prod.yml` starts `state` with `--requirepass ${REDIS_PASSWORD}`, so as configured today those clients would fail to authenticate against a production Redis that actually enforces the password. Verified by reading every `redis.Redis(` call site and `settings.py` in this session — flagging as a known gap, not fixing it here (docs-only scope). +All Redis clients in `databus` — `realtime_engine/tasks.py`, `realtime_engine/mqtt.py`, `schedule_engine/tasks.py`, `runs/domain/lifecycle/{guards,actions}.py`, `runs/domain/detection/dispatch.py`, `runs/domain/progression/{producer,stop_times}.py` — are built via the shared factory in `databus/redis_client.py`, and the Channels `CHANNEL_LAYERS` config in `databus/settings.py` follows the same env vars directly. All of them honor `REDIS_PASSWORD` when it is set. Leaving it empty or unset (the dev default) connects without AUTH, so bare-metal dev without auth keeps working unchanged. ### RabbitMQ (AMQP message broker) From 3c29e4391843402f482c3078523bdf57d0cb60a3 Mon Sep 17 00:00:00 2001 From: Jae Date: Thu, 20 Aug 2026 11:13:49 -0600 Subject: [PATCH 64/68] fix(runs): resolve mypy stragglers in shapes.py and lifecycle guards.py Both are annotation-level, behavior-neutral: shapes.py's stop_lat/lon DecimalField(null=True) columns are read via .values() with no null filter, so float() already assumed non-null at runtime; annotate that assumption explicitly rather than changing the query. guards.py's short-turn terminal-stop check already guarantees .last() is non-None via the preceding .exists() check; cast makes that explicit instead of leaving mypy to flag a false positive. --- backend/runs/domain/lifecycle/guards.py | 3 ++- backend/runs/domain/progression/shapes.py | 5 ++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/backend/runs/domain/lifecycle/guards.py b/backend/runs/domain/lifecycle/guards.py index 886f17f..db8e10c 100644 --- a/backend/runs/domain/lifecycle/guards.py +++ b/backend/runs/domain/lifecycle/guards.py @@ -298,7 +298,8 @@ def is_short_turn_geometrically_valid( {"trip_id": f"No stop times found for trip '{trip_id}'"} ) - terminal = stop_times.last() + # `.exists()` above already guarantees `.last()` is non-None here. + terminal = cast(StopTime, stop_times.last()) stop_ids = list(stop_times.values_list("stop_id", flat=True)) if short_turn_stop_id not in stop_ids: diff --git a/backend/runs/domain/progression/shapes.py b/backend/runs/domain/progression/shapes.py index 537d102..7a066fe 100644 --- a/backend/runs/domain/progression/shapes.py +++ b/backend/runs/domain/progression/shapes.py @@ -432,7 +432,10 @@ def load_shape_geometry( stop_ids = [sid for sid, _seq in st_rows] stop_coord_map = { - row["stop_id"]: (float(row["stop_lat"]), float(row["stop_lon"])) + row["stop_id"]: ( + float(row["stop_lat"]), # type: ignore[arg-type] + float(row["stop_lon"]), # type: ignore[arg-type] + ) for row in Stop.objects.filter(feed=feed, stop_id__in=stop_ids).values( "stop_id", "stop_lat", "stop_lon" ) From a79b11ce188eb9a019129e771b9d2f90b51e128b Mon Sep 17 00:00:00 2001 From: Jae Date: Thu, 20 Aug 2026 11:23:50 -0600 Subject: [PATCH 65/68] fix(databus): URL-encode Redis password in channel layer address --- backend/databus/settings.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/backend/databus/settings.py b/backend/databus/settings.py index 21f7e21..166379e 100644 --- a/backend/databus/settings.py +++ b/backend/databus/settings.py @@ -11,6 +11,7 @@ """ from pathlib import Path +from urllib.parse import quote from decouple import config, Csv import platform import os @@ -169,7 +170,7 @@ # Channels settings _CHANNEL_LAYER_HOSTS: list[str | tuple[str, str]] = ( - [f"redis://:{REDIS_PASSWORD}@{REDIS_HOST}:{REDIS_PORT}/0"] + [f"redis://:{quote(REDIS_PASSWORD, safe='')}@{REDIS_HOST}:{REDIS_PORT}/0"] if REDIS_PASSWORD else [(REDIS_HOST, REDIS_PORT)] ) From 09fd3ff7f52506ea9ed286ede2d421224b4eceb1 Mon Sep 17 00:00:00 2001 From: Jae Date: Thu, 20 Aug 2026 17:16:20 -0600 Subject: [PATCH 66/68] feat(schedule): hourly GTFS Schedule import from upstream providers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add an hourly Celery task that keeps the stored GTFS Schedule in sync with each active provider's upstream feed, mirroring infobús's get_schedule flow. - feed/schedule/importer.py: import_schedule_if_changed(provider) HEAD-checks the provider's schedule_url ETag against the current Feed.http_etag, skips when unchanged, and otherwise imports the zip's 9 core GTFS tables via bulk_create. The whole DB mutation (flipping the prior current feed, creating the new Feed, importing every table) runs in a single transaction.atomic() so a failure rolls back cleanly. Missing/blank non-nullable columns are filled with each field's empty default (0/""), covering feeds that omit optional columns (e.g. pickup_type/drop_off_type); Stop.stop_point is built inline from lat/lon; malformed rows are skipped. - schedule_engine/tasks.py: fetch_schedule() iterates active GTFSProviders with per-provider error isolation and returns an updated/unchanged/errored summary. - databus/celery.py: fetch-schedule-hourly-at-30 beat entry (crontab minute=30). - feed/tests/test_schedule_importer.py: 12 tests (new import, unchanged ETag, missing-header fallback, atomic rollback, lean-feed missing columns, etc.). Verified end-to-end against the live bUCR feed: full lossless import (1 route, 122 trips, 22 stops, 1043 stop_times), with re-run correctly detecting the unchanged ETag. Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01BMNbeYrs2LKHpRoF5UFeYD --- backend/databus/celery.py | 11 +- backend/feed/schedule/importer.py | 299 +++++++++++++++++ backend/feed/tests/test_schedule_importer.py | 322 +++++++++++++++++++ backend/schedule_engine/tasks.py | 31 ++ 4 files changed, 661 insertions(+), 2 deletions(-) create mode 100644 backend/feed/schedule/importer.py create mode 100644 backend/feed/tests/test_schedule_importer.py diff --git a/backend/databus/celery.py b/backend/databus/celery.py index c2cce1d..5fb3b04 100644 --- a/backend/databus/celery.py +++ b/backend/databus/celery.py @@ -4,14 +4,17 @@ that hasn't started within its own cycle is revoked via `expires=10` rather than queuing up behind a slow source); `build-vehicle-positions-every-15s` and `build-trip-updates-every-15s` rebuild the two GTFS-RT feeds every 15s; -`scan-stale-runs-every-30s` sweeps for runs that have gone quiet; and -`build-schedule-daily` rebuilds the GTFS Schedule zip once a day. +`scan-stale-runs-every-30s` sweeps for runs that have gone quiet; +`build-schedule-daily` rebuilds the GTFS Schedule zip once a day; and +`fetch-schedule-hourly-at-30` HEAD-checks each active GTFSProvider's schedule_url ETag +every hour at :30 and imports the GTFS Schedule when it changed. """ from datetime import timedelta import os from celery import Celery +from celery.schedules import crontab # Set the default Django settings module for the 'celery' program. os.environ.setdefault("DJANGO_SETTINGS_MODULE", "databus.settings") @@ -71,4 +74,8 @@ def debug_task(self): "task": "schedule_engine.tasks.build_schedule", "schedule": timedelta(days=1), }, + "fetch-schedule-hourly-at-30": { + "task": "schedule_engine.tasks.fetch_schedule", + "schedule": crontab(minute=30), + }, } diff --git a/backend/feed/schedule/importer.py b/backend/feed/schedule/importer.py new file mode 100644 index 0000000..c7586f1 --- /dev/null +++ b/backend/feed/schedule/importer.py @@ -0,0 +1,299 @@ +"""GTFS Schedule zip importer. + +Ported from infobús's ``save_schedule_to_database``, adapted for databús's +``GTFSProvider``/``Feed`` schema. HEAD-checks a provider's upstream +``schedule_url`` ETag; if it differs from the current ``Feed``'s, downloads +and bulk-imports the new GTFS zip table-by-table, flips ``is_current``, and +returns ``True``. + +Core ``linked_*`` FKs (e.g. ``Trip.linked_route``) are intentionally left +``NULL`` here: they're normally resolved in each model's custom ``save()``, +which ``bulk_create`` bypasses for performance, and nothing downstream reads +them (the exporter re-derives GTFS columns from natural keys and already +excludes ``linked_*``). ``Stop.stop_point`` is the one exception: it's built +inline via ``Point(lon, lat)`` because it's needed for geo queries and +``Stop.save()`` is bypassed too. +""" + +from __future__ import annotations + +import io +import logging +import zipfile +from datetime import date, datetime, timezone + +import pandas as pd +import requests +from django.contrib.gis.geos import Point +from django.db import models as db_models +from django.db import transaction + +from feed.models import ( + Agency, + Calendar, + CalendarDate, + Feed, + FeedInfo, + GTFSProvider, + Route, + Shape, + Stop, + StopTime, + Trip, +) + +logger = logging.getLogger(__name__) + +_REQUEST_TIMEOUT = 30 # seconds + +# Mirrors feed.schedule.exporter._EXCLUDE_NAMES so importer/exporter agree on +# which columns are GTFS data vs. internal/app-specific augmentation fields. +_EXCLUDE_FIELD_NAMES = frozenset( + {"id", "feed", "geoshape", "stop_point", "stop_heading", "holiday_name"} +) + +# Columns holding GTFS "YYYYMMDD" dates, which must be converted to `date` +# objects before construction (Django's DateField.to_python expects ISO +# "YYYY-MM-DD", not GTFS's compact format). +_DATE_FIELDS: dict[type[db_models.Model], frozenset[str]] = { + Calendar: frozenset({"start_date", "end_date"}), + CalendarDate: frozenset({"date"}), + FeedInfo: frozenset({"feed_start_date", "feed_end_date"}), +} + +# Import order matters: GTFS tables have no cross-table FK constraints in +# this schema (linked_* are left NULL), so order here just mirrors the GTFS +# reference table listing for readability/parity with infobús and the +# exporter. Fare tables are intentionally out of scope (see plan). +_TABLES: list[tuple[str, type[db_models.Model]]] = [ + ("agency", Agency), + ("stops", Stop), + ("shapes", Shape), + ("calendar", Calendar), + ("calendar_dates", CalendarDate), + ("routes", Route), + ("trips", Trip), + ("stop_times", StopTime), + ("feed_info", FeedInfo), +] + + +def normalize_gtfs_value(value: object) -> str | None: + """Normalize a raw CSV cell: blank/whitespace-only/NaN -> None, else stripped string.""" + if value is None: + return None + # pandas keeps genuinely-missing cells as float NaN even under + # dtype=str (a str column can't hold NaN, so it stays a float); + # str(nan) == "nan", which would otherwise pass through as a bogus value. + if isinstance(value, float) and pd.isna(value): + return None + text = str(value).strip() + return text or None + + +def gtfs_date(value: object) -> date | None: + """Parse a GTFS ``YYYYMMDD`` string into a ``date``. None-safe.""" + text = normalize_gtfs_value(value) + if text is None: + return None + return datetime.strptime(text, "%Y%m%d").date() + + +def _importable_fields(model: type[db_models.Model]) -> list[db_models.Field]: + """Return the concrete, importable fields for *model* (excludes FKs/augmentation fields).""" + return [ + field + for field in model._meta.local_fields + if field.name not in _EXCLUDE_FIELD_NAMES and not field.name.startswith("linked_") + ] + + +def _model_fields(model: type[db_models.Model]) -> list[str]: + """Return the concrete, importable column names for *model*.""" + return [field.attname for field in _importable_fields(model)] + + +def _empty_value_for(field: db_models.Field) -> object: + """Return a safe non-NULL substitute for a blank cell on a non-nullable *field*. + + Priority: the field's own Django-level default (if any) > 0 for numeric + fields > "" for text fields > None as a last resort (which will surface + as a NOT NULL violation, but only for fields we truly can't infer a safe + empty value for -- better a loud DB error than a silently wrong guess). + """ + if field.has_default(): + return field.get_default() + if isinstance(field, (db_models.IntegerField, db_models.FloatField, db_models.DecimalField)): + return 0 + if isinstance(field, (db_models.CharField, db_models.TextField)): + return "" + return None + + +def _coerce_row(model: type[db_models.Model], row: dict[str, object]) -> dict[str, object]: + """Normalize one CSV row's raw string values into model constructor kwargs. + + Iterates *model*'s full importable field set -- not just the columns + present in *row* -- because a lean GTFS feed can omit an entire column + (e.g. a stop_times.txt with no pickup_type/drop_off_type columns at + all). A column that's present-but-blank and a column that's absent + entirely must be treated the same way: if the resulting value is None + and the Django field is non-nullable, substitute a safe empty value + (see `_empty_value_for`) instead of leaving/passing None. + """ + date_fields = _DATE_FIELDS.get(model, frozenset()) + + kwargs: dict[str, object] = {} + for field in _importable_fields(model): + column = field.attname + value: object + if column in row: + raw_value = row[column] + value = gtfs_date(raw_value) if column in date_fields else normalize_gtfs_value(raw_value) + else: + value = None + + if value is None and not field.null: + value = _empty_value_for(field) + + kwargs[column] = value + return kwargs + + +def _build_stop_point(row: dict[str, object]) -> Point | None: + """Build a ``Point(lon, lat)`` from a stops.txt row, or None if lat/lon is missing.""" + lat = normalize_gtfs_value(row.get("stop_lat")) + lon = normalize_gtfs_value(row.get("stop_lon")) + if lat is None or lon is None: + return None + try: + return Point(float(lon), float(lat)) + except (TypeError, ValueError) as exc: + logger.warning("Skipping stop_point for row with bad lat/lon (%s, %s): %s", lat, lon, exc) + return None + + +def _import_table( + table_name: str, model: type[db_models.Model], zf: zipfile.ZipFile, feed: Feed +) -> int: + """Import one GTFS ``.txt`` file from *zf* into *model*, tagged with *feed*.""" + filename = f"{table_name}.txt" + if filename not in zf.namelist(): + return 0 + + fields = _model_fields(model) + table = pd.read_csv(zf.open(filename), dtype=str, keep_default_na=False, na_values="") + columns = [c for c in fields if c in table.columns] + table = table[columns] + + instances: list[db_models.Model] = [] + for raw_row in table.to_dict(orient="records"): + try: + kwargs = _coerce_row(model, raw_row) + kwargs["feed"] = feed + if model is Stop: + kwargs["stop_point"] = _build_stop_point(raw_row) + instances.append(model(**kwargs)) + except (ValueError, TypeError) as exc: + # E.g. a GTFS time hour >= 24 (TimeField can't hold it), or a + # malformed date/decimal. Logged and skipped rather than + # aborting the whole table/import for one bad row. + logger.warning("Skipping malformed %s row %r: %s", table_name, raw_row, exc) + + # `model` is a `type[db_models.Model]` parameter (any of the concrete + # feed.models classes at call sites below); django-stubs can't resolve + # `.objects` on the generic base-class type here even though every + # concrete subclass has it via Django's default manager. + model.objects.bulk_create(instances, batch_size=2000) # type: ignore[attr-defined] + return len(instances) + + +def _resolve_new_etag(resp: requests.Response) -> str | None: + """Prefer the ETag header; fall back to Last-Modified. None means 'always import'.""" + etag = resp.headers.get("ETag") + if etag: + return etag + return resp.headers.get("Last-Modified") + + +def _parse_last_modified(resp: requests.Response) -> datetime: + """Parse the Last-Modified header into a UTC datetime, defaulting to now() if absent/invalid.""" + raw = resp.headers.get("Last-Modified") + if not raw: + return datetime.now(timezone.utc) + try: + return datetime.strptime(raw, "%a, %d %b %Y %H:%M:%S %Z").replace(tzinfo=timezone.utc) + except ValueError: + logger.warning("Unparseable Last-Modified header %r; using now()", raw) + return datetime.now(timezone.utc) + + +def import_schedule_if_changed(provider: GTFSProvider) -> bool: + """Import *provider*'s GTFS Schedule zip when its upstream ETag changed. + + Returns True if a new Feed was imported, False if unchanged or on error. + """ + if not provider.schedule_url: + logger.warning("GTFSProvider %s has no schedule_url; skipping", provider.code) + return False + + current_feed = ( + Feed.objects.filter(gtfs_provider=provider, is_current=True) + .order_by("-retrieved_at") + .first() + ) + current_tag = current_feed.http_etag if current_feed else None + + try: + head_resp = requests.head(provider.schedule_url, timeout=_REQUEST_TIMEOUT) + head_resp.raise_for_status() + except requests.RequestException: + logger.exception("HEAD request failed for provider %s", provider.code) + return False + + new_tag = _resolve_new_etag(head_resp) + if new_tag is not None and new_tag == current_tag: + logger.info("Provider %s schedule up to date (etag=%s)", provider.code, new_tag) + return False + + try: + get_resp = requests.get(provider.schedule_url, timeout=_REQUEST_TIMEOUT) + get_resp.raise_for_status() + schedule_zip = zipfile.ZipFile(io.BytesIO(get_resp.content)) + except (requests.RequestException, zipfile.BadZipFile): + logger.exception("Failed to download/parse schedule zip for provider %s", provider.code) + return False + + last_modified = _parse_last_modified(head_resp) + feed_id = f"{provider.code} ({last_modified.strftime('%Y-%m-%d %H:%M:%S %Z')})" + + # Everything from here on mutates the DB: flipping the previous current + # feed, creating the new one, and importing every table. Wrap it all in + # one transaction so a failure partway through (e.g. a table that fails + # bulk_create) rolls back cleanly instead of leaving a half-imported + # Feed marked is_current=True. The HTTP + etag comparison above stays + # outside the transaction since it does no DB writes. + try: + with transaction.atomic(): + if current_feed is not None: + current_feed.is_current = False + current_feed.save(update_fields=["is_current"]) + + feed = Feed.objects.create( + feed_id=feed_id, + http_etag=new_tag, + http_last_modified=last_modified, + is_current=True, + gtfs_provider=provider, + ) + + for table_name, model in _TABLES: + count = _import_table(table_name, model, schedule_zip, feed) + logger.info("Imported %d rows into %s for feed %s", count, table_name, feed_id) + except Exception: + logger.exception( + "Import failed for provider %s; rolled back feed %s", provider.code, feed_id + ) + return False + + return True diff --git a/backend/feed/tests/test_schedule_importer.py b/backend/feed/tests/test_schedule_importer.py new file mode 100644 index 0000000..57db1f2 --- /dev/null +++ b/backend/feed/tests/test_schedule_importer.py @@ -0,0 +1,322 @@ +"""Tests for the GTFS Schedule zip importer. + +Requires a PostGIS-enabled test database (models use PointField). HTTP is +mocked at the module boundary (`feed.schedule.importer.requests`) since +there's no `responses`/`requests-mock` dependency in this project. +""" + +import io +import zipfile +from unittest.mock import Mock, patch + +from django.test import TestCase + +from feed.models import ( + Agency, + Calendar, + CalendarDate, + Feed, + GTFSProvider, + Route, + Shape, + Stop, + StopTime, + Trip, +) +from feed.schedule.importer import import_schedule_if_changed +from schedule_engine.tasks import fetch_schedule + + +def _build_gtfs_zip_bytes(*, lean_stop_times: bool = False) -> bytes: + """Build a tiny but complete in-memory GTFS zip covering all imported tables. + + With ``lean_stop_times=True``, stop_times.txt mirrors the real bUCR feed's + columns exactly (no pickup_type/drop_off_type at all) -- the shape that + exposed the "column absent entirely" NOT NULL bug. + """ + stop_times_txt = ( + "trip_id,arrival_time,departure_time,stop_id,stop_sequence,timepoint," + "shape_dist_traveled,stop_headsign\n" + "T1,08:00:00,08:00:00,S1,1,1,0.0,\n" + "T1,08:10:00,08:10:00,S2,2,1,1.2,\n" + if lean_stop_times + else ( + "trip_id,arrival_time,departure_time,stop_id,stop_sequence,pickup_type,drop_off_type\n" + "T1,08:00:00,08:00:00,S1,1,,\n" + "T1,08:10:00,08:10:00,S2,2,,\n" + ) + ) + files = { + "agency.txt": ( + "agency_id,agency_name,agency_url,agency_timezone\n" + "A1,Test Agency,https://example.com,America/Costa_Rica\n" + ), + "stops.txt": ( + "stop_id,stop_name,stop_lat,stop_lon,parent_station\n" + "S1,Stop One,9.930000,-84.080000,\n" + "S2,Stop Two,9.935000,-84.085000,\n" + ), + "shapes.txt": ( + "shape_id,shape_pt_lat,shape_pt_lon,shape_pt_sequence\n" + "SH1,9.930000,-84.080000,1\n" + "SH1,9.935000,-84.085000,2\n" + ), + "calendar.txt": ( + "service_id,monday,tuesday,wednesday,thursday,friday,saturday,sunday," + "start_date,end_date\n" + "WD,1,1,1,1,1,0,0,20260101,20261231\n" + ), + "calendar_dates.txt": ( + "service_id,date,exception_type\nWD,20260101,2\n" + ), + "routes.txt": ( + "route_id,agency_id,route_short_name,route_long_name,route_type\n" + "R1,A1,1,Route One,3\n" + ), + "trips.txt": ( + "route_id,service_id,trip_id,direction_id,wheelchair_accessible,bikes_allowed\n" + "R1,WD,T1,0,,\n" + ), + "stop_times.txt": stop_times_txt, + "feed_info.txt": ( + "feed_publisher_name,feed_publisher_url,feed_lang\n" + "Test Publisher,https://example.com,es\n" + ), + } + buf = io.BytesIO() + with zipfile.ZipFile(buf, "w") as zf: + for name, content in files.items(): + zf.writestr(name, content) + return buf.getvalue() + + +def _mock_head_response(etag: str | None = '"abc123"', last_modified: str | None = None) -> Mock: + headers = {} + if etag is not None: + headers["ETag"] = etag + if last_modified is not None: + headers["Last-Modified"] = last_modified + resp = Mock() + resp.headers = headers + resp.raise_for_status = Mock() + return resp + + +def _mock_get_response(content: bytes) -> Mock: + resp = Mock() + resp.content = content + resp.raise_for_status = Mock() + return resp + + +class TestImportScheduleIfChanged(TestCase): + """Cover new-import, unchanged, and missing-header cases for import_schedule_if_changed.""" + + def _provider(self, **kwargs: object) -> GTFSProvider: + defaults: dict[str, object] = { + "code": "TESTP", + "name": "Test Provider", + "schedule_url": "https://example.com/gtfs.zip", + "timezone": "America/Costa_Rica", + "is_active": True, + } + defaults.update(kwargs) + return GTFSProvider.objects.create(**defaults) + + @patch("feed.schedule.importer.requests.get") + @patch("feed.schedule.importer.requests.head") + def test_new_etag_imports_and_populates_tables( + self, mock_head: Mock, mock_get: Mock + ) -> None: + provider = self._provider() + mock_head.return_value = _mock_head_response(etag='"new-etag"') + mock_get.return_value = _mock_get_response(_build_gtfs_zip_bytes()) + + result = import_schedule_if_changed(provider) + + self.assertTrue(result) + feeds = Feed.objects.filter(gtfs_provider=provider, is_current=True) + self.assertEqual(feeds.count(), 1) + feed = feeds.first() + self.assertEqual(feed.http_etag, '"new-etag"') + + self.assertEqual(Route.objects.filter(feed=feed).count(), 1) + self.assertEqual(Trip.objects.filter(feed=feed).count(), 1) + self.assertEqual(Stop.objects.filter(feed=feed).count(), 2) + self.assertEqual(StopTime.objects.filter(feed=feed).count(), 2) + self.assertEqual(Shape.objects.filter(feed=feed).count(), 2) + self.assertEqual(Calendar.objects.filter(feed=feed).count(), 1) + self.assertEqual(CalendarDate.objects.filter(feed=feed).count(), 1) + + stop = Stop.objects.filter(feed=feed).first() + self.assertIsNotNone(stop.stop_point) + # parent_station is a non-nullable CharField with a blank cell in the + # CSV; it must be coerced to "" (not None) or bulk_create would raise + # a NotNullViolation. + self.assertEqual(stop.parent_station, "") + + trip = Trip.objects.filter(feed=feed).first() + self.assertIsNone(trip.linked_route) + # blank direction_id/wheelchair_accessible/bikes_allowed -> coerced to 0 + self.assertEqual(trip.direction_id, 0) + self.assertEqual(trip.wheelchair_accessible, 0) + self.assertEqual(trip.bikes_allowed, 0) + + stop_time = StopTime.objects.filter(feed=feed, stop_id="S1").first() + self.assertEqual(stop_time.pickup_type, 0) + self.assertEqual(stop_time.drop_off_type, 0) + + @patch("feed.schedule.importer.requests.get") + @patch("feed.schedule.importer.requests.head") + def test_lean_stop_times_missing_pickup_drop_off_columns_imports_as_zero( + self, mock_head: Mock, mock_get: Mock + ) -> None: + """Real bUCR feed shape: stop_times.txt has no pickup_type/drop_off_type + + columns at all (not just blank cells). Those StopTime fields are + non-nullable with no default, so an entirely-absent column must still + be coerced to 0, not left as None. + """ + provider = self._provider() + mock_head.return_value = _mock_head_response(etag='"lean-etag"') + mock_get.return_value = _mock_get_response(_build_gtfs_zip_bytes(lean_stop_times=True)) + + result = import_schedule_if_changed(provider) + + self.assertTrue(result) + feed = Feed.objects.filter(gtfs_provider=provider, is_current=True).first() + self.assertIsNotNone(feed) + stop_times = StopTime.objects.filter(feed=feed) + self.assertEqual(stop_times.count(), 2) + for stop_time in stop_times: + self.assertEqual(stop_time.pickup_type, 0) + self.assertEqual(stop_time.drop_off_type, 0) + + @patch("feed.schedule.importer.requests.get") + @patch("feed.schedule.importer.requests.head") + def test_same_etag_skips_import(self, mock_head: Mock, mock_get: Mock) -> None: + provider = self._provider() + current_feed = Feed.objects.create( + feed_id="TESTP (existing)", + gtfs_provider=provider, + http_etag='"same-etag"', + is_current=True, + ) + mock_head.return_value = _mock_head_response(etag='"same-etag"') + + result = import_schedule_if_changed(provider) + + self.assertFalse(result) + mock_get.assert_not_called() + self.assertEqual(Feed.objects.count(), 1) + current_feed.refresh_from_db() + self.assertTrue(current_feed.is_current) + + @patch("feed.schedule.importer.requests.get") + @patch("feed.schedule.importer.requests.head") + def test_changed_etag_flips_previous_current_feed( + self, mock_head: Mock, mock_get: Mock + ) -> None: + provider = self._provider() + old_feed = Feed.objects.create( + feed_id="TESTP (old)", + gtfs_provider=provider, + http_etag='"old-etag"', + is_current=True, + ) + mock_head.return_value = _mock_head_response(etag='"new-etag"') + mock_get.return_value = _mock_get_response(_build_gtfs_zip_bytes()) + + result = import_schedule_if_changed(provider) + + self.assertTrue(result) + old_feed.refresh_from_db() + self.assertFalse(old_feed.is_current) + self.assertEqual(Feed.objects.filter(is_current=True).count(), 1) + + @patch("feed.schedule.importer.requests.get") + @patch("feed.schedule.importer.requests.head") + def test_missing_etag_header_falls_back_and_still_imports( + self, mock_head: Mock, mock_get: Mock + ) -> None: + provider = self._provider() + Feed.objects.create( + feed_id="TESTP (existing)", + gtfs_provider=provider, + http_etag=None, + is_current=True, + ) + # No ETag, no Last-Modified -> can't prove unchanged -> proceed with import. + mock_head.return_value = _mock_head_response(etag=None, last_modified=None) + mock_get.return_value = _mock_get_response(_build_gtfs_zip_bytes()) + + result = import_schedule_if_changed(provider) + + self.assertTrue(result) + self.assertEqual(Feed.objects.filter(is_current=True).count(), 1) + + def test_no_schedule_url_returns_false(self) -> None: + provider = self._provider(schedule_url="") + result = import_schedule_if_changed(provider) + self.assertFalse(result) + self.assertEqual(Feed.objects.count(), 0) + + @patch("feed.models.StopTime.objects.bulk_create") + @patch("feed.schedule.importer.requests.get") + @patch("feed.schedule.importer.requests.head") + def test_mid_import_failure_rolls_back_whole_feed( + self, mock_head: Mock, mock_get: Mock, mock_bulk_create: Mock + ) -> None: + """A failure partway through (here, stop_times) must leave no trace: no new + Feed, and none of the earlier tables' rows (agency, stops, ...) persisted. + """ + provider = self._provider() + mock_head.return_value = _mock_head_response(etag='"new-etag"') + mock_get.return_value = _mock_get_response(_build_gtfs_zip_bytes()) + mock_bulk_create.side_effect = RuntimeError("simulated mid-import DB failure") + + result = import_schedule_if_changed(provider) + + self.assertFalse(result) + self.assertEqual(Feed.objects.count(), 0) + self.assertEqual(Agency.objects.count(), 0) + self.assertEqual(Stop.objects.count(), 0) + self.assertEqual(Route.objects.count(), 0) + self.assertEqual(Trip.objects.count(), 0) + + +class TestFetchScheduleTask(TestCase): + """Cover the fetch_schedule Celery task's provider iteration.""" + + def test_no_active_providers_returns_message(self) -> None: + GTFSProvider.objects.create( + code="INACTIVE", + name="Inactive Provider", + schedule_url="https://example.com/gtfs.zip", + timezone="America/Costa_Rica", + is_active=False, + ) + result = fetch_schedule() + self.assertIn("no active providers", result) + self.assertEqual(Feed.objects.count(), 0) + + @patch("feed.schedule.importer.requests.get") + @patch("feed.schedule.importer.requests.head") + def test_active_provider_gets_updated(self, mock_head: Mock, mock_get: Mock) -> None: + provider = GTFSProvider.objects.create( + code="ACTIVEP", + name="Active Provider", + schedule_url="https://example.com/gtfs.zip", + timezone="America/Costa_Rica", + is_active=True, + ) + mock_head.return_value = _mock_head_response(etag='"etag-1"') + mock_get.return_value = _mock_get_response(_build_gtfs_zip_bytes()) + + result = fetch_schedule() + + self.assertIn("ACTIVEP", result) + self.assertIn("updated=", result) + self.assertEqual( + Feed.objects.filter(gtfs_provider=provider, is_current=True).count(), 1 + ) diff --git a/backend/schedule_engine/tasks.py b/backend/schedule_engine/tasks.py index ba4596b..81ea88c 100644 --- a/backend/schedule_engine/tasks.py +++ b/backend/schedule_engine/tasks.py @@ -138,3 +138,34 @@ def build_schedule() -> str | None: dest = publish_gtfs_zip(feed) return f"GTFS Schedule zip published: {dest} ({dest.stat().st_size} bytes)" + + +@shared_task(queue="schedule_engine") +def fetch_schedule() -> str: + """HEAD-check active providers' GTFS Schedule ETags and import any that changed.""" + import logging + + logger = logging.getLogger(__name__) + + from feed.models import GTFSProvider + from feed.schedule.importer import import_schedule_if_changed + + providers = list(GTFSProvider.objects.filter(is_active=True)) + if not providers: + logger.warning("fetch_schedule: no active GTFSProvider rows found") + return "fetch_schedule: no active providers" + + updated: list[str] = [] + unchanged: list[str] = [] + errored: list[str] = [] + for provider in providers: + try: + if import_schedule_if_changed(provider): + updated.append(provider.code) + else: + unchanged.append(provider.code) + except Exception: + logger.exception("fetch_schedule: error importing provider %s", provider.code) + errored.append(provider.code) + + return f"fetch_schedule: updated={updated} unchanged={unchanged} errored={errored}" From 28cf925ae1d3055c6960a7b26e3adf43276394db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabi=C3=A1n=20Abarca=20Calder=C3=B3n?= Date: Fri, 4 Sep 2026 15:44:51 -0300 Subject: [PATCH 67/68] chore(feed): add TransitSystems and FeedPublisher to allow multi-tenancy and test the GTFS Schedule importer --- backend/databus/celery.py | 2 +- backend/feed/README.md | 9 +- backend/feed/admin.py | 6 +- backend/feed/fixtures/gtfs.json | 65496 ++++++++--------- backend/feed/fixtures/gtfs_old.json | 65468 ++++++++-------- backend/feed/models.py | 83 +- backend/feed/schedule/importer.py | 51 +- backend/feed/tests/test_schedule_importer.py | 38 +- backend/gtfs-eta | 2 +- backend/schedule_engine/tasks.py | 40 +- backend/uv.lock | 3 + docs/content/data-model/django-models.md | 168 +- 12 files changed, 65714 insertions(+), 65652 deletions(-) mode change 120000 => 160000 backend/gtfs-eta diff --git a/backend/databus/celery.py b/backend/databus/celery.py index 5fb3b04..ec08bc6 100644 --- a/backend/databus/celery.py +++ b/backend/databus/celery.py @@ -6,7 +6,7 @@ `build-trip-updates-every-15s` rebuild the two GTFS-RT feeds every 15s; `scan-stale-runs-every-30s` sweeps for runs that have gone quiet; `build-schedule-daily` rebuilds the GTFS Schedule zip once a day; and -`fetch-schedule-hourly-at-30` HEAD-checks each active GTFSProvider's schedule_url ETag +`fetch-schedule-hourly-at-30` HEAD-checks each active FeedPublisher's schedule_url ETag every hour at :30 and imports the GTFS Schedule when it changed. """ diff --git a/backend/feed/README.md b/backend/feed/README.md index 614bb0f..5be69e0 100644 --- a/backend/feed/README.md +++ b/backend/feed/README.md @@ -1,11 +1,11 @@ # Feed · GTFS Schedule domain + published feed files -- **Purpose**: owns the GTFS Schedule domain models, feed versioning (`GTFSProvider`/`Feed`), the +- **Purpose**: owns the GTFS Schedule domain models, feed versioning (`FeedPublisher`/`Feed`), the Schedule zip exporter, and the HTTP endpoints that serve published GTFS Schedule and GTFS - Realtime files from disk. Not to be confused with `schedule_engine`, which *builds* the GTFS-RT + Realtime files from disk. Not to be confused with `schedule_engine`, which _builds_ the GTFS-RT protobufs consumed here. - **Key modules**: - - `models.py` — `GTFSProvider`, `Feed`, and one concrete model per GTFS Schedule table + - `models.py` — `FeedPublisher`, `Feed`, and one concrete model per GTFS Schedule table - `schedule/exporter.py` — `build_gtfs_zip` / `publish_gtfs_zip` - `management/commands/export_gtfs.py` — `manage.py export_gtfs` - `views.py` / `urls.py` — file-serving endpoints @@ -22,7 +22,7 @@ the registration-UI lookups in `api`. `FeedMessage`/`TripUpdate`/`StopTimeUpdate model the normalized GTFS-RT entities for persisted blobs; `Alert` is a placeholder (TODO in source, not fed by any current pipeline). -`GTFSProvider` is the org that supplies a feed (may serve multiple agencies); `Feed` is one +`FeedPublisher` is the org that supplies a feed (may serve multiple agencies); `Feed` is one retrieved version, marked `is_current=True` to select the active feed. `is_current` is read directly by `api`'s `WhichShapesView`/`FindTripsView` and by the exporter — there is no automatic supersession logic in this app; whichever `Feed` is flagged is authoritative. @@ -56,6 +56,7 @@ No app-specific env vars. ``` docker compose -f compose.dev.yml run --rm orchestrator uv run pytest feed/ -q ``` + `make test` runs the full suite. ## Docs diff --git a/backend/feed/admin.py b/backend/feed/admin.py index 0e4c89c..dc192c0 100644 --- a/backend/feed/admin.py +++ b/backend/feed/admin.py @@ -3,6 +3,7 @@ from django.contrib.gis import admin from .models import ( + TransitSystem, Agency, Calendar, CalendarDate, @@ -12,7 +13,7 @@ FeedInfo, FeedMessage, GeoShape, - GTFSProvider, + FeedPublisher, Route, RouteStop, Shape, @@ -35,7 +36,8 @@ class StopAdmin(admin.GISModelAdmin): exclude = ["stop_lat", "stop_lon"] -admin.site.register(GTFSProvider) +admin.site.register(TransitSystem) +admin.site.register(FeedPublisher) admin.site.register(Feed) admin.site.register(Agency) admin.site.register(Stop, StopAdmin) diff --git a/backend/feed/fixtures/gtfs.json b/backend/feed/fixtures/gtfs.json index d1248cf..0171472 100644 --- a/backend/feed/fixtures/gtfs.json +++ b/backend/feed/fixtures/gtfs.json @@ -1,32749 +1,32749 @@ [ - { - "model": "feed.agency", - "pk": 1, - "fields": { - "feed": "1", - "agency_id": "bUCR", - "agency_name": "Buses de la Universidad de Costa Rica", - "agency_url": "https://bus.ucr.ac.cr/", - "agency_timezone": "America/Costa_Rica", - "agency_lang": "es", - "agency_phone": "25112919", - "agency_fare_url": "https://bus.ucr.ac.cr/#tarifas", - "agency_email": "bus@ucr.ac.cr" - } - }, - { - "model": "feed.route", - "pk": 1, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "agency_id": "bUCR", - "route_short_name": "bUCR L1", - "route_long_name": "Bus interno UCR sin milla", - "route_desc": "Esta ruta conecta las tres fincas del Campus Universitario Rodrigo Facio en San Pedro de Montes de Oca, y no incluye la vuelta por la milla universitaria.", - "route_type": 3, - "route_url": "https://bus.ucr.ac.cr/#L1", - "route_color": "00C0F3", - "route_text_color": "FFFFFF", - "route_sort_order": null - } - }, - { - "model": "feed.route", - "pk": 2, - "fields": { - "feed": "1", - "route_id": "bUCR_L2", - "agency_id": "bUCR", - "route_short_name": "bUCR L2", - "route_long_name": "Bus interno UCR con milla", - "route_desc": "Esta ruta conecta las tres fincas del Campus Universitario Rodrigo Facio en San Pedro de Montes de Oca, e incluye la vuelta por la milla universitaria.", - "route_type": 3, - "route_url": "https://bus.ucr.ac.cr/#L2", - "route_color": "005DA4", - "route_text_color": "FFFFFF", - "route_sort_order": null - } - }, - { - "model": "feed.stop", - "pk": 1, - "fields": { - "feed": "1", - "stop_id": "bUCR_0_01", - "stop_code": "", - "stop_name": "Facultad de Educación", - "stop_desc": "Frente al jardín de la Facultad de Educación (FE)", - "stop_lat": 9.935610136323218, - "stop_lon": -84.04899295728595, - "stop_point": "SRID=4326;POINT (-84.04899295728595 9.935610136323218)", - "zone_id": "bUCR_0", - "stop_url": "", - "location_type": 0, - "parent_station": "", - "stop_timezone": "", - "wheelchair_boarding": 1, - "platform_code": "" - } - }, - { - "model": "feed.stop", - "pk": 2, - "fields": { - "feed": "1", - "stop_id": "bUCR_0_02", - "stop_code": "", - "stop_name": "Escuela de Artes Plásticas", - "stop_desc": "Nuevo edificio de la Escuela de Artes Plásticas (EAP)", - "stop_lat": 9.935501598287884, - "stop_lon": -84.05217559901489, - "stop_point": "SRID=4326;POINT (-84.05217559901489 9.935501598287884)", - "zone_id": "bUCR_0", - "stop_url": "", - "location_type": 0, - "parent_station": "", - "stop_timezone": "", - "wheelchair_boarding": 1, - "platform_code": "" - } - }, - { - "model": "feed.stop", - "pk": 3, - "fields": { - "feed": "1", - "stop_id": "bUCR_0_03", - "stop_code": "", - "stop_name": "Biblioteca de Ciencias de la Salud", - "stop_desc": "Frente al antiguo edificio de la Facultad de Odontología (FOd), diagonal al parqueo de la Biblioteca de Ciencias de la Salud", - "stop_lat": 9.93860832346218, - "stop_lon": -84.0517499001992, - "stop_point": "SRID=4326;POINT (-84.0517499001992 9.93860832346218)", - "zone_id": "bUCR_0", - "stop_url": "", - "location_type": 0, - "parent_station": "", - "stop_timezone": "", - "wheelchair_boarding": 1, - "platform_code": "" - } - }, - { - "model": "feed.stop", - "pk": 4, - "fields": { - "feed": "1", - "stop_id": "bUCR_0_04", - "stop_code": "", - "stop_name": "Facultad de Microbiología", - "stop_desc": "Esquina noreste del parqueo de las Escuelas de Artes Musicales (EAM), Química (EQ) y Biología (EB) y la Facultad de Microbiología (FMic)", - "stop_lat": 9.93832361909286, - "stop_lon": -84.04876049840074, - "stop_point": "SRID=4326;POINT (-84.04876049840074 9.93832361909286 )", - "zone_id": "bUCR_0", - "stop_url": "", - "location_type": 0, - "parent_station": "", - "stop_timezone": "", - "wheelchair_boarding": 1, - "platform_code": "" - } - }, - { - "model": "feed.stop", - "pk": 5, - "fields": { - "feed": "1", - "stop_id": "bUCR_0_05", - "stop_code": "", - "stop_name": "Laboratorio Nacional de Materiales y Modelos Estructurales (LanammeUCR)", - "stop_desc": "Junto al parqueo del Centro de Transferencia Tecnológica (CTT), diagonal al Laboratorio Nacional de Materiales y Modelos Estructurales (LANAMME)", - "stop_lat": 9.935903915437937, - "stop_lon": -84.04537504744147, - "stop_point": "SRID=4326;POINT (-84.04537504744147 9.935903915437937)", - "zone_id": "bUCR_0", - "stop_url": "", - "location_type": 0, - "parent_station": "bUCR_LA", - "stop_timezone": "", - "wheelchair_boarding": 2, - "platform_code": "" - } - }, - { - "model": "feed.stop", - "pk": 6, - "fields": { - "feed": "1", - "stop_id": "bUCR_0_06", - "stop_code": "", - "stop_name": "Facultad de Ingeniería", - "stop_desc": "Costado norte del nuevo edificio de la Facultad de Ingeniería (FI)", - "stop_lat": 9.937467311441509, - "stop_lon": -84.04467644300775, - "stop_point": "SRID=4326;POINT (-84.04467644300775 9.937467311441507)", - "zone_id": "bUCR_0", - "stop_url": "", - "location_type": 0, - "parent_station": "bUCR_FI", - "stop_timezone": "", - "wheelchair_boarding": 2, - "platform_code": "" - } - }, - { - "model": "feed.stop", - "pk": 7, - "fields": { - "feed": "1", - "stop_id": "bUCR_0_07", - "stop_code": "", - "stop_name": "Facultad de Ciencias Sociales", - "stop_desc": "Entre la Facultad de Ciencias Sociales (FCS) y el edificio de parqueos", - "stop_lat": 9.938029607676915, - "stop_lon": -84.04237892478906, - "stop_point": "SRID=4326;POINT (-84.04237892478906 9.938029607676915)", - "zone_id": "bUCR_0", - "stop_url": "", - "location_type": 0, - "parent_station": "bUCR_CS", - "stop_timezone": "", - "wheelchair_boarding": 2, - "platform_code": "" - } - }, - { - "model": "feed.stop", - "pk": 8, - "fields": { - "feed": "1", - "stop_id": "bUCR_0_08", - "stop_code": "", - "stop_name": "Instituto de Investigación en Educación (INIE)", - "stop_desc": "Costado sur del edificio del Instituto de Investigación en Educación (INIE)", - "stop_lat": 9.939451647823136, - "stop_lon": -84.04307776266035, - "stop_point": "SRID=4326;POINT (-84.04307776266035 9.939451647823137)", - "zone_id": "bUCR_0", - "stop_url": "", - "location_type": 0, - "parent_station": "", - "stop_timezone": "", - "wheelchair_boarding": 2, - "platform_code": "" - } - }, - { - "model": "feed.stop", - "pk": 9, - "fields": { - "feed": "1", - "stop_id": "bUCR_0_09", - "stop_code": "", - "stop_name": "Centro de Investigación en Cirugía y Cáncer (CICICA)", - "stop_desc": "Costado sur del edificio del Centro de Investigación en Cirugía y Cáncer (CICICA)", - "stop_lat": 9.940155168862551, - "stop_lon": -84.04450675690296, - "stop_point": "SRID=4326;POINT (-84.04450675690296 9.940155168862551)", - "zone_id": "bUCR_0", - "stop_url": "", - "location_type": 0, - "parent_station": "", - "stop_timezone": "", - "wheelchair_boarding": 2, - "platform_code": "" - } - }, - { - "model": "feed.stop", - "pk": 10, - "fields": { - "feed": "1", - "stop_id": "bUCR_0_10", - "stop_code": "", - "stop_name": "Oficina de Bienestar y Salud (OBS)", - "stop_desc": "Entre el nuevo edificio de la Oficina de Bienestar y Salud (OBS) y el Estadio Ecológico", - "stop_lat": 9.943761220391433, - "stop_lon": -84.04468346245407, - "stop_point": "SRID=4326;POINT (-84.04468346245408 9.943761220391434)", - "zone_id": "bUCR_0", - "stop_url": "", - "location_type": 0, - "parent_station": "", - "stop_timezone": "", - "wheelchair_boarding": 2, - "platform_code": "" - } - }, - { - "model": "feed.stop", - "pk": 11, - "fields": { - "feed": "1", - "stop_id": "bUCR_0_11", - "stop_code": "", - "stop_name": "Facultad de Odontología", - "stop_desc": "En el nuevo edificio de la Facultad de Odontología (FOd) en la Finca 3", - "stop_lat": 9.946441050827923, - "stop_lon": -84.0451915613564, - "stop_point": "SRID=4326;POINT (-84.0451915613564 9.946441050827925)", - "zone_id": "bUCR_0", - "stop_url": "", - "location_type": 0, - "parent_station": "", - "stop_timezone": "", - "wheelchair_boarding": 2, - "platform_code": "" - } - }, - { - "model": "feed.stop", - "pk": 12, - "fields": { - "feed": "1", - "stop_id": "bUCR_1_01", - "stop_code": "", - "stop_name": "Facultad de Odontología", - "stop_desc": "En el nuevo edificio de la Facultad de Odontología (FOd) en la Finca 3", - "stop_lat": 9.946529500847424, - "stop_lon": -84.04535458313804, - "stop_point": "SRID=4326;POINT (-84.04535458313804 9.946529500847424)", - "zone_id": "bUCR_1", - "stop_url": "", - "location_type": 0, - "parent_station": "", - "stop_timezone": "", - "wheelchair_boarding": 2, - "platform_code": "" - } - }, - { - "model": "feed.stop", - "pk": 13, - "fields": { - "feed": "1", - "stop_id": "bUCR_1_02", - "stop_code": "", - "stop_name": "Escuela de Educación Física y Deportes (EDUFI)", - "stop_desc": "Costado este de las canchas multiuso y de la Escuela de Educación Física y Deportes (EDUFI)", - "stop_lat": 9.943381444081362, - "stop_lon": -84.04495180739714, - "stop_point": "SRID=4326;POINT (-84.04495180739714 9.943381444081362)", - "zone_id": "bUCR_1", - "stop_url": "", - "location_type": 0, - "parent_station": "", - "stop_timezone": "", - "wheelchair_boarding": 2, - "platform_code": "" - } - }, - { - "model": "feed.stop", - "pk": 14, - "fields": { - "feed": "1", - "stop_id": "bUCR_1_03", - "stop_code": "", - "stop_name": "Escuela de Nutrición", - "stop_desc": "Esquina noreste del edificio de la Escuela de Nutrición (ENu)", - "stop_lat": 9.939134591559856, - "stop_lon": -84.04468654565294, - "stop_point": "SRID=4326;POINT (-84.04468654565294 9.939134591559855)", - "zone_id": "bUCR_1", - "stop_url": "", - "location_type": 0, - "parent_station": "", - "stop_timezone": "", - "wheelchair_boarding": 2, - "platform_code": "" - } - }, - { - "model": "feed.stop", - "pk": 15, - "fields": { - "feed": "1", - "stop_id": "bUCR_1_04", - "stop_code": "", - "stop_name": "Centro de Investigación en Ciencias del Mar y Limnología (CIMAR)", - "stop_desc": "Entre el edificio de parqueos y el Centro de Investigación en Ciencias del Mar y Limnología (CIMAR)", - "stop_lat": 9.938980381389706, - "stop_lon": -84.0436758508172, - "stop_point": "SRID=4326;POINT (-84.0436758508172 9.938980381389706)", - "zone_id": "bUCR_1", - "stop_url": "", - "location_type": 0, - "parent_station": "", - "stop_timezone": "", - "wheelchair_boarding": 1, - "platform_code": "" - } - }, - { - "model": "feed.stop", - "pk": 16, - "fields": { - "feed": "1", - "stop_id": "bUCR_1_05", - "stop_code": "", - "stop_name": "Centro de Investigación en Matemática Pura y Aplicada (CIMPA)", - "stop_desc": "Frente al edificio del Centro de Investigación en Matemática Pura y Aplicada (CIMPA)", - "stop_lat": 9.939472792042086, - "stop_lon": -84.042189216776, - "stop_point": "SRID=4326;POINT (-84.042189216776 9.939472792042086)", - "zone_id": "bUCR_1", - "stop_url": "", - "location_type": 0, - "parent_station": "", - "stop_timezone": "", - "wheelchair_boarding": 2, - "platform_code": "" - } - }, - { - "model": "feed.stop", - "pk": 17, - "fields": { - "feed": "1", - "stop_id": "bUCR_1_06", - "stop_code": "", - "stop_name": "Facultad de Ciencias Sociales", - "stop_desc": "Entre la Facultad de Ciencias Sociales (FCS) y el edificio de parqueos", - "stop_lat": 9.93813052902614, - "stop_lon": -84.04229551510366, - "stop_point": "SRID=4326;POINT (-84.04229551510366 9.938130529026141)", - "zone_id": "bUCR_1", - "stop_url": "", - "location_type": 0, - "parent_station": "bUCR_CS", - "stop_timezone": "", - "wheelchair_boarding": 1, - "platform_code": "" - } - }, - { - "model": "feed.stop", - "pk": 18, - "fields": { - "feed": "1", - "stop_id": "bUCR_1_07", - "stop_code": "", - "stop_name": "Facultad de Ingeniería", - "stop_desc": "Costado norte del nuevo edificio de la Facultad de Ingeniería (FI), al otro lado de la calle", - "stop_lat": 9.937468669419962, - "stop_lon": -84.04501822768842, - "stop_point": "SRID=4326;POINT (-84.04501822768842 9.937468669419962)", - "zone_id": "bUCR_1", - "stop_url": "", - "location_type": 0, - "parent_station": "bUCR_FI", - "stop_timezone": "", - "wheelchair_boarding": 1, - "platform_code": "" - } - }, - { - "model": "feed.stop", - "pk": 19, - "fields": { - "feed": "1", - "stop_id": "bUCR_1_08", - "stop_code": "", - "stop_name": "Laboratorio Nacional de Materiales y Modelos Estructurales (LanammeUCR)", - "stop_desc": "Junto al parqueo del Centro de Transferencia Tecnológica (CTT), diagonal al Laboratorio Nacional de Materiales y Modelos Estructurales (LANAMME), al otro lado de la calle", - "stop_lat": 9.93589305371453, - "stop_lon": -84.04546950911886, - "stop_point": "SRID=4326;POINT (-84.04546950911886 9.93589305371453)", - "zone_id": "bUCR_1", - "stop_url": "", - "location_type": 0, - "parent_station": "bUCR_LA", - "stop_timezone": "", - "wheelchair_boarding": 2, - "platform_code": "" - } - }, - { - "model": "feed.stop", - "pk": 20, - "fields": { - "feed": "1", - "stop_id": "bUCR_FI", - "stop_code": "", - "stop_name": "Facultad de Ingeniería", - "stop_desc": "En las inmediaciones del edificio de la Facultad de Ingeniería", - "stop_lat": 9.937467311441509, - "stop_lon": -84.04467644300775, - "stop_point": "SRID=4326;POINT (-84.04467644300775 9.937467311441507)", - "zone_id": "", - "stop_url": "", - "location_type": 1, - "parent_station": "", - "stop_timezone": "", - "wheelchair_boarding": 1, - "platform_code": "" - } - }, - { - "model": "feed.stop", - "pk": 21, - "fields": { - "feed": "1", - "stop_id": "bUCR_CS", - "stop_code": "", - "stop_name": "Facultad de Ciencias Sociales", - "stop_desc": "En las inmediaciones del edificio de la Facultad de Ciencias Sociales", - "stop_lat": 9.93813052902614, - "stop_lon": -84.04229551510366, - "stop_point": "SRID=4326;POINT (-84.04229551510366 9.938130529026141)", - "zone_id": "", - "stop_url": "", - "location_type": 1, - "parent_station": "", - "stop_timezone": "", - "wheelchair_boarding": 1, - "platform_code": "" - } - }, - { - "model": "feed.stop", - "pk": 22, - "fields": { - "feed": "1", - "stop_id": "bUCR_LA", - "stop_code": "", - "stop_name": "Laboratorio Nacional de Materiales y Modelos Estructurales (LanammeUCR)", - "stop_desc": "En las inmediaciones del Laboratorio Nacional de Materiales y Modelos Estructurales (LanammeUCR)", - "stop_lat": 9.935785141707278, - "stop_lon": -84.04544067497328, - "stop_point": "SRID=4326;POINT (-84.04544067497328 9.935785141707278)", - "zone_id": "", - "stop_url": "", - "location_type": 1, - "parent_station": "", - "stop_timezone": "", - "wheelchair_boarding": 1, - "platform_code": "" - } - }, - { - "model": "feed.trip", - "pk": 1, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_educacion_sin_milla_entresemana_06:10", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_sin_milla", - "geoshape": 1, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 2, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_educacion_sin_milla_entresemana_06:30", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_sin_milla", - "geoshape": 1, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 3, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_educacion_sin_milla_entresemana_07:00", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_sin_milla", - "geoshape": 1, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 4, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_educacion_sin_milla_entresemana_07:20", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_sin_milla", - "geoshape": 1, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 5, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_educacion_sin_milla_entresemana_07:50", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_sin_milla", - "geoshape": 1, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 6, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_educacion_sin_milla_entresemana_08:10", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_sin_milla", - "geoshape": 1, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 7, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_educacion_sin_milla_entresemana_08:55", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_sin_milla", - "geoshape": 1, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 8, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_educacion_sin_milla_entresemana_09:15", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_sin_milla", - "geoshape": 1, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 9, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_educacion_sin_milla_entresemana_09:45", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_sin_milla", - "geoshape": 1, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 10, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_educacion_sin_milla_entresemana_10:05", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_sin_milla", - "geoshape": 1, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 11, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_educacion_sin_milla_entresemana_10:35", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_sin_milla", - "geoshape": 1, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 12, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_educacion_sin_milla_entresemana_10:55", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_sin_milla", - "geoshape": 1, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 13, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_educacion_sin_milla_entresemana_11:15", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_sin_milla", - "geoshape": 1, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 14, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_educacion_sin_milla_entresemana_11:25", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_sin_milla", - "geoshape": 1, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 15, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_educacion_sin_milla_entresemana_11:40", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_sin_milla", - "geoshape": 1, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 16, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_educacion_sin_milla_entresemana_12:00", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_sin_milla", - "geoshape": 1, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 17, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_educacion_sin_milla_entresemana_12:25", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_sin_milla", - "geoshape": 1, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 18, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_educacion_sin_milla_entresemana_12:35", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_sin_milla", - "geoshape": 1, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 19, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_educacion_sin_milla_entresemana_13:10", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_sin_milla", - "geoshape": 1, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 20, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_educacion_sin_milla_entresemana_13:45", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_sin_milla", - "geoshape": 1, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 21, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_educacion_sin_milla_entresemana_14:10", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_sin_milla", - "geoshape": 1, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 22, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_educacion_sin_milla_entresemana_14:30", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_sin_milla", - "geoshape": 1, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 23, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_educacion_sin_milla_entresemana_14:55", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_sin_milla", - "geoshape": 1, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 24, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_educacion_sin_milla_entresemana_15:15", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_sin_milla", - "geoshape": 1, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 25, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_educacion_sin_milla_entresemana_15:55", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_sin_milla", - "geoshape": 1, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 26, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_educacion_sin_milla_entresemana_16:30", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_sin_milla", - "geoshape": 1, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 27, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_educacion_sin_milla_entresemana_16:55", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_sin_milla", - "geoshape": 1, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 28, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_educacion_sin_milla_entresemana_17:30", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_sin_milla", - "geoshape": 1, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 29, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_educacion_sin_milla_entresemana_17:55", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_sin_milla", - "geoshape": 1, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 30, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_educacion_sin_milla_entresemana_18:25", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_sin_milla", - "geoshape": 1, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 31, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_educacion_sin_milla_entresemana_18:50", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_sin_milla", - "geoshape": 1, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 32, - "fields": { - "feed": "1", - "route_id": "bUCR_L2", - "service_id": "entresemana", - "trip_id": "desde_educacion_con_milla_entresemana_19:15", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_con_milla", - "geoshape": 2, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 33, - "fields": { - "feed": "1", - "route_id": "bUCR_L2", - "service_id": "entresemana", - "trip_id": "desde_educacion_con_milla_entresemana_20:10", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_con_milla", - "geoshape": 2, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 34, - "fields": { - "feed": "1", - "route_id": "bUCR_L2", - "service_id": "entresemana", - "trip_id": "desde_educacion_con_milla_entresemana_20:50", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_con_milla", - "geoshape": 2, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 35, - "fields": { - "feed": "1", - "route_id": "bUCR_L2", - "service_id": "entresemana", - "trip_id": "desde_educacion_con_milla_entresemana_21:00", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_con_milla", - "geoshape": 2, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 36, - "fields": { - "feed": "1", - "route_id": "bUCR_L2", - "service_id": "entresemana", - "trip_id": "desde_educacion_con_milla_entresemana_21:35", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_con_milla", - "geoshape": 2, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 37, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_artes_sin_milla_entresemana_06:20", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_artes_sin_milla", - "geoshape": 3, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 38, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_artes_sin_milla_entresemana_06:40", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_artes_sin_milla", - "geoshape": 3, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 39, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_artes_sin_milla_entresemana_07:10", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_artes_sin_milla", - "geoshape": 3, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 40, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_artes_sin_milla_entresemana_07:30", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_artes_sin_milla", - "geoshape": 3, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 41, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_artes_sin_milla_entresemana_08:00", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_artes_sin_milla", - "geoshape": 3, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 42, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_artes_sin_milla_entresemana_08:35", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_artes_sin_milla", - "geoshape": 3, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 43, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_artes_sin_milla_entresemana_09:05", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_artes_sin_milla", - "geoshape": 3, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 44, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_artes_sin_milla_entresemana_09:25", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_artes_sin_milla", - "geoshape": 3, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 45, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_artes_sin_milla_entresemana_09:55", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_artes_sin_milla", - "geoshape": 3, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 46, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_artes_sin_milla_entresemana_10:15", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_artes_sin_milla", - "geoshape": 3, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 47, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_artes_sin_milla_entresemana_10:45", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_artes_sin_milla", - "geoshape": 3, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 48, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_artes_sin_milla_entresemana_11:05", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_artes_sin_milla", - "geoshape": 3, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 49, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_artes_sin_milla_entresemana_11:35", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_artes_sin_milla", - "geoshape": 3, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 50, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_artes_sin_milla_entresemana_11:50", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_artes_sin_milla", - "geoshape": 3, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 51, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_artes_sin_milla_entresemana_12:10", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_artes_sin_milla", - "geoshape": 3, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 52, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_artes_sin_milla_entresemana_12:30", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_artes_sin_milla", - "geoshape": 3, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 53, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_artes_sin_milla_entresemana_12:45", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_artes_sin_milla", - "geoshape": 3, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 54, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_artes_sin_milla_entresemana_13:20", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_artes_sin_milla", - "geoshape": 3, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 55, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_artes_sin_milla_entresemana_14:00", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_artes_sin_milla", - "geoshape": 3, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 56, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_artes_sin_milla_entresemana_14:20", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_artes_sin_milla", - "geoshape": 3, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 57, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_artes_sin_milla_entresemana_14:45", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_artes_sin_milla", - "geoshape": 3, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 58, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_artes_sin_milla_entresemana_15:05", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_artes_sin_milla", - "geoshape": 3, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 59, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_artes_sin_milla_entresemana_15:30", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_artes_sin_milla", - "geoshape": 3, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 60, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_artes_sin_milla_entresemana_16:05", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_artes_sin_milla", - "geoshape": 3, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 61, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_artes_sin_milla_entresemana_16:40", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_artes_sin_milla", - "geoshape": 3, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 62, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_artes_sin_milla_entresemana_17:05", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_artes_sin_milla", - "geoshape": 3, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 63, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_artes_sin_milla_entresemana_17:40", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_artes_sin_milla", - "geoshape": 3, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 64, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_artes_sin_milla_entresemana_18:05", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_artes_sin_milla", - "geoshape": 3, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 65, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_artes_sin_milla_entresemana_18:35", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_artes_sin_milla", - "geoshape": 3, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 66, - "fields": { - "feed": "1", - "route_id": "bUCR_L2", - "service_id": "entresemana", - "trip_id": "desde_artes_con_milla_entresemana_19:00", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_artes_con_milla", - "geoshape": 4, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 67, - "fields": { - "feed": "1", - "route_id": "bUCR_L2", - "service_id": "entresemana", - "trip_id": "desde_artes_con_milla_entresemana_19:35", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_artes_con_milla", - "geoshape": 4, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 68, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_artes_entresemana_06:20", - "trip_headsign": "Artes Plásticas", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_artes", - "geoshape": 5, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 69, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_educacion_entresemana_06:40", - "trip_headsign": "Educación", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_educacion", - "geoshape": 6, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 70, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_artes_entresemana_06:50", - "trip_headsign": "Artes Plásticas", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_artes", - "geoshape": 5, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 71, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_educacion_entresemana_07:00", - "trip_headsign": "Educación", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_educacion", - "geoshape": 6, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 72, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_artes_entresemana_07:10", - "trip_headsign": "Artes Plásticas", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_artes", - "geoshape": 5, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 73, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_educacion_entresemana_07:30", - "trip_headsign": "Educación", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_educacion", - "geoshape": 6, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 74, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_artes_entresemana_07:40", - "trip_headsign": "Artes Plásticas", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_artes", - "geoshape": 5, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 75, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_educacion_entresemana_07:50", - "trip_headsign": "Educación", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_educacion", - "geoshape": 6, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 76, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_artes_entresemana_08:00", - "trip_headsign": "Artes Plásticas", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_artes", - "geoshape": 5, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 77, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_educacion_entresemana_08:35", - "trip_headsign": "Educación", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_educacion", - "geoshape": 6, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 78, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_artes_entresemana_08:45", - "trip_headsign": "Artes Plásticas", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_artes", - "geoshape": 5, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 79, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_educacion_entresemana_08:55", - "trip_headsign": "Educación", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_educacion", - "geoshape": 6, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 80, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_artes_entresemana_09:05", - "trip_headsign": "Artes Plásticas", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_artes", - "geoshape": 5, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 81, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_educacion_entresemana_09:25", - "trip_headsign": "Educación", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_educacion", - "geoshape": 6, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 82, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_artes_entresemana_09:35", - "trip_headsign": "Artes Plásticas", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_artes", - "geoshape": 5, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 83, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_educacion_entresemana_09:45", - "trip_headsign": "Educación", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_educacion", - "geoshape": 6, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 84, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_artes_entresemana_09:55", - "trip_headsign": "Artes Plásticas", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_artes", - "geoshape": 5, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 85, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_educacion_entresemana_10:15", - "trip_headsign": "Educación", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_educacion", - "geoshape": 6, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 86, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_artes_entresemana_10:25", - "trip_headsign": "Artes Plásticas", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_artes", - "geoshape": 5, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 87, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_educacion_entresemana_10:35", - "trip_headsign": "Educación", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_educacion", - "geoshape": 6, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 88, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_artes_entresemana_10:45", - "trip_headsign": "Artes Plásticas", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_artes", - "geoshape": 5, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 89, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_educacion_entresemana_11:05", - "trip_headsign": "Educación", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_educacion", - "geoshape": 6, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 90, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_artes_entresemana_11:15", - "trip_headsign": "Artes Plásticas", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_artes", - "geoshape": 5, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 91, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_educacion_entresemana_11:20", - "trip_headsign": "Educación", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_educacion", - "geoshape": 6, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 92, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_artes_entresemana_11:30", - "trip_headsign": "Artes Plásticas", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_artes", - "geoshape": 5, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 93, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_educacion_entresemana_11:40", - "trip_headsign": "Educación", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_educacion", - "geoshape": 6, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 94, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_artes_entresemana_11:50", - "trip_headsign": "Artes Plásticas", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_artes", - "geoshape": 5, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 95, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_educacion_entresemana_12:05", - "trip_headsign": "Educación", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_educacion", - "geoshape": 6, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 96, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_artes_entresemana_12:10", - "trip_headsign": "Artes Plásticas", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_artes", - "geoshape": 5, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 97, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_educacion_entresemana_12:15", - "trip_headsign": "Educación", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_educacion", - "geoshape": 6, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 98, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_artes_entresemana_12:25", - "trip_headsign": "Artes Plásticas", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_artes", - "geoshape": 5, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 99, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_educacion_entresemana_12:50", - "trip_headsign": "Educación", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_educacion", - "geoshape": 6, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 100, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_artes_entresemana_13:00", - "trip_headsign": "Artes Plásticas", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_artes", - "geoshape": 5, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 101, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_educacion_entresemana_13:25", - "trip_headsign": "Educación", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_educacion", - "geoshape": 6, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 102, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_artes_entresemana_13:40", - "trip_headsign": "Artes Plásticas", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_artes", - "geoshape": 5, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 103, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_educacion_entresemana_13:50", - "trip_headsign": "Educación", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_educacion", - "geoshape": 6, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 104, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_artes_entresemana_14:00", - "trip_headsign": "Artes Plásticas", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_artes", - "geoshape": 5, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 105, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_educacion_entresemana_14:10", - "trip_headsign": "Educación", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_educacion", - "geoshape": 6, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 106, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_artes_entresemana_14:25", - "trip_headsign": "Artes Plásticas", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_artes", - "geoshape": 5, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 107, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_educacion_entresemana_14:35", - "trip_headsign": "Educación", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_educacion", - "geoshape": 6, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 108, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_artes_entresemana_14:45", - "trip_headsign": "Artes Plásticas", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_artes", - "geoshape": 5, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 109, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_educacion_entresemana_14:55", - "trip_headsign": "Educación", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_educacion", - "geoshape": 6, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 110, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_artes_entresemana_15:10", - "trip_headsign": "Artes Plásticas", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_artes", - "geoshape": 5, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 111, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_educacion_entresemana_15:20", - "trip_headsign": "Educación", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_educacion", - "geoshape": 6, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 112, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_artes_entresemana_15:30", - "trip_headsign": "Artes Plásticas", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_artes", - "geoshape": 5, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 113, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_educacion_entresemana_16:05", - "trip_headsign": "Educación", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_educacion", - "geoshape": 6, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 114, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_artes_entresemana_16:15", - "trip_headsign": "Artes Plásticas", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_artes", - "geoshape": 5, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 115, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_educacion_entresemana_16:30", - "trip_headsign": "Educación", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_educacion", - "geoshape": 6, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 116, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_artes_entresemana_16:40", - "trip_headsign": "Artes Plásticas", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_artes", - "geoshape": 5, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 117, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_educacion_entresemana_17:05", - "trip_headsign": "Educación", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_educacion", - "geoshape": 6, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 118, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_artes_entresemana_17:15", - "trip_headsign": "Artes Plásticas", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_artes", - "geoshape": 5, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 119, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_educacion_entresemana_17:30", - "trip_headsign": "Educación", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_educacion", - "geoshape": 6, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 120, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_artes_entresemana_17:40", - "trip_headsign": "Artes Plásticas", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_artes", - "geoshape": 5, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 121, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_educacion_entresemana_18:05", - "trip_headsign": "Educación", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_educacion", - "geoshape": 6, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 122, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_artes_entresemana_18:15", - "trip_headsign": "Artes Plásticas", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_artes", - "geoshape": 5, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 123, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_educacion_entresemana_18:30", - "trip_headsign": "Educación", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_educacion", - "geoshape": 6, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 124, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_artes_entresemana_18:40", - "trip_headsign": "Artes Plásticas", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_artes", - "geoshape": 5, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 125, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_educacion_entresemana_18:55", - "trip_headsign": "Educación", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_educacion", - "geoshape": 6, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 126, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_educacion_entresemana_19:15", - "trip_headsign": "Educación", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_educacion", - "geoshape": 6, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 127, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_artes_entresemana_19:50", - "trip_headsign": "Artes Plásticas", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_artes", - "geoshape": 5, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 128, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_educacion_entresemana_20:30", - "trip_headsign": "Educación", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_educacion", - "geoshape": 6, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 129, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_educacion_entresemana_20:40", - "trip_headsign": "Educación", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_educacion", - "geoshape": 6, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.trip", - "pk": 130, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_educacion_entresemana_21:15", - "trip_headsign": "Educación", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_educacion", - "geoshape": 6, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "feed.stoptime", - "pk": 1, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_06:10", - "arrival_time": "06:10:00", - "departure_time": "06:10:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 2, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_06:10", - "arrival_time": "06:18:28.582000", - "departure_time": "06:18:28.582000", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.554, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 3, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_06:10", - "arrival_time": "06:19:45.164000", - "departure_time": "06:19:45.164000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.788, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 4, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_06:10", - "arrival_time": "06:21:14.182000", - "departure_time": "06:21:14.182000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.06, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 5, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_06:10", - "arrival_time": "06:24:18.764000", - "departure_time": "06:24:18.764000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.624, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 6, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_06:10", - "arrival_time": "06:25:23.564000", - "departure_time": "06:25:23.564000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.822, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 7, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_06:10", - "arrival_time": "06:28:20.291000", - "departure_time": "06:28:20.291000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.362, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 8, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_06:10", - "arrival_time": "06:30:34.145000", - "departure_time": "06:30:34.145000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.771, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 9, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_06:30", - "arrival_time": "06:30:00", - "departure_time": "06:30:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 10, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_06:30", - "arrival_time": "06:38:28.582000", - "departure_time": "06:38:28.582000", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.554, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 11, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_06:30", - "arrival_time": "06:39:45.164000", - "departure_time": "06:39:45.164000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.788, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 12, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_06:30", - "arrival_time": "06:41:14.182000", - "departure_time": "06:41:14.182000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.06, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 13, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_06:30", - "arrival_time": "06:44:18.764000", - "departure_time": "06:44:18.764000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.624, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 14, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_06:30", - "arrival_time": "06:45:23.564000", - "departure_time": "06:45:23.564000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.822, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 15, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_06:30", - "arrival_time": "06:48:20.291000", - "departure_time": "06:48:20.291000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.362, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 16, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_06:30", - "arrival_time": "06:50:34.145000", - "departure_time": "06:50:34.145000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.771, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 17, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_07:00", - "arrival_time": "07:00:00", - "departure_time": "07:00:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 18, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_07:00", - "arrival_time": "07:08:28.582000", - "departure_time": "07:08:28.582000", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.554, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 19, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_07:00", - "arrival_time": "07:09:45.164000", - "departure_time": "07:09:45.164000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.788, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 20, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_07:00", - "arrival_time": "07:11:14.182000", - "departure_time": "07:11:14.182000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.06, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 21, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_07:00", - "arrival_time": "07:14:18.764000", - "departure_time": "07:14:18.764000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.624, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 22, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_07:00", - "arrival_time": "07:15:23.564000", - "departure_time": "07:15:23.564000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.822, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 23, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_07:00", - "arrival_time": "07:18:20.291000", - "departure_time": "07:18:20.291000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.362, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 24, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_07:00", - "arrival_time": "07:20:34.145000", - "departure_time": "07:20:34.145000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.771, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 25, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_07:20", - "arrival_time": "07:20:00", - "departure_time": "07:20:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 26, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_07:20", - "arrival_time": "07:28:28.582000", - "departure_time": "07:28:28.582000", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.554, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 27, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_07:20", - "arrival_time": "07:29:45.164000", - "departure_time": "07:29:45.164000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.788, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 28, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_07:20", - "arrival_time": "07:31:14.182000", - "departure_time": "07:31:14.182000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.06, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 29, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_07:20", - "arrival_time": "07:34:18.764000", - "departure_time": "07:34:18.764000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.624, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 30, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_07:20", - "arrival_time": "07:35:23.564000", - "departure_time": "07:35:23.564000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.822, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 31, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_07:20", - "arrival_time": "07:38:20.291000", - "departure_time": "07:38:20.291000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.362, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 32, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_07:20", - "arrival_time": "07:40:34.145000", - "departure_time": "07:40:34.145000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.771, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 33, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_07:50", - "arrival_time": "07:50:00", - "departure_time": "07:50:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 34, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_07:50", - "arrival_time": "07:58:28.582000", - "departure_time": "07:58:28.582000", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.554, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 35, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_07:50", - "arrival_time": "07:59:45.164000", - "departure_time": "07:59:45.164000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.788, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 36, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_07:50", - "arrival_time": "08:01:14.182000", - "departure_time": "08:01:14.182000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.06, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 37, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_07:50", - "arrival_time": "08:04:18.764000", - "departure_time": "08:04:18.764000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.624, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 38, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_07:50", - "arrival_time": "08:05:23.564000", - "departure_time": "08:05:23.564000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.822, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 39, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_07:50", - "arrival_time": "08:08:20.291000", - "departure_time": "08:08:20.291000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.362, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 40, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_07:50", - "arrival_time": "08:10:34.145000", - "departure_time": "08:10:34.145000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.771, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 41, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_08:10", - "arrival_time": "08:10:00", - "departure_time": "08:10:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 42, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_08:10", - "arrival_time": "08:18:28.582000", - "departure_time": "08:18:28.582000", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.554, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 43, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_08:10", - "arrival_time": "08:19:45.164000", - "departure_time": "08:19:45.164000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.788, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 44, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_08:10", - "arrival_time": "08:21:14.182000", - "departure_time": "08:21:14.182000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.06, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 45, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_08:10", - "arrival_time": "08:24:18.764000", - "departure_time": "08:24:18.764000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.624, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 46, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_08:10", - "arrival_time": "08:25:23.564000", - "departure_time": "08:25:23.564000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.822, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 47, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_08:10", - "arrival_time": "08:28:20.291000", - "departure_time": "08:28:20.291000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.362, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 48, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_08:10", - "arrival_time": "08:30:34.145000", - "departure_time": "08:30:34.145000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.771, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 49, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_08:55", - "arrival_time": "08:55:00", - "departure_time": "08:55:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 50, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_08:55", - "arrival_time": "09:03:28.582000", - "departure_time": "09:03:28.582000", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.554, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 51, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_08:55", - "arrival_time": "09:04:45.164000", - "departure_time": "09:04:45.164000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.788, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 52, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_08:55", - "arrival_time": "09:06:14.182000", - "departure_time": "09:06:14.182000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.06, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 53, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_08:55", - "arrival_time": "09:09:18.764000", - "departure_time": "09:09:18.764000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.624, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 54, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_08:55", - "arrival_time": "09:10:23.564000", - "departure_time": "09:10:23.564000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.822, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 55, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_08:55", - "arrival_time": "09:13:20.291000", - "departure_time": "09:13:20.291000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.362, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 56, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_08:55", - "arrival_time": "09:15:34.145000", - "departure_time": "09:15:34.145000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.771, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 57, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_09:15", - "arrival_time": "09:15:00", - "departure_time": "09:15:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 58, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_09:15", - "arrival_time": "09:23:28.582000", - "departure_time": "09:23:28.582000", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.554, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 59, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_09:15", - "arrival_time": "09:24:45.164000", - "departure_time": "09:24:45.164000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.788, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 60, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_09:15", - "arrival_time": "09:26:14.182000", - "departure_time": "09:26:14.182000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.06, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 61, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_09:15", - "arrival_time": "09:29:18.764000", - "departure_time": "09:29:18.764000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.624, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 62, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_09:15", - "arrival_time": "09:30:23.564000", - "departure_time": "09:30:23.564000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.822, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 63, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_09:15", - "arrival_time": "09:33:20.291000", - "departure_time": "09:33:20.291000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.362, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 64, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_09:15", - "arrival_time": "09:35:34.145000", - "departure_time": "09:35:34.145000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.771, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 65, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_09:45", - "arrival_time": "09:45:00", - "departure_time": "09:45:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 66, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_09:45", - "arrival_time": "09:53:28.582000", - "departure_time": "09:53:28.582000", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.554, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 67, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_09:45", - "arrival_time": "09:54:45.164000", - "departure_time": "09:54:45.164000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.788, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 68, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_09:45", - "arrival_time": "09:56:14.182000", - "departure_time": "09:56:14.182000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.06, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 69, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_09:45", - "arrival_time": "09:59:18.764000", - "departure_time": "09:59:18.764000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.624, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 70, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_09:45", - "arrival_time": "10:00:23.564000", - "departure_time": "10:00:23.564000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.822, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 71, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_09:45", - "arrival_time": "10:03:20.291000", - "departure_time": "10:03:20.291000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.362, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 72, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_09:45", - "arrival_time": "10:05:34.145000", - "departure_time": "10:05:34.145000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.771, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 73, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_10:05", - "arrival_time": "10:05:00", - "departure_time": "10:05:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 74, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_10:05", - "arrival_time": "10:13:28.582000", - "departure_time": "10:13:28.582000", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.554, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 75, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_10:05", - "arrival_time": "10:14:45.164000", - "departure_time": "10:14:45.164000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.788, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 76, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_10:05", - "arrival_time": "10:16:14.182000", - "departure_time": "10:16:14.182000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.06, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 77, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_10:05", - "arrival_time": "10:19:18.764000", - "departure_time": "10:19:18.764000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.624, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 78, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_10:05", - "arrival_time": "10:20:23.564000", - "departure_time": "10:20:23.564000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.822, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 79, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_10:05", - "arrival_time": "10:23:20.291000", - "departure_time": "10:23:20.291000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.362, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 80, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_10:05", - "arrival_time": "10:25:34.145000", - "departure_time": "10:25:34.145000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.771, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 81, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_10:35", - "arrival_time": "10:35:00", - "departure_time": "10:35:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 82, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_10:35", - "arrival_time": "10:43:28.582000", - "departure_time": "10:43:28.582000", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.554, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 83, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_10:35", - "arrival_time": "10:44:45.164000", - "departure_time": "10:44:45.164000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.788, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 84, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_10:35", - "arrival_time": "10:46:14.182000", - "departure_time": "10:46:14.182000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.06, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 85, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_10:35", - "arrival_time": "10:49:18.764000", - "departure_time": "10:49:18.764000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.624, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 86, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_10:35", - "arrival_time": "10:50:23.564000", - "departure_time": "10:50:23.564000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.822, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 87, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_10:35", - "arrival_time": "10:53:20.291000", - "departure_time": "10:53:20.291000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.362, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 88, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_10:35", - "arrival_time": "10:55:34.145000", - "departure_time": "10:55:34.145000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.771, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 89, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_10:55", - "arrival_time": "10:55:00", - "departure_time": "10:55:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 90, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_10:55", - "arrival_time": "11:03:28.582000", - "departure_time": "11:03:28.582000", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.554, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 91, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_10:55", - "arrival_time": "11:04:45.164000", - "departure_time": "11:04:45.164000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.788, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 92, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_10:55", - "arrival_time": "11:06:14.182000", - "departure_time": "11:06:14.182000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.06, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 93, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_10:55", - "arrival_time": "11:09:18.764000", - "departure_time": "11:09:18.764000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.624, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 94, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_10:55", - "arrival_time": "11:10:23.564000", - "departure_time": "11:10:23.564000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.822, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 95, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_10:55", - "arrival_time": "11:13:20.291000", - "departure_time": "11:13:20.291000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.362, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 96, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_10:55", - "arrival_time": "11:15:34.145000", - "departure_time": "11:15:34.145000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.771, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 97, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_11:15", - "arrival_time": "11:15:00", - "departure_time": "11:15:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 98, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_11:15", - "arrival_time": "11:23:28.582000", - "departure_time": "11:23:28.582000", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.554, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 99, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_11:15", - "arrival_time": "11:24:45.164000", - "departure_time": "11:24:45.164000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.788, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 100, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_11:15", - "arrival_time": "11:26:14.182000", - "departure_time": "11:26:14.182000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.06, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 101, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_11:15", - "arrival_time": "11:29:18.764000", - "departure_time": "11:29:18.764000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.624, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 102, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_11:15", - "arrival_time": "11:30:23.564000", - "departure_time": "11:30:23.564000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.822, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 103, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_11:15", - "arrival_time": "11:33:20.291000", - "departure_time": "11:33:20.291000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.362, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 104, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_11:15", - "arrival_time": "11:35:34.145000", - "departure_time": "11:35:34.145000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.771, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 105, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_11:25", - "arrival_time": "11:25:00", - "departure_time": "11:25:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 106, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_11:25", - "arrival_time": "11:33:28.582000", - "departure_time": "11:33:28.582000", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.554, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 107, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_11:25", - "arrival_time": "11:34:45.164000", - "departure_time": "11:34:45.164000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.788, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 108, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_11:25", - "arrival_time": "11:36:14.182000", - "departure_time": "11:36:14.182000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.06, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 109, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_11:25", - "arrival_time": "11:39:18.764000", - "departure_time": "11:39:18.764000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.624, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 110, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_11:25", - "arrival_time": "11:40:23.564000", - "departure_time": "11:40:23.564000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.822, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 111, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_11:25", - "arrival_time": "11:43:20.291000", - "departure_time": "11:43:20.291000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.362, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 112, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_11:25", - "arrival_time": "11:45:34.145000", - "departure_time": "11:45:34.145000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.771, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 113, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_11:40", - "arrival_time": "11:40:00", - "departure_time": "11:40:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 114, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_11:40", - "arrival_time": "11:48:28.582000", - "departure_time": "11:48:28.582000", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.554, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 115, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_11:40", - "arrival_time": "11:49:45.164000", - "departure_time": "11:49:45.164000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.788, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 116, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_11:40", - "arrival_time": "11:51:14.182000", - "departure_time": "11:51:14.182000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.06, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 117, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_11:40", - "arrival_time": "11:54:18.764000", - "departure_time": "11:54:18.764000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.624, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 118, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_11:40", - "arrival_time": "11:55:23.564000", - "departure_time": "11:55:23.564000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.822, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 119, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_11:40", - "arrival_time": "11:58:20.291000", - "departure_time": "11:58:20.291000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.362, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 120, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_11:40", - "arrival_time": "12:00:34.145000", - "departure_time": "12:00:34.145000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.771, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 121, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_12:00", - "arrival_time": "12:00:00", - "departure_time": "12:00:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 122, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_12:00", - "arrival_time": "12:08:28.582000", - "departure_time": "12:08:28.582000", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.554, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 123, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_12:00", - "arrival_time": "12:09:45.164000", - "departure_time": "12:09:45.164000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.788, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 124, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_12:00", - "arrival_time": "12:11:14.182000", - "departure_time": "12:11:14.182000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.06, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 125, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_12:00", - "arrival_time": "12:14:18.764000", - "departure_time": "12:14:18.764000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.624, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 126, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_12:00", - "arrival_time": "12:15:23.564000", - "departure_time": "12:15:23.564000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.822, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 127, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_12:00", - "arrival_time": "12:18:20.291000", - "departure_time": "12:18:20.291000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.362, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 128, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_12:00", - "arrival_time": "12:20:34.145000", - "departure_time": "12:20:34.145000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.771, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 129, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_12:25", - "arrival_time": "12:25:00", - "departure_time": "12:25:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 130, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_12:25", - "arrival_time": "12:33:28.582000", - "departure_time": "12:33:28.582000", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.554, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 131, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_12:25", - "arrival_time": "12:34:45.164000", - "departure_time": "12:34:45.164000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.788, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 132, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_12:25", - "arrival_time": "12:36:14.182000", - "departure_time": "12:36:14.182000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.06, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 133, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_12:25", - "arrival_time": "12:39:18.764000", - "departure_time": "12:39:18.764000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.624, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 134, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_12:25", - "arrival_time": "12:40:23.564000", - "departure_time": "12:40:23.564000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.822, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 135, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_12:25", - "arrival_time": "12:43:20.291000", - "departure_time": "12:43:20.291000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.362, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 136, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_12:25", - "arrival_time": "12:45:34.145000", - "departure_time": "12:45:34.145000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.771, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 137, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_12:35", - "arrival_time": "12:35:00", - "departure_time": "12:35:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 138, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_12:35", - "arrival_time": "12:43:28.582000", - "departure_time": "12:43:28.582000", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.554, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 139, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_12:35", - "arrival_time": "12:44:45.164000", - "departure_time": "12:44:45.164000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.788, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 140, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_12:35", - "arrival_time": "12:46:14.182000", - "departure_time": "12:46:14.182000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.06, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 141, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_12:35", - "arrival_time": "12:49:18.764000", - "departure_time": "12:49:18.764000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.624, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 142, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_12:35", - "arrival_time": "12:50:23.564000", - "departure_time": "12:50:23.564000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.822, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 143, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_12:35", - "arrival_time": "12:53:20.291000", - "departure_time": "12:53:20.291000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.362, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 144, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_12:35", - "arrival_time": "12:55:34.145000", - "departure_time": "12:55:34.145000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.771, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 145, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_13:10", - "arrival_time": "13:10:00", - "departure_time": "13:10:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 146, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_13:10", - "arrival_time": "13:18:28.582000", - "departure_time": "13:18:28.582000", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.554, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 147, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_13:10", - "arrival_time": "13:19:45.164000", - "departure_time": "13:19:45.164000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.788, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 148, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_13:10", - "arrival_time": "13:21:14.182000", - "departure_time": "13:21:14.182000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.06, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 149, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_13:10", - "arrival_time": "13:24:18.764000", - "departure_time": "13:24:18.764000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.624, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 150, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_13:10", - "arrival_time": "13:25:23.564000", - "departure_time": "13:25:23.564000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.822, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 151, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_13:10", - "arrival_time": "13:28:20.291000", - "departure_time": "13:28:20.291000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.362, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 152, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_13:10", - "arrival_time": "13:30:34.145000", - "departure_time": "13:30:34.145000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.771, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 153, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_13:45", - "arrival_time": "13:45:00", - "departure_time": "13:45:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 154, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_13:45", - "arrival_time": "13:53:28.582000", - "departure_time": "13:53:28.582000", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.554, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 155, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_13:45", - "arrival_time": "13:54:45.164000", - "departure_time": "13:54:45.164000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.788, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 156, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_13:45", - "arrival_time": "13:56:14.182000", - "departure_time": "13:56:14.182000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.06, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 157, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_13:45", - "arrival_time": "13:59:18.764000", - "departure_time": "13:59:18.764000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.624, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 158, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_13:45", - "arrival_time": "14:00:23.564000", - "departure_time": "14:00:23.564000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.822, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 159, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_13:45", - "arrival_time": "14:03:20.291000", - "departure_time": "14:03:20.291000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.362, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 160, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_13:45", - "arrival_time": "14:05:34.145000", - "departure_time": "14:05:34.145000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.771, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 161, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_14:10", - "arrival_time": "14:10:00", - "departure_time": "14:10:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 162, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_14:10", - "arrival_time": "14:18:28.582000", - "departure_time": "14:18:28.582000", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.554, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 163, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_14:10", - "arrival_time": "14:19:45.164000", - "departure_time": "14:19:45.164000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.788, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 164, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_14:10", - "arrival_time": "14:21:14.182000", - "departure_time": "14:21:14.182000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.06, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 165, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_14:10", - "arrival_time": "14:24:18.764000", - "departure_time": "14:24:18.764000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.624, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 166, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_14:10", - "arrival_time": "14:25:23.564000", - "departure_time": "14:25:23.564000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.822, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 167, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_14:10", - "arrival_time": "14:28:20.291000", - "departure_time": "14:28:20.291000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.362, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 168, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_14:10", - "arrival_time": "14:30:34.145000", - "departure_time": "14:30:34.145000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.771, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 169, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_14:30", - "arrival_time": "14:30:00", - "departure_time": "14:30:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 170, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_14:30", - "arrival_time": "14:38:28.582000", - "departure_time": "14:38:28.582000", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.554, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 171, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_14:30", - "arrival_time": "14:39:45.164000", - "departure_time": "14:39:45.164000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.788, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 172, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_14:30", - "arrival_time": "14:41:14.182000", - "departure_time": "14:41:14.182000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.06, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 173, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_14:30", - "arrival_time": "14:44:18.764000", - "departure_time": "14:44:18.764000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.624, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 174, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_14:30", - "arrival_time": "14:45:23.564000", - "departure_time": "14:45:23.564000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.822, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 175, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_14:30", - "arrival_time": "14:48:20.291000", - "departure_time": "14:48:20.291000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.362, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 176, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_14:30", - "arrival_time": "14:50:34.145000", - "departure_time": "14:50:34.145000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.771, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 177, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_14:55", - "arrival_time": "14:55:00", - "departure_time": "14:55:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 178, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_14:55", - "arrival_time": "15:03:28.582000", - "departure_time": "15:03:28.582000", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.554, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 179, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_14:55", - "arrival_time": "15:04:45.164000", - "departure_time": "15:04:45.164000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.788, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 180, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_14:55", - "arrival_time": "15:06:14.182000", - "departure_time": "15:06:14.182000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.06, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 181, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_14:55", - "arrival_time": "15:09:18.764000", - "departure_time": "15:09:18.764000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.624, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 182, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_14:55", - "arrival_time": "15:10:23.564000", - "departure_time": "15:10:23.564000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.822, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 183, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_14:55", - "arrival_time": "15:13:20.291000", - "departure_time": "15:13:20.291000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.362, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 184, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_14:55", - "arrival_time": "15:15:34.145000", - "departure_time": "15:15:34.145000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.771, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 185, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_15:15", - "arrival_time": "15:15:00", - "departure_time": "15:15:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 186, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_15:15", - "arrival_time": "15:23:28.582000", - "departure_time": "15:23:28.582000", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.554, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 187, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_15:15", - "arrival_time": "15:24:45.164000", - "departure_time": "15:24:45.164000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.788, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 188, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_15:15", - "arrival_time": "15:26:14.182000", - "departure_time": "15:26:14.182000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.06, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 189, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_15:15", - "arrival_time": "15:29:18.764000", - "departure_time": "15:29:18.764000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.624, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 190, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_15:15", - "arrival_time": "15:30:23.564000", - "departure_time": "15:30:23.564000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.822, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 191, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_15:15", - "arrival_time": "15:33:20.291000", - "departure_time": "15:33:20.291000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.362, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 192, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_15:15", - "arrival_time": "15:35:34.145000", - "departure_time": "15:35:34.145000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.771, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 193, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_15:55", - "arrival_time": "15:55:00", - "departure_time": "15:55:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 194, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_15:55", - "arrival_time": "16:03:28.582000", - "departure_time": "16:03:28.582000", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.554, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 195, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_15:55", - "arrival_time": "16:04:45.164000", - "departure_time": "16:04:45.164000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.788, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 196, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_15:55", - "arrival_time": "16:06:14.182000", - "departure_time": "16:06:14.182000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.06, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 197, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_15:55", - "arrival_time": "16:09:18.764000", - "departure_time": "16:09:18.764000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.624, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 198, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_15:55", - "arrival_time": "16:10:23.564000", - "departure_time": "16:10:23.564000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.822, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 199, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_15:55", - "arrival_time": "16:13:20.291000", - "departure_time": "16:13:20.291000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.362, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 200, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_15:55", - "arrival_time": "16:15:34.145000", - "departure_time": "16:15:34.145000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.771, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 201, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_16:30", - "arrival_time": "16:30:00", - "departure_time": "16:30:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 202, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_16:30", - "arrival_time": "16:38:28.582000", - "departure_time": "16:38:28.582000", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.554, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 203, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_16:30", - "arrival_time": "16:39:45.164000", - "departure_time": "16:39:45.164000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.788, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 204, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_16:30", - "arrival_time": "16:41:14.182000", - "departure_time": "16:41:14.182000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.06, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 205, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_16:30", - "arrival_time": "16:44:18.764000", - "departure_time": "16:44:18.764000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.624, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 206, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_16:30", - "arrival_time": "16:45:23.564000", - "departure_time": "16:45:23.564000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.822, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 207, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_16:30", - "arrival_time": "16:48:20.291000", - "departure_time": "16:48:20.291000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.362, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 208, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_16:30", - "arrival_time": "16:50:34.145000", - "departure_time": "16:50:34.145000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.771, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 209, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_16:55", - "arrival_time": "16:55:00", - "departure_time": "16:55:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 210, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_16:55", - "arrival_time": "17:03:28.582000", - "departure_time": "17:03:28.582000", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.554, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 211, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_16:55", - "arrival_time": "17:04:45.164000", - "departure_time": "17:04:45.164000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.788, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 212, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_16:55", - "arrival_time": "17:06:14.182000", - "departure_time": "17:06:14.182000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.06, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 213, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_16:55", - "arrival_time": "17:09:18.764000", - "departure_time": "17:09:18.764000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.624, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 214, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_16:55", - "arrival_time": "17:10:23.564000", - "departure_time": "17:10:23.564000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.822, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 215, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_16:55", - "arrival_time": "17:13:20.291000", - "departure_time": "17:13:20.291000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.362, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 216, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_16:55", - "arrival_time": "17:15:34.145000", - "departure_time": "17:15:34.145000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.771, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 217, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_17:30", - "arrival_time": "17:30:00", - "departure_time": "17:30:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 218, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_17:30", - "arrival_time": "17:38:28.582000", - "departure_time": "17:38:28.582000", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.554, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 219, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_17:30", - "arrival_time": "17:39:45.164000", - "departure_time": "17:39:45.164000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.788, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 220, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_17:30", - "arrival_time": "17:41:14.182000", - "departure_time": "17:41:14.182000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.06, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 221, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_17:30", - "arrival_time": "17:44:18.764000", - "departure_time": "17:44:18.764000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.624, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 222, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_17:30", - "arrival_time": "17:45:23.564000", - "departure_time": "17:45:23.564000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.822, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 223, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_17:30", - "arrival_time": "17:48:20.291000", - "departure_time": "17:48:20.291000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.362, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 224, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_17:30", - "arrival_time": "17:50:34.145000", - "departure_time": "17:50:34.145000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.771, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 225, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_17:55", - "arrival_time": "17:55:00", - "departure_time": "17:55:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 226, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_17:55", - "arrival_time": "18:03:28.582000", - "departure_time": "18:03:28.582000", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.554, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 227, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_17:55", - "arrival_time": "18:04:45.164000", - "departure_time": "18:04:45.164000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.788, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 228, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_17:55", - "arrival_time": "18:06:14.182000", - "departure_time": "18:06:14.182000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.06, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 229, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_17:55", - "arrival_time": "18:09:18.764000", - "departure_time": "18:09:18.764000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.624, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 230, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_17:55", - "arrival_time": "18:10:23.564000", - "departure_time": "18:10:23.564000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.822, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 231, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_17:55", - "arrival_time": "18:13:20.291000", - "departure_time": "18:13:20.291000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.362, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 232, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_17:55", - "arrival_time": "18:15:34.145000", - "departure_time": "18:15:34.145000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.771, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 233, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_18:25", - "arrival_time": "18:25:00", - "departure_time": "18:25:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 234, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_18:25", - "arrival_time": "18:33:28.582000", - "departure_time": "18:33:28.582000", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.554, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 235, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_18:25", - "arrival_time": "18:34:45.164000", - "departure_time": "18:34:45.164000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.788, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 236, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_18:25", - "arrival_time": "18:36:14.182000", - "departure_time": "18:36:14.182000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.06, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 237, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_18:25", - "arrival_time": "18:39:18.764000", - "departure_time": "18:39:18.764000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.624, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 238, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_18:25", - "arrival_time": "18:40:23.564000", - "departure_time": "18:40:23.564000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.822, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 239, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_18:25", - "arrival_time": "18:43:20.291000", - "departure_time": "18:43:20.291000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.362, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 240, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_18:25", - "arrival_time": "18:45:34.145000", - "departure_time": "18:45:34.145000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.771, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 241, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_18:50", - "arrival_time": "18:50:00", - "departure_time": "18:50:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 242, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_18:50", - "arrival_time": "18:58:28.582000", - "departure_time": "18:58:28.582000", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.554, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 243, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_18:50", - "arrival_time": "18:59:45.164000", - "departure_time": "18:59:45.164000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.788, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 244, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_18:50", - "arrival_time": "19:01:14.182000", - "departure_time": "19:01:14.182000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.06, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 245, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_18:50", - "arrival_time": "19:04:18.764000", - "departure_time": "19:04:18.764000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.624, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 246, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_18:50", - "arrival_time": "19:05:23.564000", - "departure_time": "19:05:23.564000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.822, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 247, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_18:50", - "arrival_time": "19:08:20.291000", - "departure_time": "19:08:20.291000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.362, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 248, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_18:50", - "arrival_time": "19:10:34.145000", - "departure_time": "19:10:34.145000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.771, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 249, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_19:15", - "arrival_time": "19:15:00", - "departure_time": "19:15:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 250, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_19:15", - "arrival_time": "19:19:22.473000", - "departure_time": "19:19:22.473000", - "stop_id": "bUCR_0_03", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.802, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 251, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_19:15", - "arrival_time": "19:21:20.945000", - "departure_time": "19:21:20.945000", - "stop_id": "bUCR_0_04", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.164, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 252, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_19:15", - "arrival_time": "19:26:19.418000", - "departure_time": "19:26:19.418000", - "stop_id": "bUCR_0_05", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.076, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 253, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_19:15", - "arrival_time": "19:27:36.655000", - "departure_time": "19:27:36.655000", - "stop_id": "bUCR_0_06", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.312, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 254, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_19:15", - "arrival_time": "19:29:13.200000", - "departure_time": "19:29:13.200000", - "stop_id": "bUCR_0_07", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.607, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 255, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_19:15", - "arrival_time": "19:32:05.673000", - "departure_time": "19:32:05.673000", - "stop_id": "bUCR_0_08", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.134, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 256, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_19:15", - "arrival_time": "19:33:10.473000", - "departure_time": "19:33:10.473000", - "stop_id": "bUCR_0_09", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.332, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 257, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_19:15", - "arrival_time": "19:36:00.982000", - "departure_time": "19:36:00.982000", - "stop_id": "bUCR_0_10", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.853, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 258, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_19:15", - "arrival_time": "19:38:21.055000", - "departure_time": "19:38:21.055000", - "stop_id": "bUCR_0_11", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 4.281, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 259, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_20:10", - "arrival_time": "20:10:00", - "departure_time": "20:10:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 260, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_20:10", - "arrival_time": "20:14:22.473000", - "departure_time": "20:14:22.473000", - "stop_id": "bUCR_0_03", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.802, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 261, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_20:10", - "arrival_time": "20:16:20.945000", - "departure_time": "20:16:20.945000", - "stop_id": "bUCR_0_04", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.164, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 262, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_20:10", - "arrival_time": "20:21:19.418000", - "departure_time": "20:21:19.418000", - "stop_id": "bUCR_0_05", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.076, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 263, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_20:10", - "arrival_time": "20:22:36.655000", - "departure_time": "20:22:36.655000", - "stop_id": "bUCR_0_06", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.312, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 264, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_20:10", - "arrival_time": "20:24:13.200000", - "departure_time": "20:24:13.200000", - "stop_id": "bUCR_0_07", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.607, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 265, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_20:10", - "arrival_time": "20:27:05.673000", - "departure_time": "20:27:05.673000", - "stop_id": "bUCR_0_08", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.134, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 266, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_20:10", - "arrival_time": "20:28:10.473000", - "departure_time": "20:28:10.473000", - "stop_id": "bUCR_0_09", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.332, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 267, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_20:10", - "arrival_time": "20:31:00.982000", - "departure_time": "20:31:00.982000", - "stop_id": "bUCR_0_10", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.853, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 268, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_20:10", - "arrival_time": "20:33:21.055000", - "departure_time": "20:33:21.055000", - "stop_id": "bUCR_0_11", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 4.281, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 269, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_20:50", - "arrival_time": "20:50:00", - "departure_time": "20:50:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 270, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_20:50", - "arrival_time": "20:54:22.473000", - "departure_time": "20:54:22.473000", - "stop_id": "bUCR_0_03", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.802, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 271, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_20:50", - "arrival_time": "20:56:20.945000", - "departure_time": "20:56:20.945000", - "stop_id": "bUCR_0_04", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.164, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 272, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_20:50", - "arrival_time": "21:01:19.418000", - "departure_time": "21:01:19.418000", - "stop_id": "bUCR_0_05", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.076, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 273, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_20:50", - "arrival_time": "21:02:36.655000", - "departure_time": "21:02:36.655000", - "stop_id": "bUCR_0_06", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.312, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 274, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_20:50", - "arrival_time": "21:04:13.200000", - "departure_time": "21:04:13.200000", - "stop_id": "bUCR_0_07", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.607, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 275, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_20:50", - "arrival_time": "21:07:05.673000", - "departure_time": "21:07:05.673000", - "stop_id": "bUCR_0_08", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.134, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 276, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_20:50", - "arrival_time": "21:08:10.473000", - "departure_time": "21:08:10.473000", - "stop_id": "bUCR_0_09", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.332, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 277, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_20:50", - "arrival_time": "21:11:00.982000", - "departure_time": "21:11:00.982000", - "stop_id": "bUCR_0_10", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.853, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 278, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_20:50", - "arrival_time": "21:13:21.055000", - "departure_time": "21:13:21.055000", - "stop_id": "bUCR_0_11", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 4.281, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 279, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_21:00", - "arrival_time": "21:00:00", - "departure_time": "21:00:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 280, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_21:00", - "arrival_time": "21:04:22.473000", - "departure_time": "21:04:22.473000", - "stop_id": "bUCR_0_03", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.802, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 281, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_21:00", - "arrival_time": "21:06:20.945000", - "departure_time": "21:06:20.945000", - "stop_id": "bUCR_0_04", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.164, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 282, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_21:00", - "arrival_time": "21:11:19.418000", - "departure_time": "21:11:19.418000", - "stop_id": "bUCR_0_05", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.076, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 283, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_21:00", - "arrival_time": "21:12:36.655000", - "departure_time": "21:12:36.655000", - "stop_id": "bUCR_0_06", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.312, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 284, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_21:00", - "arrival_time": "21:14:13.200000", - "departure_time": "21:14:13.200000", - "stop_id": "bUCR_0_07", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.607, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 285, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_21:00", - "arrival_time": "21:17:05.673000", - "departure_time": "21:17:05.673000", - "stop_id": "bUCR_0_08", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.134, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 286, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_21:00", - "arrival_time": "21:18:10.473000", - "departure_time": "21:18:10.473000", - "stop_id": "bUCR_0_09", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.332, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 287, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_21:00", - "arrival_time": "21:21:00.982000", - "departure_time": "21:21:00.982000", - "stop_id": "bUCR_0_10", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.853, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 288, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_21:00", - "arrival_time": "21:23:21.055000", - "departure_time": "21:23:21.055000", - "stop_id": "bUCR_0_11", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 4.281, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 289, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_21:35", - "arrival_time": "21:35:00", - "departure_time": "21:35:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 290, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_21:35", - "arrival_time": "21:39:22.473000", - "departure_time": "21:39:22.473000", - "stop_id": "bUCR_0_03", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.802, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 291, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_21:35", - "arrival_time": "21:41:20.945000", - "departure_time": "21:41:20.945000", - "stop_id": "bUCR_0_04", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.164, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 292, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_21:35", - "arrival_time": "21:46:19.418000", - "departure_time": "21:46:19.418000", - "stop_id": "bUCR_0_05", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.076, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 293, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_21:35", - "arrival_time": "21:47:36.655000", - "departure_time": "21:47:36.655000", - "stop_id": "bUCR_0_06", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.312, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 294, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_21:35", - "arrival_time": "21:49:13.200000", - "departure_time": "21:49:13.200000", - "stop_id": "bUCR_0_07", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.607, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 295, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_21:35", - "arrival_time": "21:52:05.673000", - "departure_time": "21:52:05.673000", - "stop_id": "bUCR_0_08", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.134, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 296, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_21:35", - "arrival_time": "21:53:10.473000", - "departure_time": "21:53:10.473000", - "stop_id": "bUCR_0_09", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.332, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 297, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_21:35", - "arrival_time": "21:56:00.982000", - "departure_time": "21:56:00.982000", - "stop_id": "bUCR_0_10", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.853, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 298, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_21:35", - "arrival_time": "21:58:21.055000", - "departure_time": "21:58:21.055000", - "stop_id": "bUCR_0_11", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 4.281, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 299, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_06:20", - "arrival_time": "06:20:00", - "departure_time": "06:20:00", - "stop_id": "bUCR_0_02", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 300, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_06:20", - "arrival_time": "06:26:36", - "departure_time": "06:26:36", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.21, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 301, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_06:20", - "arrival_time": "06:27:54.218000", - "departure_time": "06:27:54.218000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.449, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 302, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_06:20", - "arrival_time": "06:29:32.400000", - "departure_time": "06:29:32.400000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.749, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 303, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_06:20", - "arrival_time": "06:32:24.545000", - "departure_time": "06:32:24.545000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.275, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 304, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_06:20", - "arrival_time": "06:33:29.345000", - "departure_time": "06:33:29.345000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.473, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 305, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_06:20", - "arrival_time": "06:36:13.964000", - "departure_time": "06:36:13.964000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.976, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 306, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_06:20", - "arrival_time": "06:38:40.255000", - "departure_time": "06:38:40.255000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.423, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 307, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_06:40", - "arrival_time": "06:40:00", - "departure_time": "06:40:00", - "stop_id": "bUCR_0_02", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 308, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_06:40", - "arrival_time": "06:46:36", - "departure_time": "06:46:36", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.21, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 309, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_06:40", - "arrival_time": "06:47:54.218000", - "departure_time": "06:47:54.218000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.449, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 310, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_06:40", - "arrival_time": "06:49:32.400000", - "departure_time": "06:49:32.400000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.749, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 311, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_06:40", - "arrival_time": "06:52:24.545000", - "departure_time": "06:52:24.545000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.275, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 312, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_06:40", - "arrival_time": "06:53:29.345000", - "departure_time": "06:53:29.345000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.473, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 313, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_06:40", - "arrival_time": "06:56:13.964000", - "departure_time": "06:56:13.964000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.976, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 314, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_06:40", - "arrival_time": "06:58:40.255000", - "departure_time": "06:58:40.255000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.423, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 315, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_07:10", - "arrival_time": "07:10:00", - "departure_time": "07:10:00", - "stop_id": "bUCR_0_02", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 316, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_07:10", - "arrival_time": "07:16:36", - "departure_time": "07:16:36", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.21, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 317, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_07:10", - "arrival_time": "07:17:54.218000", - "departure_time": "07:17:54.218000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.449, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 318, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_07:10", - "arrival_time": "07:19:32.400000", - "departure_time": "07:19:32.400000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.749, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 319, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_07:10", - "arrival_time": "07:22:24.545000", - "departure_time": "07:22:24.545000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.275, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 320, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_07:10", - "arrival_time": "07:23:29.345000", - "departure_time": "07:23:29.345000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.473, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 321, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_07:10", - "arrival_time": "07:26:13.964000", - "departure_time": "07:26:13.964000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.976, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 322, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_07:10", - "arrival_time": "07:28:40.255000", - "departure_time": "07:28:40.255000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.423, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 323, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_07:30", - "arrival_time": "07:30:00", - "departure_time": "07:30:00", - "stop_id": "bUCR_0_02", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 324, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_07:30", - "arrival_time": "07:36:36", - "departure_time": "07:36:36", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.21, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 325, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_07:30", - "arrival_time": "07:37:54.218000", - "departure_time": "07:37:54.218000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.449, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 326, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_07:30", - "arrival_time": "07:39:32.400000", - "departure_time": "07:39:32.400000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.749, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 327, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_07:30", - "arrival_time": "07:42:24.545000", - "departure_time": "07:42:24.545000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.275, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 328, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_07:30", - "arrival_time": "07:43:29.345000", - "departure_time": "07:43:29.345000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.473, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 329, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_07:30", - "arrival_time": "07:46:13.964000", - "departure_time": "07:46:13.964000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.976, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 330, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_07:30", - "arrival_time": "07:48:40.255000", - "departure_time": "07:48:40.255000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.423, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 331, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_08:00", - "arrival_time": "08:00:00", - "departure_time": "08:00:00", - "stop_id": "bUCR_0_02", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 332, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_08:00", - "arrival_time": "08:06:36", - "departure_time": "08:06:36", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.21, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 333, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_08:00", - "arrival_time": "08:07:54.218000", - "departure_time": "08:07:54.218000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.449, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 334, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_08:00", - "arrival_time": "08:09:32.400000", - "departure_time": "08:09:32.400000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.749, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 335, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_08:00", - "arrival_time": "08:12:24.545000", - "departure_time": "08:12:24.545000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.275, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 336, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_08:00", - "arrival_time": "08:13:29.345000", - "departure_time": "08:13:29.345000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.473, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 337, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_08:00", - "arrival_time": "08:16:13.964000", - "departure_time": "08:16:13.964000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.976, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 338, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_08:00", - "arrival_time": "08:18:40.255000", - "departure_time": "08:18:40.255000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.423, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 339, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_08:35", - "arrival_time": "08:35:00", - "departure_time": "08:35:00", - "stop_id": "bUCR_0_02", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 340, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_08:35", - "arrival_time": "08:41:36", - "departure_time": "08:41:36", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.21, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 341, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_08:35", - "arrival_time": "08:42:54.218000", - "departure_time": "08:42:54.218000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.449, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 342, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_08:35", - "arrival_time": "08:44:32.400000", - "departure_time": "08:44:32.400000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.749, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 343, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_08:35", - "arrival_time": "08:47:24.545000", - "departure_time": "08:47:24.545000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.275, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 344, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_08:35", - "arrival_time": "08:48:29.345000", - "departure_time": "08:48:29.345000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.473, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 345, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_08:35", - "arrival_time": "08:51:13.964000", - "departure_time": "08:51:13.964000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.976, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 346, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_08:35", - "arrival_time": "08:53:40.255000", - "departure_time": "08:53:40.255000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.423, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 347, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_09:05", - "arrival_time": "09:05:00", - "departure_time": "09:05:00", - "stop_id": "bUCR_0_02", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 348, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_09:05", - "arrival_time": "09:11:36", - "departure_time": "09:11:36", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.21, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 349, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_09:05", - "arrival_time": "09:12:54.218000", - "departure_time": "09:12:54.218000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.449, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 350, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_09:05", - "arrival_time": "09:14:32.400000", - "departure_time": "09:14:32.400000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.749, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 351, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_09:05", - "arrival_time": "09:17:24.545000", - "departure_time": "09:17:24.545000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.275, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 352, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_09:05", - "arrival_time": "09:18:29.345000", - "departure_time": "09:18:29.345000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.473, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 353, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_09:05", - "arrival_time": "09:21:13.964000", - "departure_time": "09:21:13.964000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.976, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 354, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_09:05", - "arrival_time": "09:23:40.255000", - "departure_time": "09:23:40.255000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.423, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 355, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_09:25", - "arrival_time": "09:25:00", - "departure_time": "09:25:00", - "stop_id": "bUCR_0_02", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 356, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_09:25", - "arrival_time": "09:31:36", - "departure_time": "09:31:36", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.21, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 357, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_09:25", - "arrival_time": "09:32:54.218000", - "departure_time": "09:32:54.218000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.449, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 358, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_09:25", - "arrival_time": "09:34:32.400000", - "departure_time": "09:34:32.400000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.749, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 359, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_09:25", - "arrival_time": "09:37:24.545000", - "departure_time": "09:37:24.545000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.275, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 360, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_09:25", - "arrival_time": "09:38:29.345000", - "departure_time": "09:38:29.345000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.473, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 361, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_09:25", - "arrival_time": "09:41:13.964000", - "departure_time": "09:41:13.964000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.976, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 362, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_09:25", - "arrival_time": "09:43:40.255000", - "departure_time": "09:43:40.255000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.423, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 363, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_09:55", - "arrival_time": "09:55:00", - "departure_time": "09:55:00", - "stop_id": "bUCR_0_02", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 364, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_09:55", - "arrival_time": "10:01:36", - "departure_time": "10:01:36", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.21, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 365, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_09:55", - "arrival_time": "10:02:54.218000", - "departure_time": "10:02:54.218000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.449, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 366, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_09:55", - "arrival_time": "10:04:32.400000", - "departure_time": "10:04:32.400000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.749, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 367, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_09:55", - "arrival_time": "10:07:24.545000", - "departure_time": "10:07:24.545000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.275, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 368, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_09:55", - "arrival_time": "10:08:29.345000", - "departure_time": "10:08:29.345000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.473, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 369, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_09:55", - "arrival_time": "10:11:13.964000", - "departure_time": "10:11:13.964000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.976, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 370, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_09:55", - "arrival_time": "10:13:40.255000", - "departure_time": "10:13:40.255000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.423, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 371, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_10:15", - "arrival_time": "10:15:00", - "departure_time": "10:15:00", - "stop_id": "bUCR_0_02", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 372, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_10:15", - "arrival_time": "10:21:36", - "departure_time": "10:21:36", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.21, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 373, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_10:15", - "arrival_time": "10:22:54.218000", - "departure_time": "10:22:54.218000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.449, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 374, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_10:15", - "arrival_time": "10:24:32.400000", - "departure_time": "10:24:32.400000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.749, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 375, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_10:15", - "arrival_time": "10:27:24.545000", - "departure_time": "10:27:24.545000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.275, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 376, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_10:15", - "arrival_time": "10:28:29.345000", - "departure_time": "10:28:29.345000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.473, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 377, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_10:15", - "arrival_time": "10:31:13.964000", - "departure_time": "10:31:13.964000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.976, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 378, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_10:15", - "arrival_time": "10:33:40.255000", - "departure_time": "10:33:40.255000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.423, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 379, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_10:45", - "arrival_time": "10:45:00", - "departure_time": "10:45:00", - "stop_id": "bUCR_0_02", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 380, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_10:45", - "arrival_time": "10:51:36", - "departure_time": "10:51:36", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.21, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 381, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_10:45", - "arrival_time": "10:52:54.218000", - "departure_time": "10:52:54.218000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.449, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 382, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_10:45", - "arrival_time": "10:54:32.400000", - "departure_time": "10:54:32.400000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.749, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 383, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_10:45", - "arrival_time": "10:57:24.545000", - "departure_time": "10:57:24.545000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.275, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 384, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_10:45", - "arrival_time": "10:58:29.345000", - "departure_time": "10:58:29.345000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.473, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 385, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_10:45", - "arrival_time": "11:01:13.964000", - "departure_time": "11:01:13.964000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.976, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 386, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_10:45", - "arrival_time": "11:03:40.255000", - "departure_time": "11:03:40.255000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.423, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 387, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_11:05", - "arrival_time": "11:05:00", - "departure_time": "11:05:00", - "stop_id": "bUCR_0_02", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 388, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_11:05", - "arrival_time": "11:11:36", - "departure_time": "11:11:36", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.21, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 389, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_11:05", - "arrival_time": "11:12:54.218000", - "departure_time": "11:12:54.218000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.449, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 390, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_11:05", - "arrival_time": "11:14:32.400000", - "departure_time": "11:14:32.400000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.749, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 391, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_11:05", - "arrival_time": "11:17:24.545000", - "departure_time": "11:17:24.545000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.275, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 392, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_11:05", - "arrival_time": "11:18:29.345000", - "departure_time": "11:18:29.345000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.473, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 393, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_11:05", - "arrival_time": "11:21:13.964000", - "departure_time": "11:21:13.964000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.976, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 394, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_11:05", - "arrival_time": "11:23:40.255000", - "departure_time": "11:23:40.255000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.423, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 395, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_11:35", - "arrival_time": "11:35:00", - "departure_time": "11:35:00", - "stop_id": "bUCR_0_02", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 396, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_11:35", - "arrival_time": "11:41:36", - "departure_time": "11:41:36", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.21, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 397, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_11:35", - "arrival_time": "11:42:54.218000", - "departure_time": "11:42:54.218000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.449, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 398, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_11:35", - "arrival_time": "11:44:32.400000", - "departure_time": "11:44:32.400000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.749, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 399, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_11:35", - "arrival_time": "11:47:24.545000", - "departure_time": "11:47:24.545000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.275, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 400, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_11:35", - "arrival_time": "11:48:29.345000", - "departure_time": "11:48:29.345000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.473, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 401, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_11:35", - "arrival_time": "11:51:13.964000", - "departure_time": "11:51:13.964000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.976, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 402, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_11:35", - "arrival_time": "11:53:40.255000", - "departure_time": "11:53:40.255000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.423, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 403, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_11:50", - "arrival_time": "11:50:00", - "departure_time": "11:50:00", - "stop_id": "bUCR_0_02", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 404, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_11:50", - "arrival_time": "11:56:36", - "departure_time": "11:56:36", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.21, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 405, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_11:50", - "arrival_time": "11:57:54.218000", - "departure_time": "11:57:54.218000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.449, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 406, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_11:50", - "arrival_time": "11:59:32.400000", - "departure_time": "11:59:32.400000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.749, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 407, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_11:50", - "arrival_time": "12:02:24.545000", - "departure_time": "12:02:24.545000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.275, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 408, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_11:50", - "arrival_time": "12:03:29.345000", - "departure_time": "12:03:29.345000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.473, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 409, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_11:50", - "arrival_time": "12:06:13.964000", - "departure_time": "12:06:13.964000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.976, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 410, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_11:50", - "arrival_time": "12:08:40.255000", - "departure_time": "12:08:40.255000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.423, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 411, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_12:10", - "arrival_time": "12:10:00", - "departure_time": "12:10:00", - "stop_id": "bUCR_0_02", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 412, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_12:10", - "arrival_time": "12:16:36", - "departure_time": "12:16:36", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.21, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 413, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_12:10", - "arrival_time": "12:17:54.218000", - "departure_time": "12:17:54.218000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.449, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 414, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_12:10", - "arrival_time": "12:19:32.400000", - "departure_time": "12:19:32.400000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.749, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 415, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_12:10", - "arrival_time": "12:22:24.545000", - "departure_time": "12:22:24.545000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.275, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 416, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_12:10", - "arrival_time": "12:23:29.345000", - "departure_time": "12:23:29.345000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.473, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 417, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_12:10", - "arrival_time": "12:26:13.964000", - "departure_time": "12:26:13.964000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.976, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 418, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_12:10", - "arrival_time": "12:28:40.255000", - "departure_time": "12:28:40.255000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.423, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 419, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_12:30", - "arrival_time": "12:30:00", - "departure_time": "12:30:00", - "stop_id": "bUCR_0_02", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 420, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_12:30", - "arrival_time": "12:36:36", - "departure_time": "12:36:36", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.21, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 421, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_12:30", - "arrival_time": "12:37:54.218000", - "departure_time": "12:37:54.218000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.449, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 422, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_12:30", - "arrival_time": "12:39:32.400000", - "departure_time": "12:39:32.400000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.749, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 423, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_12:30", - "arrival_time": "12:42:24.545000", - "departure_time": "12:42:24.545000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.275, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 424, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_12:30", - "arrival_time": "12:43:29.345000", - "departure_time": "12:43:29.345000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.473, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 425, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_12:30", - "arrival_time": "12:46:13.964000", - "departure_time": "12:46:13.964000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.976, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 426, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_12:30", - "arrival_time": "12:48:40.255000", - "departure_time": "12:48:40.255000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.423, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 427, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_12:45", - "arrival_time": "12:45:00", - "departure_time": "12:45:00", - "stop_id": "bUCR_0_02", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 428, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_12:45", - "arrival_time": "12:51:36", - "departure_time": "12:51:36", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.21, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 429, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_12:45", - "arrival_time": "12:52:54.218000", - "departure_time": "12:52:54.218000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.449, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 430, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_12:45", - "arrival_time": "12:54:32.400000", - "departure_time": "12:54:32.400000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.749, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 431, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_12:45", - "arrival_time": "12:57:24.545000", - "departure_time": "12:57:24.545000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.275, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 432, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_12:45", - "arrival_time": "12:58:29.345000", - "departure_time": "12:58:29.345000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.473, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 433, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_12:45", - "arrival_time": "13:01:13.964000", - "departure_time": "13:01:13.964000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.976, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 434, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_12:45", - "arrival_time": "13:03:40.255000", - "departure_time": "13:03:40.255000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.423, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 435, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_13:20", - "arrival_time": "13:20:00", - "departure_time": "13:20:00", - "stop_id": "bUCR_0_02", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 436, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_13:20", - "arrival_time": "13:26:36", - "departure_time": "13:26:36", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.21, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 437, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_13:20", - "arrival_time": "13:27:54.218000", - "departure_time": "13:27:54.218000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.449, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 438, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_13:20", - "arrival_time": "13:29:32.400000", - "departure_time": "13:29:32.400000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.749, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 439, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_13:20", - "arrival_time": "13:32:24.545000", - "departure_time": "13:32:24.545000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.275, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 440, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_13:20", - "arrival_time": "13:33:29.345000", - "departure_time": "13:33:29.345000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.473, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 441, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_13:20", - "arrival_time": "13:36:13.964000", - "departure_time": "13:36:13.964000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.976, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 442, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_13:20", - "arrival_time": "13:38:40.255000", - "departure_time": "13:38:40.255000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.423, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 443, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_14:00", - "arrival_time": "14:00:00", - "departure_time": "14:00:00", - "stop_id": "bUCR_0_02", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 444, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_14:00", - "arrival_time": "14:06:36", - "departure_time": "14:06:36", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.21, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 445, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_14:00", - "arrival_time": "14:07:54.218000", - "departure_time": "14:07:54.218000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.449, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 446, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_14:00", - "arrival_time": "14:09:32.400000", - "departure_time": "14:09:32.400000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.749, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 447, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_14:00", - "arrival_time": "14:12:24.545000", - "departure_time": "14:12:24.545000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.275, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 448, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_14:00", - "arrival_time": "14:13:29.345000", - "departure_time": "14:13:29.345000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.473, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 449, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_14:00", - "arrival_time": "14:16:13.964000", - "departure_time": "14:16:13.964000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.976, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 450, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_14:00", - "arrival_time": "14:18:40.255000", - "departure_time": "14:18:40.255000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.423, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 451, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_14:20", - "arrival_time": "14:20:00", - "departure_time": "14:20:00", - "stop_id": "bUCR_0_02", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 452, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_14:20", - "arrival_time": "14:26:36", - "departure_time": "14:26:36", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.21, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 453, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_14:20", - "arrival_time": "14:27:54.218000", - "departure_time": "14:27:54.218000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.449, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 454, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_14:20", - "arrival_time": "14:29:32.400000", - "departure_time": "14:29:32.400000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.749, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 455, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_14:20", - "arrival_time": "14:32:24.545000", - "departure_time": "14:32:24.545000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.275, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 456, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_14:20", - "arrival_time": "14:33:29.345000", - "departure_time": "14:33:29.345000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.473, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 457, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_14:20", - "arrival_time": "14:36:13.964000", - "departure_time": "14:36:13.964000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.976, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 458, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_14:20", - "arrival_time": "14:38:40.255000", - "departure_time": "14:38:40.255000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.423, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 459, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_14:45", - "arrival_time": "14:45:00", - "departure_time": "14:45:00", - "stop_id": "bUCR_0_02", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 460, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_14:45", - "arrival_time": "14:51:36", - "departure_time": "14:51:36", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.21, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 461, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_14:45", - "arrival_time": "14:52:54.218000", - "departure_time": "14:52:54.218000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.449, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 462, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_14:45", - "arrival_time": "14:54:32.400000", - "departure_time": "14:54:32.400000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.749, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 463, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_14:45", - "arrival_time": "14:57:24.545000", - "departure_time": "14:57:24.545000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.275, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 464, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_14:45", - "arrival_time": "14:58:29.345000", - "departure_time": "14:58:29.345000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.473, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 465, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_14:45", - "arrival_time": "15:01:13.964000", - "departure_time": "15:01:13.964000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.976, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 466, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_14:45", - "arrival_time": "15:03:40.255000", - "departure_time": "15:03:40.255000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.423, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 467, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_15:05", - "arrival_time": "15:05:00", - "departure_time": "15:05:00", - "stop_id": "bUCR_0_02", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 468, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_15:05", - "arrival_time": "15:11:36", - "departure_time": "15:11:36", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.21, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 469, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_15:05", - "arrival_time": "15:12:54.218000", - "departure_time": "15:12:54.218000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.449, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 470, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_15:05", - "arrival_time": "15:14:32.400000", - "departure_time": "15:14:32.400000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.749, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 471, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_15:05", - "arrival_time": "15:17:24.545000", - "departure_time": "15:17:24.545000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.275, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 472, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_15:05", - "arrival_time": "15:18:29.345000", - "departure_time": "15:18:29.345000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.473, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 473, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_15:05", - "arrival_time": "15:21:13.964000", - "departure_time": "15:21:13.964000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.976, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 474, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_15:05", - "arrival_time": "15:23:40.255000", - "departure_time": "15:23:40.255000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.423, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 475, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_15:30", - "arrival_time": "15:30:00", - "departure_time": "15:30:00", - "stop_id": "bUCR_0_02", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 476, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_15:30", - "arrival_time": "15:36:36", - "departure_time": "15:36:36", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.21, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 477, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_15:30", - "arrival_time": "15:37:54.218000", - "departure_time": "15:37:54.218000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.449, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 478, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_15:30", - "arrival_time": "15:39:32.400000", - "departure_time": "15:39:32.400000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.749, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 479, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_15:30", - "arrival_time": "15:42:24.545000", - "departure_time": "15:42:24.545000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.275, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 480, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_15:30", - "arrival_time": "15:43:29.345000", - "departure_time": "15:43:29.345000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.473, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 481, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_15:30", - "arrival_time": "15:46:13.964000", - "departure_time": "15:46:13.964000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.976, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 482, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_15:30", - "arrival_time": "15:48:40.255000", - "departure_time": "15:48:40.255000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.423, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 483, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_16:05", - "arrival_time": "16:05:00", - "departure_time": "16:05:00", - "stop_id": "bUCR_0_02", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 484, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_16:05", - "arrival_time": "16:11:36", - "departure_time": "16:11:36", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.21, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 485, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_16:05", - "arrival_time": "16:12:54.218000", - "departure_time": "16:12:54.218000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.449, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 486, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_16:05", - "arrival_time": "16:14:32.400000", - "departure_time": "16:14:32.400000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.749, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 487, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_16:05", - "arrival_time": "16:17:24.545000", - "departure_time": "16:17:24.545000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.275, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 488, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_16:05", - "arrival_time": "16:18:29.345000", - "departure_time": "16:18:29.345000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.473, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 489, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_16:05", - "arrival_time": "16:21:13.964000", - "departure_time": "16:21:13.964000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.976, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 490, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_16:05", - "arrival_time": "16:23:40.255000", - "departure_time": "16:23:40.255000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.423, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 491, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_16:40", - "arrival_time": "16:40:00", - "departure_time": "16:40:00", - "stop_id": "bUCR_0_02", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 492, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_16:40", - "arrival_time": "16:46:36", - "departure_time": "16:46:36", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.21, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 493, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_16:40", - "arrival_time": "16:47:54.218000", - "departure_time": "16:47:54.218000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.449, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 494, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_16:40", - "arrival_time": "16:49:32.400000", - "departure_time": "16:49:32.400000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.749, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 495, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_16:40", - "arrival_time": "16:52:24.545000", - "departure_time": "16:52:24.545000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.275, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 496, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_16:40", - "arrival_time": "16:53:29.345000", - "departure_time": "16:53:29.345000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.473, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 497, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_16:40", - "arrival_time": "16:56:13.964000", - "departure_time": "16:56:13.964000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.976, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 498, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_16:40", - "arrival_time": "16:58:40.255000", - "departure_time": "16:58:40.255000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.423, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 499, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_17:05", - "arrival_time": "17:05:00", - "departure_time": "17:05:00", - "stop_id": "bUCR_0_02", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 500, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_17:05", - "arrival_time": "17:11:36", - "departure_time": "17:11:36", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.21, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 501, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_17:05", - "arrival_time": "17:12:54.218000", - "departure_time": "17:12:54.218000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.449, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 502, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_17:05", - "arrival_time": "17:14:32.400000", - "departure_time": "17:14:32.400000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.749, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 503, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_17:05", - "arrival_time": "17:17:24.545000", - "departure_time": "17:17:24.545000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.275, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 504, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_17:05", - "arrival_time": "17:18:29.345000", - "departure_time": "17:18:29.345000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.473, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 505, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_17:05", - "arrival_time": "17:21:13.964000", - "departure_time": "17:21:13.964000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.976, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 506, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_17:05", - "arrival_time": "17:23:40.255000", - "departure_time": "17:23:40.255000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.423, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 507, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_17:40", - "arrival_time": "17:40:00", - "departure_time": "17:40:00", - "stop_id": "bUCR_0_02", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 508, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_17:40", - "arrival_time": "17:46:36", - "departure_time": "17:46:36", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.21, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 509, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_17:40", - "arrival_time": "17:47:54.218000", - "departure_time": "17:47:54.218000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.449, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 510, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_17:40", - "arrival_time": "17:49:32.400000", - "departure_time": "17:49:32.400000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.749, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 511, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_17:40", - "arrival_time": "17:52:24.545000", - "departure_time": "17:52:24.545000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.275, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 512, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_17:40", - "arrival_time": "17:53:29.345000", - "departure_time": "17:53:29.345000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.473, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 513, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_17:40", - "arrival_time": "17:56:13.964000", - "departure_time": "17:56:13.964000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.976, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 514, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_17:40", - "arrival_time": "17:58:40.255000", - "departure_time": "17:58:40.255000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.423, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 515, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_18:05", - "arrival_time": "18:05:00", - "departure_time": "18:05:00", - "stop_id": "bUCR_0_02", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 516, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_18:05", - "arrival_time": "18:11:36", - "departure_time": "18:11:36", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.21, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 517, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_18:05", - "arrival_time": "18:12:54.218000", - "departure_time": "18:12:54.218000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.449, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 518, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_18:05", - "arrival_time": "18:14:32.400000", - "departure_time": "18:14:32.400000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.749, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 519, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_18:05", - "arrival_time": "18:17:24.545000", - "departure_time": "18:17:24.545000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.275, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 520, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_18:05", - "arrival_time": "18:18:29.345000", - "departure_time": "18:18:29.345000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.473, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 521, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_18:05", - "arrival_time": "18:21:13.964000", - "departure_time": "18:21:13.964000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.976, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 522, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_18:05", - "arrival_time": "18:23:40.255000", - "departure_time": "18:23:40.255000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.423, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 523, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_18:35", - "arrival_time": "18:35:00", - "departure_time": "18:35:00", - "stop_id": "bUCR_0_02", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 524, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_18:35", - "arrival_time": "18:41:36", - "departure_time": "18:41:36", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.21, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 525, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_18:35", - "arrival_time": "18:42:54.218000", - "departure_time": "18:42:54.218000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.449, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 526, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_18:35", - "arrival_time": "18:44:32.400000", - "departure_time": "18:44:32.400000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.749, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 527, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_18:35", - "arrival_time": "18:47:24.545000", - "departure_time": "18:47:24.545000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.275, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 528, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_18:35", - "arrival_time": "18:48:29.345000", - "departure_time": "18:48:29.345000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.473, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 529, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_18:35", - "arrival_time": "18:51:13.964000", - "departure_time": "18:51:13.964000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.976, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 530, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_18:35", - "arrival_time": "18:53:40.255000", - "departure_time": "18:53:40.255000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.423, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 531, - "fields": { - "feed": "1", - "trip_id": "desde_artes_con_milla_entresemana_19:00", - "arrival_time": "19:00:00", - "departure_time": "19:00:00", - "stop_id": "bUCR_0_02", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 532, - "fields": { - "feed": "1", - "trip_id": "desde_artes_con_milla_entresemana_19:00", - "arrival_time": "19:02:24.327000", - "departure_time": "19:02:24.327000", - "stop_id": "bUCR_0_03", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.441, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 533, - "fields": { - "feed": "1", - "trip_id": "desde_artes_con_milla_entresemana_19:00", - "arrival_time": "19:04:27.382000", - "departure_time": "19:04:27.382000", - "stop_id": "bUCR_0_04", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.817, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 534, - "fields": { - "feed": "1", - "trip_id": "desde_artes_con_milla_entresemana_19:00", - "arrival_time": "19:09:26.182000", - "departure_time": "19:09:26.182000", - "stop_id": "bUCR_0_05", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.73, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 535, - "fields": { - "feed": "1", - "trip_id": "desde_artes_con_milla_entresemana_19:00", - "arrival_time": "19:10:46.691000", - "departure_time": "19:10:46.691000", - "stop_id": "bUCR_0_06", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.976, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 536, - "fields": { - "feed": "1", - "trip_id": "desde_artes_con_milla_entresemana_19:00", - "arrival_time": "19:12:19.309000", - "departure_time": "19:12:19.309000", - "stop_id": "bUCR_0_07", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.259, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 537, - "fields": { - "feed": "1", - "trip_id": "desde_artes_con_milla_entresemana_19:00", - "arrival_time": "19:15:11.127000", - "departure_time": "19:15:11.127000", - "stop_id": "bUCR_0_08", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.784, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 538, - "fields": { - "feed": "1", - "trip_id": "desde_artes_con_milla_entresemana_19:00", - "arrival_time": "19:16:16.255000", - "departure_time": "19:16:16.255000", - "stop_id": "bUCR_0_09", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.983, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 539, - "fields": { - "feed": "1", - "trip_id": "desde_artes_con_milla_entresemana_19:00", - "arrival_time": "19:19:12.982000", - "departure_time": "19:19:12.982000", - "stop_id": "bUCR_0_10", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.523, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 540, - "fields": { - "feed": "1", - "trip_id": "desde_artes_con_milla_entresemana_19:00", - "arrival_time": "19:21:27.491000", - "departure_time": "19:21:27.491000", - "stop_id": "bUCR_0_11", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.934, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 541, - "fields": { - "feed": "1", - "trip_id": "desde_artes_con_milla_entresemana_19:35", - "arrival_time": "19:35:00", - "departure_time": "19:35:00", - "stop_id": "bUCR_0_02", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 542, - "fields": { - "feed": "1", - "trip_id": "desde_artes_con_milla_entresemana_19:35", - "arrival_time": "19:37:24.327000", - "departure_time": "19:37:24.327000", - "stop_id": "bUCR_0_03", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.441, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 543, - "fields": { - "feed": "1", - "trip_id": "desde_artes_con_milla_entresemana_19:35", - "arrival_time": "19:39:27.382000", - "departure_time": "19:39:27.382000", - "stop_id": "bUCR_0_04", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.817, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 544, - "fields": { - "feed": "1", - "trip_id": "desde_artes_con_milla_entresemana_19:35", - "arrival_time": "19:44:26.182000", - "departure_time": "19:44:26.182000", - "stop_id": "bUCR_0_05", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.73, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 545, - "fields": { - "feed": "1", - "trip_id": "desde_artes_con_milla_entresemana_19:35", - "arrival_time": "19:45:46.691000", - "departure_time": "19:45:46.691000", - "stop_id": "bUCR_0_06", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.976, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 546, - "fields": { - "feed": "1", - "trip_id": "desde_artes_con_milla_entresemana_19:35", - "arrival_time": "19:47:19.309000", - "departure_time": "19:47:19.309000", - "stop_id": "bUCR_0_07", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.259, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 547, - "fields": { - "feed": "1", - "trip_id": "desde_artes_con_milla_entresemana_19:35", - "arrival_time": "19:50:11.127000", - "departure_time": "19:50:11.127000", - "stop_id": "bUCR_0_08", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.784, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 548, - "fields": { - "feed": "1", - "trip_id": "desde_artes_con_milla_entresemana_19:35", - "arrival_time": "19:51:16.255000", - "departure_time": "19:51:16.255000", - "stop_id": "bUCR_0_09", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.983, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 549, - "fields": { - "feed": "1", - "trip_id": "desde_artes_con_milla_entresemana_19:35", - "arrival_time": "19:54:12.982000", - "departure_time": "19:54:12.982000", - "stop_id": "bUCR_0_10", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.523, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 550, - "fields": { - "feed": "1", - "trip_id": "desde_artes_con_milla_entresemana_19:35", - "arrival_time": "19:56:27.491000", - "departure_time": "19:56:27.491000", - "stop_id": "bUCR_0_11", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.934, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 551, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_06:20", - "arrival_time": "06:20:00", - "departure_time": "06:20:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 552, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_06:20", - "arrival_time": "06:24:15.927000", - "departure_time": "06:24:15.927000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.782, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 553, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_06:20", - "arrival_time": "06:27:27.709000", - "departure_time": "06:27:27.709000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.368, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 554, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_06:20", - "arrival_time": "06:28:04.691000", - "departure_time": "06:28:04.691000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.481, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 555, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_06:20", - "arrival_time": "06:29:12.764000", - "departure_time": "06:29:12.764000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.689, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 556, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_06:20", - "arrival_time": "06:31:29.891000", - "departure_time": "06:31:29.891000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.108, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 557, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_06:20", - "arrival_time": "06:33:09.709000", - "departure_time": "06:33:09.709000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.413, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 558, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_06:20", - "arrival_time": "06:34:22.691000", - "departure_time": "06:34:22.691000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.636, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 559, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_06:20", - "arrival_time": "06:39:11.673000", - "departure_time": "06:39:11.673000", - "stop_id": "bUCR_0_02", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.519, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 560, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_06:40", - "arrival_time": "06:40:00", - "departure_time": "06:40:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 561, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_06:40", - "arrival_time": "06:44:00.873000", - "departure_time": "06:44:00.873000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.736, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 562, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_06:40", - "arrival_time": "06:47:28.364000", - "departure_time": "06:47:28.364000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.37, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 563, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_06:40", - "arrival_time": "06:48:12.873000", - "departure_time": "06:48:12.873000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.506, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 564, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_06:40", - "arrival_time": "06:49:11.127000", - "departure_time": "06:49:11.127000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.684, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 565, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_06:40", - "arrival_time": "06:51:27.600000", - "departure_time": "06:51:27.600000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.101, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 566, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_06:40", - "arrival_time": "06:53:11.018000", - "departure_time": "06:53:11.018000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.417, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 567, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_06:40", - "arrival_time": "06:54:22.364000", - "departure_time": "06:54:22.364000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.635, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 568, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_06:40", - "arrival_time": "06:57:17.782000", - "departure_time": "06:57:17.782000", - "stop_id": "bUCR_0_01", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.171, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 569, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_06:50", - "arrival_time": "06:50:00", - "departure_time": "06:50:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 570, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_06:50", - "arrival_time": "06:54:15.927000", - "departure_time": "06:54:15.927000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.782, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 571, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_06:50", - "arrival_time": "06:57:27.709000", - "departure_time": "06:57:27.709000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.368, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 572, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_06:50", - "arrival_time": "06:58:04.691000", - "departure_time": "06:58:04.691000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.481, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 573, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_06:50", - "arrival_time": "06:59:12.764000", - "departure_time": "06:59:12.764000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.689, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 574, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_06:50", - "arrival_time": "07:01:29.891000", - "departure_time": "07:01:29.891000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.108, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 575, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_06:50", - "arrival_time": "07:03:09.709000", - "departure_time": "07:03:09.709000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.413, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 576, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_06:50", - "arrival_time": "07:04:22.691000", - "departure_time": "07:04:22.691000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.636, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 577, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_06:50", - "arrival_time": "07:09:11.673000", - "departure_time": "07:09:11.673000", - "stop_id": "bUCR_0_02", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.519, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 578, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_07:00", - "arrival_time": "07:00:00", - "departure_time": "07:00:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 579, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_07:00", - "arrival_time": "07:04:00.873000", - "departure_time": "07:04:00.873000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.736, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 580, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_07:00", - "arrival_time": "07:07:28.364000", - "departure_time": "07:07:28.364000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.37, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 581, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_07:00", - "arrival_time": "07:08:12.873000", - "departure_time": "07:08:12.873000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.506, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 582, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_07:00", - "arrival_time": "07:09:11.127000", - "departure_time": "07:09:11.127000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.684, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 583, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_07:00", - "arrival_time": "07:11:27.600000", - "departure_time": "07:11:27.600000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.101, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 584, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_07:00", - "arrival_time": "07:13:11.018000", - "departure_time": "07:13:11.018000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.417, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 585, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_07:00", - "arrival_time": "07:14:22.364000", - "departure_time": "07:14:22.364000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.635, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 586, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_07:00", - "arrival_time": "07:17:17.782000", - "departure_time": "07:17:17.782000", - "stop_id": "bUCR_0_01", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.171, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 587, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_07:10", - "arrival_time": "07:10:00", - "departure_time": "07:10:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 588, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_07:10", - "arrival_time": "07:14:15.927000", - "departure_time": "07:14:15.927000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.782, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 589, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_07:10", - "arrival_time": "07:17:27.709000", - "departure_time": "07:17:27.709000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.368, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 590, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_07:10", - "arrival_time": "07:18:04.691000", - "departure_time": "07:18:04.691000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.481, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 591, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_07:10", - "arrival_time": "07:19:12.764000", - "departure_time": "07:19:12.764000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.689, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 592, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_07:10", - "arrival_time": "07:21:29.891000", - "departure_time": "07:21:29.891000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.108, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 593, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_07:10", - "arrival_time": "07:23:09.709000", - "departure_time": "07:23:09.709000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.413, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 594, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_07:10", - "arrival_time": "07:24:22.691000", - "departure_time": "07:24:22.691000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.636, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 595, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_07:10", - "arrival_time": "07:29:11.673000", - "departure_time": "07:29:11.673000", - "stop_id": "bUCR_0_02", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.519, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 596, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_07:30", - "arrival_time": "07:30:00", - "departure_time": "07:30:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 597, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_07:30", - "arrival_time": "07:34:00.873000", - "departure_time": "07:34:00.873000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.736, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 598, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_07:30", - "arrival_time": "07:37:28.364000", - "departure_time": "07:37:28.364000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.37, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 599, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_07:30", - "arrival_time": "07:38:12.873000", - "departure_time": "07:38:12.873000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.506, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 600, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_07:30", - "arrival_time": "07:39:11.127000", - "departure_time": "07:39:11.127000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.684, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 601, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_07:30", - "arrival_time": "07:41:27.600000", - "departure_time": "07:41:27.600000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.101, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 602, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_07:30", - "arrival_time": "07:43:11.018000", - "departure_time": "07:43:11.018000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.417, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 603, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_07:30", - "arrival_time": "07:44:22.364000", - "departure_time": "07:44:22.364000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.635, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 604, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_07:30", - "arrival_time": "07:47:17.782000", - "departure_time": "07:47:17.782000", - "stop_id": "bUCR_0_01", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.171, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 605, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_07:40", - "arrival_time": "07:40:00", - "departure_time": "07:40:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 606, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_07:40", - "arrival_time": "07:44:15.927000", - "departure_time": "07:44:15.927000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.782, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 607, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_07:40", - "arrival_time": "07:47:27.709000", - "departure_time": "07:47:27.709000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.368, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 608, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_07:40", - "arrival_time": "07:48:04.691000", - "departure_time": "07:48:04.691000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.481, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 609, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_07:40", - "arrival_time": "07:49:12.764000", - "departure_time": "07:49:12.764000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.689, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 610, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_07:40", - "arrival_time": "07:51:29.891000", - "departure_time": "07:51:29.891000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.108, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 611, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_07:40", - "arrival_time": "07:53:09.709000", - "departure_time": "07:53:09.709000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.413, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 612, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_07:40", - "arrival_time": "07:54:22.691000", - "departure_time": "07:54:22.691000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.636, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 613, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_07:40", - "arrival_time": "07:59:11.673000", - "departure_time": "07:59:11.673000", - "stop_id": "bUCR_0_02", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.519, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 614, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_07:50", - "arrival_time": "07:50:00", - "departure_time": "07:50:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 615, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_07:50", - "arrival_time": "07:54:00.873000", - "departure_time": "07:54:00.873000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.736, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 616, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_07:50", - "arrival_time": "07:57:28.364000", - "departure_time": "07:57:28.364000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.37, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 617, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_07:50", - "arrival_time": "07:58:12.873000", - "departure_time": "07:58:12.873000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.506, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 618, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_07:50", - "arrival_time": "07:59:11.127000", - "departure_time": "07:59:11.127000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.684, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 619, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_07:50", - "arrival_time": "08:01:27.600000", - "departure_time": "08:01:27.600000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.101, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 620, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_07:50", - "arrival_time": "08:03:11.018000", - "departure_time": "08:03:11.018000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.417, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 621, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_07:50", - "arrival_time": "08:04:22.364000", - "departure_time": "08:04:22.364000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.635, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 622, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_07:50", - "arrival_time": "08:07:17.782000", - "departure_time": "08:07:17.782000", - "stop_id": "bUCR_0_01", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.171, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 623, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_08:00", - "arrival_time": "08:00:00", - "departure_time": "08:00:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 624, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_08:00", - "arrival_time": "08:04:15.927000", - "departure_time": "08:04:15.927000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.782, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 625, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_08:00", - "arrival_time": "08:07:27.709000", - "departure_time": "08:07:27.709000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.368, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 626, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_08:00", - "arrival_time": "08:08:04.691000", - "departure_time": "08:08:04.691000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.481, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 627, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_08:00", - "arrival_time": "08:09:12.764000", - "departure_time": "08:09:12.764000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.689, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 628, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_08:00", - "arrival_time": "08:11:29.891000", - "departure_time": "08:11:29.891000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.108, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 629, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_08:00", - "arrival_time": "08:13:09.709000", - "departure_time": "08:13:09.709000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.413, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 630, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_08:00", - "arrival_time": "08:14:22.691000", - "departure_time": "08:14:22.691000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.636, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 631, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_08:00", - "arrival_time": "08:19:11.673000", - "departure_time": "08:19:11.673000", - "stop_id": "bUCR_0_02", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.519, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 632, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_08:35", - "arrival_time": "08:35:00", - "departure_time": "08:35:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 633, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_08:35", - "arrival_time": "08:39:00.873000", - "departure_time": "08:39:00.873000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.736, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 634, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_08:35", - "arrival_time": "08:42:28.364000", - "departure_time": "08:42:28.364000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.37, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 635, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_08:35", - "arrival_time": "08:43:12.873000", - "departure_time": "08:43:12.873000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.506, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 636, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_08:35", - "arrival_time": "08:44:11.127000", - "departure_time": "08:44:11.127000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.684, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 637, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_08:35", - "arrival_time": "08:46:27.600000", - "departure_time": "08:46:27.600000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.101, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 638, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_08:35", - "arrival_time": "08:48:11.018000", - "departure_time": "08:48:11.018000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.417, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 639, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_08:35", - "arrival_time": "08:49:22.364000", - "departure_time": "08:49:22.364000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.635, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 640, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_08:35", - "arrival_time": "08:52:17.782000", - "departure_time": "08:52:17.782000", - "stop_id": "bUCR_0_01", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.171, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 641, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_08:45", - "arrival_time": "08:45:00", - "departure_time": "08:45:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 642, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_08:45", - "arrival_time": "08:49:15.927000", - "departure_time": "08:49:15.927000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.782, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 643, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_08:45", - "arrival_time": "08:52:27.709000", - "departure_time": "08:52:27.709000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.368, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 644, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_08:45", - "arrival_time": "08:53:04.691000", - "departure_time": "08:53:04.691000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.481, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 645, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_08:45", - "arrival_time": "08:54:12.764000", - "departure_time": "08:54:12.764000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.689, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 646, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_08:45", - "arrival_time": "08:56:29.891000", - "departure_time": "08:56:29.891000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.108, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 647, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_08:45", - "arrival_time": "08:58:09.709000", - "departure_time": "08:58:09.709000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.413, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 648, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_08:45", - "arrival_time": "08:59:22.691000", - "departure_time": "08:59:22.691000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.636, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 649, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_08:45", - "arrival_time": "09:04:11.673000", - "departure_time": "09:04:11.673000", - "stop_id": "bUCR_0_02", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.519, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 650, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_08:55", - "arrival_time": "08:55:00", - "departure_time": "08:55:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 651, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_08:55", - "arrival_time": "08:59:00.873000", - "departure_time": "08:59:00.873000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.736, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 652, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_08:55", - "arrival_time": "09:02:28.364000", - "departure_time": "09:02:28.364000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.37, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 653, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_08:55", - "arrival_time": "09:03:12.873000", - "departure_time": "09:03:12.873000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.506, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 654, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_08:55", - "arrival_time": "09:04:11.127000", - "departure_time": "09:04:11.127000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.684, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 655, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_08:55", - "arrival_time": "09:06:27.600000", - "departure_time": "09:06:27.600000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.101, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 656, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_08:55", - "arrival_time": "09:08:11.018000", - "departure_time": "09:08:11.018000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.417, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 657, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_08:55", - "arrival_time": "09:09:22.364000", - "departure_time": "09:09:22.364000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.635, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 658, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_08:55", - "arrival_time": "09:12:17.782000", - "departure_time": "09:12:17.782000", - "stop_id": "bUCR_0_01", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.171, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 659, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_09:05", - "arrival_time": "09:05:00", - "departure_time": "09:05:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 660, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_09:05", - "arrival_time": "09:09:15.927000", - "departure_time": "09:09:15.927000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.782, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 661, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_09:05", - "arrival_time": "09:12:27.709000", - "departure_time": "09:12:27.709000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.368, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 662, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_09:05", - "arrival_time": "09:13:04.691000", - "departure_time": "09:13:04.691000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.481, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 663, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_09:05", - "arrival_time": "09:14:12.764000", - "departure_time": "09:14:12.764000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.689, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 664, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_09:05", - "arrival_time": "09:16:29.891000", - "departure_time": "09:16:29.891000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.108, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 665, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_09:05", - "arrival_time": "09:18:09.709000", - "departure_time": "09:18:09.709000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.413, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 666, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_09:05", - "arrival_time": "09:19:22.691000", - "departure_time": "09:19:22.691000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.636, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 667, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_09:05", - "arrival_time": "09:24:11.673000", - "departure_time": "09:24:11.673000", - "stop_id": "bUCR_0_02", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.519, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 668, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_09:25", - "arrival_time": "09:25:00", - "departure_time": "09:25:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 669, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_09:25", - "arrival_time": "09:29:00.873000", - "departure_time": "09:29:00.873000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.736, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 670, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_09:25", - "arrival_time": "09:32:28.364000", - "departure_time": "09:32:28.364000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.37, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 671, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_09:25", - "arrival_time": "09:33:12.873000", - "departure_time": "09:33:12.873000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.506, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 672, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_09:25", - "arrival_time": "09:34:11.127000", - "departure_time": "09:34:11.127000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.684, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 673, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_09:25", - "arrival_time": "09:36:27.600000", - "departure_time": "09:36:27.600000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.101, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 674, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_09:25", - "arrival_time": "09:38:11.018000", - "departure_time": "09:38:11.018000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.417, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 675, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_09:25", - "arrival_time": "09:39:22.364000", - "departure_time": "09:39:22.364000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.635, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 676, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_09:25", - "arrival_time": "09:42:17.782000", - "departure_time": "09:42:17.782000", - "stop_id": "bUCR_0_01", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.171, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 677, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_09:35", - "arrival_time": "09:35:00", - "departure_time": "09:35:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 678, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_09:35", - "arrival_time": "09:39:15.927000", - "departure_time": "09:39:15.927000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.782, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 679, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_09:35", - "arrival_time": "09:42:27.709000", - "departure_time": "09:42:27.709000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.368, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 680, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_09:35", - "arrival_time": "09:43:04.691000", - "departure_time": "09:43:04.691000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.481, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 681, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_09:35", - "arrival_time": "09:44:12.764000", - "departure_time": "09:44:12.764000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.689, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 682, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_09:35", - "arrival_time": "09:46:29.891000", - "departure_time": "09:46:29.891000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.108, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 683, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_09:35", - "arrival_time": "09:48:09.709000", - "departure_time": "09:48:09.709000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.413, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 684, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_09:35", - "arrival_time": "09:49:22.691000", - "departure_time": "09:49:22.691000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.636, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 685, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_09:35", - "arrival_time": "09:54:11.673000", - "departure_time": "09:54:11.673000", - "stop_id": "bUCR_0_02", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.519, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 686, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_09:45", - "arrival_time": "09:45:00", - "departure_time": "09:45:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 687, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_09:45", - "arrival_time": "09:49:00.873000", - "departure_time": "09:49:00.873000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.736, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 688, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_09:45", - "arrival_time": "09:52:28.364000", - "departure_time": "09:52:28.364000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.37, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 689, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_09:45", - "arrival_time": "09:53:12.873000", - "departure_time": "09:53:12.873000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.506, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 690, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_09:45", - "arrival_time": "09:54:11.127000", - "departure_time": "09:54:11.127000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.684, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 691, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_09:45", - "arrival_time": "09:56:27.600000", - "departure_time": "09:56:27.600000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.101, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 692, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_09:45", - "arrival_time": "09:58:11.018000", - "departure_time": "09:58:11.018000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.417, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 693, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_09:45", - "arrival_time": "09:59:22.364000", - "departure_time": "09:59:22.364000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.635, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 694, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_09:45", - "arrival_time": "10:02:17.782000", - "departure_time": "10:02:17.782000", - "stop_id": "bUCR_0_01", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.171, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 695, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_09:55", - "arrival_time": "09:55:00", - "departure_time": "09:55:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 696, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_09:55", - "arrival_time": "09:59:15.927000", - "departure_time": "09:59:15.927000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.782, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 697, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_09:55", - "arrival_time": "10:02:27.709000", - "departure_time": "10:02:27.709000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.368, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 698, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_09:55", - "arrival_time": "10:03:04.691000", - "departure_time": "10:03:04.691000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.481, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 699, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_09:55", - "arrival_time": "10:04:12.764000", - "departure_time": "10:04:12.764000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.689, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 700, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_09:55", - "arrival_time": "10:06:29.891000", - "departure_time": "10:06:29.891000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.108, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 701, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_09:55", - "arrival_time": "10:08:09.709000", - "departure_time": "10:08:09.709000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.413, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 702, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_09:55", - "arrival_time": "10:09:22.691000", - "departure_time": "10:09:22.691000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.636, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 703, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_09:55", - "arrival_time": "10:14:11.673000", - "departure_time": "10:14:11.673000", - "stop_id": "bUCR_0_02", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.519, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 704, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_10:15", - "arrival_time": "10:15:00", - "departure_time": "10:15:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 705, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_10:15", - "arrival_time": "10:19:00.873000", - "departure_time": "10:19:00.873000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.736, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 706, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_10:15", - "arrival_time": "10:22:28.364000", - "departure_time": "10:22:28.364000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.37, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 707, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_10:15", - "arrival_time": "10:23:12.873000", - "departure_time": "10:23:12.873000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.506, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 708, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_10:15", - "arrival_time": "10:24:11.127000", - "departure_time": "10:24:11.127000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.684, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 709, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_10:15", - "arrival_time": "10:26:27.600000", - "departure_time": "10:26:27.600000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.101, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 710, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_10:15", - "arrival_time": "10:28:11.018000", - "departure_time": "10:28:11.018000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.417, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 711, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_10:15", - "arrival_time": "10:29:22.364000", - "departure_time": "10:29:22.364000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.635, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 712, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_10:15", - "arrival_time": "10:32:17.782000", - "departure_time": "10:32:17.782000", - "stop_id": "bUCR_0_01", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.171, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 713, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_10:25", - "arrival_time": "10:25:00", - "departure_time": "10:25:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 714, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_10:25", - "arrival_time": "10:29:15.927000", - "departure_time": "10:29:15.927000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.782, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 715, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_10:25", - "arrival_time": "10:32:27.709000", - "departure_time": "10:32:27.709000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.368, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 716, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_10:25", - "arrival_time": "10:33:04.691000", - "departure_time": "10:33:04.691000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.481, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 717, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_10:25", - "arrival_time": "10:34:12.764000", - "departure_time": "10:34:12.764000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.689, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 718, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_10:25", - "arrival_time": "10:36:29.891000", - "departure_time": "10:36:29.891000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.108, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 719, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_10:25", - "arrival_time": "10:38:09.709000", - "departure_time": "10:38:09.709000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.413, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 720, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_10:25", - "arrival_time": "10:39:22.691000", - "departure_time": "10:39:22.691000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.636, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 721, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_10:25", - "arrival_time": "10:44:11.673000", - "departure_time": "10:44:11.673000", - "stop_id": "bUCR_0_02", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.519, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 722, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_10:35", - "arrival_time": "10:35:00", - "departure_time": "10:35:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 723, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_10:35", - "arrival_time": "10:39:00.873000", - "departure_time": "10:39:00.873000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.736, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 724, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_10:35", - "arrival_time": "10:42:28.364000", - "departure_time": "10:42:28.364000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.37, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 725, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_10:35", - "arrival_time": "10:43:12.873000", - "departure_time": "10:43:12.873000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.506, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 726, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_10:35", - "arrival_time": "10:44:11.127000", - "departure_time": "10:44:11.127000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.684, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 727, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_10:35", - "arrival_time": "10:46:27.600000", - "departure_time": "10:46:27.600000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.101, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 728, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_10:35", - "arrival_time": "10:48:11.018000", - "departure_time": "10:48:11.018000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.417, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 729, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_10:35", - "arrival_time": "10:49:22.364000", - "departure_time": "10:49:22.364000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.635, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 730, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_10:35", - "arrival_time": "10:52:17.782000", - "departure_time": "10:52:17.782000", - "stop_id": "bUCR_0_01", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.171, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 731, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_10:45", - "arrival_time": "10:45:00", - "departure_time": "10:45:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 732, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_10:45", - "arrival_time": "10:49:15.927000", - "departure_time": "10:49:15.927000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.782, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 733, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_10:45", - "arrival_time": "10:52:27.709000", - "departure_time": "10:52:27.709000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.368, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 734, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_10:45", - "arrival_time": "10:53:04.691000", - "departure_time": "10:53:04.691000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.481, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 735, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_10:45", - "arrival_time": "10:54:12.764000", - "departure_time": "10:54:12.764000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.689, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 736, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_10:45", - "arrival_time": "10:56:29.891000", - "departure_time": "10:56:29.891000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.108, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 737, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_10:45", - "arrival_time": "10:58:09.709000", - "departure_time": "10:58:09.709000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.413, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 738, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_10:45", - "arrival_time": "10:59:22.691000", - "departure_time": "10:59:22.691000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.636, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 739, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_10:45", - "arrival_time": "11:04:11.673000", - "departure_time": "11:04:11.673000", - "stop_id": "bUCR_0_02", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.519, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 740, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_11:05", - "arrival_time": "11:05:00", - "departure_time": "11:05:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 741, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_11:05", - "arrival_time": "11:09:00.873000", - "departure_time": "11:09:00.873000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.736, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 742, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_11:05", - "arrival_time": "11:12:28.364000", - "departure_time": "11:12:28.364000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.37, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 743, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_11:05", - "arrival_time": "11:13:12.873000", - "departure_time": "11:13:12.873000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.506, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 744, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_11:05", - "arrival_time": "11:14:11.127000", - "departure_time": "11:14:11.127000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.684, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 745, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_11:05", - "arrival_time": "11:16:27.600000", - "departure_time": "11:16:27.600000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.101, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 746, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_11:05", - "arrival_time": "11:18:11.018000", - "departure_time": "11:18:11.018000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.417, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 747, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_11:05", - "arrival_time": "11:19:22.364000", - "departure_time": "11:19:22.364000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.635, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 748, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_11:05", - "arrival_time": "11:22:17.782000", - "departure_time": "11:22:17.782000", - "stop_id": "bUCR_0_01", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.171, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 749, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_11:15", - "arrival_time": "11:15:00", - "departure_time": "11:15:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 750, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_11:15", - "arrival_time": "11:19:15.927000", - "departure_time": "11:19:15.927000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.782, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 751, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_11:15", - "arrival_time": "11:22:27.709000", - "departure_time": "11:22:27.709000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.368, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 752, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_11:15", - "arrival_time": "11:23:04.691000", - "departure_time": "11:23:04.691000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.481, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 753, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_11:15", - "arrival_time": "11:24:12.764000", - "departure_time": "11:24:12.764000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.689, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 754, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_11:15", - "arrival_time": "11:26:29.891000", - "departure_time": "11:26:29.891000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.108, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 755, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_11:15", - "arrival_time": "11:28:09.709000", - "departure_time": "11:28:09.709000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.413, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 756, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_11:15", - "arrival_time": "11:29:22.691000", - "departure_time": "11:29:22.691000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.636, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 757, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_11:15", - "arrival_time": "11:34:11.673000", - "departure_time": "11:34:11.673000", - "stop_id": "bUCR_0_02", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.519, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 758, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_11:20", - "arrival_time": "11:20:00", - "departure_time": "11:20:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 759, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_11:20", - "arrival_time": "11:24:00.873000", - "departure_time": "11:24:00.873000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.736, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 760, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_11:20", - "arrival_time": "11:27:28.364000", - "departure_time": "11:27:28.364000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.37, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 761, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_11:20", - "arrival_time": "11:28:12.873000", - "departure_time": "11:28:12.873000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.506, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 762, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_11:20", - "arrival_time": "11:29:11.127000", - "departure_time": "11:29:11.127000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.684, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 763, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_11:20", - "arrival_time": "11:31:27.600000", - "departure_time": "11:31:27.600000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.101, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 764, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_11:20", - "arrival_time": "11:33:11.018000", - "departure_time": "11:33:11.018000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.417, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 765, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_11:20", - "arrival_time": "11:34:22.364000", - "departure_time": "11:34:22.364000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.635, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 766, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_11:20", - "arrival_time": "11:37:17.782000", - "departure_time": "11:37:17.782000", - "stop_id": "bUCR_0_01", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.171, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 767, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_11:30", - "arrival_time": "11:30:00", - "departure_time": "11:30:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 768, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_11:30", - "arrival_time": "11:34:15.927000", - "departure_time": "11:34:15.927000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.782, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 769, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_11:30", - "arrival_time": "11:37:27.709000", - "departure_time": "11:37:27.709000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.368, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 770, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_11:30", - "arrival_time": "11:38:04.691000", - "departure_time": "11:38:04.691000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.481, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 771, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_11:30", - "arrival_time": "11:39:12.764000", - "departure_time": "11:39:12.764000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.689, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 772, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_11:30", - "arrival_time": "11:41:29.891000", - "departure_time": "11:41:29.891000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.108, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 773, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_11:30", - "arrival_time": "11:43:09.709000", - "departure_time": "11:43:09.709000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.413, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 774, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_11:30", - "arrival_time": "11:44:22.691000", - "departure_time": "11:44:22.691000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.636, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 775, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_11:30", - "arrival_time": "11:49:11.673000", - "departure_time": "11:49:11.673000", - "stop_id": "bUCR_0_02", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.519, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 776, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_11:40", - "arrival_time": "11:40:00", - "departure_time": "11:40:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 777, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_11:40", - "arrival_time": "11:44:00.873000", - "departure_time": "11:44:00.873000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.736, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 778, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_11:40", - "arrival_time": "11:47:28.364000", - "departure_time": "11:47:28.364000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.37, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 779, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_11:40", - "arrival_time": "11:48:12.873000", - "departure_time": "11:48:12.873000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.506, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 780, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_11:40", - "arrival_time": "11:49:11.127000", - "departure_time": "11:49:11.127000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.684, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 781, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_11:40", - "arrival_time": "11:51:27.600000", - "departure_time": "11:51:27.600000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.101, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 782, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_11:40", - "arrival_time": "11:53:11.018000", - "departure_time": "11:53:11.018000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.417, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 783, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_11:40", - "arrival_time": "11:54:22.364000", - "departure_time": "11:54:22.364000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.635, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 784, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_11:40", - "arrival_time": "11:57:17.782000", - "departure_time": "11:57:17.782000", - "stop_id": "bUCR_0_01", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.171, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 785, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_11:50", - "arrival_time": "11:50:00", - "departure_time": "11:50:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 786, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_11:50", - "arrival_time": "11:54:15.927000", - "departure_time": "11:54:15.927000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.782, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 787, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_11:50", - "arrival_time": "11:57:27.709000", - "departure_time": "11:57:27.709000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.368, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 788, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_11:50", - "arrival_time": "11:58:04.691000", - "departure_time": "11:58:04.691000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.481, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 789, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_11:50", - "arrival_time": "11:59:12.764000", - "departure_time": "11:59:12.764000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.689, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 790, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_11:50", - "arrival_time": "12:01:29.891000", - "departure_time": "12:01:29.891000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.108, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 791, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_11:50", - "arrival_time": "12:03:09.709000", - "departure_time": "12:03:09.709000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.413, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 792, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_11:50", - "arrival_time": "12:04:22.691000", - "departure_time": "12:04:22.691000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.636, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 793, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_11:50", - "arrival_time": "12:09:11.673000", - "departure_time": "12:09:11.673000", - "stop_id": "bUCR_0_02", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.519, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 794, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_12:05", - "arrival_time": "12:05:00", - "departure_time": "12:05:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 795, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_12:05", - "arrival_time": "12:09:00.873000", - "departure_time": "12:09:00.873000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.736, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 796, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_12:05", - "arrival_time": "12:12:28.364000", - "departure_time": "12:12:28.364000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.37, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 797, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_12:05", - "arrival_time": "12:13:12.873000", - "departure_time": "12:13:12.873000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.506, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 798, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_12:05", - "arrival_time": "12:14:11.127000", - "departure_time": "12:14:11.127000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.684, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 799, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_12:05", - "arrival_time": "12:16:27.600000", - "departure_time": "12:16:27.600000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.101, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 800, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_12:05", - "arrival_time": "12:18:11.018000", - "departure_time": "12:18:11.018000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.417, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 801, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_12:05", - "arrival_time": "12:19:22.364000", - "departure_time": "12:19:22.364000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.635, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 802, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_12:05", - "arrival_time": "12:22:17.782000", - "departure_time": "12:22:17.782000", - "stop_id": "bUCR_0_01", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.171, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 803, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_12:10", - "arrival_time": "12:10:00", - "departure_time": "12:10:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 804, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_12:10", - "arrival_time": "12:14:15.927000", - "departure_time": "12:14:15.927000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.782, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 805, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_12:10", - "arrival_time": "12:17:27.709000", - "departure_time": "12:17:27.709000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.368, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 806, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_12:10", - "arrival_time": "12:18:04.691000", - "departure_time": "12:18:04.691000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.481, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 807, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_12:10", - "arrival_time": "12:19:12.764000", - "departure_time": "12:19:12.764000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.689, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 808, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_12:10", - "arrival_time": "12:21:29.891000", - "departure_time": "12:21:29.891000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.108, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 809, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_12:10", - "arrival_time": "12:23:09.709000", - "departure_time": "12:23:09.709000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.413, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 810, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_12:10", - "arrival_time": "12:24:22.691000", - "departure_time": "12:24:22.691000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.636, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 811, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_12:10", - "arrival_time": "12:29:11.673000", - "departure_time": "12:29:11.673000", - "stop_id": "bUCR_0_02", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.519, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 812, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_12:15", - "arrival_time": "12:15:00", - "departure_time": "12:15:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 813, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_12:15", - "arrival_time": "12:19:00.873000", - "departure_time": "12:19:00.873000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.736, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 814, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_12:15", - "arrival_time": "12:22:28.364000", - "departure_time": "12:22:28.364000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.37, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 815, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_12:15", - "arrival_time": "12:23:12.873000", - "departure_time": "12:23:12.873000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.506, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 816, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_12:15", - "arrival_time": "12:24:11.127000", - "departure_time": "12:24:11.127000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.684, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 817, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_12:15", - "arrival_time": "12:26:27.600000", - "departure_time": "12:26:27.600000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.101, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 818, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_12:15", - "arrival_time": "12:28:11.018000", - "departure_time": "12:28:11.018000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.417, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 819, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_12:15", - "arrival_time": "12:29:22.364000", - "departure_time": "12:29:22.364000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.635, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 820, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_12:15", - "arrival_time": "12:32:17.782000", - "departure_time": "12:32:17.782000", - "stop_id": "bUCR_0_01", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.171, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 821, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_12:25", - "arrival_time": "12:25:00", - "departure_time": "12:25:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 822, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_12:25", - "arrival_time": "12:29:15.927000", - "departure_time": "12:29:15.927000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.782, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 823, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_12:25", - "arrival_time": "12:32:27.709000", - "departure_time": "12:32:27.709000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.368, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 824, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_12:25", - "arrival_time": "12:33:04.691000", - "departure_time": "12:33:04.691000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.481, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 825, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_12:25", - "arrival_time": "12:34:12.764000", - "departure_time": "12:34:12.764000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.689, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 826, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_12:25", - "arrival_time": "12:36:29.891000", - "departure_time": "12:36:29.891000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.108, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 827, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_12:25", - "arrival_time": "12:38:09.709000", - "departure_time": "12:38:09.709000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.413, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 828, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_12:25", - "arrival_time": "12:39:22.691000", - "departure_time": "12:39:22.691000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.636, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 829, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_12:25", - "arrival_time": "12:44:11.673000", - "departure_time": "12:44:11.673000", - "stop_id": "bUCR_0_02", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.519, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 830, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_12:50", - "arrival_time": "12:50:00", - "departure_time": "12:50:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 831, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_12:50", - "arrival_time": "12:54:00.873000", - "departure_time": "12:54:00.873000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.736, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 832, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_12:50", - "arrival_time": "12:57:28.364000", - "departure_time": "12:57:28.364000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.37, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 833, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_12:50", - "arrival_time": "12:58:12.873000", - "departure_time": "12:58:12.873000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.506, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 834, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_12:50", - "arrival_time": "12:59:11.127000", - "departure_time": "12:59:11.127000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.684, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 835, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_12:50", - "arrival_time": "13:01:27.600000", - "departure_time": "13:01:27.600000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.101, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 836, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_12:50", - "arrival_time": "13:03:11.018000", - "departure_time": "13:03:11.018000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.417, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 837, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_12:50", - "arrival_time": "13:04:22.364000", - "departure_time": "13:04:22.364000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.635, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 838, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_12:50", - "arrival_time": "13:07:17.782000", - "departure_time": "13:07:17.782000", - "stop_id": "bUCR_0_01", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.171, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 839, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_13:00", - "arrival_time": "13:00:00", - "departure_time": "13:00:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 840, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_13:00", - "arrival_time": "13:04:15.927000", - "departure_time": "13:04:15.927000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.782, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 841, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_13:00", - "arrival_time": "13:07:27.709000", - "departure_time": "13:07:27.709000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.368, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 842, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_13:00", - "arrival_time": "13:08:04.691000", - "departure_time": "13:08:04.691000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.481, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 843, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_13:00", - "arrival_time": "13:09:12.764000", - "departure_time": "13:09:12.764000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.689, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 844, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_13:00", - "arrival_time": "13:11:29.891000", - "departure_time": "13:11:29.891000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.108, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 845, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_13:00", - "arrival_time": "13:13:09.709000", - "departure_time": "13:13:09.709000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.413, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 846, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_13:00", - "arrival_time": "13:14:22.691000", - "departure_time": "13:14:22.691000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.636, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 847, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_13:00", - "arrival_time": "13:19:11.673000", - "departure_time": "13:19:11.673000", - "stop_id": "bUCR_0_02", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.519, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 848, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_13:25", - "arrival_time": "13:25:00", - "departure_time": "13:25:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 849, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_13:25", - "arrival_time": "13:29:00.873000", - "departure_time": "13:29:00.873000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.736, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 850, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_13:25", - "arrival_time": "13:32:28.364000", - "departure_time": "13:32:28.364000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.37, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 851, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_13:25", - "arrival_time": "13:33:12.873000", - "departure_time": "13:33:12.873000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.506, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 852, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_13:25", - "arrival_time": "13:34:11.127000", - "departure_time": "13:34:11.127000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.684, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 853, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_13:25", - "arrival_time": "13:36:27.600000", - "departure_time": "13:36:27.600000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.101, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 854, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_13:25", - "arrival_time": "13:38:11.018000", - "departure_time": "13:38:11.018000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.417, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 855, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_13:25", - "arrival_time": "13:39:22.364000", - "departure_time": "13:39:22.364000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.635, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 856, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_13:25", - "arrival_time": "13:42:17.782000", - "departure_time": "13:42:17.782000", - "stop_id": "bUCR_0_01", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.171, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 857, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_13:40", - "arrival_time": "13:40:00", - "departure_time": "13:40:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 858, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_13:40", - "arrival_time": "13:44:15.927000", - "departure_time": "13:44:15.927000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.782, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 859, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_13:40", - "arrival_time": "13:47:27.709000", - "departure_time": "13:47:27.709000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.368, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 860, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_13:40", - "arrival_time": "13:48:04.691000", - "departure_time": "13:48:04.691000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.481, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 861, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_13:40", - "arrival_time": "13:49:12.764000", - "departure_time": "13:49:12.764000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.689, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 862, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_13:40", - "arrival_time": "13:51:29.891000", - "departure_time": "13:51:29.891000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.108, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 863, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_13:40", - "arrival_time": "13:53:09.709000", - "departure_time": "13:53:09.709000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.413, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 864, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_13:40", - "arrival_time": "13:54:22.691000", - "departure_time": "13:54:22.691000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.636, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 865, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_13:40", - "arrival_time": "13:59:11.673000", - "departure_time": "13:59:11.673000", - "stop_id": "bUCR_0_02", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.519, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 866, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_13:50", - "arrival_time": "13:50:00", - "departure_time": "13:50:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 867, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_13:50", - "arrival_time": "13:54:00.873000", - "departure_time": "13:54:00.873000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.736, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 868, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_13:50", - "arrival_time": "13:57:28.364000", - "departure_time": "13:57:28.364000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.37, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 869, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_13:50", - "arrival_time": "13:58:12.873000", - "departure_time": "13:58:12.873000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.506, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 870, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_13:50", - "arrival_time": "13:59:11.127000", - "departure_time": "13:59:11.127000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.684, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 871, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_13:50", - "arrival_time": "14:01:27.600000", - "departure_time": "14:01:27.600000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.101, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 872, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_13:50", - "arrival_time": "14:03:11.018000", - "departure_time": "14:03:11.018000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.417, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 873, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_13:50", - "arrival_time": "14:04:22.364000", - "departure_time": "14:04:22.364000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.635, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 874, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_13:50", - "arrival_time": "14:07:17.782000", - "departure_time": "14:07:17.782000", - "stop_id": "bUCR_0_01", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.171, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 875, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_14:00", - "arrival_time": "14:00:00", - "departure_time": "14:00:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 876, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_14:00", - "arrival_time": "14:04:15.927000", - "departure_time": "14:04:15.927000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.782, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 877, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_14:00", - "arrival_time": "14:07:27.709000", - "departure_time": "14:07:27.709000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.368, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 878, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_14:00", - "arrival_time": "14:08:04.691000", - "departure_time": "14:08:04.691000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.481, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 879, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_14:00", - "arrival_time": "14:09:12.764000", - "departure_time": "14:09:12.764000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.689, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 880, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_14:00", - "arrival_time": "14:11:29.891000", - "departure_time": "14:11:29.891000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.108, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 881, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_14:00", - "arrival_time": "14:13:09.709000", - "departure_time": "14:13:09.709000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.413, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 882, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_14:00", - "arrival_time": "14:14:22.691000", - "departure_time": "14:14:22.691000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.636, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 883, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_14:00", - "arrival_time": "14:19:11.673000", - "departure_time": "14:19:11.673000", - "stop_id": "bUCR_0_02", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.519, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 884, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_14:10", - "arrival_time": "14:10:00", - "departure_time": "14:10:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 885, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_14:10", - "arrival_time": "14:14:00.873000", - "departure_time": "14:14:00.873000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.736, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 886, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_14:10", - "arrival_time": "14:17:28.364000", - "departure_time": "14:17:28.364000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.37, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 887, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_14:10", - "arrival_time": "14:18:12.873000", - "departure_time": "14:18:12.873000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.506, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 888, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_14:10", - "arrival_time": "14:19:11.127000", - "departure_time": "14:19:11.127000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.684, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 889, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_14:10", - "arrival_time": "14:21:27.600000", - "departure_time": "14:21:27.600000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.101, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 890, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_14:10", - "arrival_time": "14:23:11.018000", - "departure_time": "14:23:11.018000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.417, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 891, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_14:10", - "arrival_time": "14:24:22.364000", - "departure_time": "14:24:22.364000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.635, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 892, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_14:10", - "arrival_time": "14:27:17.782000", - "departure_time": "14:27:17.782000", - "stop_id": "bUCR_0_01", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.171, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 893, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_14:25", - "arrival_time": "14:25:00", - "departure_time": "14:25:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 894, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_14:25", - "arrival_time": "14:29:15.927000", - "departure_time": "14:29:15.927000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.782, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 895, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_14:25", - "arrival_time": "14:32:27.709000", - "departure_time": "14:32:27.709000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.368, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 896, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_14:25", - "arrival_time": "14:33:04.691000", - "departure_time": "14:33:04.691000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.481, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 897, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_14:25", - "arrival_time": "14:34:12.764000", - "departure_time": "14:34:12.764000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.689, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 898, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_14:25", - "arrival_time": "14:36:29.891000", - "departure_time": "14:36:29.891000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.108, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 899, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_14:25", - "arrival_time": "14:38:09.709000", - "departure_time": "14:38:09.709000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.413, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 900, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_14:25", - "arrival_time": "14:39:22.691000", - "departure_time": "14:39:22.691000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.636, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 901, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_14:25", - "arrival_time": "14:44:11.673000", - "departure_time": "14:44:11.673000", - "stop_id": "bUCR_0_02", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.519, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 902, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_14:35", - "arrival_time": "14:35:00", - "departure_time": "14:35:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 903, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_14:35", - "arrival_time": "14:39:00.873000", - "departure_time": "14:39:00.873000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.736, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 904, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_14:35", - "arrival_time": "14:42:28.364000", - "departure_time": "14:42:28.364000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.37, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 905, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_14:35", - "arrival_time": "14:43:12.873000", - "departure_time": "14:43:12.873000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.506, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 906, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_14:35", - "arrival_time": "14:44:11.127000", - "departure_time": "14:44:11.127000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.684, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 907, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_14:35", - "arrival_time": "14:46:27.600000", - "departure_time": "14:46:27.600000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.101, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 908, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_14:35", - "arrival_time": "14:48:11.018000", - "departure_time": "14:48:11.018000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.417, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 909, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_14:35", - "arrival_time": "14:49:22.364000", - "departure_time": "14:49:22.364000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.635, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 910, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_14:35", - "arrival_time": "14:52:17.782000", - "departure_time": "14:52:17.782000", - "stop_id": "bUCR_0_01", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.171, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 911, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_14:45", - "arrival_time": "14:45:00", - "departure_time": "14:45:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 912, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_14:45", - "arrival_time": "14:49:15.927000", - "departure_time": "14:49:15.927000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.782, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 913, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_14:45", - "arrival_time": "14:52:27.709000", - "departure_time": "14:52:27.709000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.368, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 914, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_14:45", - "arrival_time": "14:53:04.691000", - "departure_time": "14:53:04.691000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.481, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 915, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_14:45", - "arrival_time": "14:54:12.764000", - "departure_time": "14:54:12.764000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.689, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 916, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_14:45", - "arrival_time": "14:56:29.891000", - "departure_time": "14:56:29.891000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.108, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 917, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_14:45", - "arrival_time": "14:58:09.709000", - "departure_time": "14:58:09.709000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.413, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 918, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_14:45", - "arrival_time": "14:59:22.691000", - "departure_time": "14:59:22.691000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.636, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 919, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_14:45", - "arrival_time": "15:04:11.673000", - "departure_time": "15:04:11.673000", - "stop_id": "bUCR_0_02", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.519, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 920, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_14:55", - "arrival_time": "14:55:00", - "departure_time": "14:55:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 921, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_14:55", - "arrival_time": "14:59:00.873000", - "departure_time": "14:59:00.873000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.736, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 922, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_14:55", - "arrival_time": "15:02:28.364000", - "departure_time": "15:02:28.364000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.37, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 923, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_14:55", - "arrival_time": "15:03:12.873000", - "departure_time": "15:03:12.873000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.506, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 924, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_14:55", - "arrival_time": "15:04:11.127000", - "departure_time": "15:04:11.127000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.684, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 925, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_14:55", - "arrival_time": "15:06:27.600000", - "departure_time": "15:06:27.600000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.101, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 926, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_14:55", - "arrival_time": "15:08:11.018000", - "departure_time": "15:08:11.018000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.417, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 927, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_14:55", - "arrival_time": "15:09:22.364000", - "departure_time": "15:09:22.364000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.635, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 928, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_14:55", - "arrival_time": "15:12:17.782000", - "departure_time": "15:12:17.782000", - "stop_id": "bUCR_0_01", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.171, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 929, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_15:10", - "arrival_time": "15:10:00", - "departure_time": "15:10:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 930, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_15:10", - "arrival_time": "15:14:15.927000", - "departure_time": "15:14:15.927000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.782, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 931, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_15:10", - "arrival_time": "15:17:27.709000", - "departure_time": "15:17:27.709000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.368, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 932, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_15:10", - "arrival_time": "15:18:04.691000", - "departure_time": "15:18:04.691000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.481, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 933, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_15:10", - "arrival_time": "15:19:12.764000", - "departure_time": "15:19:12.764000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.689, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 934, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_15:10", - "arrival_time": "15:21:29.891000", - "departure_time": "15:21:29.891000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.108, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 935, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_15:10", - "arrival_time": "15:23:09.709000", - "departure_time": "15:23:09.709000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.413, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 936, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_15:10", - "arrival_time": "15:24:22.691000", - "departure_time": "15:24:22.691000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.636, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 937, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_15:10", - "arrival_time": "15:29:11.673000", - "departure_time": "15:29:11.673000", - "stop_id": "bUCR_0_02", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.519, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 938, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_15:20", - "arrival_time": "15:20:00", - "departure_time": "15:20:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 939, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_15:20", - "arrival_time": "15:24:00.873000", - "departure_time": "15:24:00.873000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.736, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 940, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_15:20", - "arrival_time": "15:27:28.364000", - "departure_time": "15:27:28.364000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.37, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 941, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_15:20", - "arrival_time": "15:28:12.873000", - "departure_time": "15:28:12.873000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.506, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 942, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_15:20", - "arrival_time": "15:29:11.127000", - "departure_time": "15:29:11.127000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.684, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 943, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_15:20", - "arrival_time": "15:31:27.600000", - "departure_time": "15:31:27.600000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.101, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 944, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_15:20", - "arrival_time": "15:33:11.018000", - "departure_time": "15:33:11.018000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.417, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 945, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_15:20", - "arrival_time": "15:34:22.364000", - "departure_time": "15:34:22.364000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.635, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 946, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_15:20", - "arrival_time": "15:37:17.782000", - "departure_time": "15:37:17.782000", - "stop_id": "bUCR_0_01", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.171, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 947, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_15:30", - "arrival_time": "15:30:00", - "departure_time": "15:30:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 948, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_15:30", - "arrival_time": "15:34:15.927000", - "departure_time": "15:34:15.927000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.782, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 949, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_15:30", - "arrival_time": "15:37:27.709000", - "departure_time": "15:37:27.709000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.368, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 950, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_15:30", - "arrival_time": "15:38:04.691000", - "departure_time": "15:38:04.691000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.481, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 951, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_15:30", - "arrival_time": "15:39:12.764000", - "departure_time": "15:39:12.764000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.689, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 952, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_15:30", - "arrival_time": "15:41:29.891000", - "departure_time": "15:41:29.891000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.108, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 953, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_15:30", - "arrival_time": "15:43:09.709000", - "departure_time": "15:43:09.709000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.413, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 954, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_15:30", - "arrival_time": "15:44:22.691000", - "departure_time": "15:44:22.691000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.636, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 955, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_15:30", - "arrival_time": "15:49:11.673000", - "departure_time": "15:49:11.673000", - "stop_id": "bUCR_0_02", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.519, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 956, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_16:05", - "arrival_time": "16:05:00", - "departure_time": "16:05:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 957, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_16:05", - "arrival_time": "16:09:00.873000", - "departure_time": "16:09:00.873000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.736, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 958, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_16:05", - "arrival_time": "16:12:28.364000", - "departure_time": "16:12:28.364000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.37, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 959, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_16:05", - "arrival_time": "16:13:12.873000", - "departure_time": "16:13:12.873000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.506, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 960, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_16:05", - "arrival_time": "16:14:11.127000", - "departure_time": "16:14:11.127000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.684, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 961, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_16:05", - "arrival_time": "16:16:27.600000", - "departure_time": "16:16:27.600000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.101, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 962, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_16:05", - "arrival_time": "16:18:11.018000", - "departure_time": "16:18:11.018000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.417, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 963, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_16:05", - "arrival_time": "16:19:22.364000", - "departure_time": "16:19:22.364000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.635, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 964, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_16:05", - "arrival_time": "16:22:17.782000", - "departure_time": "16:22:17.782000", - "stop_id": "bUCR_0_01", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.171, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 965, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_16:15", - "arrival_time": "16:15:00", - "departure_time": "16:15:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 966, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_16:15", - "arrival_time": "16:19:15.927000", - "departure_time": "16:19:15.927000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.782, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 967, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_16:15", - "arrival_time": "16:22:27.709000", - "departure_time": "16:22:27.709000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.368, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 968, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_16:15", - "arrival_time": "16:23:04.691000", - "departure_time": "16:23:04.691000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.481, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 969, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_16:15", - "arrival_time": "16:24:12.764000", - "departure_time": "16:24:12.764000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.689, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 970, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_16:15", - "arrival_time": "16:26:29.891000", - "departure_time": "16:26:29.891000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.108, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 971, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_16:15", - "arrival_time": "16:28:09.709000", - "departure_time": "16:28:09.709000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.413, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 972, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_16:15", - "arrival_time": "16:29:22.691000", - "departure_time": "16:29:22.691000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.636, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 973, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_16:15", - "arrival_time": "16:34:11.673000", - "departure_time": "16:34:11.673000", - "stop_id": "bUCR_0_02", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.519, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 974, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_16:30", - "arrival_time": "16:30:00", - "departure_time": "16:30:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 975, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_16:30", - "arrival_time": "16:34:00.873000", - "departure_time": "16:34:00.873000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.736, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 976, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_16:30", - "arrival_time": "16:37:28.364000", - "departure_time": "16:37:28.364000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.37, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 977, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_16:30", - "arrival_time": "16:38:12.873000", - "departure_time": "16:38:12.873000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.506, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 978, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_16:30", - "arrival_time": "16:39:11.127000", - "departure_time": "16:39:11.127000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.684, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 979, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_16:30", - "arrival_time": "16:41:27.600000", - "departure_time": "16:41:27.600000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.101, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 980, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_16:30", - "arrival_time": "16:43:11.018000", - "departure_time": "16:43:11.018000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.417, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 981, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_16:30", - "arrival_time": "16:44:22.364000", - "departure_time": "16:44:22.364000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.635, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 982, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_16:30", - "arrival_time": "16:47:17.782000", - "departure_time": "16:47:17.782000", - "stop_id": "bUCR_0_01", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.171, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 983, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_16:40", - "arrival_time": "16:40:00", - "departure_time": "16:40:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 984, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_16:40", - "arrival_time": "16:44:15.927000", - "departure_time": "16:44:15.927000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.782, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 985, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_16:40", - "arrival_time": "16:47:27.709000", - "departure_time": "16:47:27.709000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.368, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 986, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_16:40", - "arrival_time": "16:48:04.691000", - "departure_time": "16:48:04.691000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.481, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 987, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_16:40", - "arrival_time": "16:49:12.764000", - "departure_time": "16:49:12.764000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.689, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 988, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_16:40", - "arrival_time": "16:51:29.891000", - "departure_time": "16:51:29.891000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.108, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 989, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_16:40", - "arrival_time": "16:53:09.709000", - "departure_time": "16:53:09.709000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.413, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 990, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_16:40", - "arrival_time": "16:54:22.691000", - "departure_time": "16:54:22.691000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.636, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 991, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_16:40", - "arrival_time": "16:59:11.673000", - "departure_time": "16:59:11.673000", - "stop_id": "bUCR_0_02", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.519, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 992, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_17:05", - "arrival_time": "17:05:00", - "departure_time": "17:05:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 993, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_17:05", - "arrival_time": "17:09:00.873000", - "departure_time": "17:09:00.873000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.736, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 994, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_17:05", - "arrival_time": "17:12:28.364000", - "departure_time": "17:12:28.364000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.37, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 995, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_17:05", - "arrival_time": "17:13:12.873000", - "departure_time": "17:13:12.873000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.506, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 996, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_17:05", - "arrival_time": "17:14:11.127000", - "departure_time": "17:14:11.127000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.684, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 997, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_17:05", - "arrival_time": "17:16:27.600000", - "departure_time": "17:16:27.600000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.101, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 998, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_17:05", - "arrival_time": "17:18:11.018000", - "departure_time": "17:18:11.018000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.417, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 999, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_17:05", - "arrival_time": "17:19:22.364000", - "departure_time": "17:19:22.364000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.635, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1000, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_17:05", - "arrival_time": "17:22:17.782000", - "departure_time": "17:22:17.782000", - "stop_id": "bUCR_0_01", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.171, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1001, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_17:15", - "arrival_time": "17:15:00", - "departure_time": "17:15:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 1002, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_17:15", - "arrival_time": "17:19:15.927000", - "departure_time": "17:19:15.927000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.782, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1003, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_17:15", - "arrival_time": "17:22:27.709000", - "departure_time": "17:22:27.709000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.368, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1004, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_17:15", - "arrival_time": "17:23:04.691000", - "departure_time": "17:23:04.691000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.481, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1005, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_17:15", - "arrival_time": "17:24:12.764000", - "departure_time": "17:24:12.764000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.689, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1006, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_17:15", - "arrival_time": "17:26:29.891000", - "departure_time": "17:26:29.891000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.108, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1007, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_17:15", - "arrival_time": "17:28:09.709000", - "departure_time": "17:28:09.709000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.413, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1008, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_17:15", - "arrival_time": "17:29:22.691000", - "departure_time": "17:29:22.691000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.636, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1009, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_17:15", - "arrival_time": "17:34:11.673000", - "departure_time": "17:34:11.673000", - "stop_id": "bUCR_0_02", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.519, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1010, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_17:30", - "arrival_time": "17:30:00", - "departure_time": "17:30:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 1011, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_17:30", - "arrival_time": "17:34:00.873000", - "departure_time": "17:34:00.873000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.736, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1012, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_17:30", - "arrival_time": "17:37:28.364000", - "departure_time": "17:37:28.364000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.37, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1013, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_17:30", - "arrival_time": "17:38:12.873000", - "departure_time": "17:38:12.873000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.506, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1014, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_17:30", - "arrival_time": "17:39:11.127000", - "departure_time": "17:39:11.127000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.684, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1015, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_17:30", - "arrival_time": "17:41:27.600000", - "departure_time": "17:41:27.600000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.101, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1016, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_17:30", - "arrival_time": "17:43:11.018000", - "departure_time": "17:43:11.018000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.417, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1017, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_17:30", - "arrival_time": "17:44:22.364000", - "departure_time": "17:44:22.364000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.635, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1018, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_17:30", - "arrival_time": "17:47:17.782000", - "departure_time": "17:47:17.782000", - "stop_id": "bUCR_0_01", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.171, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1019, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_17:40", - "arrival_time": "17:40:00", - "departure_time": "17:40:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 1020, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_17:40", - "arrival_time": "17:44:15.927000", - "departure_time": "17:44:15.927000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.782, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1021, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_17:40", - "arrival_time": "17:47:27.709000", - "departure_time": "17:47:27.709000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.368, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1022, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_17:40", - "arrival_time": "17:48:04.691000", - "departure_time": "17:48:04.691000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.481, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1023, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_17:40", - "arrival_time": "17:49:12.764000", - "departure_time": "17:49:12.764000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.689, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1024, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_17:40", - "arrival_time": "17:51:29.891000", - "departure_time": "17:51:29.891000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.108, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1025, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_17:40", - "arrival_time": "17:53:09.709000", - "departure_time": "17:53:09.709000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.413, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1026, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_17:40", - "arrival_time": "17:54:22.691000", - "departure_time": "17:54:22.691000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.636, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1027, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_17:40", - "arrival_time": "17:59:11.673000", - "departure_time": "17:59:11.673000", - "stop_id": "bUCR_0_02", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.519, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1028, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_18:05", - "arrival_time": "18:05:00", - "departure_time": "18:05:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 1029, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_18:05", - "arrival_time": "18:09:00.873000", - "departure_time": "18:09:00.873000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.736, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1030, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_18:05", - "arrival_time": "18:12:28.364000", - "departure_time": "18:12:28.364000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.37, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1031, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_18:05", - "arrival_time": "18:13:12.873000", - "departure_time": "18:13:12.873000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.506, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1032, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_18:05", - "arrival_time": "18:14:11.127000", - "departure_time": "18:14:11.127000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.684, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1033, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_18:05", - "arrival_time": "18:16:27.600000", - "departure_time": "18:16:27.600000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.101, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1034, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_18:05", - "arrival_time": "18:18:11.018000", - "departure_time": "18:18:11.018000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.417, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1035, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_18:05", - "arrival_time": "18:19:22.364000", - "departure_time": "18:19:22.364000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.635, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1036, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_18:05", - "arrival_time": "18:22:17.782000", - "departure_time": "18:22:17.782000", - "stop_id": "bUCR_0_01", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.171, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1037, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_18:15", - "arrival_time": "18:15:00", - "departure_time": "18:15:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 1038, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_18:15", - "arrival_time": "18:19:15.927000", - "departure_time": "18:19:15.927000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.782, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1039, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_18:15", - "arrival_time": "18:22:27.709000", - "departure_time": "18:22:27.709000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.368, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1040, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_18:15", - "arrival_time": "18:23:04.691000", - "departure_time": "18:23:04.691000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.481, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1041, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_18:15", - "arrival_time": "18:24:12.764000", - "departure_time": "18:24:12.764000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.689, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1042, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_18:15", - "arrival_time": "18:26:29.891000", - "departure_time": "18:26:29.891000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.108, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1043, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_18:15", - "arrival_time": "18:28:09.709000", - "departure_time": "18:28:09.709000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.413, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1044, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_18:15", - "arrival_time": "18:29:22.691000", - "departure_time": "18:29:22.691000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.636, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1045, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_18:15", - "arrival_time": "18:34:11.673000", - "departure_time": "18:34:11.673000", - "stop_id": "bUCR_0_02", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.519, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1046, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_18:30", - "arrival_time": "18:30:00", - "departure_time": "18:30:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 1047, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_18:30", - "arrival_time": "18:34:00.873000", - "departure_time": "18:34:00.873000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.736, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1048, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_18:30", - "arrival_time": "18:37:28.364000", - "departure_time": "18:37:28.364000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.37, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1049, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_18:30", - "arrival_time": "18:38:12.873000", - "departure_time": "18:38:12.873000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.506, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1050, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_18:30", - "arrival_time": "18:39:11.127000", - "departure_time": "18:39:11.127000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.684, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1051, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_18:30", - "arrival_time": "18:41:27.600000", - "departure_time": "18:41:27.600000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.101, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1052, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_18:30", - "arrival_time": "18:43:11.018000", - "departure_time": "18:43:11.018000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.417, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1053, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_18:30", - "arrival_time": "18:44:22.364000", - "departure_time": "18:44:22.364000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.635, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1054, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_18:30", - "arrival_time": "18:47:17.782000", - "departure_time": "18:47:17.782000", - "stop_id": "bUCR_0_01", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.171, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1055, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_18:40", - "arrival_time": "18:40:00", - "departure_time": "18:40:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 1056, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_18:40", - "arrival_time": "18:44:15.927000", - "departure_time": "18:44:15.927000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.782, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1057, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_18:40", - "arrival_time": "18:47:27.709000", - "departure_time": "18:47:27.709000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.368, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1058, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_18:40", - "arrival_time": "18:48:04.691000", - "departure_time": "18:48:04.691000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.481, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1059, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_18:40", - "arrival_time": "18:49:12.764000", - "departure_time": "18:49:12.764000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.689, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1060, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_18:40", - "arrival_time": "18:51:29.891000", - "departure_time": "18:51:29.891000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.108, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1061, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_18:40", - "arrival_time": "18:53:09.709000", - "departure_time": "18:53:09.709000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.413, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1062, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_18:40", - "arrival_time": "18:54:22.691000", - "departure_time": "18:54:22.691000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.636, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1063, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_18:40", - "arrival_time": "18:59:11.673000", - "departure_time": "18:59:11.673000", - "stop_id": "bUCR_0_02", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.519, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1064, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_18:55", - "arrival_time": "18:55:00", - "departure_time": "18:55:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 1065, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_18:55", - "arrival_time": "18:59:00.873000", - "departure_time": "18:59:00.873000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.736, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1066, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_18:55", - "arrival_time": "19:02:28.364000", - "departure_time": "19:02:28.364000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.37, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1067, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_18:55", - "arrival_time": "19:03:12.873000", - "departure_time": "19:03:12.873000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.506, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1068, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_18:55", - "arrival_time": "19:04:11.127000", - "departure_time": "19:04:11.127000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.684, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1069, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_18:55", - "arrival_time": "19:06:27.600000", - "departure_time": "19:06:27.600000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.101, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1070, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_18:55", - "arrival_time": "19:08:11.018000", - "departure_time": "19:08:11.018000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.417, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1071, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_18:55", - "arrival_time": "19:09:22.364000", - "departure_time": "19:09:22.364000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.635, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1072, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_18:55", - "arrival_time": "19:12:17.782000", - "departure_time": "19:12:17.782000", - "stop_id": "bUCR_0_01", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.171, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1073, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_19:15", - "arrival_time": "19:15:00", - "departure_time": "19:15:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 1074, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_19:15", - "arrival_time": "19:19:00.873000", - "departure_time": "19:19:00.873000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.736, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1075, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_19:15", - "arrival_time": "19:22:28.364000", - "departure_time": "19:22:28.364000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.37, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1076, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_19:15", - "arrival_time": "19:23:12.873000", - "departure_time": "19:23:12.873000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.506, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1077, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_19:15", - "arrival_time": "19:24:11.127000", - "departure_time": "19:24:11.127000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.684, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1078, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_19:15", - "arrival_time": "19:26:27.600000", - "departure_time": "19:26:27.600000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.101, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1079, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_19:15", - "arrival_time": "19:28:11.018000", - "departure_time": "19:28:11.018000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.417, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1080, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_19:15", - "arrival_time": "19:29:22.364000", - "departure_time": "19:29:22.364000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.635, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1081, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_19:15", - "arrival_time": "19:32:17.782000", - "departure_time": "19:32:17.782000", - "stop_id": "bUCR_0_01", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.171, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1082, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_19:50", - "arrival_time": "19:50:00", - "departure_time": "19:50:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 1083, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_19:50", - "arrival_time": "19:54:15.927000", - "departure_time": "19:54:15.927000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.782, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1084, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_19:50", - "arrival_time": "19:57:27.709000", - "departure_time": "19:57:27.709000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.368, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1085, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_19:50", - "arrival_time": "19:58:04.691000", - "departure_time": "19:58:04.691000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.481, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1086, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_19:50", - "arrival_time": "19:59:12.764000", - "departure_time": "19:59:12.764000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.689, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1087, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_19:50", - "arrival_time": "20:01:29.891000", - "departure_time": "20:01:29.891000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.108, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1088, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_19:50", - "arrival_time": "20:03:09.709000", - "departure_time": "20:03:09.709000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.413, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1089, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_19:50", - "arrival_time": "20:04:22.691000", - "departure_time": "20:04:22.691000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.636, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1090, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_19:50", - "arrival_time": "20:09:11.673000", - "departure_time": "20:09:11.673000", - "stop_id": "bUCR_0_02", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.519, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1091, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_20:30", - "arrival_time": "20:30:00", - "departure_time": "20:30:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 1092, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_20:30", - "arrival_time": "20:34:00.873000", - "departure_time": "20:34:00.873000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.736, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1093, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_20:30", - "arrival_time": "20:37:28.364000", - "departure_time": "20:37:28.364000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.37, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1094, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_20:30", - "arrival_time": "20:38:12.873000", - "departure_time": "20:38:12.873000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.506, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1095, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_20:30", - "arrival_time": "20:39:11.127000", - "departure_time": "20:39:11.127000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.684, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1096, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_20:30", - "arrival_time": "20:41:27.600000", - "departure_time": "20:41:27.600000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.101, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1097, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_20:30", - "arrival_time": "20:43:11.018000", - "departure_time": "20:43:11.018000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.417, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1098, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_20:30", - "arrival_time": "20:44:22.364000", - "departure_time": "20:44:22.364000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.635, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1099, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_20:30", - "arrival_time": "20:47:17.782000", - "departure_time": "20:47:17.782000", - "stop_id": "bUCR_0_01", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.171, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1100, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_20:40", - "arrival_time": "20:40:00", - "departure_time": "20:40:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 1101, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_20:40", - "arrival_time": "20:44:00.873000", - "departure_time": "20:44:00.873000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.736, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1102, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_20:40", - "arrival_time": "20:47:28.364000", - "departure_time": "20:47:28.364000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.37, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1103, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_20:40", - "arrival_time": "20:48:12.873000", - "departure_time": "20:48:12.873000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.506, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1104, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_20:40", - "arrival_time": "20:49:11.127000", - "departure_time": "20:49:11.127000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.684, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1105, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_20:40", - "arrival_time": "20:51:27.600000", - "departure_time": "20:51:27.600000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.101, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1106, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_20:40", - "arrival_time": "20:53:11.018000", - "departure_time": "20:53:11.018000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.417, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1107, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_20:40", - "arrival_time": "20:54:22.364000", - "departure_time": "20:54:22.364000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.635, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1108, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_20:40", - "arrival_time": "20:57:17.782000", - "departure_time": "20:57:17.782000", - "stop_id": "bUCR_0_01", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.171, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1109, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_21:15", - "arrival_time": "21:15:00", - "departure_time": "21:15:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "feed.stoptime", - "pk": 1110, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_21:15", - "arrival_time": "21:19:00.873000", - "departure_time": "21:19:00.873000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.736, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1111, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_21:15", - "arrival_time": "21:22:28.364000", - "departure_time": "21:22:28.364000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.37, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1112, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_21:15", - "arrival_time": "21:23:12.873000", - "departure_time": "21:23:12.873000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.506, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1113, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_21:15", - "arrival_time": "21:24:11.127000", - "departure_time": "21:24:11.127000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.684, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1114, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_21:15", - "arrival_time": "21:26:27.600000", - "departure_time": "21:26:27.600000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.101, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1115, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_21:15", - "arrival_time": "21:28:11.018000", - "departure_time": "21:28:11.018000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.417, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1116, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_21:15", - "arrival_time": "21:29:22.364000", - "departure_time": "21:29:22.364000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.635, - "timepoint": 0 - } - }, - { - "model": "feed.stoptime", - "pk": 1117, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_21:15", - "arrival_time": "21:32:17.782000", - "departure_time": "21:32:17.782000", - "stop_id": "bUCR_0_01", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.171, - "timepoint": 0 - } - }, - { - "model": "feed.calendar", - "pk": 1, - "fields": { - "feed": "1", - "service_id": "entresemana", - "monday": 1, - "tuesday": 1, - "wednesday": 1, - "thursday": 1, - "friday": 1, - "saturday": 0, - "sunday": 0, - "start_date": "2024-01-01", - "end_date": "2024-12-31" - } - }, - { - "model": "feed.farerule", - "pk": 1, - "fields": { - "feed": "1", - "fare_id": "no_tarifa", - "route_id": "bUCR_L1", - "origin_id": "bUCR_0", - "destination_id": "bUCR_0", - "contains_id": "" - } - }, - { - "model": "feed.farerule", - "pk": 2, - "fields": { - "feed": "1", - "fare_id": "no_tarifa", - "route_id": "bUCR_L2", - "origin_id": "bUCR_1", - "destination_id": "bUCR_1", - "contains_id": "" - } - }, - { - "model": "feed.fareattribute", - "pk": 1, - "fields": { - "feed": "1", - "fare_id": "no_tarifa", - "price": 0, - "currency_type": "CRC", - "payment_method": 0, - "transfers": 0, - "transfer_duration": null - } - }, - { - "model": "feed.shape", - "pk": 1, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93554944029271, - "shape_pt_lon": -84.0491138975951, - "shape_pt_sequence": 0, - "shape_dist_traveled": 0.0 - } - }, - { - "model": "feed.shape", - "pk": 2, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.9355589010814, - "shape_pt_lon": -84.0491582627979, - "shape_pt_sequence": 1, - "shape_dist_traveled": 0.005 - } - }, - { - "model": "feed.shape", - "pk": 3, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93557354275506, - "shape_pt_lon": -84.0492241246225, - "shape_pt_sequence": 2, - "shape_dist_traveled": 0.012 - } - }, - { - "model": "feed.shape", - "pk": 4, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.9356000651633, - "shape_pt_lon": -84.049324861376, - "shape_pt_sequence": 3, - "shape_dist_traveled": 0.024 - } - }, - { - "model": "feed.shape", - "pk": 5, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93563773463719, - "shape_pt_lon": -84.049416778843, - "shape_pt_sequence": 4, - "shape_dist_traveled": 0.035 - } - }, - { - "model": "feed.shape", - "pk": 6, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93568399531643, - "shape_pt_lon": -84.0495368755472, - "shape_pt_sequence": 5, - "shape_dist_traveled": 0.049 - } - }, - { - "model": "feed.shape", - "pk": 7, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93570316048327, - "shape_pt_lon": -84.0495945755631, - "shape_pt_sequence": 6, - "shape_dist_traveled": 0.056 - } - }, - { - "model": "feed.shape", - "pk": 8, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93571109089738, - "shape_pt_lon": -84.0496871639603, - "shape_pt_sequence": 7, - "shape_dist_traveled": 0.066 - } - }, - { - "model": "feed.shape", - "pk": 9, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93571292483817, - "shape_pt_lon": -84.0498464474787, - "shape_pt_sequence": 8, - "shape_dist_traveled": 0.083 - } - }, - { - "model": "feed.shape", - "pk": 10, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93570393244304, - "shape_pt_lon": -84.0500877222699, - "shape_pt_sequence": 9, - "shape_dist_traveled": 0.11 - } - }, - { - "model": "feed.shape", - "pk": 11, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93566539329337, - "shape_pt_lon": -84.050351168656, - "shape_pt_sequence": 10, - "shape_dist_traveled": 0.139 - } - }, - { - "model": "feed.shape", - "pk": 12, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93561786205413, - "shape_pt_lon": -84.0505937476355, - "shape_pt_sequence": 11, - "shape_dist_traveled": 0.166 - } - }, - { - "model": "feed.shape", - "pk": 13, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93556519227529, - "shape_pt_lon": -84.050878060609, - "shape_pt_sequence": 12, - "shape_dist_traveled": 0.198 - } - }, - { - "model": "feed.shape", - "pk": 14, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93552922267821, - "shape_pt_lon": -84.051108901895, - "shape_pt_sequence": 13, - "shape_dist_traveled": 0.223 - } - }, - { - "model": "feed.shape", - "pk": 15, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93548169125642, - "shape_pt_lon": -84.0513932152566, - "shape_pt_sequence": 14, - "shape_dist_traveled": 0.255 - } - }, - { - "model": "feed.shape", - "pk": 16, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93545342942273, - "shape_pt_lon": -84.0516410109878, - "shape_pt_sequence": 15, - "shape_dist_traveled": 0.282 - } - }, - { - "model": "feed.shape", - "pk": 17, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93544741074256, - "shape_pt_lon": -84.0516943904767, - "shape_pt_sequence": 16, - "shape_dist_traveled": 0.288 - } - }, - { - "model": "feed.shape", - "pk": 18, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93544700627605, - "shape_pt_lon": -84.051754475488, - "shape_pt_sequence": 17, - "shape_dist_traveled": 0.295 - } - }, - { - "model": "feed.shape", - "pk": 19, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93546627570862, - "shape_pt_lon": -84.0519579288248, - "shape_pt_sequence": 18, - "shape_dist_traveled": 0.317 - } - }, - { - "model": "feed.shape", - "pk": 20, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93548939902537, - "shape_pt_lon": -84.052131385837, - "shape_pt_sequence": 19, - "shape_dist_traveled": 0.336 - } - }, - { - "model": "feed.shape", - "pk": 21, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93550517435119, - "shape_pt_lon": -84.0522239834817, - "shape_pt_sequence": 20, - "shape_dist_traveled": 0.347 - } - }, - { - "model": "feed.shape", - "pk": 22, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93554618004823, - "shape_pt_lon": -84.0523340057342, - "shape_pt_sequence": 21, - "shape_dist_traveled": 0.36 - } - }, - { - "model": "feed.shape", - "pk": 23, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93559987797587, - "shape_pt_lon": -84.0523914948391, - "shape_pt_sequence": 22, - "shape_dist_traveled": 0.368 - } - }, - { - "model": "feed.shape", - "pk": 24, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93565552854654, - "shape_pt_lon": -84.0524281689233, - "shape_pt_sequence": 23, - "shape_dist_traveled": 0.376 - } - }, - { - "model": "feed.shape", - "pk": 25, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93572094236273, - "shape_pt_lon": -84.0524410544122, - "shape_pt_sequence": 24, - "shape_dist_traveled": 0.383 - } - }, - { - "model": "feed.shape", - "pk": 26, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93583614886311, - "shape_pt_lon": -84.0524182569563, - "shape_pt_sequence": 25, - "shape_dist_traveled": 0.396 - } - }, - { - "model": "feed.shape", - "pk": 27, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93603336648931, - "shape_pt_lon": -84.0523528383197, - "shape_pt_sequence": 26, - "shape_dist_traveled": 0.419 - } - }, - { - "model": "feed.shape", - "pk": 28, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93625691629266, - "shape_pt_lon": -84.0522832947174, - "shape_pt_sequence": 27, - "shape_dist_traveled": 0.445 - } - }, - { - "model": "feed.shape", - "pk": 29, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93639307154715, - "shape_pt_lon": -84.0522431941422, - "shape_pt_sequence": 28, - "shape_dist_traveled": 0.46 - } - }, - { - "model": "feed.shape", - "pk": 30, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93653561474882, - "shape_pt_lon": -84.0522372469934, - "shape_pt_sequence": 29, - "shape_dist_traveled": 0.476 - } - }, - { - "model": "feed.shape", - "pk": 31, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93660005206628, - "shape_pt_lon": -84.0522600443969, - "shape_pt_sequence": 30, - "shape_dist_traveled": 0.484 - } - }, - { - "model": "feed.shape", - "pk": 32, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93661957852377, - "shape_pt_lon": -84.0523423132888, - "shape_pt_sequence": 31, - "shape_dist_traveled": 0.493 - } - }, - { - "model": "feed.shape", - "pk": 33, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93659126516027, - "shape_pt_lon": -84.0524275557544, - "shape_pt_sequence": 32, - "shape_dist_traveled": 0.503 - } - }, - { - "model": "feed.shape", - "pk": 34, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93653854371827, - "shape_pt_lon": -84.0524503531584, - "shape_pt_sequence": 33, - "shape_dist_traveled": 0.509 - } - }, - { - "model": "feed.shape", - "pk": 35, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93645360359939, - "shape_pt_lon": -84.0524483707755, - "shape_pt_sequence": 34, - "shape_dist_traveled": 0.519 - } - }, - { - "model": "feed.shape", - "pk": 36, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93636085286962, - "shape_pt_lon": -84.052439450052, - "shape_pt_sequence": 35, - "shape_dist_traveled": 0.529 - } - }, - { - "model": "feed.shape", - "pk": 37, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93633386047036, - "shape_pt_lon": -84.0524268046992, - "shape_pt_sequence": 36, - "shape_dist_traveled": 0.532 - } - }, - { - "model": "feed.shape", - "pk": 38, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93630422609543, - "shape_pt_lon": -84.0524265645631, - "shape_pt_sequence": 37, - "shape_dist_traveled": 0.535 - } - }, - { - "model": "feed.shape", - "pk": 39, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93618120917912, - "shape_pt_lon": -84.0524473794854, - "shape_pt_sequence": 38, - "shape_dist_traveled": 0.549 - } - }, - { - "model": "feed.shape", - "pk": 40, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93600742368285, - "shape_pt_lon": -84.052484053706, - "shape_pt_sequence": 39, - "shape_dist_traveled": 0.569 - } - }, - { - "model": "feed.shape", - "pk": 41, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93581118236608, - "shape_pt_lon": -84.0525276661302, - "shape_pt_sequence": 40, - "shape_dist_traveled": 0.591 - } - }, - { - "model": "feed.shape", - "pk": 42, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93571876163712, - "shape_pt_lon": -84.0525355663096, - "shape_pt_sequence": 41, - "shape_dist_traveled": 0.601 - } - }, - { - "model": "feed.shape", - "pk": 43, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93563153840537, - "shape_pt_lon": -84.0525177541372, - "shape_pt_sequence": 42, - "shape_dist_traveled": 0.611 - } - }, - { - "model": "feed.shape", - "pk": 44, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93553310902874, - "shape_pt_lon": -84.0524334735888, - "shape_pt_sequence": 43, - "shape_dist_traveled": 0.626 - } - }, - { - "model": "feed.shape", - "pk": 45, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93545970504671, - "shape_pt_lon": -84.0523512340121, - "shape_pt_sequence": 44, - "shape_dist_traveled": 0.638 - } - }, - { - "model": "feed.shape", - "pk": 46, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93542065199216, - "shape_pt_lon": -84.0522451765253, - "shape_pt_sequence": 45, - "shape_dist_traveled": 0.65 - } - }, - { - "model": "feed.shape", - "pk": 47, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93541674668641, - "shape_pt_lon": -84.0521014537632, - "shape_pt_sequence": 46, - "shape_dist_traveled": 0.666 - } - }, - { - "model": "feed.shape", - "pk": 48, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93537769362758, - "shape_pt_lon": -84.0518556382803, - "shape_pt_sequence": 47, - "shape_dist_traveled": 0.693 - } - }, - { - "model": "feed.shape", - "pk": 49, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93533766423581, - "shape_pt_lon": -84.0515960083744, - "shape_pt_sequence": 48, - "shape_dist_traveled": 0.722 - } - }, - { - "model": "feed.shape", - "pk": 50, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93531364398533, - "shape_pt_lon": -84.0515277691646, - "shape_pt_sequence": 49, - "shape_dist_traveled": 0.73 - } - }, - { - "model": "feed.shape", - "pk": 51, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93528103728449, - "shape_pt_lon": -84.0514612063353, - "shape_pt_sequence": 50, - "shape_dist_traveled": 0.738 - } - }, - { - "model": "feed.shape", - "pk": 52, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93537964636139, - "shape_pt_lon": -84.0510449054667, - "shape_pt_sequence": 51, - "shape_dist_traveled": 0.785 - } - }, - { - "model": "feed.shape", - "pk": 53, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93549228868242, - "shape_pt_lon": -84.0506385823758, - "shape_pt_sequence": 52, - "shape_dist_traveled": 0.831 - } - }, - { - "model": "feed.shape", - "pk": 54, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93560853450969, - "shape_pt_lon": -84.0501428263958, - "shape_pt_sequence": 53, - "shape_dist_traveled": 0.887 - } - }, - { - "model": "feed.shape", - "pk": 55, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93564523227799, - "shape_pt_lon": -84.0499153784661, - "shape_pt_sequence": 54, - "shape_dist_traveled": 0.912 - } - }, - { - "model": "feed.shape", - "pk": 56, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.9355593156005, - "shape_pt_lon": -84.0495436816674, - "shape_pt_sequence": 55, - "shape_dist_traveled": 0.954 - } - }, - { - "model": "feed.shape", - "pk": 57, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93549425099087, - "shape_pt_lon": -84.049203385401, - "shape_pt_sequence": 56, - "shape_dist_traveled": 0.992 - } - }, - { - "model": "feed.shape", - "pk": 58, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93539252590615, - "shape_pt_lon": -84.0487850070695, - "shape_pt_sequence": 57, - "shape_dist_traveled": 1.039 - } - }, - { - "model": "feed.shape", - "pk": 59, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93537592835444, - "shape_pt_lon": -84.0486462402645, - "shape_pt_sequence": 58, - "shape_dist_traveled": 1.055 - } - }, - { - "model": "feed.shape", - "pk": 60, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93528024833921, - "shape_pt_lon": -84.0486373195414, - "shape_pt_sequence": 59, - "shape_dist_traveled": 1.065 - } - }, - { - "model": "feed.shape", - "pk": 61, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93529755089066, - "shape_pt_lon": -84.0483824809879, - "shape_pt_sequence": 60, - "shape_dist_traveled": 1.093 - } - }, - { - "model": "feed.shape", - "pk": 62, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93524885628052, - "shape_pt_lon": -84.048123669054, - "shape_pt_sequence": 61, - "shape_dist_traveled": 1.122 - } - }, - { - "model": "feed.shape", - "pk": 63, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.9351256875275, - "shape_pt_lon": -84.0477514451489, - "shape_pt_sequence": 62, - "shape_dist_traveled": 1.165 - } - }, - { - "model": "feed.shape", - "pk": 64, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93500538311991, - "shape_pt_lon": -84.0473850372423, - "shape_pt_sequence": 63, - "shape_dist_traveled": 1.208 - } - }, - { - "model": "feed.shape", - "pk": 65, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93492412702167, - "shape_pt_lon": -84.0470954278149, - "shape_pt_sequence": 64, - "shape_dist_traveled": 1.241 - } - }, - { - "model": "feed.shape", - "pk": 66, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93480668693231, - "shape_pt_lon": -84.046441127981, - "shape_pt_sequence": 65, - "shape_dist_traveled": 1.314 - } - }, - { - "model": "feed.shape", - "pk": 67, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93468020166955, - "shape_pt_lon": -84.0458485099908, - "shape_pt_sequence": 66, - "shape_dist_traveled": 1.38 - } - }, - { - "model": "feed.shape", - "pk": 68, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93461570602311, - "shape_pt_lon": -84.0456145784198, - "shape_pt_sequence": 67, - "shape_dist_traveled": 1.407 - } - }, - { - "model": "feed.shape", - "pk": 69, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93495613335646, - "shape_pt_lon": -84.0456080574792, - "shape_pt_sequence": 68, - "shape_dist_traveled": 1.444 - } - }, - { - "model": "feed.shape", - "pk": 70, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93502533870439, - "shape_pt_lon": -84.0455873014759, - "shape_pt_sequence": 69, - "shape_dist_traveled": 1.452 - } - }, - { - "model": "feed.shape", - "pk": 71, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93533638426393, - "shape_pt_lon": -84.045580669786, - "shape_pt_sequence": 70, - "shape_dist_traveled": 1.487 - } - }, - { - "model": "feed.shape", - "pk": 72, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93558174876489, - "shape_pt_lon": -84.045528502083, - "shape_pt_sequence": 71, - "shape_dist_traveled": 1.514 - } - }, - { - "model": "feed.shape", - "pk": 73, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.9356639649666, - "shape_pt_lon": -84.0454554675517, - "shape_pt_sequence": 72, - "shape_dist_traveled": 1.527 - } - }, - { - "model": "feed.shape", - "pk": 74, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93591239555134, - "shape_pt_lon": -84.0454118867064, - "shape_pt_sequence": 73, - "shape_dist_traveled": 1.554 - } - }, - { - "model": "feed.shape", - "pk": 75, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93618345188633, - "shape_pt_lon": -84.0453571107868, - "shape_pt_sequence": 74, - "shape_dist_traveled": 1.585 - } - }, - { - "model": "feed.shape", - "pk": 76, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93630292207917, - "shape_pt_lon": -84.0453649359146, - "shape_pt_sequence": 75, - "shape_dist_traveled": 1.598 - } - }, - { - "model": "feed.shape", - "pk": 77, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93644423085287, - "shape_pt_lon": -84.0454366662581, - "shape_pt_sequence": 76, - "shape_dist_traveled": 1.616 - } - }, - { - "model": "feed.shape", - "pk": 78, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93668331840604, - "shape_pt_lon": -84.045567569655, - "shape_pt_sequence": 77, - "shape_dist_traveled": 1.646 - } - }, - { - "model": "feed.shape", - "pk": 79, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93677195745002, - "shape_pt_lon": -84.045592349228, - "shape_pt_sequence": 78, - "shape_dist_traveled": 1.656 - } - }, - { - "model": "feed.shape", - "pk": 80, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.9368528887295, - "shape_pt_lon": -84.0455871324757, - "shape_pt_sequence": 79, - "shape_dist_traveled": 1.665 - } - }, - { - "model": "feed.shape", - "pk": 81, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93694152772752, - "shape_pt_lon": -84.0455467026459, - "shape_pt_sequence": 80, - "shape_dist_traveled": 1.676 - } - }, - { - "model": "feed.shape", - "pk": 82, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93708540528038, - "shape_pt_lon": -84.0454423673758, - "shape_pt_sequence": 81, - "shape_dist_traveled": 1.695 - } - }, - { - "model": "feed.shape", - "pk": 83, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.9372459343465, - "shape_pt_lon": -84.0452787163273, - "shape_pt_sequence": 82, - "shape_dist_traveled": 1.721 - } - }, - { - "model": "feed.shape", - "pk": 84, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93733842710149, - "shape_pt_lon": -84.0451378640166, - "shape_pt_sequence": 83, - "shape_dist_traveled": 1.739 - } - }, - { - "model": "feed.shape", - "pk": 85, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93756026309952, - "shape_pt_lon": -84.044752821983, - "shape_pt_sequence": 84, - "shape_dist_traveled": 1.788 - } - }, - { - "model": "feed.shape", - "pk": 86, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93777652816203, - "shape_pt_lon": -84.0443585013794, - "shape_pt_sequence": 85, - "shape_dist_traveled": 1.837 - } - }, - { - "model": "feed.shape", - "pk": 87, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.9381041049962, - "shape_pt_lon": -84.0438016139119, - "shape_pt_sequence": 86, - "shape_dist_traveled": 1.908 - } - }, - { - "model": "feed.shape", - "pk": 88, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93796476738381, - "shape_pt_lon": -84.0436166501913, - "shape_pt_sequence": 87, - "shape_dist_traveled": 1.934 - } - }, - { - "model": "feed.shape", - "pk": 89, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93791473560688, - "shape_pt_lon": -84.0434457982085, - "shape_pt_sequence": 88, - "shape_dist_traveled": 1.953 - } - }, - { - "model": "feed.shape", - "pk": 90, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93789047771889, - "shape_pt_lon": -84.0432203034589, - "shape_pt_sequence": 89, - "shape_dist_traveled": 1.978 - } - }, - { - "model": "feed.shape", - "pk": 91, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93791970638376, - "shape_pt_lon": -84.0429894627193, - "shape_pt_sequence": 90, - "shape_dist_traveled": 2.004 - } - }, - { - "model": "feed.shape", - "pk": 92, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93798008366965, - "shape_pt_lon": -84.0426008139046, - "shape_pt_sequence": 91, - "shape_dist_traveled": 2.047 - } - }, - { - "model": "feed.shape", - "pk": 93, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93800449142722, - "shape_pt_lon": -84.0424795244151, - "shape_pt_sequence": 92, - "shape_dist_traveled": 2.06 - } - }, - { - "model": "feed.shape", - "pk": 94, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.9381380917555, - "shape_pt_lon": -84.0421782569734, - "shape_pt_sequence": 93, - "shape_dist_traveled": 2.097 - } - }, - { - "model": "feed.shape", - "pk": 95, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93816473253672, - "shape_pt_lon": -84.0419964534982, - "shape_pt_sequence": 94, - "shape_dist_traveled": 2.117 - } - }, - { - "model": "feed.shape", - "pk": 96, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93815830944601, - "shape_pt_lon": -84.0418503844357, - "shape_pt_sequence": 95, - "shape_dist_traveled": 2.133 - } - }, - { - "model": "feed.shape", - "pk": 97, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93812876322556, - "shape_pt_lon": -84.0417251823817, - "shape_pt_sequence": 96, - "shape_dist_traveled": 2.147 - } - }, - { - "model": "feed.shape", - "pk": 98, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93807176432108, - "shape_pt_lon": -84.0416449024973, - "shape_pt_sequence": 97, - "shape_dist_traveled": 2.158 - } - }, - { - "model": "feed.shape", - "pk": 99, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.9380170014129, - "shape_pt_lon": -84.0416364975937, - "shape_pt_sequence": 98, - "shape_dist_traveled": 2.164 - } - }, - { - "model": "feed.shape", - "pk": 100, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.9379218878614, - "shape_pt_lon": -84.0416378013257, - "shape_pt_sequence": 99, - "shape_dist_traveled": 2.174 - } - }, - { - "model": "feed.shape", - "pk": 101, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93790138516287, - "shape_pt_lon": -84.0411362584451, - "shape_pt_sequence": 100, - "shape_dist_traveled": 2.229 - } - }, - { - "model": "feed.shape", - "pk": 102, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93789650346394, - "shape_pt_lon": -84.041068473332, - "shape_pt_sequence": 101, - "shape_dist_traveled": 2.237 - } - }, - { - "model": "feed.shape", - "pk": 103, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93846399292934, - "shape_pt_lon": -84.0409289658467, - "shape_pt_sequence": 102, - "shape_dist_traveled": 2.301 - } - }, - { - "model": "feed.shape", - "pk": 104, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93868999787477, - "shape_pt_lon": -84.0409645503437, - "shape_pt_sequence": 103, - "shape_dist_traveled": 2.327 - } - }, - { - "model": "feed.shape", - "pk": 105, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93885220465146, - "shape_pt_lon": -84.0411343350368, - "shape_pt_sequence": 104, - "shape_dist_traveled": 2.353 - } - }, - { - "model": "feed.shape", - "pk": 106, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93915775668989, - "shape_pt_lon": -84.0416551779252, - "shape_pt_sequence": 105, - "shape_dist_traveled": 2.419 - } - }, - { - "model": "feed.shape", - "pk": 107, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93928866239001, - "shape_pt_lon": -84.0417942257713, - "shape_pt_sequence": 106, - "shape_dist_traveled": 2.44 - } - }, - { - "model": "feed.shape", - "pk": 108, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.9394332650851, - "shape_pt_lon": -84.0418835860126, - "shape_pt_sequence": 107, - "shape_dist_traveled": 2.459 - } - }, - { - "model": "feed.shape", - "pk": 109, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93950294569722, - "shape_pt_lon": -84.0419072239736, - "shape_pt_sequence": 108, - "shape_dist_traveled": 2.467 - } - }, - { - "model": "feed.shape", - "pk": 110, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93950393195614, - "shape_pt_lon": -84.0422269282472, - "shape_pt_sequence": 109, - "shape_dist_traveled": 2.502 - } - }, - { - "model": "feed.shape", - "pk": 111, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93949212322203, - "shape_pt_lon": -84.0425117128132, - "shape_pt_sequence": 110, - "shape_dist_traveled": 2.533 - } - }, - { - "model": "feed.shape", - "pk": 112, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93945684385667, - "shape_pt_lon": -84.0429181490899, - "shape_pt_sequence": 111, - "shape_dist_traveled": 2.578 - } - }, - { - "model": "feed.shape", - "pk": 113, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93942503205056, - "shape_pt_lon": -84.0433331349077, - "shape_pt_sequence": 112, - "shape_dist_traveled": 2.624 - } - }, - { - "model": "feed.shape", - "pk": 114, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93972770605043, - "shape_pt_lon": -84.0432631191506, - "shape_pt_sequence": 113, - "shape_dist_traveled": 2.658 - } - }, - { - "model": "feed.shape", - "pk": 115, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93979024582779, - "shape_pt_lon": -84.0432957235711, - "shape_pt_sequence": 114, - "shape_dist_traveled": 2.666 - } - }, - { - "model": "feed.shape", - "pk": 116, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93981898031695, - "shape_pt_lon": -84.0433729445674, - "shape_pt_sequence": 115, - "shape_dist_traveled": 2.675 - } - }, - { - "model": "feed.shape", - "pk": 117, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.94007108411656, - "shape_pt_lon": -84.0443132968873, - "shape_pt_sequence": 116, - "shape_dist_traveled": 2.782 - } - }, - { - "model": "feed.shape", - "pk": 118, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.94016605495639, - "shape_pt_lon": -84.0446693302114, - "shape_pt_sequence": 117, - "shape_dist_traveled": 2.822 - } - }, - { - "model": "feed.shape", - "pk": 119, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.94027244564152, - "shape_pt_lon": -84.0448273689979, - "shape_pt_sequence": 118, - "shape_dist_traveled": 2.843 - } - }, - { - "model": "feed.shape", - "pk": 120, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.94046211098755, - "shape_pt_lon": -84.0455400945559, - "shape_pt_sequence": 119, - "shape_dist_traveled": 2.924 - } - }, - { - "model": "feed.shape", - "pk": 121, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.94049056601295, - "shape_pt_lon": -84.0456302713637, - "shape_pt_sequence": 120, - "shape_dist_traveled": 2.934 - } - }, - { - "model": "feed.shape", - "pk": 122, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.94063822457009, - "shape_pt_lon": -84.0455978789472, - "shape_pt_sequence": 121, - "shape_dist_traveled": 2.951 - } - }, - { - "model": "feed.shape", - "pk": 123, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.94079717180704, - "shape_pt_lon": -84.0450688663703, - "shape_pt_sequence": 122, - "shape_dist_traveled": 3.012 - } - }, - { - "model": "feed.shape", - "pk": 124, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.94095438717349, - "shape_pt_lon": -84.04474671421, - "shape_pt_sequence": 123, - "shape_dist_traveled": 3.051 - } - }, - { - "model": "feed.shape", - "pk": 125, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.94105262250509, - "shape_pt_lon": -84.0446527254796, - "shape_pt_sequence": 124, - "shape_dist_traveled": 3.066 - } - }, - { - "model": "feed.shape", - "pk": 126, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.9414150973303, - "shape_pt_lon": -84.0446772759114, - "shape_pt_sequence": 125, - "shape_dist_traveled": 3.106 - } - }, - { - "model": "feed.shape", - "pk": 127, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.94222783326419, - "shape_pt_lon": -84.0447316948875, - "shape_pt_sequence": 126, - "shape_dist_traveled": 3.196 - } - }, - { - "model": "feed.shape", - "pk": 128, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.94282430588245, - "shape_pt_lon": -84.0447692666912, - "shape_pt_sequence": 127, - "shape_dist_traveled": 3.262 - } - }, - { - "model": "feed.shape", - "pk": 129, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.9430072194504, - "shape_pt_lon": -84.0447361152365, - "shape_pt_sequence": 128, - "shape_dist_traveled": 3.283 - } - }, - { - "model": "feed.shape", - "pk": 130, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.94325327852743, - "shape_pt_lon": -84.0446536543918, - "shape_pt_sequence": 129, - "shape_dist_traveled": 3.311 - } - }, - { - "model": "feed.shape", - "pk": 131, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.94367377439675, - "shape_pt_lon": -84.0444658512058, - "shape_pt_sequence": 130, - "shape_dist_traveled": 3.362 - } - }, - { - "model": "feed.shape", - "pk": 132, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.94380472710699, - "shape_pt_lon": -84.0447574980966, - "shape_pt_sequence": 131, - "shape_dist_traveled": 3.397 - } - }, - { - "model": "feed.shape", - "pk": 133, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.94388103477618, - "shape_pt_lon": -84.044883947833, - "shape_pt_sequence": 132, - "shape_dist_traveled": 3.414 - } - }, - { - "model": "feed.shape", - "pk": 134, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.94396870046222, - "shape_pt_lon": -84.044952212081, - "shape_pt_sequence": 133, - "shape_dist_traveled": 3.426 - } - }, - { - "model": "feed.shape", - "pk": 135, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.94440018674929, - "shape_pt_lon": -84.0449991890221, - "shape_pt_sequence": 134, - "shape_dist_traveled": 3.474 - } - }, - { - "model": "feed.shape", - "pk": 136, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.94457575401998, - "shape_pt_lon": -84.045011078064, - "shape_pt_sequence": 135, - "shape_dist_traveled": 3.493 - } - }, - { - "model": "feed.shape", - "pk": 137, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.94495341180596, - "shape_pt_lon": -84.045007224609, - "shape_pt_sequence": 136, - "shape_dist_traveled": 3.535 - } - }, - { - "model": "feed.shape", - "pk": 138, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.94503790634203, - "shape_pt_lon": -84.0450804402532, - "shape_pt_sequence": 137, - "shape_dist_traveled": 3.547 - } - }, - { - "model": "feed.shape", - "pk": 139, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.94507262278836, - "shape_pt_lon": -84.0454078875236, - "shape_pt_sequence": 138, - "shape_dist_traveled": 3.584 - } - }, - { - "model": "feed.shape", - "pk": 140, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.94509663743075, - "shape_pt_lon": -84.0455018337476, - "shape_pt_sequence": 139, - "shape_dist_traveled": 3.594 - } - }, - { - "model": "feed.shape", - "pk": 141, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.94516495042239, - "shape_pt_lon": -84.0455370798079, - "shape_pt_sequence": 140, - "shape_dist_traveled": 3.603 - } - }, - { - "model": "feed.shape", - "pk": 142, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.94535421093323, - "shape_pt_lon": -84.0455279840503, - "shape_pt_sequence": 141, - "shape_dist_traveled": 3.624 - } - }, - { - "model": "feed.shape", - "pk": 143, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.94569609354827, - "shape_pt_lon": -84.0455006967812, - "shape_pt_sequence": 142, - "shape_dist_traveled": 3.662 - } - }, - { - "model": "feed.shape", - "pk": 144, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.94576019859063, - "shape_pt_lon": -84.0454636202844, - "shape_pt_sequence": 143, - "shape_dist_traveled": 3.67 - } - }, - { - "model": "feed.shape", - "pk": 145, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.9458090133638, - "shape_pt_lon": -84.0453783778183, - "shape_pt_sequence": 144, - "shape_dist_traveled": 3.681 - } - }, - { - "model": "feed.shape", - "pk": 146, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.94587051996754, - "shape_pt_lon": -84.0452505141197, - "shape_pt_sequence": 145, - "shape_dist_traveled": 3.696 - } - }, - { - "model": "feed.shape", - "pk": 147, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.94594579827001, - "shape_pt_lon": -84.0451768005758, - "shape_pt_sequence": 146, - "shape_dist_traveled": 3.708 - } - }, - { - "model": "feed.shape", - "pk": 148, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.9462925242644, - "shape_pt_lon": -84.0451498689492, - "shape_pt_sequence": 147, - "shape_dist_traveled": 3.746 - } - }, - { - "model": "feed.shape", - "pk": 149, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.9463897709987, - "shape_pt_lon": -84.0451620803092, - "shape_pt_sequence": 148, - "shape_dist_traveled": 3.757 - } - }, - { - "model": "feed.shape", - "pk": 150, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.94645002673405, - "shape_pt_lon": -84.0452016714679, - "shape_pt_sequence": 149, - "shape_dist_traveled": 3.765 - } - }, - { - "model": "feed.shape", - "pk": 151, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.94648404073633, - "shape_pt_lon": -84.0452387476835, - "shape_pt_sequence": 150, - "shape_dist_traveled": 3.771 - } - }, - { - "model": "feed.shape", - "pk": 152, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93554615993122, - "shape_pt_lon": -84.0491114962244, - "shape_pt_sequence": 0, - "shape_dist_traveled": 0.0 - } - }, - { - "model": "feed.shape", - "pk": 153, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93557253860416, - "shape_pt_lon": -84.0492324408382, - "shape_pt_sequence": 1, - "shape_dist_traveled": 0.014 - } - }, - { - "model": "feed.shape", - "pk": 154, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93559719650295, - "shape_pt_lon": -84.0493243902202, - "shape_pt_sequence": 2, - "shape_dist_traveled": 0.024 - } - }, - { - "model": "feed.shape", - "pk": 155, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93566832503712, - "shape_pt_lon": -84.0495039565472, - "shape_pt_sequence": 3, - "shape_dist_traveled": 0.045 - } - }, - { - "model": "feed.shape", - "pk": 156, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93570246673155, - "shape_pt_lon": -84.0495983130441, - "shape_pt_sequence": 4, - "shape_dist_traveled": 0.056 - } - }, - { - "model": "feed.shape", - "pk": 157, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93570957958473, - "shape_pt_lon": -84.0496907438365, - "shape_pt_sequence": 5, - "shape_dist_traveled": 0.066 - } - }, - { - "model": "feed.shape", - "pk": 158, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93571147624034, - "shape_pt_lon": -84.0498491281346, - "shape_pt_sequence": 6, - "shape_dist_traveled": 0.084 - } - }, - { - "model": "feed.shape", - "pk": 159, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93570246663722, - "shape_pt_lon": -84.0500893518124, - "shape_pt_sequence": 7, - "shape_dist_traveled": 0.11 - } - }, - { - "model": "feed.shape", - "pk": 160, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93566785089355, - "shape_pt_lon": -84.0503237982121, - "shape_pt_sequence": 8, - "shape_dist_traveled": 0.136 - } - }, - { - "model": "feed.shape", - "pk": 161, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93562801871054, - "shape_pt_lon": -84.0505362327233, - "shape_pt_sequence": 9, - "shape_dist_traveled": 0.16 - } - }, - { - "model": "feed.shape", - "pk": 162, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93558581568109, - "shape_pt_lon": -84.0507591258626, - "shape_pt_sequence": 10, - "shape_dist_traveled": 0.185 - } - }, - { - "model": "feed.shape", - "pk": 163, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93553934502577, - "shape_pt_lon": -84.0510354553896, - "shape_pt_sequence": 11, - "shape_dist_traveled": 0.215 - } - }, - { - "model": "feed.shape", - "pk": 164, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93548718391971, - "shape_pt_lon": -84.0513535074206, - "shape_pt_sequence": 12, - "shape_dist_traveled": 0.251 - } - }, - { - "model": "feed.shape", - "pk": 165, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93544590778002, - "shape_pt_lon": -84.0516944413929, - "shape_pt_sequence": 13, - "shape_dist_traveled": 0.288 - } - }, - { - "model": "feed.shape", - "pk": 166, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93544406437546, - "shape_pt_lon": -84.0517683691601, - "shape_pt_sequence": 14, - "shape_dist_traveled": 0.297 - } - }, - { - "model": "feed.shape", - "pk": 167, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93549752617786, - "shape_pt_lon": -84.0521913460308, - "shape_pt_sequence": 15, - "shape_dist_traveled": 0.343 - } - }, - { - "model": "feed.shape", - "pk": 168, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93552149197739, - "shape_pt_lon": -84.0522746314152, - "shape_pt_sequence": 16, - "shape_dist_traveled": 0.353 - } - }, - { - "model": "feed.shape", - "pk": 169, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93554545760814, - "shape_pt_lon": -84.0523420082619, - "shape_pt_sequence": 17, - "shape_dist_traveled": 0.361 - } - }, - { - "model": "feed.shape", - "pk": 170, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93560168465873, - "shape_pt_lon": -84.0523981556341, - "shape_pt_sequence": 18, - "shape_dist_traveled": 0.369 - } - }, - { - "model": "feed.shape", - "pk": 171, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93565791169966, - "shape_pt_lon": -84.0524318440576, - "shape_pt_sequence": 19, - "shape_dist_traveled": 0.377 - } - }, - { - "model": "feed.shape", - "pk": 172, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.935720591012, - "shape_pt_lon": -84.0524430735317, - "shape_pt_sequence": 20, - "shape_dist_traveled": 0.384 - } - }, - { - "model": "feed.shape", - "pk": 173, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93583857529975, - "shape_pt_lon": -84.0524187427515, - "shape_pt_sequence": 21, - "shape_dist_traveled": 0.397 - } - }, - { - "model": "feed.shape", - "pk": 174, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93605505885652, - "shape_pt_lon": -84.0523466867771, - "shape_pt_sequence": 22, - "shape_dist_traveled": 0.422 - } - }, - { - "model": "feed.shape", - "pk": 175, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93627443620344, - "shape_pt_lon": -84.0522802455722, - "shape_pt_sequence": 23, - "shape_dist_traveled": 0.448 - } - }, - { - "model": "feed.shape", - "pk": 176, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93639436894143, - "shape_pt_lon": -84.052243749702, - "shape_pt_sequence": 24, - "shape_dist_traveled": 0.461 - } - }, - { - "model": "feed.shape", - "pk": 177, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93653263180367, - "shape_pt_lon": -84.0522390707544, - "shape_pt_sequence": 25, - "shape_dist_traveled": 0.477 - } - }, - { - "model": "feed.shape", - "pk": 178, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93679802054417, - "shape_pt_lon": -84.0523349506756, - "shape_pt_sequence": 26, - "shape_dist_traveled": 0.508 - } - }, - { - "model": "feed.shape", - "pk": 179, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93706910208629, - "shape_pt_lon": -84.0524313369778, - "shape_pt_sequence": 27, - "shape_dist_traveled": 0.54 - } - }, - { - "model": "feed.shape", - "pk": 180, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93735023603007, - "shape_pt_lon": -84.0525380169441, - "shape_pt_sequence": 28, - "shape_dist_traveled": 0.573 - } - }, - { - "model": "feed.shape", - "pk": 181, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.9375714563375, - "shape_pt_lon": -84.0526437612861, - "shape_pt_sequence": 29, - "shape_dist_traveled": 0.6 - } - }, - { - "model": "feed.shape", - "pk": 182, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93774105816322, - "shape_pt_lon": -84.0527027160271, - "shape_pt_sequence": 30, - "shape_dist_traveled": 0.62 - } - }, - { - "model": "feed.shape", - "pk": 183, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93778978041929, - "shape_pt_lon": -84.0527151488461, - "shape_pt_sequence": 31, - "shape_dist_traveled": 0.625 - } - }, - { - "model": "feed.shape", - "pk": 184, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93794647765702, - "shape_pt_lon": -84.0527273141104, - "shape_pt_sequence": 32, - "shape_dist_traveled": 0.643 - } - }, - { - "model": "feed.shape", - "pk": 185, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93809150988507, - "shape_pt_lon": -84.0527076622996, - "shape_pt_sequence": 33, - "shape_dist_traveled": 0.659 - } - }, - { - "model": "feed.shape", - "pk": 186, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93815511047925, - "shape_pt_lon": -84.052635606505, - "shape_pt_sequence": 34, - "shape_dist_traveled": 0.67 - } - }, - { - "model": "feed.shape", - "pk": 187, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93840121696546, - "shape_pt_lon": -84.0521246655647, - "shape_pt_sequence": 35, - "shape_dist_traveled": 0.732 - } - }, - { - "model": "feed.shape", - "pk": 188, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93857142751338, - "shape_pt_lon": -84.051894479649, - "shape_pt_sequence": 36, - "shape_dist_traveled": 0.763 - } - }, - { - "model": "feed.shape", - "pk": 189, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93879176765612, - "shape_pt_lon": -84.0516156036497, - "shape_pt_sequence": 37, - "shape_dist_traveled": 0.802 - } - }, - { - "model": "feed.shape", - "pk": 190, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93890106345436, - "shape_pt_lon": -84.0514555284908, - "shape_pt_sequence": 38, - "shape_dist_traveled": 0.824 - } - }, - { - "model": "feed.shape", - "pk": 191, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93897507515302, - "shape_pt_lon": -84.0513020294891, - "shape_pt_sequence": 39, - "shape_dist_traveled": 0.842 - } - }, - { - "model": "feed.shape", - "pk": 192, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.9390141956147, - "shape_pt_lon": -84.0511345760324, - "shape_pt_sequence": 40, - "shape_dist_traveled": 0.861 - } - }, - { - "model": "feed.shape", - "pk": 193, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93905117558812, - "shape_pt_lon": -84.0509224405605, - "shape_pt_sequence": 41, - "shape_dist_traveled": 0.885 - } - }, - { - "model": "feed.shape", - "pk": 194, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93906597792292, - "shape_pt_lon": -84.0506014881021, - "shape_pt_sequence": 42, - "shape_dist_traveled": 0.92 - } - }, - { - "model": "feed.shape", - "pk": 195, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93909856537408, - "shape_pt_lon": -84.0501243834524, - "shape_pt_sequence": 43, - "shape_dist_traveled": 0.973 - } - }, - { - "model": "feed.shape", - "pk": 196, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93910318560055, - "shape_pt_lon": -84.0497656390733, - "shape_pt_sequence": 44, - "shape_dist_traveled": 1.012 - } - }, - { - "model": "feed.shape", - "pk": 197, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93906512245888, - "shape_pt_lon": -84.049652930016, - "shape_pt_sequence": 45, - "shape_dist_traveled": 1.025 - } - }, - { - "model": "feed.shape", - "pk": 198, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.9389773657529, - "shape_pt_lon": -84.0495133854688, - "shape_pt_sequence": 46, - "shape_dist_traveled": 1.043 - } - }, - { - "model": "feed.shape", - "pk": 199, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93881453893313, - "shape_pt_lon": -84.0493115816303, - "shape_pt_sequence": 47, - "shape_dist_traveled": 1.072 - } - }, - { - "model": "feed.shape", - "pk": 200, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93860413409909, - "shape_pt_lon": -84.0490281988577, - "shape_pt_sequence": 48, - "shape_dist_traveled": 1.11 - } - }, - { - "model": "feed.shape", - "pk": 201, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93847607358095, - "shape_pt_lon": -84.0488647834885, - "shape_pt_sequence": 49, - "shape_dist_traveled": 1.133 - } - }, - { - "model": "feed.shape", - "pk": 202, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93830796101282, - "shape_pt_lon": -84.0486425856324, - "shape_pt_sequence": 50, - "shape_dist_traveled": 1.164 - } - }, - { - "model": "feed.shape", - "pk": 203, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93812775111203, - "shape_pt_lon": -84.0484368995492, - "shape_pt_sequence": 51, - "shape_dist_traveled": 1.194 - } - }, - { - "model": "feed.shape", - "pk": 204, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93798100124938, - "shape_pt_lon": -84.0482768335369, - "shape_pt_sequence": 52, - "shape_dist_traveled": 1.218 - } - }, - { - "model": "feed.shape", - "pk": 205, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93768022319365, - "shape_pt_lon": -84.0479566982914, - "shape_pt_sequence": 53, - "shape_dist_traveled": 1.266 - } - }, - { - "model": "feed.shape", - "pk": 206, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93763286635998, - "shape_pt_lon": -84.0479111252314, - "shape_pt_sequence": 54, - "shape_dist_traveled": 1.274 - } - }, - { - "model": "feed.shape", - "pk": 207, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93758319780721, - "shape_pt_lon": -84.0478722576937, - "shape_pt_sequence": 55, - "shape_dist_traveled": 1.28 - } - }, - { - "model": "feed.shape", - "pk": 208, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93753870216281, - "shape_pt_lon": -84.0478404135935, - "shape_pt_sequence": 56, - "shape_dist_traveled": 1.287 - } - }, - { - "model": "feed.shape", - "pk": 209, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.9374942065184, - "shape_pt_lon": -84.0478139339113, - "shape_pt_sequence": 57, - "shape_dist_traveled": 1.292 - } - }, - { - "model": "feed.shape", - "pk": 210, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93745024180206, - "shape_pt_lon": -84.0477923420699, - "shape_pt_sequence": 58, - "shape_dist_traveled": 1.298 - } - }, - { - "model": "feed.shape", - "pk": 211, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93735938216936, - "shape_pt_lon": -84.0477606919451, - "shape_pt_sequence": 59, - "shape_dist_traveled": 1.308 - } - }, - { - "model": "feed.shape", - "pk": 212, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93724916693389, - "shape_pt_lon": -84.0477606931305, - "shape_pt_sequence": 60, - "shape_dist_traveled": 1.32 - } - }, - { - "model": "feed.shape", - "pk": 213, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93715177760806, - "shape_pt_lon": -84.0477784341865, - "shape_pt_sequence": 61, - "shape_dist_traveled": 1.331 - } - }, - { - "model": "feed.shape", - "pk": 214, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93705710158646, - "shape_pt_lon": -84.0477987581936, - "shape_pt_sequence": 62, - "shape_dist_traveled": 1.342 - } - }, - { - "model": "feed.shape", - "pk": 215, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93672866697375, - "shape_pt_lon": -84.0479001602699, - "shape_pt_sequence": 63, - "shape_dist_traveled": 1.38 - } - }, - { - "model": "feed.shape", - "pk": 216, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93643873625598, - "shape_pt_lon": -84.0479940310818, - "shape_pt_sequence": 64, - "shape_dist_traveled": 1.414 - } - }, - { - "model": "feed.shape", - "pk": 217, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93605459371357, - "shape_pt_lon": -84.0481209106209, - "shape_pt_sequence": 65, - "shape_dist_traveled": 1.458 - } - }, - { - "model": "feed.shape", - "pk": 218, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93594785009141, - "shape_pt_lon": -84.0481497577059, - "shape_pt_sequence": 66, - "shape_dist_traveled": 1.471 - } - }, - { - "model": "feed.shape", - "pk": 219, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93584672067646, - "shape_pt_lon": -84.0481926863882, - "shape_pt_sequence": 67, - "shape_dist_traveled": 1.483 - } - }, - { - "model": "feed.shape", - "pk": 220, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93562414968525, - "shape_pt_lon": -84.0482902977589, - "shape_pt_sequence": 68, - "shape_dist_traveled": 1.51 - } - }, - { - "model": "feed.shape", - "pk": 221, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93555563302149, - "shape_pt_lon": -84.0483541402688, - "shape_pt_sequence": 69, - "shape_dist_traveled": 1.52 - } - }, - { - "model": "feed.shape", - "pk": 222, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93552377293763, - "shape_pt_lon": -84.048395536302, - "shape_pt_sequence": 70, - "shape_dist_traveled": 1.526 - } - }, - { - "model": "feed.shape", - "pk": 223, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93549323384328, - "shape_pt_lon": -84.0484359265072, - "shape_pt_sequence": 71, - "shape_dist_traveled": 1.531 - } - }, - { - "model": "feed.shape", - "pk": 224, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93545924101029, - "shape_pt_lon": -84.0485562630898, - "shape_pt_sequence": 72, - "shape_dist_traveled": 1.545 - } - }, - { - "model": "feed.shape", - "pk": 225, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93545410965148, - "shape_pt_lon": -84.0486084574091, - "shape_pt_sequence": 73, - "shape_dist_traveled": 1.551 - } - }, - { - "model": "feed.shape", - "pk": 226, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93545261101962, - "shape_pt_lon": -84.0486583047952, - "shape_pt_sequence": 74, - "shape_dist_traveled": 1.556 - } - }, - { - "model": "feed.shape", - "pk": 227, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93527714539185, - "shape_pt_lon": -84.0486381383254, - "shape_pt_sequence": 75, - "shape_dist_traveled": 1.576 - } - }, - { - "model": "feed.shape", - "pk": 228, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93529369875646, - "shape_pt_lon": -84.0483849370953, - "shape_pt_sequence": 76, - "shape_dist_traveled": 1.604 - } - }, - { - "model": "feed.shape", - "pk": 229, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93524845287248, - "shape_pt_lon": -84.0481250138729, - "shape_pt_sequence": 77, - "shape_dist_traveled": 1.633 - } - }, - { - "model": "feed.shape", - "pk": 230, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93510490695821, - "shape_pt_lon": -84.0476876510322, - "shape_pt_sequence": 78, - "shape_dist_traveled": 1.683 - } - }, - { - "model": "feed.shape", - "pk": 231, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93492309622952, - "shape_pt_lon": -84.0471049676225, - "shape_pt_sequence": 79, - "shape_dist_traveled": 1.75 - } - }, - { - "model": "feed.shape", - "pk": 232, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93478795156821, - "shape_pt_lon": -84.0463710454434, - "shape_pt_sequence": 80, - "shape_dist_traveled": 1.832 - } - }, - { - "model": "feed.shape", - "pk": 233, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93468712924438, - "shape_pt_lon": -84.0458810362687, - "shape_pt_sequence": 81, - "shape_dist_traveled": 1.887 - } - }, - { - "model": "feed.shape", - "pk": 234, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93461716476174, - "shape_pt_lon": -84.0456150110652, - "shape_pt_sequence": 82, - "shape_dist_traveled": 1.917 - } - }, - { - "model": "feed.shape", - "pk": 235, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93466453460568, - "shape_pt_lon": -84.045615726073, - "shape_pt_sequence": 83, - "shape_dist_traveled": 1.922 - } - }, - { - "model": "feed.shape", - "pk": 236, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93495411611772, - "shape_pt_lon": -84.0456098658075, - "shape_pt_sequence": 84, - "shape_dist_traveled": 1.954 - } - }, - { - "model": "feed.shape", - "pk": 237, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93501867239507, - "shape_pt_lon": -84.0455893287031, - "shape_pt_sequence": 85, - "shape_dist_traveled": 1.962 - } - }, - { - "model": "feed.shape", - "pk": 238, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93533255656777, - "shape_pt_lon": -84.0455828491321, - "shape_pt_sequence": 86, - "shape_dist_traveled": 1.996 - } - }, - { - "model": "feed.shape", - "pk": 239, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93558174215077, - "shape_pt_lon": -84.0455310895244, - "shape_pt_sequence": 87, - "shape_dist_traveled": 2.025 - } - }, - { - "model": "feed.shape", - "pk": 240, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93565354440517, - "shape_pt_lon": -84.0454587191306, - "shape_pt_sequence": 88, - "shape_dist_traveled": 2.036 - } - }, - { - "model": "feed.shape", - "pk": 241, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93601427775509, - "shape_pt_lon": -84.0453935565556, - "shape_pt_sequence": 89, - "shape_dist_traveled": 2.076 - } - }, - { - "model": "feed.shape", - "pk": 242, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93618250695711, - "shape_pt_lon": -84.0453574183472, - "shape_pt_sequence": 90, - "shape_dist_traveled": 2.095 - } - }, - { - "model": "feed.shape", - "pk": 243, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93624056084127, - "shape_pt_lon": -84.0453568135217, - "shape_pt_sequence": 91, - "shape_dist_traveled": 2.102 - } - }, - { - "model": "feed.shape", - "pk": 244, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93629795423082, - "shape_pt_lon": -84.0453642553238, - "shape_pt_sequence": 92, - "shape_dist_traveled": 2.108 - } - }, - { - "model": "feed.shape", - "pk": 245, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93659318251401, - "shape_pt_lon": -84.0455215059456, - "shape_pt_sequence": 93, - "shape_dist_traveled": 2.145 - } - }, - { - "model": "feed.shape", - "pk": 246, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93667976807258, - "shape_pt_lon": -84.0455703414396, - "shape_pt_sequence": 94, - "shape_dist_traveled": 2.156 - } - }, - { - "model": "feed.shape", - "pk": 247, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.9367692395777, - "shape_pt_lon": -84.0455957359235, - "shape_pt_sequence": 95, - "shape_dist_traveled": 2.166 - } - }, - { - "model": "feed.shape", - "pk": 248, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93685293870503, - "shape_pt_lon": -84.0455879222361, - "shape_pt_sequence": 96, - "shape_dist_traveled": 2.176 - } - }, - { - "model": "feed.shape", - "pk": 249, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93694173624727, - "shape_pt_lon": -84.0455491295231, - "shape_pt_sequence": 97, - "shape_dist_traveled": 2.186 - } - }, - { - "model": "feed.shape", - "pk": 250, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93708123470739, - "shape_pt_lon": -84.0454446214555, - "shape_pt_sequence": 98, - "shape_dist_traveled": 2.206 - } - }, - { - "model": "feed.shape", - "pk": 251, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93724313131711, - "shape_pt_lon": -84.0452817159445, - "shape_pt_sequence": 99, - "shape_dist_traveled": 2.231 - } - }, - { - "model": "feed.shape", - "pk": 252, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93734607124923, - "shape_pt_lon": -84.0451254422096, - "shape_pt_sequence": 100, - "shape_dist_traveled": 2.251 - } - }, - { - "model": "feed.shape", - "pk": 253, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93748749351063, - "shape_pt_lon": -84.0448724740612, - "shape_pt_sequence": 101, - "shape_dist_traveled": 2.283 - } - }, - { - "model": "feed.shape", - "pk": 254, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93761860756564, - "shape_pt_lon": -84.0446484093239, - "shape_pt_sequence": 102, - "shape_dist_traveled": 2.312 - } - }, - { - "model": "feed.shape", - "pk": 255, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93781098243242, - "shape_pt_lon": -84.0443002302728, - "shape_pt_sequence": 103, - "shape_dist_traveled": 2.355 - } - }, - { - "model": "feed.shape", - "pk": 256, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93799146315684, - "shape_pt_lon": -84.0439934603325, - "shape_pt_sequence": 104, - "shape_dist_traveled": 2.395 - } - }, - { - "model": "feed.shape", - "pk": 257, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93810165004318, - "shape_pt_lon": -84.0438034580265, - "shape_pt_sequence": 105, - "shape_dist_traveled": 2.419 - } - }, - { - "model": "feed.shape", - "pk": 258, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93796407612903, - "shape_pt_lon": -84.0436169062427, - "shape_pt_sequence": 106, - "shape_dist_traveled": 2.444 - } - }, - { - "model": "feed.shape", - "pk": 259, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93791116339785, - "shape_pt_lon": -84.043444027742, - "shape_pt_sequence": 107, - "shape_dist_traveled": 2.464 - } - }, - { - "model": "feed.shape", - "pk": 260, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93788614994896, - "shape_pt_lon": -84.0432193842326, - "shape_pt_sequence": 108, - "shape_dist_traveled": 2.489 - } - }, - { - "model": "feed.shape", - "pk": 261, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93792655633902, - "shape_pt_lon": -84.0429361376045, - "shape_pt_sequence": 109, - "shape_dist_traveled": 2.52 - } - }, - { - "model": "feed.shape", - "pk": 262, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93800099196738, - "shape_pt_lon": -84.0424812505301, - "shape_pt_sequence": 110, - "shape_dist_traveled": 2.571 - } - }, - { - "model": "feed.shape", - "pk": 263, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93813818359375, - "shape_pt_lon": -84.0421772565051, - "shape_pt_sequence": 111, - "shape_dist_traveled": 2.607 - } - }, - { - "model": "feed.shape", - "pk": 264, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93816415907815, - "shape_pt_lon": -84.0419985184082, - "shape_pt_sequence": 112, - "shape_dist_traveled": 2.627 - } - }, - { - "model": "feed.shape", - "pk": 265, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.9381545385288, - "shape_pt_lon": -84.0418510350607, - "shape_pt_sequence": 113, - "shape_dist_traveled": 2.643 - } - }, - { - "model": "feed.shape", - "pk": 266, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93812567687818, - "shape_pt_lon": -84.0417260160641, - "shape_pt_sequence": 114, - "shape_dist_traveled": 2.657 - } - }, - { - "model": "feed.shape", - "pk": 267, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93807564954973, - "shape_pt_lon": -84.0416527622632, - "shape_pt_sequence": 115, - "shape_dist_traveled": 2.667 - } - }, - { - "model": "feed.shape", - "pk": 268, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93804289664845, - "shape_pt_lon": -84.0416384252501, - "shape_pt_sequence": 116, - "shape_dist_traveled": 2.671 - } - }, - { - "model": "feed.shape", - "pk": 269, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93801311595451, - "shape_pt_lon": -84.0416361581774, - "shape_pt_sequence": 117, - "shape_dist_traveled": 2.675 - } - }, - { - "model": "feed.shape", - "pk": 270, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93792172067878, - "shape_pt_lon": -84.0416381115992, - "shape_pt_sequence": 118, - "shape_dist_traveled": 2.685 - } - }, - { - "model": "feed.shape", - "pk": 271, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93790247956499, - "shape_pt_lon": -84.0412122658535, - "shape_pt_sequence": 119, - "shape_dist_traveled": 2.731 - } - }, - { - "model": "feed.shape", - "pk": 272, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93789478311904, - "shape_pt_lon": -84.0410686893496, - "shape_pt_sequence": 120, - "shape_dist_traveled": 2.747 - } - }, - { - "model": "feed.shape", - "pk": 273, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93830046896954, - "shape_pt_lon": -84.040969095546, - "shape_pt_sequence": 121, - "shape_dist_traveled": 2.793 - } - }, - { - "model": "feed.shape", - "pk": 274, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93846168564775, - "shape_pt_lon": -84.0409298363785, - "shape_pt_sequence": 122, - "shape_dist_traveled": 2.812 - } - }, - { - "model": "feed.shape", - "pk": 275, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93868873033166, - "shape_pt_lon": -84.040967928104, - "shape_pt_sequence": 123, - "shape_dist_traveled": 2.837 - } - }, - { - "model": "feed.shape", - "pk": 276, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93884815398905, - "shape_pt_lon": -84.0411370173071, - "shape_pt_sequence": 124, - "shape_dist_traveled": 2.863 - } - }, - { - "model": "feed.shape", - "pk": 277, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93915383599336, - "shape_pt_lon": -84.0416568644267, - "shape_pt_sequence": 125, - "shape_dist_traveled": 2.929 - } - }, - { - "model": "feed.shape", - "pk": 278, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93928521203319, - "shape_pt_lon": -84.0417935755105, - "shape_pt_sequence": 126, - "shape_dist_traveled": 2.95 - } - }, - { - "model": "feed.shape", - "pk": 279, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93942977628924, - "shape_pt_lon": -84.0418876857024, - "shape_pt_sequence": 127, - "shape_dist_traveled": 2.969 - } - }, - { - "model": "feed.shape", - "pk": 280, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93950150662073, - "shape_pt_lon": -84.0419089725314, - "shape_pt_sequence": 128, - "shape_dist_traveled": 2.977 - } - }, - { - "model": "feed.shape", - "pk": 281, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93950371370814, - "shape_pt_lon": -84.0422428396408, - "shape_pt_sequence": 129, - "shape_dist_traveled": 3.014 - } - }, - { - "model": "feed.shape", - "pk": 282, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93948613333313, - "shape_pt_lon": -84.0425204684191, - "shape_pt_sequence": 130, - "shape_dist_traveled": 3.044 - } - }, - { - "model": "feed.shape", - "pk": 283, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93944529338017, - "shape_pt_lon": -84.0430246306461, - "shape_pt_sequence": 131, - "shape_dist_traveled": 3.1 - } - }, - { - "model": "feed.shape", - "pk": 284, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93942327481619, - "shape_pt_lon": -84.0433356324423, - "shape_pt_sequence": 132, - "shape_dist_traveled": 3.134 - } - }, - { - "model": "feed.shape", - "pk": 285, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93972442200525, - "shape_pt_lon": -84.0432655607324, - "shape_pt_sequence": 133, - "shape_dist_traveled": 3.168 - } - }, - { - "model": "feed.shape", - "pk": 286, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93978732393233, - "shape_pt_lon": -84.043299171515, - "shape_pt_sequence": 134, - "shape_dist_traveled": 3.176 - } - }, - { - "model": "feed.shape", - "pk": 287, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93981711902594, - "shape_pt_lon": -84.0433809579747, - "shape_pt_sequence": 135, - "shape_dist_traveled": 3.186 - } - }, - { - "model": "feed.shape", - "pk": 288, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93991974845217, - "shape_pt_lon": -84.0437596394605, - "shape_pt_sequence": 136, - "shape_dist_traveled": 3.229 - } - }, - { - "model": "feed.shape", - "pk": 289, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.94007043205839, - "shape_pt_lon": -84.0443170698121, - "shape_pt_sequence": 137, - "shape_dist_traveled": 3.292 - } - }, - { - "model": "feed.shape", - "pk": 290, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.94016533658292, - "shape_pt_lon": -84.0446744654815, - "shape_pt_sequence": 138, - "shape_dist_traveled": 3.332 - } - }, - { - "model": "feed.shape", - "pk": 291, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.94027017298111, - "shape_pt_lon": -84.0448268343636, - "shape_pt_sequence": 139, - "shape_dist_traveled": 3.353 - } - }, - { - "model": "feed.shape", - "pk": 292, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.94038169599758, - "shape_pt_lon": -84.045244089757, - "shape_pt_sequence": 140, - "shape_dist_traveled": 3.4 - } - }, - { - "model": "feed.shape", - "pk": 293, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.94048873914792, - "shape_pt_lon": -84.045632855511, - "shape_pt_sequence": 141, - "shape_dist_traveled": 3.444 - } - }, - { - "model": "feed.shape", - "pk": 294, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.94063882056966, - "shape_pt_lon": -84.045599244728, - "shape_pt_sequence": 142, - "shape_dist_traveled": 3.461 - } - }, - { - "model": "feed.shape", - "pk": 295, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.94079662666821, - "shape_pt_lon": -84.0450681942005, - "shape_pt_sequence": 143, - "shape_dist_traveled": 3.522 - } - }, - { - "model": "feed.shape", - "pk": 296, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.94095071185347, - "shape_pt_lon": -84.044750328054, - "shape_pt_sequence": 144, - "shape_dist_traveled": 3.561 - } - }, - { - "model": "feed.shape", - "pk": 297, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.9410528605391, - "shape_pt_lon": -84.0446554341072, - "shape_pt_sequence": 145, - "shape_dist_traveled": 3.576 - } - }, - { - "model": "feed.shape", - "pk": 298, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.94157411286451, - "shape_pt_lon": -84.04469185811, - "shape_pt_sequence": 146, - "shape_dist_traveled": 3.634 - } - }, - { - "model": "feed.shape", - "pk": 299, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.94242227255298, - "shape_pt_lon": -84.0447474726987, - "shape_pt_sequence": 147, - "shape_dist_traveled": 3.728 - } - }, - { - "model": "feed.shape", - "pk": 300, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.94283107241787, - "shape_pt_lon": -84.0447699014639, - "shape_pt_sequence": 148, - "shape_dist_traveled": 3.773 - } - }, - { - "model": "feed.shape", - "pk": 301, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.94300697065598, - "shape_pt_lon": -84.0447350564938, - "shape_pt_sequence": 149, - "shape_dist_traveled": 3.793 - } - }, - { - "model": "feed.shape", - "pk": 302, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.94326009234421, - "shape_pt_lon": -84.0446544775012, - "shape_pt_sequence": 150, - "shape_dist_traveled": 3.823 - } - }, - { - "model": "feed.shape", - "pk": 303, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.94351468777105, - "shape_pt_lon": -84.0445407320727, - "shape_pt_sequence": 151, - "shape_dist_traveled": 3.853 - } - }, - { - "model": "feed.shape", - "pk": 304, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.94366913468646, - "shape_pt_lon": -84.0444710421328, - "shape_pt_sequence": 152, - "shape_dist_traveled": 3.872 - } - }, - { - "model": "feed.shape", - "pk": 305, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.9437999854876, - "shape_pt_lon": -84.0447541575134, - "shape_pt_sequence": 153, - "shape_dist_traveled": 3.906 - } - }, - { - "model": "feed.shape", - "pk": 306, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.94388149907578, - "shape_pt_lon": -84.0448848261506, - "shape_pt_sequence": 154, - "shape_dist_traveled": 3.923 - } - }, - { - "model": "feed.shape", - "pk": 307, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.94396600743452, - "shape_pt_lon": -84.0449552037605, - "shape_pt_sequence": 155, - "shape_dist_traveled": 3.935 - } - }, - { - "model": "feed.shape", - "pk": 308, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.94433419150155, - "shape_pt_lon": -84.0449932717292, - "shape_pt_sequence": 156, - "shape_dist_traveled": 3.976 - } - }, - { - "model": "feed.shape", - "pk": 309, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.94457398813642, - "shape_pt_lon": -84.0450138149367, - "shape_pt_sequence": 157, - "shape_dist_traveled": 4.003 - } - }, - { - "model": "feed.shape", - "pk": 310, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.94495221337372, - "shape_pt_lon": -84.045010504636, - "shape_pt_sequence": 158, - "shape_dist_traveled": 4.045 - } - }, - { - "model": "feed.shape", - "pk": 311, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.94503698779598, - "shape_pt_lon": -84.0450833311997, - "shape_pt_sequence": 159, - "shape_dist_traveled": 4.057 - } - }, - { - "model": "feed.shape", - "pk": 312, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.94506796311185, - "shape_pt_lon": -84.045389534011, - "shape_pt_sequence": 160, - "shape_dist_traveled": 4.091 - } - }, - { - "model": "feed.shape", - "pk": 313, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.94509404758507, - "shape_pt_lon": -84.0455020842335, - "shape_pt_sequence": 161, - "shape_dist_traveled": 4.104 - } - }, - { - "model": "feed.shape", - "pk": 314, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.94516741015652, - "shape_pt_lon": -84.0455418078417, - "shape_pt_sequence": 162, - "shape_dist_traveled": 4.113 - } - }, - { - "model": "feed.shape", - "pk": 315, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.94569411437748, - "shape_pt_lon": -84.0455036631251, - "shape_pt_sequence": 163, - "shape_dist_traveled": 4.171 - } - }, - { - "model": "feed.shape", - "pk": 316, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.94576235686358, - "shape_pt_lon": -84.0454645549726, - "shape_pt_sequence": 164, - "shape_dist_traveled": 4.18 - } - }, - { - "model": "feed.shape", - "pk": 317, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.94586939851089, - "shape_pt_lon": -84.0452550477597, - "shape_pt_sequence": 165, - "shape_dist_traveled": 4.206 - } - }, - { - "model": "feed.shape", - "pk": 318, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.94594554151604, - "shape_pt_lon": -84.0451777429595, - "shape_pt_sequence": 166, - "shape_dist_traveled": 4.218 - } - }, - { - "model": "feed.shape", - "pk": 319, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.94629085058927, - "shape_pt_lon": -84.0451530949856, - "shape_pt_sequence": 167, - "shape_dist_traveled": 4.256 - } - }, - { - "model": "feed.shape", - "pk": 320, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.94638848955421, - "shape_pt_lon": -84.0451636656039, - "shape_pt_sequence": 168, - "shape_dist_traveled": 4.267 - } - }, - { - "model": "feed.shape", - "pk": 321, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.94644918315917, - "shape_pt_lon": -84.0452028781838, - "shape_pt_sequence": 169, - "shape_dist_traveled": 4.275 - } - }, - { - "model": "feed.shape", - "pk": 322, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.94648865740507, - "shape_pt_lon": -84.0452462913844, - "shape_pt_sequence": 170, - "shape_dist_traveled": 4.281 - } - }, - { - "model": "feed.shape", - "pk": 323, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93551240308205, - "shape_pt_lon": -84.052232462037, - "shape_pt_sequence": 0, - "shape_dist_traveled": 0.0 - } - }, - { - "model": "feed.shape", - "pk": 324, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93553038682294, - "shape_pt_lon": -84.0523024805564, - "shape_pt_sequence": 1, - "shape_dist_traveled": 0.008 - } - }, - { - "model": "feed.shape", - "pk": 325, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93554317941351, - "shape_pt_lon": -84.0523354193901, - "shape_pt_sequence": 2, - "shape_dist_traveled": 0.012 - } - }, - { - "model": "feed.shape", - "pk": 326, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93560006968185, - "shape_pt_lon": -84.0523952582046, - "shape_pt_sequence": 3, - "shape_dist_traveled": 0.021 - } - }, - { - "model": "feed.shape", - "pk": 327, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93565298376728, - "shape_pt_lon": -84.0524284133704, - "shape_pt_sequence": 4, - "shape_dist_traveled": 0.028 - } - }, - { - "model": "feed.shape", - "pk": 328, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93571914349433, - "shape_pt_lon": -84.0524404498132, - "shape_pt_sequence": 5, - "shape_dist_traveled": 0.035 - } - }, - { - "model": "feed.shape", - "pk": 329, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93583719162457, - "shape_pt_lon": -84.0524171180445, - "shape_pt_sequence": 6, - "shape_dist_traveled": 0.049 - } - }, - { - "model": "feed.shape", - "pk": 330, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93594643029256, - "shape_pt_lon": -84.0523801266021, - "shape_pt_sequence": 7, - "shape_dist_traveled": 0.061 - } - }, - { - "model": "feed.shape", - "pk": 331, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93608834513962, - "shape_pt_lon": -84.0523343631691, - "shape_pt_sequence": 8, - "shape_dist_traveled": 0.078 - } - }, - { - "model": "feed.shape", - "pk": 332, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93620422239772, - "shape_pt_lon": -84.0522977078958, - "shape_pt_sequence": 9, - "shape_dist_traveled": 0.091 - } - }, - { - "model": "feed.shape", - "pk": 333, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.936293049843, - "shape_pt_lon": -84.0522711599884, - "shape_pt_sequence": 10, - "shape_dist_traveled": 0.101 - } - }, - { - "model": "feed.shape", - "pk": 334, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93639226353531, - "shape_pt_lon": -84.0522405229359, - "shape_pt_sequence": 11, - "shape_dist_traveled": 0.113 - } - }, - { - "model": "feed.shape", - "pk": 335, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93653093553953, - "shape_pt_lon": -84.0522367457551, - "shape_pt_sequence": 12, - "shape_dist_traveled": 0.128 - } - }, - { - "model": "feed.shape", - "pk": 336, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93659589447438, - "shape_pt_lon": -84.0522590055211, - "shape_pt_sequence": 13, - "shape_dist_traveled": 0.136 - } - }, - { - "model": "feed.shape", - "pk": 337, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93661615058734, - "shape_pt_lon": -84.0523412639074, - "shape_pt_sequence": 14, - "shape_dist_traveled": 0.145 - } - }, - { - "model": "feed.shape", - "pk": 338, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.9365876265418, - "shape_pt_lon": -84.0524260404882, - "shape_pt_sequence": 15, - "shape_dist_traveled": 0.155 - } - }, - { - "model": "feed.shape", - "pk": 339, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.9365355393877, - "shape_pt_lon": -84.0524499625703, - "shape_pt_sequence": 16, - "shape_dist_traveled": 0.161 - } - }, - { - "model": "feed.shape", - "pk": 340, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93644867420793, - "shape_pt_lon": -84.0524473462339, - "shape_pt_sequence": 17, - "shape_dist_traveled": 0.171 - } - }, - { - "model": "feed.shape", - "pk": 341, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93635813864212, - "shape_pt_lon": -84.0524384481957, - "shape_pt_sequence": 18, - "shape_dist_traveled": 0.181 - } - }, - { - "model": "feed.shape", - "pk": 342, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93632957313295, - "shape_pt_lon": -84.052426075736, - "shape_pt_sequence": 19, - "shape_dist_traveled": 0.184 - } - }, - { - "model": "feed.shape", - "pk": 343, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93630067737655, - "shape_pt_lon": -84.0524254379402, - "shape_pt_sequence": 20, - "shape_dist_traveled": 0.188 - } - }, - { - "model": "feed.shape", - "pk": 344, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.9361767385198, - "shape_pt_lon": -84.0524455386407, - "shape_pt_sequence": 21, - "shape_dist_traveled": 0.201 - } - }, - { - "model": "feed.shape", - "pk": 345, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93606938255121, - "shape_pt_lon": -84.0524692189919, - "shape_pt_sequence": 22, - "shape_dist_traveled": 0.214 - } - }, - { - "model": "feed.shape", - "pk": 346, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.9358662876061, - "shape_pt_lon": -84.0525134237392, - "shape_pt_sequence": 23, - "shape_dist_traveled": 0.237 - } - }, - { - "model": "feed.shape", - "pk": 347, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93580530982546, - "shape_pt_lon": -84.0525277028597, - "shape_pt_sequence": 24, - "shape_dist_traveled": 0.244 - } - }, - { - "model": "feed.shape", - "pk": 348, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93571720324209, - "shape_pt_lon": -84.0525351455981, - "shape_pt_sequence": 25, - "shape_dist_traveled": 0.253 - } - }, - { - "model": "feed.shape", - "pk": 349, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93562932790421, - "shape_pt_lon": -84.0525170973821, - "shape_pt_sequence": 26, - "shape_dist_traveled": 0.263 - } - }, - { - "model": "feed.shape", - "pk": 350, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93552958615174, - "shape_pt_lon": -84.0524334827489, - "shape_pt_sequence": 27, - "shape_dist_traveled": 0.278 - } - }, - { - "model": "feed.shape", - "pk": 351, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93545575661828, - "shape_pt_lon": -84.052350672979, - "shape_pt_sequence": 28, - "shape_dist_traveled": 0.29 - } - }, - { - "model": "feed.shape", - "pk": 352, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93541638163459, - "shape_pt_lon": -84.0522446182099, - "shape_pt_sequence": 29, - "shape_dist_traveled": 0.302 - } - }, - { - "model": "feed.shape", - "pk": 353, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93541236377893, - "shape_pt_lon": -84.0520977731443, - "shape_pt_sequence": 30, - "shape_dist_traveled": 0.318 - } - }, - { - "model": "feed.shape", - "pk": 354, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.9353609350822, - "shape_pt_lon": -84.0517673714683, - "shape_pt_sequence": 31, - "shape_dist_traveled": 0.355 - } - }, - { - "model": "feed.shape", - "pk": 355, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93533537431955, - "shape_pt_lon": -84.0515957473315, - "shape_pt_sequence": 32, - "shape_dist_traveled": 0.374 - } - }, - { - "model": "feed.shape", - "pk": 356, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93527832074849, - "shape_pt_lon": -84.0514578761312, - "shape_pt_sequence": 33, - "shape_dist_traveled": 0.39 - } - }, - { - "model": "feed.shape", - "pk": 357, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93537394568805, - "shape_pt_lon": -84.051051560594, - "shape_pt_sequence": 34, - "shape_dist_traveled": 0.436 - } - }, - { - "model": "feed.shape", - "pk": 358, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93548509593826, - "shape_pt_lon": -84.0506488451042, - "shape_pt_sequence": 35, - "shape_dist_traveled": 0.482 - } - }, - { - "model": "feed.shape", - "pk": 359, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93555656904013, - "shape_pt_lon": -84.0503446866737, - "shape_pt_sequence": 36, - "shape_dist_traveled": 0.516 - } - }, - { - "model": "feed.shape", - "pk": 360, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93560639042598, - "shape_pt_lon": -84.0501407351937, - "shape_pt_sequence": 37, - "shape_dist_traveled": 0.539 - } - }, - { - "model": "feed.shape", - "pk": 361, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93564014039442, - "shape_pt_lon": -84.0499188359838, - "shape_pt_sequence": 38, - "shape_dist_traveled": 0.564 - } - }, - { - "model": "feed.shape", - "pk": 362, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93555237106771, - "shape_pt_lon": -84.0495240741516, - "shape_pt_sequence": 39, - "shape_dist_traveled": 0.608 - } - }, - { - "model": "feed.shape", - "pk": 363, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.9355127171103, - "shape_pt_lon": -84.0493169635181, - "shape_pt_sequence": 40, - "shape_dist_traveled": 0.631 - } - }, - { - "model": "feed.shape", - "pk": 364, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93544759669272, - "shape_pt_lon": -84.0490255135247, - "shape_pt_sequence": 41, - "shape_dist_traveled": 0.664 - } - }, - { - "model": "feed.shape", - "pk": 365, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93538988817417, - "shape_pt_lon": -84.0487899823799, - "shape_pt_sequence": 42, - "shape_dist_traveled": 0.691 - } - }, - { - "model": "feed.shape", - "pk": 366, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93537301317815, - "shape_pt_lon": -84.0486447689264, - "shape_pt_sequence": 43, - "shape_dist_traveled": 0.707 - } - }, - { - "model": "feed.shape", - "pk": 367, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93527658461171, - "shape_pt_lon": -84.0486366108669, - "shape_pt_sequence": 44, - "shape_dist_traveled": 0.718 - } - }, - { - "model": "feed.shape", - "pk": 368, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93529274995559, - "shape_pt_lon": -84.0483784246656, - "shape_pt_sequence": 45, - "shape_dist_traveled": 0.746 - } - }, - { - "model": "feed.shape", - "pk": 369, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93524694618673, - "shape_pt_lon": -84.0481238929513, - "shape_pt_sequence": 46, - "shape_dist_traveled": 0.774 - } - }, - { - "model": "feed.shape", - "pk": 370, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93514165787212, - "shape_pt_lon": -84.0478057230236, - "shape_pt_sequence": 47, - "shape_dist_traveled": 0.811 - } - }, - { - "model": "feed.shape", - "pk": 371, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93500316815773, - "shape_pt_lon": -84.0473807827294, - "shape_pt_sequence": 48, - "shape_dist_traveled": 0.86 - } - }, - { - "model": "feed.shape", - "pk": 372, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93492049042863, - "shape_pt_lon": -84.0470859236543, - "shape_pt_sequence": 49, - "shape_dist_traveled": 0.894 - } - }, - { - "model": "feed.shape", - "pk": 373, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93479657132182, - "shape_pt_lon": -84.0464195689003, - "shape_pt_sequence": 50, - "shape_dist_traveled": 0.968 - } - }, - { - "model": "feed.shape", - "pk": 374, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93468604728109, - "shape_pt_lon": -84.0458857020311, - "shape_pt_sequence": 51, - "shape_dist_traveled": 1.028 - } - }, - { - "model": "feed.shape", - "pk": 375, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.9346124699569, - "shape_pt_lon": -84.0456137031377, - "shape_pt_sequence": 52, - "shape_dist_traveled": 1.059 - } - }, - { - "model": "feed.shape", - "pk": 376, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93481022852054, - "shape_pt_lon": -84.0456081393267, - "shape_pt_sequence": 53, - "shape_dist_traveled": 1.081 - } - }, - { - "model": "feed.shape", - "pk": 377, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93495379560579, - "shape_pt_lon": -84.0456083692307, - "shape_pt_sequence": 54, - "shape_dist_traveled": 1.096 - } - }, - { - "model": "feed.shape", - "pk": 378, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93502122053513, - "shape_pt_lon": -84.0455873976348, - "shape_pt_sequence": 55, - "shape_dist_traveled": 1.104 - } - }, - { - "model": "feed.shape", - "pk": 379, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93525069991888, - "shape_pt_lon": -84.0455815527507, - "shape_pt_sequence": 56, - "shape_dist_traveled": 1.13 - } - }, - { - "model": "feed.shape", - "pk": 380, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93533621207088, - "shape_pt_lon": -84.0455791055204, - "shape_pt_sequence": 57, - "shape_dist_traveled": 1.139 - } - }, - { - "model": "feed.shape", - "pk": 381, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.9355796939962, - "shape_pt_lon": -84.0455277100451, - "shape_pt_sequence": 58, - "shape_dist_traveled": 1.167 - } - }, - { - "model": "feed.shape", - "pk": 382, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93566141737569, - "shape_pt_lon": -84.0454545424224, - "shape_pt_sequence": 59, - "shape_dist_traveled": 1.179 - } - }, - { - "model": "feed.shape", - "pk": 383, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93593880374486, - "shape_pt_lon": -84.0454033749615, - "shape_pt_sequence": 60, - "shape_dist_traveled": 1.21 - } - }, - { - "model": "feed.shape", - "pk": 384, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93617987563359, - "shape_pt_lon": -84.0453561940705, - "shape_pt_sequence": 61, - "shape_dist_traveled": 1.237 - } - }, - { - "model": "feed.shape", - "pk": 385, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93629878421235, - "shape_pt_lon": -84.0453622217276, - "shape_pt_sequence": 62, - "shape_dist_traveled": 1.25 - } - }, - { - "model": "feed.shape", - "pk": 386, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93647074793075, - "shape_pt_lon": -84.0454544077961, - "shape_pt_sequence": 63, - "shape_dist_traveled": 1.272 - } - }, - { - "model": "feed.shape", - "pk": 387, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.9366470154013, - "shape_pt_lon": -84.0455491574187, - "shape_pt_sequence": 64, - "shape_dist_traveled": 1.294 - } - }, - { - "model": "feed.shape", - "pk": 388, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93667996169247, - "shape_pt_lon": -84.0455671051487, - "shape_pt_sequence": 65, - "shape_dist_traveled": 1.298 - } - }, - { - "model": "feed.shape", - "pk": 389, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93677076487081, - "shape_pt_lon": -84.0455923951325, - "shape_pt_sequence": 66, - "shape_dist_traveled": 1.308 - } - }, - { - "model": "feed.shape", - "pk": 390, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93685019478803, - "shape_pt_lon": -84.0455875957907, - "shape_pt_sequence": 67, - "shape_dist_traveled": 1.317 - } - }, - { - "model": "feed.shape", - "pk": 391, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93693939078323, - "shape_pt_lon": -84.0455459896891, - "shape_pt_sequence": 68, - "shape_dist_traveled": 1.328 - } - }, - { - "model": "feed.shape", - "pk": 392, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93708216879507, - "shape_pt_lon": -84.0454405657035, - "shape_pt_sequence": 69, - "shape_dist_traveled": 1.348 - } - }, - { - "model": "feed.shape", - "pk": 393, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.9372417505605, - "shape_pt_lon": -84.0452791956738, - "shape_pt_sequence": 70, - "shape_dist_traveled": 1.373 - } - }, - { - "model": "feed.shape", - "pk": 394, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93733175001592, - "shape_pt_lon": -84.0451437718914, - "shape_pt_sequence": 71, - "shape_dist_traveled": 1.391 - } - }, - { - "model": "feed.shape", - "pk": 395, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93747880276838, - "shape_pt_lon": -84.0448843455207, - "shape_pt_sequence": 72, - "shape_dist_traveled": 1.423 - } - }, - { - "model": "feed.shape", - "pk": 396, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93759383837854, - "shape_pt_lon": -84.0446848467803, - "shape_pt_sequence": 73, - "shape_dist_traveled": 1.449 - } - }, - { - "model": "feed.shape", - "pk": 397, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93775722150572, - "shape_pt_lon": -84.0443877220931, - "shape_pt_sequence": 74, - "shape_dist_traveled": 1.486 - } - }, - { - "model": "feed.shape", - "pk": 398, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93792650160209, - "shape_pt_lon": -84.0440980878075, - "shape_pt_sequence": 75, - "shape_dist_traveled": 1.523 - } - }, - { - "model": "feed.shape", - "pk": 399, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93809919166979, - "shape_pt_lon": -84.0437999865192, - "shape_pt_sequence": 76, - "shape_dist_traveled": 1.561 - } - }, - { - "model": "feed.shape", - "pk": 400, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93796097853527, - "shape_pt_lon": -84.0436147985756, - "shape_pt_sequence": 77, - "shape_dist_traveled": 1.586 - } - }, - { - "model": "feed.shape", - "pk": 401, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93791115773413, - "shape_pt_lon": -84.0434434787742, - "shape_pt_sequence": 78, - "shape_dist_traveled": 1.606 - } - }, - { - "model": "feed.shape", - "pk": 402, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.9378853721441, - "shape_pt_lon": -84.0432188653814, - "shape_pt_sequence": 79, - "shape_dist_traveled": 1.63 - } - }, - { - "model": "feed.shape", - "pk": 403, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93792474683056, - "shape_pt_lon": -84.0429382281456, - "shape_pt_sequence": 80, - "shape_dist_traveled": 1.661 - } - }, - { - "model": "feed.shape", - "pk": 404, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93798421082772, - "shape_pt_lon": -84.0425692976739, - "shape_pt_sequence": 81, - "shape_dist_traveled": 1.702 - } - }, - { - "model": "feed.shape", - "pk": 405, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93799717971221, - "shape_pt_lon": -84.0424760119919, - "shape_pt_sequence": 82, - "shape_dist_traveled": 1.713 - } - }, - { - "model": "feed.shape", - "pk": 406, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93813619639644, - "shape_pt_lon": -84.0421774270254, - "shape_pt_sequence": 83, - "shape_dist_traveled": 1.749 - } - }, - { - "model": "feed.shape", - "pk": 407, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93816151133474, - "shape_pt_lon": -84.0419972282554, - "shape_pt_sequence": 84, - "shape_dist_traveled": 1.769 - } - }, - { - "model": "feed.shape", - "pk": 408, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93815347569085, - "shape_pt_lon": -84.0418487515775, - "shape_pt_sequence": 85, - "shape_dist_traveled": 1.785 - } - }, - { - "model": "feed.shape", - "pk": 409, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93812695789198, - "shape_pt_lon": -84.0417223014224, - "shape_pt_sequence": 86, - "shape_dist_traveled": 1.799 - } - }, - { - "model": "feed.shape", - "pk": 410, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93807552975984, - "shape_pt_lon": -84.041649694696, - "shape_pt_sequence": 87, - "shape_dist_traveled": 1.809 - } - }, - { - "model": "feed.shape", - "pk": 411, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93801445884308, - "shape_pt_lon": -84.0416317469654, - "shape_pt_sequence": 88, - "shape_dist_traveled": 1.816 - } - }, - { - "model": "feed.shape", - "pk": 412, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93791897942971, - "shape_pt_lon": -84.0416350505556, - "shape_pt_sequence": 89, - "shape_dist_traveled": 1.827 - } - }, - { - "model": "feed.shape", - "pk": 413, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93789540463778, - "shape_pt_lon": -84.0410687729965, - "shape_pt_sequence": 90, - "shape_dist_traveled": 1.889 - } - }, - { - "model": "feed.shape", - "pk": 414, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93846102257875, - "shape_pt_lon": -84.0409278059346, - "shape_pt_sequence": 91, - "shape_dist_traveled": 1.953 - } - }, - { - "model": "feed.shape", - "pk": 415, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93868770509072, - "shape_pt_lon": -84.0409636843222, - "shape_pt_sequence": 92, - "shape_dist_traveled": 1.979 - } - }, - { - "model": "feed.shape", - "pk": 416, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93884702967763, - "shape_pt_lon": -84.0411317795776, - "shape_pt_sequence": 93, - "shape_dist_traveled": 2.004 - } - }, - { - "model": "feed.shape", - "pk": 417, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93915009329333, - "shape_pt_lon": -84.0416545090707, - "shape_pt_sequence": 94, - "shape_dist_traveled": 2.071 - } - }, - { - "model": "feed.shape", - "pk": 418, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93928437269097, - "shape_pt_lon": -84.0417940169538, - "shape_pt_sequence": 95, - "shape_dist_traveled": 2.092 - } - }, - { - "model": "feed.shape", - "pk": 419, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93942339095397, - "shape_pt_lon": -84.0418844077991, - "shape_pt_sequence": 96, - "shape_dist_traveled": 2.11 - } - }, - { - "model": "feed.shape", - "pk": 420, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93949992907343, - "shape_pt_lon": -84.0419066090587, - "shape_pt_sequence": 97, - "shape_dist_traveled": 2.119 - } - }, - { - "model": "feed.shape", - "pk": 421, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93949992907343, - "shape_pt_lon": -84.0422475569833, - "shape_pt_sequence": 98, - "shape_dist_traveled": 2.156 - } - }, - { - "model": "feed.shape", - "pk": 422, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.939437, - "shape_pt_lon": -84.043074, - "shape_pt_sequence": 99, - "shape_dist_traveled": 2.187 - } - }, - { - "model": "feed.shape", - "pk": 423, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.9394249524573, - "shape_pt_lon": -84.0433290766316, - "shape_pt_sequence": 100, - "shape_dist_traveled": 2.275 - } - }, - { - "model": "feed.shape", - "pk": 424, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93972312001197, - "shape_pt_lon": -84.0432616940963, - "shape_pt_sequence": 101, - "shape_dist_traveled": 2.309 - } - }, - { - "model": "feed.shape", - "pk": 425, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.9397847344284, - "shape_pt_lon": -84.0432938739159, - "shape_pt_sequence": 102, - "shape_dist_traveled": 2.317 - } - }, - { - "model": "feed.shape", - "pk": 426, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.9398186343525, - "shape_pt_lon": -84.0433818049407, - "shape_pt_sequence": 103, - "shape_dist_traveled": 2.327 - } - }, - { - "model": "feed.shape", - "pk": 427, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93998824672434, - "shape_pt_lon": -84.0440308770623, - "shape_pt_sequence": 104, - "shape_dist_traveled": 2.401 - } - }, - { - "model": "feed.shape", - "pk": 428, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94015974971341, - "shape_pt_lon": -84.0446658158992, - "shape_pt_sequence": 105, - "shape_dist_traveled": 2.473 - } - }, - { - "model": "feed.shape", - "pk": 429, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94026910203425, - "shape_pt_lon": -84.0448245474961, - "shape_pt_sequence": 106, - "shape_dist_traveled": 2.494 - } - }, - { - "model": "feed.shape", - "pk": 430, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94036490303632, - "shape_pt_lon": -84.0451873514683, - "shape_pt_sequence": 107, - "shape_dist_traveled": 2.535 - } - }, - { - "model": "feed.shape", - "pk": 431, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94048769323097, - "shape_pt_lon": -84.0456290389484, - "shape_pt_sequence": 108, - "shape_dist_traveled": 2.586 - } - }, - { - "model": "feed.shape", - "pk": 432, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94063635155576, - "shape_pt_lon": -84.0455931434884, - "shape_pt_sequence": 109, - "shape_dist_traveled": 2.602 - } - }, - { - "model": "feed.shape", - "pk": 433, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94079234514589, - "shape_pt_lon": -84.0450690355552, - "shape_pt_sequence": 110, - "shape_dist_traveled": 2.662 - } - }, - { - "model": "feed.shape", - "pk": 434, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94094918383372, - "shape_pt_lon": -84.0447505513004, - "shape_pt_sequence": 111, - "shape_dist_traveled": 2.701 - } - }, - { - "model": "feed.shape", - "pk": 435, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94104532842372, - "shape_pt_lon": -84.0446520351469, - "shape_pt_sequence": 112, - "shape_dist_traveled": 2.717 - } - }, - { - "model": "feed.shape", - "pk": 436, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94113081479986, - "shape_pt_lon": -84.0446571934664, - "shape_pt_sequence": 113, - "shape_dist_traveled": 2.726 - } - }, - { - "model": "feed.shape", - "pk": 437, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94144321527622, - "shape_pt_lon": -84.0446770863329, - "shape_pt_sequence": 114, - "shape_dist_traveled": 2.761 - } - }, - { - "model": "feed.shape", - "pk": 438, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94195499816524, - "shape_pt_lon": -84.0447142198439, - "shape_pt_sequence": 115, - "shape_dist_traveled": 2.817 - } - }, - { - "model": "feed.shape", - "pk": 439, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94233948335795, - "shape_pt_lon": -84.0447371192727, - "shape_pt_sequence": 116, - "shape_dist_traveled": 2.86 - } - }, - { - "model": "feed.shape", - "pk": 440, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94270561942093, - "shape_pt_lon": -84.0447624203313, - "shape_pt_sequence": 117, - "shape_dist_traveled": 2.901 - } - }, - { - "model": "feed.shape", - "pk": 441, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94282741926446, - "shape_pt_lon": -84.0447662997461, - "shape_pt_sequence": 118, - "shape_dist_traveled": 2.914 - } - }, - { - "model": "feed.shape", - "pk": 442, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94300876520552, - "shape_pt_lon": -84.0447342405736, - "shape_pt_sequence": 119, - "shape_dist_traveled": 2.934 - } - }, - { - "model": "feed.shape", - "pk": 443, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94322619282253, - "shape_pt_lon": -84.044661630678, - "shape_pt_sequence": 120, - "shape_dist_traveled": 2.96 - } - }, - { - "model": "feed.shape", - "pk": 444, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94336188947768, - "shape_pt_lon": -84.0446070756693, - "shape_pt_sequence": 121, - "shape_dist_traveled": 2.976 - } - }, - { - "model": "feed.shape", - "pk": 445, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94366938860733, - "shape_pt_lon": -84.0444664621215, - "shape_pt_sequence": 122, - "shape_dist_traveled": 3.013 - } - }, - { - "model": "feed.shape", - "pk": 446, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94379763572232, - "shape_pt_lon": -84.0447499441632, - "shape_pt_sequence": 123, - "shape_dist_traveled": 3.047 - } - }, - { - "model": "feed.shape", - "pk": 447, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94387703073651, - "shape_pt_lon": -84.0448781808515, - "shape_pt_sequence": 124, - "shape_dist_traveled": 3.064 - } - }, - { - "model": "feed.shape", - "pk": 448, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94396544788927, - "shape_pt_lon": -84.0449496270056, - "shape_pt_sequence": 125, - "shape_dist_traveled": 3.077 - } - }, - { - "model": "feed.shape", - "pk": 449, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94454435151914, - "shape_pt_lon": -84.0450074182673, - "shape_pt_sequence": 126, - "shape_dist_traveled": 3.141 - } - }, - { - "model": "feed.shape", - "pk": 450, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94494922686726, - "shape_pt_lon": -84.0450098494603, - "shape_pt_sequence": 127, - "shape_dist_traveled": 3.186 - } - }, - { - "model": "feed.shape", - "pk": 451, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94503488859595, - "shape_pt_lon": -84.0450726102459, - "shape_pt_sequence": 128, - "shape_dist_traveled": 3.197 - } - }, - { - "model": "feed.shape", - "pk": 452, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94506635931216, - "shape_pt_lon": -84.0453994971357, - "shape_pt_sequence": 129, - "shape_dist_traveled": 3.233 - } - }, - { - "model": "feed.shape", - "pk": 453, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94509373573383, - "shape_pt_lon": -84.0454999143925, - "shape_pt_sequence": 130, - "shape_dist_traveled": 3.245 - } - }, - { - "model": "feed.shape", - "pk": 454, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94516587977827, - "shape_pt_lon": -84.0455384857143, - "shape_pt_sequence": 131, - "shape_dist_traveled": 3.254 - } - }, - { - "model": "feed.shape", - "pk": 455, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94569334489241, - "shape_pt_lon": -84.045501640108, - "shape_pt_sequence": 132, - "shape_dist_traveled": 3.312 - } - }, - { - "model": "feed.shape", - "pk": 456, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94576818120904, - "shape_pt_lon": -84.0454572011088, - "shape_pt_sequence": 133, - "shape_dist_traveled": 3.322 - } - }, - { - "model": "feed.shape", - "pk": 457, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94581918999885, - "shape_pt_lon": -84.0453571624431, - "shape_pt_sequence": 134, - "shape_dist_traveled": 3.334 - } - }, - { - "model": "feed.shape", - "pk": 458, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94586821736523, - "shape_pt_lon": -84.0452494124261, - "shape_pt_sequence": 135, - "shape_dist_traveled": 3.347 - } - }, - { - "model": "feed.shape", - "pk": 459, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94594549545337, - "shape_pt_lon": -84.0451749917014, - "shape_pt_sequence": 136, - "shape_dist_traveled": 3.359 - } - }, - { - "model": "feed.shape", - "pk": 460, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94628917517751, - "shape_pt_lon": -84.045149887399, - "shape_pt_sequence": 137, - "shape_dist_traveled": 3.397 - } - }, - { - "model": "feed.shape", - "pk": 461, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.946387887887, - "shape_pt_lon": -84.0451617577946, - "shape_pt_sequence": 138, - "shape_dist_traveled": 3.408 - } - }, - { - "model": "feed.shape", - "pk": 462, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94644528982524, - "shape_pt_lon": -84.0451994142665, - "shape_pt_sequence": 139, - "shape_dist_traveled": 3.416 - } - }, - { - "model": "feed.shape", - "pk": 463, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94649012442296, - "shape_pt_lon": -84.0452511227568, - "shape_pt_sequence": 140, - "shape_dist_traveled": 3.423 - } - }, - { - "model": "feed.shape", - "pk": 464, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93551129613598, - "shape_pt_lon": -84.0522203008732, - "shape_pt_sequence": 0, - "shape_dist_traveled": 0.0 - } - }, - { - "model": "feed.shape", - "pk": 465, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.9355310767404, - "shape_pt_lon": -84.0522927059177, - "shape_pt_sequence": 1, - "shape_dist_traveled": 0.008 - } - }, - { - "model": "feed.shape", - "pk": 466, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93554722789095, - "shape_pt_lon": -84.0523347118824, - "shape_pt_sequence": 2, - "shape_dist_traveled": 0.013 - } - }, - { - "model": "feed.shape", - "pk": 467, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93559998927965, - "shape_pt_lon": -84.0523891977038, - "shape_pt_sequence": 3, - "shape_dist_traveled": 0.022 - } - }, - { - "model": "feed.shape", - "pk": 468, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93565665681396, - "shape_pt_lon": -84.0524266115309, - "shape_pt_sequence": 4, - "shape_dist_traveled": 0.029 - } - }, - { - "model": "feed.shape", - "pk": 469, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93572400544303, - "shape_pt_lon": -84.0524387877407, - "shape_pt_sequence": 5, - "shape_dist_traveled": 0.037 - } - }, - { - "model": "feed.shape", - "pk": 470, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93583791088976, - "shape_pt_lon": -84.0524163085106, - "shape_pt_sequence": 6, - "shape_dist_traveled": 0.049 - } - }, - { - "model": "feed.shape", - "pk": 471, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93589348533485, - "shape_pt_lon": -84.0524004247557, - "shape_pt_sequence": 7, - "shape_dist_traveled": 0.056 - } - }, - { - "model": "feed.shape", - "pk": 472, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93594773879152, - "shape_pt_lon": -84.0523801824105, - "shape_pt_sequence": 8, - "shape_dist_traveled": 0.062 - } - }, - { - "model": "feed.shape", - "pk": 473, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93618639604332, - "shape_pt_lon": -84.052302832233, - "shape_pt_sequence": 9, - "shape_dist_traveled": 0.09 - } - }, - { - "model": "feed.shape", - "pk": 474, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93639684624757, - "shape_pt_lon": -84.0522406782275, - "shape_pt_sequence": 10, - "shape_dist_traveled": 0.114 - } - }, - { - "model": "feed.shape", - "pk": 475, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93653551980098, - "shape_pt_lon": -84.0522361299255, - "shape_pt_sequence": 11, - "shape_dist_traveled": 0.13 - } - }, - { - "model": "feed.shape", - "pk": 476, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93673682209909, - "shape_pt_lon": -84.0523076585187, - "shape_pt_sequence": 12, - "shape_dist_traveled": 0.153 - } - }, - { - "model": "feed.shape", - "pk": 477, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93708559662569, - "shape_pt_lon": -84.05243186663, - "shape_pt_sequence": 13, - "shape_dist_traveled": 0.194 - } - }, - { - "model": "feed.shape", - "pk": 478, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93733577696727, - "shape_pt_lon": -84.0525288520072, - "shape_pt_sequence": 14, - "shape_dist_traveled": 0.224 - } - }, - { - "model": "feed.shape", - "pk": 479, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93757969853555, - "shape_pt_lon": -84.0526438746271, - "shape_pt_sequence": 15, - "shape_dist_traveled": 0.253 - } - }, - { - "model": "feed.shape", - "pk": 480, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.9377485826659, - "shape_pt_lon": -84.0527043524954, - "shape_pt_sequence": 16, - "shape_dist_traveled": 0.273 - } - }, - { - "model": "feed.shape", - "pk": 481, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93779188190045, - "shape_pt_lon": -84.0527107981436, - "shape_pt_sequence": 17, - "shape_dist_traveled": 0.278 - } - }, - { - "model": "feed.shape", - "pk": 482, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93787132360124, - "shape_pt_lon": -84.0527199326082, - "shape_pt_sequence": 18, - "shape_dist_traveled": 0.287 - } - }, - { - "model": "feed.shape", - "pk": 483, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93795076530203, - "shape_pt_lon": -84.0527243732062, - "shape_pt_sequence": 19, - "shape_dist_traveled": 0.296 - } - }, - { - "model": "feed.shape", - "pk": 484, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93802242474458, - "shape_pt_lon": -84.0527168419396, - "shape_pt_sequence": 20, - "shape_dist_traveled": 0.304 - } - }, - { - "model": "feed.shape", - "pk": 485, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93809408418712, - "shape_pt_lon": -84.0527036109785, - "shape_pt_sequence": 21, - "shape_dist_traveled": 0.312 - } - }, - { - "model": "feed.shape", - "pk": 486, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93815622170643, - "shape_pt_lon": -84.0526341385986, - "shape_pt_sequence": 22, - "shape_dist_traveled": 0.322 - } - }, - { - "model": "feed.shape", - "pk": 487, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93824866125399, - "shape_pt_lon": -84.0524441849862, - "shape_pt_sequence": 23, - "shape_dist_traveled": 0.345 - } - }, - { - "model": "feed.shape", - "pk": 488, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93840212874288, - "shape_pt_lon": -84.0521210493447, - "shape_pt_sequence": 24, - "shape_dist_traveled": 0.385 - } - }, - { - "model": "feed.shape", - "pk": 489, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93859022704029, - "shape_pt_lon": -84.0518711468269, - "shape_pt_sequence": 25, - "shape_dist_traveled": 0.419 - } - }, - { - "model": "feed.shape", - "pk": 490, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.9387164365478, - "shape_pt_lon": -84.0517146035903, - "shape_pt_sequence": 26, - "shape_dist_traveled": 0.441 - } - }, - { - "model": "feed.shape", - "pk": 491, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93883769238516, - "shape_pt_lon": -84.0515516901066, - "shape_pt_sequence": 27, - "shape_dist_traveled": 0.463 - } - }, - { - "model": "feed.shape", - "pk": 492, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93890538473733, - "shape_pt_lon": -84.0514467461262, - "shape_pt_sequence": 28, - "shape_dist_traveled": 0.477 - } - }, - { - "model": "feed.shape", - "pk": 493, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93897774723731, - "shape_pt_lon": -84.051298218969, - "shape_pt_sequence": 29, - "shape_dist_traveled": 0.495 - } - }, - { - "model": "feed.shape", - "pk": 494, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93901864778466, - "shape_pt_lon": -84.0511281313016, - "shape_pt_sequence": 30, - "shape_dist_traveled": 0.514 - } - }, - { - "model": "feed.shape", - "pk": 495, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93905404247567, - "shape_pt_lon": -84.0509181170952, - "shape_pt_sequence": 31, - "shape_dist_traveled": 0.538 - } - }, - { - "model": "feed.shape", - "pk": 496, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93908393146568, - "shape_pt_lon": -84.0503591447661, - "shape_pt_sequence": 32, - "shape_dist_traveled": 0.599 - } - }, - { - "model": "feed.shape", - "pk": 497, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93910272348104, - "shape_pt_lon": -84.0501183551865, - "shape_pt_sequence": 33, - "shape_dist_traveled": 0.626 - } - }, - { - "model": "feed.shape", - "pk": 498, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93910706388403, - "shape_pt_lon": -84.0499402779348, - "shape_pt_sequence": 34, - "shape_dist_traveled": 0.645 - } - }, - { - "model": "feed.shape", - "pk": 499, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93910711111161, - "shape_pt_lon": -84.0497648828928, - "shape_pt_sequence": 35, - "shape_dist_traveled": 0.664 - } - }, - { - "model": "feed.shape", - "pk": 500, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93906715286185, - "shape_pt_lon": -84.0496439745831, - "shape_pt_sequence": 36, - "shape_dist_traveled": 0.678 - } - }, - { - "model": "feed.shape", - "pk": 501, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93897699483947, - "shape_pt_lon": -84.0494999920866, - "shape_pt_sequence": 37, - "shape_dist_traveled": 0.697 - } - }, - { - "model": "feed.shape", - "pk": 502, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93879865248422, - "shape_pt_lon": -84.0492839130465, - "shape_pt_sequence": 38, - "shape_dist_traveled": 0.728 - } - }, - { - "model": "feed.shape", - "pk": 503, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93852631535243, - "shape_pt_lon": -84.0489259634067, - "shape_pt_sequence": 39, - "shape_dist_traveled": 0.777 - } - }, - { - "model": "feed.shape", - "pk": 504, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.9383125595628, - "shape_pt_lon": -84.0486415140485, - "shape_pt_sequence": 40, - "shape_dist_traveled": 0.817 - } - }, - { - "model": "feed.shape", - "pk": 505, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93816149920894, - "shape_pt_lon": -84.0484645585026, - "shape_pt_sequence": 41, - "shape_dist_traveled": 0.842 - } - }, - { - "model": "feed.shape", - "pk": 506, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93801276292967, - "shape_pt_lon": -84.0483041187788, - "shape_pt_sequence": 42, - "shape_dist_traveled": 0.866 - } - }, - { - "model": "feed.shape", - "pk": 507, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93767314890347, - "shape_pt_lon": -84.0479456361923, - "shape_pt_sequence": 43, - "shape_dist_traveled": 0.921 - } - }, - { - "model": "feed.shape", - "pk": 508, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93762896738312, - "shape_pt_lon": -84.0479035036496, - "shape_pt_sequence": 44, - "shape_dist_traveled": 0.927 - } - }, - { - "model": "feed.shape", - "pk": 509, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.9375818136517, - "shape_pt_lon": -84.0478664002497, - "shape_pt_sequence": 45, - "shape_dist_traveled": 0.934 - } - }, - { - "model": "feed.shape", - "pk": 510, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.9375407094932, - "shape_pt_lon": -84.0478370279249, - "shape_pt_sequence": 46, - "shape_dist_traveled": 0.94 - } - }, - { - "model": "feed.shape", - "pk": 511, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93749795410686, - "shape_pt_lon": -84.0478110083611, - "shape_pt_sequence": 47, - "shape_dist_traveled": 0.945 - } - }, - { - "model": "feed.shape", - "pk": 512, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93745496587906, - "shape_pt_lon": -84.0477901145765, - "shape_pt_sequence": 48, - "shape_dist_traveled": 0.95 - } - }, - { - "model": "feed.shape", - "pk": 513, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93736508273494, - "shape_pt_lon": -84.0477598330601, - "shape_pt_sequence": 49, - "shape_dist_traveled": 0.961 - } - }, - { - "model": "feed.shape", - "pk": 514, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93726069019733, - "shape_pt_lon": -84.047759267964, - "shape_pt_sequence": 50, - "shape_dist_traveled": 0.972 - } - }, - { - "model": "feed.shape", - "pk": 515, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93707479279145, - "shape_pt_lon": -84.047793713066, - "shape_pt_sequence": 51, - "shape_dist_traveled": 0.993 - } - }, - { - "model": "feed.shape", - "pk": 516, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93681544721791, - "shape_pt_lon": -84.0478715216077, - "shape_pt_sequence": 52, - "shape_dist_traveled": 1.023 - } - }, - { - "model": "feed.shape", - "pk": 517, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93657305173134, - "shape_pt_lon": -84.0479476285628, - "shape_pt_sequence": 53, - "shape_dist_traveled": 1.051 - } - }, - { - "model": "feed.shape", - "pk": 518, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93622234344519, - "shape_pt_lon": -84.0480642553351, - "shape_pt_sequence": 54, - "shape_dist_traveled": 1.092 - } - }, - { - "model": "feed.shape", - "pk": 519, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93602464016541, - "shape_pt_lon": -84.0481251956082, - "shape_pt_sequence": 55, - "shape_dist_traveled": 1.115 - } - }, - { - "model": "feed.shape", - "pk": 520, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93585590049247, - "shape_pt_lon": -84.0481829479595, - "shape_pt_sequence": 56, - "shape_dist_traveled": 1.135 - } - }, - { - "model": "feed.shape", - "pk": 521, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.9357089398831, - "shape_pt_lon": -84.0482522936584, - "shape_pt_sequence": 57, - "shape_dist_traveled": 1.153 - } - }, - { - "model": "feed.shape", - "pk": 522, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93563189742607, - "shape_pt_lon": -84.0482869664637, - "shape_pt_sequence": 58, - "shape_dist_traveled": 1.162 - } - }, - { - "model": "feed.shape", - "pk": 523, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93556048694849, - "shape_pt_lon": -84.0483531600847, - "shape_pt_sequence": 59, - "shape_dist_traveled": 1.173 - } - }, - { - "model": "feed.shape", - "pk": 524, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93549839086817, - "shape_pt_lon": -84.048435114092, - "shape_pt_sequence": 60, - "shape_dist_traveled": 1.184 - } - }, - { - "model": "feed.shape", - "pk": 525, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93546527295384, - "shape_pt_lon": -84.0485569944104, - "shape_pt_sequence": 61, - "shape_dist_traveled": 1.198 - } - }, - { - "model": "feed.shape", - "pk": 526, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.9354549236054, - "shape_pt_lon": -84.0486547088036, - "shape_pt_sequence": 62, - "shape_dist_traveled": 1.209 - } - }, - { - "model": "feed.shape", - "pk": 527, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93528001900853, - "shape_pt_lon": -84.048634745016, - "shape_pt_sequence": 63, - "shape_dist_traveled": 1.228 - } - }, - { - "model": "feed.shape", - "pk": 528, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93529761291067, - "shape_pt_lon": -84.0483794267626, - "shape_pt_sequence": 64, - "shape_dist_traveled": 1.256 - } - }, - { - "model": "feed.shape", - "pk": 529, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.9352527346308, - "shape_pt_lon": -84.0481286733116, - "shape_pt_sequence": 65, - "shape_dist_traveled": 1.284 - } - }, - { - "model": "feed.shape", - "pk": 530, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93512765815873, - "shape_pt_lon": -84.0477461762194, - "shape_pt_sequence": 66, - "shape_dist_traveled": 1.328 - } - }, - { - "model": "feed.shape", - "pk": 531, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93492703280895, - "shape_pt_lon": -84.0471055797031, - "shape_pt_sequence": 67, - "shape_dist_traveled": 1.402 - } - }, - { - "model": "feed.shape", - "pk": 532, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93478949058113, - "shape_pt_lon": -84.046354626689, - "shape_pt_sequence": 68, - "shape_dist_traveled": 1.486 - } - }, - { - "model": "feed.shape", - "pk": 533, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93469070939338, - "shape_pt_lon": -84.0458746565008, - "shape_pt_sequence": 69, - "shape_dist_traveled": 1.539 - } - }, - { - "model": "feed.shape", - "pk": 534, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93462060674132, - "shape_pt_lon": -84.0456143293, - "shape_pt_sequence": 70, - "shape_dist_traveled": 1.569 - } - }, - { - "model": "feed.shape", - "pk": 535, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93489289845325, - "shape_pt_lon": -84.0456070252698, - "shape_pt_sequence": 71, - "shape_dist_traveled": 1.599 - } - }, - { - "model": "feed.shape", - "pk": 536, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93495950947043, - "shape_pt_lon": -84.045606154414, - "shape_pt_sequence": 72, - "shape_dist_traveled": 1.606 - } - }, - { - "model": "feed.shape", - "pk": 537, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93502573261312, - "shape_pt_lon": -84.0455877894747, - "shape_pt_sequence": 73, - "shape_dist_traveled": 1.614 - } - }, - { - "model": "feed.shape", - "pk": 538, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93533984703067, - "shape_pt_lon": -84.0455793808645, - "shape_pt_sequence": 74, - "shape_dist_traveled": 1.649 - } - }, - { - "model": "feed.shape", - "pk": 539, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93553106245252, - "shape_pt_lon": -84.0455366983597, - "shape_pt_sequence": 75, - "shape_dist_traveled": 1.67 - } - }, - { - "model": "feed.shape", - "pk": 540, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93558489672501, - "shape_pt_lon": -84.0455256779408, - "shape_pt_sequence": 76, - "shape_dist_traveled": 1.677 - } - }, - { - "model": "feed.shape", - "pk": 541, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93566584972937, - "shape_pt_lon": -84.0454519050346, - "shape_pt_sequence": 77, - "shape_dist_traveled": 1.689 - } - }, - { - "model": "feed.shape", - "pk": 542, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93603020143902, - "shape_pt_lon": -84.0453870153627, - "shape_pt_sequence": 78, - "shape_dist_traveled": 1.73 - } - }, - { - "model": "feed.shape", - "pk": 543, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93619941008339, - "shape_pt_lon": -84.0453504149565, - "shape_pt_sequence": 79, - "shape_dist_traveled": 1.749 - } - }, - { - "model": "feed.shape", - "pk": 544, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93630011253566, - "shape_pt_lon": -84.0453617663184, - "shape_pt_sequence": 80, - "shape_dist_traveled": 1.76 - } - }, - { - "model": "feed.shape", - "pk": 545, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93651948121636, - "shape_pt_lon": -84.0454755016038, - "shape_pt_sequence": 81, - "shape_dist_traveled": 1.787 - } - }, - { - "model": "feed.shape", - "pk": 546, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93668368683727, - "shape_pt_lon": -84.0455653411938, - "shape_pt_sequence": 82, - "shape_dist_traveled": 1.808 - } - }, - { - "model": "feed.shape", - "pk": 547, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93677258981834, - "shape_pt_lon": -84.045589182648, - "shape_pt_sequence": 83, - "shape_dist_traveled": 1.818 - } - }, - { - "model": "feed.shape", - "pk": 548, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93685310570445, - "shape_pt_lon": -84.0455874796866, - "shape_pt_sequence": 84, - "shape_dist_traveled": 1.827 - } - }, - { - "model": "feed.shape", - "pk": 549, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93694508327091, - "shape_pt_lon": -84.0455437249918, - "shape_pt_sequence": 85, - "shape_dist_traveled": 1.838 - } - }, - { - "model": "feed.shape", - "pk": 550, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93708383542657, - "shape_pt_lon": -84.0454400845081, - "shape_pt_sequence": 86, - "shape_dist_traveled": 1.857 - } - }, - { - "model": "feed.shape", - "pk": 551, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93721635101928, - "shape_pt_lon": -84.045309807991, - "shape_pt_sequence": 87, - "shape_dist_traveled": 1.878 - } - }, - { - "model": "feed.shape", - "pk": 552, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93724819645461, - "shape_pt_lon": -84.0452761874456, - "shape_pt_sequence": 88, - "shape_dist_traveled": 1.883 - } - }, - { - "model": "feed.shape", - "pk": 553, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93734716375109, - "shape_pt_lon": -84.0451229209554, - "shape_pt_sequence": 89, - "shape_dist_traveled": 1.903 - } - }, - { - "model": "feed.shape", - "pk": 554, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93752119585777, - "shape_pt_lon": -84.0448187291416, - "shape_pt_sequence": 90, - "shape_dist_traveled": 1.941 - } - }, - { - "model": "feed.shape", - "pk": 555, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93767426097248, - "shape_pt_lon": -84.0445416760749, - "shape_pt_sequence": 91, - "shape_dist_traveled": 1.976 - } - }, - { - "model": "feed.shape", - "pk": 556, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93785833808635, - "shape_pt_lon": -84.0442186256065, - "shape_pt_sequence": 92, - "shape_dist_traveled": 2.017 - } - }, - { - "model": "feed.shape", - "pk": 557, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93810435753431, - "shape_pt_lon": -84.0437983732383, - "shape_pt_sequence": 93, - "shape_dist_traveled": 2.07 - } - }, - { - "model": "feed.shape", - "pk": 558, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93796632120651, - "shape_pt_lon": -84.0436125738981, - "shape_pt_sequence": 94, - "shape_dist_traveled": 2.096 - } - }, - { - "model": "feed.shape", - "pk": 559, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93791432144543, - "shape_pt_lon": -84.0434414999464, - "shape_pt_sequence": 95, - "shape_dist_traveled": 2.116 - } - }, - { - "model": "feed.shape", - "pk": 560, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93788832161072, - "shape_pt_lon": -84.0432184120559, - "shape_pt_sequence": 96, - "shape_dist_traveled": 2.14 - } - }, - { - "model": "feed.shape", - "pk": 561, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93792789506808, - "shape_pt_lon": -84.042939145496, - "shape_pt_sequence": 97, - "shape_dist_traveled": 2.171 - } - }, - { - "model": "feed.shape", - "pk": 562, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93799597108977, - "shape_pt_lon": -84.0425252959219, - "shape_pt_sequence": 98, - "shape_dist_traveled": 2.217 - } - }, - { - "model": "feed.shape", - "pk": 563, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93800488549925, - "shape_pt_lon": -84.0424724302894, - "shape_pt_sequence": 99, - "shape_dist_traveled": 2.223 - } - }, - { - "model": "feed.shape", - "pk": 564, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.9381395635656, - "shape_pt_lon": -84.0421750587842, - "shape_pt_sequence": 100, - "shape_dist_traveled": 2.259 - } - }, - { - "model": "feed.shape", - "pk": 565, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93816556338036, - "shape_pt_lon": -84.0419988023209, - "shape_pt_sequence": 101, - "shape_dist_traveled": 2.278 - } - }, - { - "model": "feed.shape", - "pk": 566, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93815877702913, - "shape_pt_lon": -84.0418468568672, - "shape_pt_sequence": 102, - "shape_dist_traveled": 2.295 - } - }, - { - "model": "feed.shape", - "pk": 567, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93812774499086, - "shape_pt_lon": -84.0417208377531, - "shape_pt_sequence": 103, - "shape_dist_traveled": 2.309 - } - }, - { - "model": "feed.shape", - "pk": 568, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93810465445374, - "shape_pt_lon": -84.0416827286396, - "shape_pt_sequence": 104, - "shape_dist_traveled": 2.314 - } - }, - { - "model": "feed.shape", - "pk": 569, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93807826146448, - "shape_pt_lon": -84.0416493133915, - "shape_pt_sequence": 105, - "shape_dist_traveled": 2.319 - } - }, - { - "model": "feed.shape", - "pk": 570, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93804738144964, - "shape_pt_lon": -84.0416349312544, - "shape_pt_sequence": 106, - "shape_dist_traveled": 2.323 - } - }, - { - "model": "feed.shape", - "pk": 571, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93801451996184, - "shape_pt_lon": -84.0416322837814, - "shape_pt_sequence": 107, - "shape_dist_traveled": 2.326 - } - }, - { - "model": "feed.shape", - "pk": 572, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93792436774485, - "shape_pt_lon": -84.0416346601389, - "shape_pt_sequence": 108, - "shape_dist_traveled": 2.336 - } - }, - { - "model": "feed.shape", - "pk": 573, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93790082410227, - "shape_pt_lon": -84.041067340985, - "shape_pt_sequence": 109, - "shape_dist_traveled": 2.399 - } - }, - { - "model": "feed.shape", - "pk": 574, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93846425290711, - "shape_pt_lon": -84.0409284047187, - "shape_pt_sequence": 110, - "shape_dist_traveled": 2.463 - } - }, - { - "model": "feed.shape", - "pk": 575, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93868651413261, - "shape_pt_lon": -84.0409624274215, - "shape_pt_sequence": 111, - "shape_dist_traveled": 2.488 - } - }, - { - "model": "feed.shape", - "pk": 576, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93885247660523, - "shape_pt_lon": -84.0411341586918, - "shape_pt_sequence": 112, - "shape_dist_traveled": 2.514 - } - }, - { - "model": "feed.shape", - "pk": 577, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93915539473273, - "shape_pt_lon": -84.0416474460876, - "shape_pt_sequence": 113, - "shape_dist_traveled": 2.579 - } - }, - { - "model": "feed.shape", - "pk": 578, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93928861127028, - "shape_pt_lon": -84.0417889786806, - "shape_pt_sequence": 114, - "shape_dist_traveled": 2.601 - } - }, - { - "model": "feed.shape", - "pk": 579, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.9394354239606, - "shape_pt_lon": -84.0418813247414, - "shape_pt_sequence": 115, - "shape_dist_traveled": 2.62 - } - }, - { - "model": "feed.shape", - "pk": 580, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93950244712471, - "shape_pt_lon": -84.0419056263361, - "shape_pt_sequence": 116, - "shape_dist_traveled": 2.628 - } - }, - { - "model": "feed.shape", - "pk": 581, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93950244613303, - "shape_pt_lon": -84.042239368576, - "shape_pt_sequence": 117, - "shape_dist_traveled": 2.664 - } - }, - { - "model": "feed.shape", - "pk": 582, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93949446718606, - "shape_pt_lon": -84.0425196469705, - "shape_pt_sequence": 118, - "shape_dist_traveled": 2.695 - } - }, - { - "model": "feed.shape", - "pk": 583, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93945457168453, - "shape_pt_lon": -84.0429991991022, - "shape_pt_sequence": 119, - "shape_dist_traveled": 2.748 - } - }, - { - "model": "feed.shape", - "pk": 584, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93942712460796, - "shape_pt_lon": -84.043331873611, - "shape_pt_sequence": 120, - "shape_dist_traveled": 2.784 - } - }, - { - "model": "feed.shape", - "pk": 585, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93972789866721, - "shape_pt_lon": -84.0432605742965, - "shape_pt_sequence": 121, - "shape_dist_traveled": 2.819 - } - }, - { - "model": "feed.shape", - "pk": 586, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93979051078508, - "shape_pt_lon": -84.0432941313524, - "shape_pt_sequence": 122, - "shape_dist_traveled": 2.826 - } - }, - { - "model": "feed.shape", - "pk": 587, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93982252793726, - "shape_pt_lon": -84.0433753940134, - "shape_pt_sequence": 123, - "shape_dist_traveled": 2.836 - } - }, - { - "model": "feed.shape", - "pk": 588, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93991292983544, - "shape_pt_lon": -84.0437147893588, - "shape_pt_sequence": 124, - "shape_dist_traveled": 2.875 - } - }, - { - "model": "feed.shape", - "pk": 589, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.94002028140903, - "shape_pt_lon": -84.0441287509128, - "shape_pt_sequence": 125, - "shape_dist_traveled": 2.922 - } - }, - { - "model": "feed.shape", - "pk": 590, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.94016644833328, - "shape_pt_lon": -84.0446669802431, - "shape_pt_sequence": 126, - "shape_dist_traveled": 2.983 - } - }, - { - "model": "feed.shape", - "pk": 591, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.94027078687104, - "shape_pt_lon": -84.044823754755, - "shape_pt_sequence": 127, - "shape_dist_traveled": 3.003 - } - }, - { - "model": "feed.shape", - "pk": 592, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.94048864067421, - "shape_pt_lon": -84.0456295904777, - "shape_pt_sequence": 128, - "shape_dist_traveled": 3.095 - } - }, - { - "model": "feed.shape", - "pk": 593, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.9406416703034, - "shape_pt_lon": -84.045594280927, - "shape_pt_sequence": 129, - "shape_dist_traveled": 3.112 - } - }, - { - "model": "feed.shape", - "pk": 594, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.94079771456593, - "shape_pt_lon": -84.0450692602221, - "shape_pt_sequence": 130, - "shape_dist_traveled": 3.172 - } - }, - { - "model": "feed.shape", - "pk": 595, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.9409503711104, - "shape_pt_lon": -84.0447481499267, - "shape_pt_sequence": 131, - "shape_dist_traveled": 3.212 - } - }, - { - "model": "feed.shape", - "pk": 596, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.94105192700053, - "shape_pt_lon": -84.0446521079484, - "shape_pt_sequence": 132, - "shape_dist_traveled": 3.227 - } - }, - { - "model": "feed.shape", - "pk": 597, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.94171142158802, - "shape_pt_lon": -84.0446962954808, - "shape_pt_sequence": 133, - "shape_dist_traveled": 3.3 - } - }, - { - "model": "feed.shape", - "pk": 598, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.94281915936154, - "shape_pt_lon": -84.0447683576565, - "shape_pt_sequence": 134, - "shape_dist_traveled": 3.423 - } - }, - { - "model": "feed.shape", - "pk": 599, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.94301266464211, - "shape_pt_lon": -84.0447317924328, - "shape_pt_sequence": 135, - "shape_dist_traveled": 3.445 - } - }, - { - "model": "feed.shape", - "pk": 600, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.94326484610015, - "shape_pt_lon": -84.0446461368594, - "shape_pt_sequence": 136, - "shape_dist_traveled": 3.474 - } - }, - { - "model": "feed.shape", - "pk": 601, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.94367235170777, - "shape_pt_lon": -84.0444664659679, - "shape_pt_sequence": 137, - "shape_dist_traveled": 3.523 - } - }, - { - "model": "feed.shape", - "pk": 602, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.94380140312083, - "shape_pt_lon": -84.044752272012, - "shape_pt_sequence": 138, - "shape_dist_traveled": 3.558 - } - }, - { - "model": "feed.shape", - "pk": 603, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.9438796367465, - "shape_pt_lon": -84.0448814333755, - "shape_pt_sequence": 139, - "shape_dist_traveled": 3.574 - } - }, - { - "model": "feed.shape", - "pk": 604, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.94396952509255, - "shape_pt_lon": -84.0449503878825, - "shape_pt_sequence": 140, - "shape_dist_traveled": 3.587 - } - }, - { - "model": "feed.shape", - "pk": 605, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.94433433418409, - "shape_pt_lon": -84.044987908675, - "shape_pt_sequence": 141, - "shape_dist_traveled": 3.627 - } - }, - { - "model": "feed.shape", - "pk": 606, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.94457411376674, - "shape_pt_lon": -84.0450080280451, - "shape_pt_sequence": 142, - "shape_dist_traveled": 3.654 - } - }, - { - "model": "feed.shape", - "pk": 607, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.94495390060397, - "shape_pt_lon": -84.0450080280451, - "shape_pt_sequence": 143, - "shape_dist_traveled": 3.696 - } - }, - { - "model": "feed.shape", - "pk": 608, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.94504571713547, - "shape_pt_lon": -84.0450786471473, - "shape_pt_sequence": 144, - "shape_dist_traveled": 3.709 - } - }, - { - "model": "feed.shape", - "pk": 609, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.94507075688808, - "shape_pt_lon": -84.0453964329445, - "shape_pt_sequence": 145, - "shape_dist_traveled": 3.744 - } - }, - { - "model": "feed.shape", - "pk": 610, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.94509858007239, - "shape_pt_lon": -84.0454995368328, - "shape_pt_sequence": 146, - "shape_dist_traveled": 3.755 - } - }, - { - "model": "feed.shape", - "pk": 611, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.94517301639726, - "shape_pt_lon": -84.0455360879379, - "shape_pt_sequence": 147, - "shape_dist_traveled": 3.764 - } - }, - { - "model": "feed.shape", - "pk": 612, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.94569599438186, - "shape_pt_lon": -84.0455012141288, - "shape_pt_sequence": 148, - "shape_dist_traveled": 3.822 - } - }, - { - "model": "feed.shape", - "pk": 613, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.94576731883437, - "shape_pt_lon": -84.0454579354822, - "shape_pt_sequence": 149, - "shape_dist_traveled": 3.832 - } - }, - { - "model": "feed.shape", - "pk": 614, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.94587443785238, - "shape_pt_lon": -84.0452474905592, - "shape_pt_sequence": 150, - "shape_dist_traveled": 3.858 - } - }, - { - "model": "feed.shape", - "pk": 615, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.94594677794762, - "shape_pt_lon": -84.0451754590753, - "shape_pt_sequence": 151, - "shape_dist_traveled": 3.869 - } - }, - { - "model": "feed.shape", - "pk": 616, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.94629204599402, - "shape_pt_lon": -84.0451469719024, - "shape_pt_sequence": 152, - "shape_dist_traveled": 3.907 - } - }, - { - "model": "feed.shape", - "pk": 617, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.9463908179176, - "shape_pt_lon": -84.0451610957222, - "shape_pt_sequence": 153, - "shape_dist_traveled": 3.918 - } - }, - { - "model": "feed.shape", - "pk": 618, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.94645063751956, - "shape_pt_lon": -84.0451992300371, - "shape_pt_sequence": 154, - "shape_dist_traveled": 3.926 - } - }, - { - "model": "feed.shape", - "pk": 619, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.94649738913102, - "shape_pt_lon": -84.0452562192863, - "shape_pt_sequence": 155, - "shape_dist_traveled": 3.934 - } - }, - { - "model": "feed.shape", - "pk": 620, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94651450274987, - "shape_pt_lon": -84.0452709224469, - "shape_pt_sequence": 0, - "shape_dist_traveled": 0.0 - } - }, - { - "model": "feed.shape", - "pk": 621, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.9465713930344, - "shape_pt_lon": -84.0453586296957, - "shape_pt_sequence": 1, - "shape_dist_traveled": 0.011 - } - }, - { - "model": "feed.shape", - "pk": 622, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94670523135418, - "shape_pt_lon": -84.0455321860811, - "shape_pt_sequence": 2, - "shape_dist_traveled": 0.036 - } - }, - { - "model": "feed.shape", - "pk": 623, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94685977487793, - "shape_pt_lon": -84.0457428830683, - "shape_pt_sequence": 3, - "shape_dist_traveled": 0.064 - } - }, - { - "model": "feed.shape", - "pk": 624, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94692114024093, - "shape_pt_lon": -84.0458252584096, - "shape_pt_sequence": 4, - "shape_dist_traveled": 0.076 - } - }, - { - "model": "feed.shape", - "pk": 625, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94699848130395, - "shape_pt_lon": -84.045874911642, - "shape_pt_sequence": 5, - "shape_dist_traveled": 0.086 - } - }, - { - "model": "feed.shape", - "pk": 626, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94709174550324, - "shape_pt_lon": -84.0458702927366, - "shape_pt_sequence": 6, - "shape_dist_traveled": 0.096 - } - }, - { - "model": "feed.shape", - "pk": 627, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94733286724273, - "shape_pt_lon": -84.0456762984049, - "shape_pt_sequence": 7, - "shape_dist_traveled": 0.13 - } - }, - { - "model": "feed.shape", - "pk": 628, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94734992775087, - "shape_pt_lon": -84.0455816108455, - "shape_pt_sequence": 8, - "shape_dist_traveled": 0.141 - } - }, - { - "model": "feed.shape", - "pk": 629, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94731694409985, - "shape_pt_lon": -84.0454811496546, - "shape_pt_sequence": 9, - "shape_dist_traveled": 0.152 - } - }, - { - "model": "feed.shape", - "pk": 630, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94706331033958, - "shape_pt_lon": -84.0451520526366, - "shape_pt_sequence": 10, - "shape_dist_traveled": 0.198 - } - }, - { - "model": "feed.shape", - "pk": 631, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94695639770921, - "shape_pt_lon": -84.044934964086, - "shape_pt_sequence": 11, - "shape_dist_traveled": 0.225 - } - }, - { - "model": "feed.shape", - "pk": 632, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94685739750313, - "shape_pt_lon": -84.0447940381815, - "shape_pt_sequence": 12, - "shape_dist_traveled": 0.244 - } - }, - { - "model": "feed.shape", - "pk": 633, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94674934743632, - "shape_pt_lon": -84.0447120526121, - "shape_pt_sequence": 13, - "shape_dist_traveled": 0.259 - } - }, - { - "model": "feed.shape", - "pk": 634, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94663902259388, - "shape_pt_lon": -84.0446901128118, - "shape_pt_sequence": 14, - "shape_dist_traveled": 0.271 - } - }, - { - "model": "feed.shape", - "pk": 635, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94658480665502, - "shape_pt_lon": -84.0447036688627, - "shape_pt_sequence": 15, - "shape_dist_traveled": 0.277 - } - }, - { - "model": "feed.shape", - "pk": 636, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94652566341521, - "shape_pt_lon": -84.0447440842844, - "shape_pt_sequence": 16, - "shape_dist_traveled": 0.285 - } - }, - { - "model": "feed.shape", - "pk": 637, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94631063663281, - "shape_pt_lon": -84.0447956225084, - "shape_pt_sequence": 17, - "shape_dist_traveled": 0.31 - } - }, - { - "model": "feed.shape", - "pk": 638, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94607861289951, - "shape_pt_lon": -84.0448175623087, - "shape_pt_sequence": 18, - "shape_dist_traveled": 0.335 - } - }, - { - "model": "feed.shape", - "pk": 639, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94606268969643, - "shape_pt_lon": -84.0448198717614, - "shape_pt_sequence": 19, - "shape_dist_traveled": 0.337 - } - }, - { - "model": "feed.shape", - "pk": 640, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94607633849742, - "shape_pt_lon": -84.0451616705072, - "shape_pt_sequence": 20, - "shape_dist_traveled": 0.375 - } - }, - { - "model": "feed.shape", - "pk": 641, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94594816328299, - "shape_pt_lon": -84.0451794721398, - "shape_pt_sequence": 21, - "shape_dist_traveled": 0.389 - } - }, - { - "model": "feed.shape", - "pk": 642, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94587650883204, - "shape_pt_lon": -84.0452499104458, - "shape_pt_sequence": 22, - "shape_dist_traveled": 0.4 - } - }, - { - "model": "feed.shape", - "pk": 643, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94577755742257, - "shape_pt_lon": -84.0454566064596, - "shape_pt_sequence": 23, - "shape_dist_traveled": 0.425 - } - }, - { - "model": "feed.shape", - "pk": 644, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94570040854178, - "shape_pt_lon": -84.0455092507792, - "shape_pt_sequence": 24, - "shape_dist_traveled": 0.435 - } - }, - { - "model": "feed.shape", - "pk": 645, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94516698035057, - "shape_pt_lon": -84.0455392738468, - "shape_pt_sequence": 25, - "shape_dist_traveled": 0.494 - } - }, - { - "model": "feed.shape", - "pk": 646, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94508917283893, - "shape_pt_lon": -84.0455023654374, - "shape_pt_sequence": 26, - "shape_dist_traveled": 0.504 - } - }, - { - "model": "feed.shape", - "pk": 647, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94505732633557, - "shape_pt_lon": -84.045382273899, - "shape_pt_sequence": 27, - "shape_dist_traveled": 0.518 - } - }, - { - "model": "feed.shape", - "pk": 648, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94502889195332, - "shape_pt_lon": -84.0450808903258, - "shape_pt_sequence": 28, - "shape_dist_traveled": 0.551 - } - }, - { - "model": "feed.shape", - "pk": 649, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94495155042415, - "shape_pt_lon": -84.0450173803773, - "shape_pt_sequence": 29, - "shape_dist_traveled": 0.562 - } - }, - { - "model": "feed.shape", - "pk": 650, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94472000465252, - "shape_pt_lon": -84.045015769873, - "shape_pt_sequence": 30, - "shape_dist_traveled": 0.587 - } - }, - { - "model": "feed.shape", - "pk": 651, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94425679788889, - "shape_pt_lon": -84.0449868892884, - "shape_pt_sequence": 31, - "shape_dist_traveled": 0.639 - } - }, - { - "model": "feed.shape", - "pk": 652, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94389594579139, - "shape_pt_lon": -84.0449568041774, - "shape_pt_sequence": 32, - "shape_dist_traveled": 0.679 - } - }, - { - "model": "feed.shape", - "pk": 653, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.9433847319748, - "shape_pt_lon": -84.0449197895004, - "shape_pt_sequence": 33, - "shape_dist_traveled": 0.736 - } - }, - { - "model": "feed.shape", - "pk": 654, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94261500079999, - "shape_pt_lon": -84.0448773383005, - "shape_pt_sequence": 34, - "shape_dist_traveled": 0.821 - } - }, - { - "model": "feed.shape", - "pk": 655, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94204155986042, - "shape_pt_lon": -84.0448390343892, - "shape_pt_sequence": 35, - "shape_dist_traveled": 0.884 - } - }, - { - "model": "feed.shape", - "pk": 656, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94137698645447, - "shape_pt_lon": -84.0448024388483, - "shape_pt_sequence": 36, - "shape_dist_traveled": 0.958 - } - }, - { - "model": "feed.shape", - "pk": 657, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94096102380372, - "shape_pt_lon": -84.0447771566035, - "shape_pt_sequence": 37, - "shape_dist_traveled": 1.004 - } - }, - { - "model": "feed.shape", - "pk": 658, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94082181962447, - "shape_pt_lon": -84.0450446175143, - "shape_pt_sequence": 38, - "shape_dist_traveled": 1.037 - } - }, - { - "model": "feed.shape", - "pk": 659, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94065523781238, - "shape_pt_lon": -84.0456053336701, - "shape_pt_sequence": 39, - "shape_dist_traveled": 1.101 - } - }, - { - "model": "feed.shape", - "pk": 660, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94048314593914, - "shape_pt_lon": -84.045634999557, - "shape_pt_sequence": 40, - "shape_dist_traveled": 1.121 - } - }, - { - "model": "feed.shape", - "pk": 661, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.9403780406827, - "shape_pt_lon": -84.0452283043053, - "shape_pt_sequence": 41, - "shape_dist_traveled": 1.167 - } - }, - { - "model": "feed.shape", - "pk": 662, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.9402703855621, - "shape_pt_lon": -84.04482278961, - "shape_pt_sequence": 42, - "shape_dist_traveled": 1.213 - } - }, - { - "model": "feed.shape", - "pk": 663, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94016328794055, - "shape_pt_lon": -84.0446641785108, - "shape_pt_sequence": 43, - "shape_dist_traveled": 1.234 - } - }, - { - "model": "feed.shape", - "pk": 664, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94010181117775, - "shape_pt_lon": -84.0444165990228, - "shape_pt_sequence": 44, - "shape_dist_traveled": 1.262 - } - }, - { - "model": "feed.shape", - "pk": 665, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93971666992378, - "shape_pt_lon": -84.0445263287881, - "shape_pt_sequence": 45, - "shape_dist_traveled": 1.306 - } - }, - { - "model": "feed.shape", - "pk": 666, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93932936015097, - "shape_pt_lon": -84.0446221116145, - "shape_pt_sequence": 46, - "shape_dist_traveled": 1.35 - } - }, - { - "model": "feed.shape", - "pk": 667, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93920408915902, - "shape_pt_lon": -84.0446545394456, - "shape_pt_sequence": 47, - "shape_dist_traveled": 1.364 - } - }, - { - "model": "feed.shape", - "pk": 668, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.9391568243881, - "shape_pt_lon": -84.0446456512568, - "shape_pt_sequence": 48, - "shape_dist_traveled": 1.37 - } - }, - { - "model": "feed.shape", - "pk": 669, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93912509354336, - "shape_pt_lon": -84.0446159514984, - "shape_pt_sequence": 49, - "shape_dist_traveled": 1.375 - } - }, - { - "model": "feed.shape", - "pk": 670, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93911021843789, - "shape_pt_lon": -84.0445637722231, - "shape_pt_sequence": 50, - "shape_dist_traveled": 1.381 - } - }, - { - "model": "feed.shape", - "pk": 671, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93919615665697, - "shape_pt_lon": -84.0443354246074, - "shape_pt_sequence": 51, - "shape_dist_traveled": 1.407 - } - }, - { - "model": "feed.shape", - "pk": 672, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.939024, - "shape_pt_lon": -84.043697, - "shape_pt_sequence": 52, - "shape_dist_traveled": 1.459 - } - }, - { - "model": "feed.shape", - "pk": 673, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.9389589108528, - "shape_pt_lon": -84.0434647440871, - "shape_pt_sequence": 53, - "shape_dist_traveled": 1.506 - } - }, - { - "model": "feed.shape", - "pk": 674, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93927926961302, - "shape_pt_lon": -84.0433689657322, - "shape_pt_sequence": 54, - "shape_dist_traveled": 1.543 - } - }, - { - "model": "feed.shape", - "pk": 675, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.9394214266361, - "shape_pt_lon": -84.0433251613281, - "shape_pt_sequence": 55, - "shape_dist_traveled": 1.56 - } - }, - { - "model": "feed.shape", - "pk": 676, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.939438, - "shape_pt_lon": -84.043078, - "shape_pt_sequence": 56, - "shape_dist_traveled": 1.597 - } - }, - { - "model": "feed.shape", - "pk": 677, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93949676004582, - "shape_pt_lon": -84.0424704121516, - "shape_pt_sequence": 57, - "shape_dist_traveled": 1.654 - } - }, - { - "model": "feed.shape", - "pk": 678, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93950197815545, - "shape_pt_lon": -84.0423387592283, - "shape_pt_sequence": 58, - "shape_dist_traveled": 1.668 - } - }, - { - "model": "feed.shape", - "pk": 679, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93950471943605, - "shape_pt_lon": -84.042195874555, - "shape_pt_sequence": 59, - "shape_dist_traveled": 1.684 - } - }, - { - "model": "feed.shape", - "pk": 680, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93950937287681, - "shape_pt_lon": -84.0420595652431, - "shape_pt_sequence": 60, - "shape_dist_traveled": 1.699 - } - }, - { - "model": "feed.shape", - "pk": 681, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93950560510053, - "shape_pt_lon": -84.0419237588459, - "shape_pt_sequence": 61, - "shape_dist_traveled": 1.714 - } - }, - { - "model": "feed.shape", - "pk": 682, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93932694656827, - "shape_pt_lon": -84.0418526043861, - "shape_pt_sequence": 62, - "shape_dist_traveled": 1.735 - } - }, - { - "model": "feed.shape", - "pk": 683, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93916441674404, - "shape_pt_lon": -84.0416871226965, - "shape_pt_sequence": 63, - "shape_dist_traveled": 1.761 - } - }, - { - "model": "feed.shape", - "pk": 684, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93904364750639, - "shape_pt_lon": -84.0415030389796, - "shape_pt_sequence": 64, - "shape_dist_traveled": 1.785 - } - }, - { - "model": "feed.shape", - "pk": 685, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93882652989536, - "shape_pt_lon": -84.0411360631089, - "shape_pt_sequence": 65, - "shape_dist_traveled": 1.832 - } - }, - { - "model": "feed.shape", - "pk": 686, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93877761093714, - "shape_pt_lon": -84.0410711382821, - "shape_pt_sequence": 66, - "shape_dist_traveled": 1.841 - } - }, - { - "model": "feed.shape", - "pk": 687, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93872439879922, - "shape_pt_lon": -84.0410192892248, - "shape_pt_sequence": 67, - "shape_dist_traveled": 1.849 - } - }, - { - "model": "feed.shape", - "pk": 688, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93860739420377, - "shape_pt_lon": -84.0409548622543, - "shape_pt_sequence": 68, - "shape_dist_traveled": 1.863 - } - }, - { - "model": "feed.shape", - "pk": 689, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93847712489684, - "shape_pt_lon": -84.0409464827492, - "shape_pt_sequence": 69, - "shape_dist_traveled": 1.878 - } - }, - { - "model": "feed.shape", - "pk": 690, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93831748290179, - "shape_pt_lon": -84.0409847362632, - "shape_pt_sequence": 70, - "shape_dist_traveled": 1.896 - } - }, - { - "model": "feed.shape", - "pk": 691, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93790526804534, - "shape_pt_lon": -84.0410975311932, - "shape_pt_sequence": 71, - "shape_dist_traveled": 1.943 - } - }, - { - "model": "feed.shape", - "pk": 692, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93791543483811, - "shape_pt_lon": -84.0413721007657, - "shape_pt_sequence": 72, - "shape_dist_traveled": 1.973 - } - }, - { - "model": "feed.shape", - "pk": 693, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93792971313351, - "shape_pt_lon": -84.0416234000621, - "shape_pt_sequence": 73, - "shape_dist_traveled": 2.001 - } - }, - { - "model": "feed.shape", - "pk": 694, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93801943406157, - "shape_pt_lon": -84.0416214268987, - "shape_pt_sequence": 74, - "shape_dist_traveled": 2.011 - } - }, - { - "model": "feed.shape", - "pk": 695, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93808013647371, - "shape_pt_lon": -84.0416385167757, - "shape_pt_sequence": 75, - "shape_dist_traveled": 2.018 - } - }, - { - "model": "feed.shape", - "pk": 696, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.9381333560273, - "shape_pt_lon": -84.0417143841426, - "shape_pt_sequence": 76, - "shape_dist_traveled": 2.028 - } - }, - { - "model": "feed.shape", - "pk": 697, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.9381491692212, - "shape_pt_lon": -84.0417661717713, - "shape_pt_sequence": 77, - "shape_dist_traveled": 2.034 - } - }, - { - "model": "feed.shape", - "pk": 698, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93816498245021, - "shape_pt_lon": -84.0418402279053, - "shape_pt_sequence": 78, - "shape_dist_traveled": 2.042 - } - }, - { - "model": "feed.shape", - "pk": 699, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93817110369939, - "shape_pt_lon": -84.041955196169, - "shape_pt_sequence": 79, - "shape_dist_traveled": 2.055 - } - }, - { - "model": "feed.shape", - "pk": 700, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93816447211196, - "shape_pt_lon": -84.0420620743374, - "shape_pt_sequence": 80, - "shape_dist_traveled": 2.067 - } - }, - { - "model": "feed.shape", - "pk": 701, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93814558312971, - "shape_pt_lon": -84.042172549653, - "shape_pt_sequence": 81, - "shape_dist_traveled": 2.079 - } - }, - { - "model": "feed.shape", - "pk": 702, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93806546361139, - "shape_pt_lon": -84.0423590295751, - "shape_pt_sequence": 82, - "shape_dist_traveled": 2.101 - } - }, - { - "model": "feed.shape", - "pk": 703, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93800868895506, - "shape_pt_lon": -84.0424754995415, - "shape_pt_sequence": 83, - "shape_dist_traveled": 2.116 - } - }, - { - "model": "feed.shape", - "pk": 704, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93798455282835, - "shape_pt_lon": -84.0426277550985, - "shape_pt_sequence": 84, - "shape_dist_traveled": 2.132 - } - }, - { - "model": "feed.shape", - "pk": 705, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93793303246509, - "shape_pt_lon": -84.0429680898401, - "shape_pt_sequence": 85, - "shape_dist_traveled": 2.17 - } - }, - { - "model": "feed.shape", - "pk": 706, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93789255913571, - "shape_pt_lon": -84.0431865014681, - "shape_pt_sequence": 86, - "shape_dist_traveled": 2.195 - } - }, - { - "model": "feed.shape", - "pk": 707, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93792278510311, - "shape_pt_lon": -84.0434262188335, - "shape_pt_sequence": 87, - "shape_dist_traveled": 2.221 - } - }, - { - "model": "feed.shape", - "pk": 708, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93793612530689, - "shape_pt_lon": -84.0435140997635, - "shape_pt_sequence": 88, - "shape_dist_traveled": 2.231 - } - }, - { - "model": "feed.shape", - "pk": 709, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93796843588535, - "shape_pt_lon": -84.0436045719397, - "shape_pt_sequence": 89, - "shape_dist_traveled": 2.241 - } - }, - { - "model": "feed.shape", - "pk": 710, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93811029202329, - "shape_pt_lon": -84.0437946545471, - "shape_pt_sequence": 90, - "shape_dist_traveled": 2.267 - } - }, - { - "model": "feed.shape", - "pk": 711, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93796317506452, - "shape_pt_lon": -84.044044224914, - "shape_pt_sequence": 91, - "shape_dist_traveled": 2.299 - } - }, - { - "model": "feed.shape", - "pk": 712, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93778888741941, - "shape_pt_lon": -84.0443497474269, - "shape_pt_sequence": 92, - "shape_dist_traveled": 2.338 - } - }, - { - "model": "feed.shape", - "pk": 713, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93759056212761, - "shape_pt_lon": -84.0447040111923, - "shape_pt_sequence": 93, - "shape_dist_traveled": 2.383 - } - }, - { - "model": "feed.shape", - "pk": 714, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93743889754011, - "shape_pt_lon": -84.0449773758339, - "shape_pt_sequence": 94, - "shape_dist_traveled": 2.417 - } - }, - { - "model": "feed.shape", - "pk": 715, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93734106177819, - "shape_pt_lon": -84.0451442319336, - "shape_pt_sequence": 95, - "shape_dist_traveled": 2.438 - } - }, - { - "model": "feed.shape", - "pk": 716, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93725220134541, - "shape_pt_lon": -84.0452700748287, - "shape_pt_sequence": 96, - "shape_dist_traveled": 2.455 - } - }, - { - "model": "feed.shape", - "pk": 717, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93710383236486, - "shape_pt_lon": -84.0454232410009, - "shape_pt_sequence": 97, - "shape_dist_traveled": 2.479 - } - }, - { - "model": "feed.shape", - "pk": 718, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93703302156643, - "shape_pt_lon": -84.045480287002, - "shape_pt_sequence": 98, - "shape_dist_traveled": 2.489 - } - }, - { - "model": "feed.shape", - "pk": 719, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93692669580576, - "shape_pt_lon": -84.0455559204937, - "shape_pt_sequence": 99, - "shape_dist_traveled": 2.503 - } - }, - { - "model": "feed.shape", - "pk": 720, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93685320196694, - "shape_pt_lon": -84.0455868138288, - "shape_pt_sequence": 100, - "shape_dist_traveled": 2.512 - } - }, - { - "model": "feed.shape", - "pk": 721, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93677214106483, - "shape_pt_lon": -84.045591032246, - "shape_pt_sequence": 101, - "shape_dist_traveled": 2.521 - } - }, - { - "model": "feed.shape", - "pk": 722, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93667892839703, - "shape_pt_lon": -84.0455673986725, - "shape_pt_sequence": 102, - "shape_dist_traveled": 2.531 - } - }, - { - "model": "feed.shape", - "pk": 723, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93652937757293, - "shape_pt_lon": -84.0454873867401, - "shape_pt_sequence": 103, - "shape_dist_traveled": 2.55 - } - }, - { - "model": "feed.shape", - "pk": 724, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93646683969579, - "shape_pt_lon": -84.0454491600057, - "shape_pt_sequence": 104, - "shape_dist_traveled": 2.558 - } - }, - { - "model": "feed.shape", - "pk": 725, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93640033885562, - "shape_pt_lon": -84.0454129449283, - "shape_pt_sequence": 105, - "shape_dist_traveled": 2.567 - } - }, - { - "model": "feed.shape", - "pk": 726, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93634297166293, - "shape_pt_lon": -84.0453776127618, - "shape_pt_sequence": 106, - "shape_dist_traveled": 2.574 - } - }, - { - "model": "feed.shape", - "pk": 727, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93629576054226, - "shape_pt_lon": -84.0453623778292, - "shape_pt_sequence": 107, - "shape_dist_traveled": 2.579 - } - }, - { - "model": "feed.shape", - "pk": 728, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93624363287526, - "shape_pt_lon": -84.0453512637102, - "shape_pt_sequence": 108, - "shape_dist_traveled": 2.585 - } - }, - { - "model": "feed.shape", - "pk": 729, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.9361862212533, - "shape_pt_lon": -84.0453538959122, - "shape_pt_sequence": 109, - "shape_dist_traveled": 2.592 - } - }, - { - "model": "feed.shape", - "pk": 730, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93603883510741, - "shape_pt_lon": -84.0453890269646, - "shape_pt_sequence": 110, - "shape_dist_traveled": 2.608 - } - }, - { - "model": "feed.shape", - "pk": 731, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93580414505913, - "shape_pt_lon": -84.0454308854351, - "shape_pt_sequence": 111, - "shape_dist_traveled": 2.635 - } - }, - { - "model": "feed.shape", - "pk": 732, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93565385732093, - "shape_pt_lon": -84.0454587046985, - "shape_pt_sequence": 112, - "shape_dist_traveled": 2.652 - } - }, - { - "model": "feed.shape", - "pk": 733, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93558390036268, - "shape_pt_lon": -84.0455252542674, - "shape_pt_sequence": 113, - "shape_dist_traveled": 2.662 - } - }, - { - "model": "feed.shape", - "pk": 734, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93547184500151, - "shape_pt_lon": -84.0455798539966, - "shape_pt_sequence": 114, - "shape_dist_traveled": 2.676 - } - }, - { - "model": "feed.shape", - "pk": 735, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93533906172064, - "shape_pt_lon": -84.0456377473207, - "shape_pt_sequence": 115, - "shape_dist_traveled": 2.692 - } - }, - { - "model": "feed.shape", - "pk": 736, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93501118853525, - "shape_pt_lon": -84.0456383288227, - "shape_pt_sequence": 116, - "shape_dist_traveled": 2.728 - } - }, - { - "model": "feed.shape", - "pk": 737, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93495718975151, - "shape_pt_lon": -84.0456086223286, - "shape_pt_sequence": 117, - "shape_dist_traveled": 2.735 - } - }, - { - "model": "feed.shape", - "pk": 738, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93465006354252, - "shape_pt_lon": -84.0456168978697, - "shape_pt_sequence": 118, - "shape_dist_traveled": 2.769 - } - }, - { - "model": "feed.shape", - "pk": 739, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93477095640989, - "shape_pt_lon": -84.0461340991613, - "shape_pt_sequence": 119, - "shape_dist_traveled": 2.827 - } - }, - { - "model": "feed.shape", - "pk": 740, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93490403346722, - "shape_pt_lon": -84.0468176973466, - "shape_pt_sequence": 120, - "shape_dist_traveled": 2.904 - } - }, - { - "model": "feed.shape", - "pk": 741, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93495932029753, - "shape_pt_lon": -84.0471113963055, - "shape_pt_sequence": 121, - "shape_dist_traveled": 2.937 - } - }, - { - "model": "feed.shape", - "pk": 742, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93505827498137, - "shape_pt_lon": -84.0474601236579, - "shape_pt_sequence": 122, - "shape_dist_traveled": 2.976 - } - }, - { - "model": "feed.shape", - "pk": 743, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93519897363926, - "shape_pt_lon": -84.0478899692808, - "shape_pt_sequence": 123, - "shape_dist_traveled": 3.026 - } - }, - { - "model": "feed.shape", - "pk": 744, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93527449143981, - "shape_pt_lon": -84.0481284685146, - "shape_pt_sequence": 124, - "shape_dist_traveled": 3.053 - } - }, - { - "model": "feed.shape", - "pk": 745, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93531543817006, - "shape_pt_lon": -84.0483778894022, - "shape_pt_sequence": 125, - "shape_dist_traveled": 3.081 - } - }, - { - "model": "feed.shape", - "pk": 746, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93529755715117, - "shape_pt_lon": -84.0486249437023, - "shape_pt_sequence": 126, - "shape_dist_traveled": 3.108 - } - }, - { - "model": "feed.shape", - "pk": 747, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93545425079317, - "shape_pt_lon": -84.0486430566726, - "shape_pt_sequence": 127, - "shape_dist_traveled": 3.126 - } - }, - { - "model": "feed.shape", - "pk": 748, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.9354703595261, - "shape_pt_lon": -84.0488000764969, - "shape_pt_sequence": 128, - "shape_dist_traveled": 3.143 - } - }, - { - "model": "feed.shape", - "pk": 749, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.9355323422866, - "shape_pt_lon": -84.0490437766179, - "shape_pt_sequence": 129, - "shape_dist_traveled": 3.171 - } - }, - { - "model": "feed.shape", - "pk": 750, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94651439468106, - "shape_pt_lon": -84.0452793145875, - "shape_pt_sequence": 0, - "shape_dist_traveled": 0.0 - } - }, - { - "model": "feed.shape", - "pk": 751, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94656979269062, - "shape_pt_lon": -84.0453635889366, - "shape_pt_sequence": 1, - "shape_dist_traveled": 0.011 - } - }, - { - "model": "feed.shape", - "pk": 752, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94668819013391, - "shape_pt_lon": -84.0455133598416, - "shape_pt_sequence": 2, - "shape_dist_traveled": 0.032 - } - }, - { - "model": "feed.shape", - "pk": 753, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94677813595565, - "shape_pt_lon": -84.0456333624982, - "shape_pt_sequence": 3, - "shape_dist_traveled": 0.049 - } - }, - { - "model": "feed.shape", - "pk": 754, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94692110409536, - "shape_pt_lon": -84.0458288226395, - "shape_pt_sequence": 4, - "shape_dist_traveled": 0.075 - } - }, - { - "model": "feed.shape", - "pk": 755, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94699667079666, - "shape_pt_lon": -84.0458784281265, - "shape_pt_sequence": 5, - "shape_dist_traveled": 0.085 - } - }, - { - "model": "feed.shape", - "pk": 756, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94709290535486, - "shape_pt_lon": -84.0458729567443, - "shape_pt_sequence": 6, - "shape_dist_traveled": 0.096 - } - }, - { - "model": "feed.shape", - "pk": 757, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94722193423012, - "shape_pt_lon": -84.0457747817661, - "shape_pt_sequence": 7, - "shape_dist_traveled": 0.114 - } - }, - { - "model": "feed.shape", - "pk": 758, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94733469552996, - "shape_pt_lon": -84.0456766067879, - "shape_pt_sequence": 8, - "shape_dist_traveled": 0.13 - } - }, - { - "model": "feed.shape", - "pk": 759, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94735240267321, - "shape_pt_lon": -84.0455812484176, - "shape_pt_sequence": 9, - "shape_dist_traveled": 0.141 - } - }, - { - "model": "feed.shape", - "pk": 760, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94731698838683, - "shape_pt_lon": -84.0454835451677, - "shape_pt_sequence": 10, - "shape_dist_traveled": 0.152 - } - }, - { - "model": "feed.shape", - "pk": 761, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94706401578786, - "shape_pt_lon": -84.045155482603, - "shape_pt_sequence": 11, - "shape_dist_traveled": 0.198 - } - }, - { - "model": "feed.shape", - "pk": 762, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94695753981341, - "shape_pt_lon": -84.0449388905875, - "shape_pt_sequence": 12, - "shape_dist_traveled": 0.224 - } - }, - { - "model": "feed.shape", - "pk": 763, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94685591607748, - "shape_pt_lon": -84.0447927265256, - "shape_pt_sequence": 13, - "shape_dist_traveled": 0.244 - } - }, - { - "model": "feed.shape", - "pk": 764, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94674691466528, - "shape_pt_lon": -84.0447132911805, - "shape_pt_sequence": 14, - "shape_dist_traveled": 0.259 - } - }, - { - "model": "feed.shape", - "pk": 765, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94663836196663, - "shape_pt_lon": -84.0446929689046, - "shape_pt_sequence": 15, - "shape_dist_traveled": 0.271 - } - }, - { - "model": "feed.shape", - "pk": 766, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.9465853910728, - "shape_pt_lon": -84.0447054750041, - "shape_pt_sequence": 16, - "shape_dist_traveled": 0.277 - } - }, - { - "model": "feed.shape", - "pk": 767, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94652457073993, - "shape_pt_lon": -84.0447469011822, - "shape_pt_sequence": 17, - "shape_dist_traveled": 0.285 - } - }, - { - "model": "feed.shape", - "pk": 768, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94630948675802, - "shape_pt_lon": -84.0447977068717, - "shape_pt_sequence": 18, - "shape_dist_traveled": 0.31 - } - }, - { - "model": "feed.shape", - "pk": 769, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94606507414992, - "shape_pt_lon": -84.0448235005163, - "shape_pt_sequence": 19, - "shape_dist_traveled": 0.337 - } - }, - { - "model": "feed.shape", - "pk": 770, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94607893196729, - "shape_pt_lon": -84.0451642894519, - "shape_pt_sequence": 20, - "shape_dist_traveled": 0.374 - } - }, - { - "model": "feed.shape", - "pk": 771, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94594726623906, - "shape_pt_lon": -84.0451842895768, - "shape_pt_sequence": 21, - "shape_dist_traveled": 0.389 - } - }, - { - "model": "feed.shape", - "pk": 772, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94587566747948, - "shape_pt_lon": -84.0452538542911, - "shape_pt_sequence": 22, - "shape_dist_traveled": 0.4 - } - }, - { - "model": "feed.shape", - "pk": 773, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94577795917383, - "shape_pt_lon": -84.0454601695233, - "shape_pt_sequence": 23, - "shape_dist_traveled": 0.425 - } - }, - { - "model": "feed.shape", - "pk": 774, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94569943146, - "shape_pt_lon": -84.0455125384658, - "shape_pt_sequence": 24, - "shape_dist_traveled": 0.435 - } - }, - { - "model": "feed.shape", - "pk": 775, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94545154684154, - "shape_pt_lon": -84.0455252458136, - "shape_pt_sequence": 25, - "shape_dist_traveled": 0.463 - } - }, - { - "model": "feed.shape", - "pk": 776, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94516751299271, - "shape_pt_lon": -84.0455414357082, - "shape_pt_sequence": 26, - "shape_dist_traveled": 0.494 - } - }, - { - "model": "feed.shape", - "pk": 777, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94508849180003, - "shape_pt_lon": -84.0455037479672, - "shape_pt_sequence": 27, - "shape_dist_traveled": 0.504 - } - }, - { - "model": "feed.shape", - "pk": 778, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94505511036374, - "shape_pt_lon": -84.0453835472561, - "shape_pt_sequence": 28, - "shape_dist_traveled": 0.518 - } - }, - { - "model": "feed.shape", - "pk": 779, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94502739484005, - "shape_pt_lon": -84.045084965639, - "shape_pt_sequence": 29, - "shape_dist_traveled": 0.55 - } - }, - { - "model": "feed.shape", - "pk": 780, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94499479036127, - "shape_pt_lon": -84.0450504044021, - "shape_pt_sequence": 30, - "shape_dist_traveled": 0.556 - } - }, - { - "model": "feed.shape", - "pk": 781, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94494963682908, - "shape_pt_lon": -84.0450208723069, - "shape_pt_sequence": 31, - "shape_dist_traveled": 0.562 - } - }, - { - "model": "feed.shape", - "pk": 782, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94467428591231, - "shape_pt_lon": -84.0450154011338, - "shape_pt_sequence": 32, - "shape_dist_traveled": 0.592 - } - }, - { - "model": "feed.shape", - "pk": 783, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94435778151253, - "shape_pt_lon": -84.0450041637077, - "shape_pt_sequence": 33, - "shape_dist_traveled": 0.627 - } - }, - { - "model": "feed.shape", - "pk": 784, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94347268380579, - "shape_pt_lon": -84.0449287137552, - "shape_pt_sequence": 34, - "shape_dist_traveled": 0.725 - } - }, - { - "model": "feed.shape", - "pk": 785, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94295817880508, - "shape_pt_lon": -84.0448982678798, - "shape_pt_sequence": 35, - "shape_dist_traveled": 0.782 - } - }, - { - "model": "feed.shape", - "pk": 786, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94230048632557, - "shape_pt_lon": -84.0448587644203, - "shape_pt_sequence": 36, - "shape_dist_traveled": 0.855 - } - }, - { - "model": "feed.shape", - "pk": 787, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94171228683352, - "shape_pt_lon": -84.0448222996627, - "shape_pt_sequence": 37, - "shape_dist_traveled": 0.92 - } - }, - { - "model": "feed.shape", - "pk": 788, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94096530647596, - "shape_pt_lon": -84.0447760219723, - "shape_pt_sequence": 38, - "shape_dist_traveled": 1.003 - } - }, - { - "model": "feed.shape", - "pk": 789, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94090663320268, - "shape_pt_lon": -84.0448740739734, - "shape_pt_sequence": 39, - "shape_dist_traveled": 1.016 - } - }, - { - "model": "feed.shape", - "pk": 790, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94084406020503, - "shape_pt_lon": -84.0449871934796, - "shape_pt_sequence": 40, - "shape_dist_traveled": 1.03 - } - }, - { - "model": "feed.shape", - "pk": 791, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94077751897418, - "shape_pt_lon": -84.0452171289551, - "shape_pt_sequence": 41, - "shape_dist_traveled": 1.056 - } - }, - { - "model": "feed.shape", - "pk": 792, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94072156165138, - "shape_pt_lon": -84.0453974813657, - "shape_pt_sequence": 42, - "shape_dist_traveled": 1.077 - } - }, - { - "model": "feed.shape", - "pk": 793, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94066022328121, - "shape_pt_lon": -84.0456042948351, - "shape_pt_sequence": 43, - "shape_dist_traveled": 1.101 - } - }, - { - "model": "feed.shape", - "pk": 794, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94049309734092, - "shape_pt_lon": -84.0456331735173, - "shape_pt_sequence": 44, - "shape_dist_traveled": 1.119 - } - }, - { - "model": "feed.shape", - "pk": 795, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94043960234258, - "shape_pt_lon": -84.0454384499972, - "shape_pt_sequence": 45, - "shape_dist_traveled": 1.142 - } - }, - { - "model": "feed.shape", - "pk": 796, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94037244769911, - "shape_pt_lon": -84.0451953028132, - "shape_pt_sequence": 46, - "shape_dist_traveled": 1.169 - } - }, - { - "model": "feed.shape", - "pk": 797, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94027492444419, - "shape_pt_lon": -84.0448203307503, - "shape_pt_sequence": 47, - "shape_dist_traveled": 1.212 - } - }, - { - "model": "feed.shape", - "pk": 798, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94022435173391, - "shape_pt_lon": -84.0447437519701, - "shape_pt_sequence": 48, - "shape_dist_traveled": 1.222 - } - }, - { - "model": "feed.shape", - "pk": 799, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94016681408322, - "shape_pt_lon": -84.0446621944019, - "shape_pt_sequence": 49, - "shape_dist_traveled": 1.233 - } - }, - { - "model": "feed.shape", - "pk": 800, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94010200702146, - "shape_pt_lon": -84.044417503094, - "shape_pt_sequence": 50, - "shape_dist_traveled": 1.261 - } - }, - { - "model": "feed.shape", - "pk": 801, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93987745974345, - "shape_pt_lon": -84.0444809655781, - "shape_pt_sequence": 51, - "shape_dist_traveled": 1.286 - } - }, - { - "model": "feed.shape", - "pk": 802, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93971459423953, - "shape_pt_lon": -84.0445245874922, - "shape_pt_sequence": 52, - "shape_dist_traveled": 1.305 - } - }, - { - "model": "feed.shape", - "pk": 803, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93927560616025, - "shape_pt_lon": -84.0446392902696, - "shape_pt_sequence": 53, - "shape_dist_traveled": 1.355 - } - }, - { - "model": "feed.shape", - "pk": 804, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93920545121652, - "shape_pt_lon": -84.0446560771702, - "shape_pt_sequence": 54, - "shape_dist_traveled": 1.363 - } - }, - { - "model": "feed.shape", - "pk": 805, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93916110643307, - "shape_pt_lon": -84.0446448875091, - "shape_pt_sequence": 55, - "shape_dist_traveled": 1.368 - } - }, - { - "model": "feed.shape", - "pk": 806, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93912385292449, - "shape_pt_lon": -84.0446191813258, - "shape_pt_sequence": 56, - "shape_dist_traveled": 1.373 - } - }, - { - "model": "feed.shape", - "pk": 807, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93911625815432, - "shape_pt_lon": -84.0445525134932, - "shape_pt_sequence": 57, - "shape_dist_traveled": 1.38 - } - }, - { - "model": "feed.shape", - "pk": 808, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93919941590806, - "shape_pt_lon": -84.0443337547524, - "shape_pt_sequence": 58, - "shape_dist_traveled": 1.406 - } - }, - { - "model": "feed.shape", - "pk": 809, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93911055274011, - "shape_pt_lon": -84.044006444136, - "shape_pt_sequence": 59, - "shape_dist_traveled": 1.443 - } - }, - { - "model": "feed.shape", - "pk": 810, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.9390190082839, - "shape_pt_lon": -84.0436747724812, - "shape_pt_sequence": 60, - "shape_dist_traveled": 1.481 - } - }, - { - "model": "feed.shape", - "pk": 811, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93895911426052, - "shape_pt_lon": -84.0434673567427, - "shape_pt_sequence": 61, - "shape_dist_traveled": 1.505 - } - }, - { - "model": "feed.shape", - "pk": 812, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.9392879865273, - "shape_pt_lon": -84.0433689432454, - "shape_pt_sequence": 62, - "shape_dist_traveled": 1.543 - } - }, - { - "model": "feed.shape", - "pk": 813, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93942115014918, - "shape_pt_lon": -84.0433274860744, - "shape_pt_sequence": 63, - "shape_dist_traveled": 1.558 - } - }, - { - "model": "feed.shape", - "pk": 814, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93944755512195, - "shape_pt_lon": -84.0429942406062, - "shape_pt_sequence": 64, - "shape_dist_traveled": 1.595 - } - }, - { - "model": "feed.shape", - "pk": 815, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93946810072644, - "shape_pt_lon": -84.0427365454686, - "shape_pt_sequence": 65, - "shape_dist_traveled": 1.623 - } - }, - { - "model": "feed.shape", - "pk": 816, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93949017843466, - "shape_pt_lon": -84.0424561880641, - "shape_pt_sequence": 66, - "shape_dist_traveled": 1.654 - } - }, - { - "model": "feed.shape", - "pk": 817, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93949896641922, - "shape_pt_lon": -84.0421337910545, - "shape_pt_sequence": 67, - "shape_dist_traveled": 1.689 - } - }, - { - "model": "feed.shape", - "pk": 818, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93950631475532, - "shape_pt_lon": -84.0419274245262, - "shape_pt_sequence": 68, - "shape_dist_traveled": 1.712 - } - }, - { - "model": "feed.shape", - "pk": 819, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93932958005353, - "shape_pt_lon": -84.0418524186819, - "shape_pt_sequence": 69, - "shape_dist_traveled": 1.733 - } - }, - { - "model": "feed.shape", - "pk": 820, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93916814008368, - "shape_pt_lon": -84.041691039804, - "shape_pt_sequence": 70, - "shape_dist_traveled": 1.758 - } - }, - { - "model": "feed.shape", - "pk": 821, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93900519121203, - "shape_pt_lon": -84.0414413521148, - "shape_pt_sequence": 71, - "shape_dist_traveled": 1.791 - } - }, - { - "model": "feed.shape", - "pk": 822, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93882565486029, - "shape_pt_lon": -84.0411391429389, - "shape_pt_sequence": 72, - "shape_dist_traveled": 1.83 - } - }, - { - "model": "feed.shape", - "pk": 823, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93878072700935, - "shape_pt_lon": -84.0410728454411, - "shape_pt_sequence": 73, - "shape_dist_traveled": 1.839 - } - }, - { - "model": "feed.shape", - "pk": 824, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93872490109004, - "shape_pt_lon": -84.0410213000932, - "shape_pt_sequence": 74, - "shape_dist_traveled": 1.847 - } - }, - { - "model": "feed.shape", - "pk": 825, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93861004710345, - "shape_pt_lon": -84.0409544792739, - "shape_pt_sequence": 75, - "shape_dist_traveled": 1.862 - } - }, - { - "model": "feed.shape", - "pk": 826, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93847396797512, - "shape_pt_lon": -84.0409494403816, - "shape_pt_sequence": 76, - "shape_dist_traveled": 1.877 - } - }, - { - "model": "feed.shape", - "pk": 827, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93814652860348, - "shape_pt_lon": -84.0410341635524, - "shape_pt_sequence": 77, - "shape_dist_traveled": 1.914 - } - }, - { - "model": "feed.shape", - "pk": 828, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93790671250708, - "shape_pt_lon": -84.0411014405278, - "shape_pt_sequence": 78, - "shape_dist_traveled": 1.942 - } - }, - { - "model": "feed.shape", - "pk": 829, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93791663555238, - "shape_pt_lon": -84.0413834314017, - "shape_pt_sequence": 79, - "shape_dist_traveled": 1.973 - } - }, - { - "model": "feed.shape", - "pk": 830, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93793079347671, - "shape_pt_lon": -84.0416285810649, - "shape_pt_sequence": 80, - "shape_dist_traveled": 1.999 - } - }, - { - "model": "feed.shape", - "pk": 831, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93801967154644, - "shape_pt_lon": -84.0416254546011, - "shape_pt_sequence": 81, - "shape_dist_traveled": 2.009 - } - }, - { - "model": "feed.shape", - "pk": 832, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93807996226397, - "shape_pt_lon": -84.0416431189912, - "shape_pt_sequence": 82, - "shape_dist_traveled": 2.016 - } - }, - { - "model": "feed.shape", - "pk": 833, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93810791480517, - "shape_pt_lon": -84.0416788253891, - "shape_pt_sequence": 83, - "shape_dist_traveled": 2.021 - } - }, - { - "model": "feed.shape", - "pk": 834, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93813256489417, - "shape_pt_lon": -84.0417178845482, - "shape_pt_sequence": 84, - "shape_dist_traveled": 2.026 - } - }, - { - "model": "feed.shape", - "pk": 835, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.9381630635316, - "shape_pt_lon": -84.0418440755105, - "shape_pt_sequence": 85, - "shape_dist_traveled": 2.041 - } - }, - { - "model": "feed.shape", - "pk": 836, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93816840355805, - "shape_pt_lon": -84.0419580950124, - "shape_pt_sequence": 86, - "shape_dist_traveled": 2.053 - } - }, - { - "model": "feed.shape", - "pk": 837, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93816233402513, - "shape_pt_lon": -84.0420632597521, - "shape_pt_sequence": 87, - "shape_dist_traveled": 2.065 - } - }, - { - "model": "feed.shape", - "pk": 838, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93814321123235, - "shape_pt_lon": -84.0421742120474, - "shape_pt_sequence": 88, - "shape_dist_traveled": 2.077 - } - }, - { - "model": "feed.shape", - "pk": 839, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93803086770445, - "shape_pt_lon": -84.042431585693, - "shape_pt_sequence": 89, - "shape_dist_traveled": 2.108 - } - }, - { - "model": "feed.shape", - "pk": 840, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93800811636062, - "shape_pt_lon": -84.0424780922361, - "shape_pt_sequence": 90, - "shape_dist_traveled": 2.113 - } - }, - { - "model": "feed.shape", - "pk": 841, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93798034157711, - "shape_pt_lon": -84.0426586032431, - "shape_pt_sequence": 91, - "shape_dist_traveled": 2.134 - } - }, - { - "model": "feed.shape", - "pk": 842, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93791715763552, - "shape_pt_lon": -84.0430584128099, - "shape_pt_sequence": 92, - "shape_dist_traveled": 2.178 - } - }, - { - "model": "feed.shape", - "pk": 843, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93789378213828, - "shape_pt_lon": -84.0431955755255, - "shape_pt_sequence": 93, - "shape_dist_traveled": 2.193 - } - }, - { - "model": "feed.shape", - "pk": 844, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.9379228858361, - "shape_pt_lon": -84.0434355505527, - "shape_pt_sequence": 94, - "shape_dist_traveled": 2.22 - } - }, - { - "model": "feed.shape", - "pk": 845, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93793324365073, - "shape_pt_lon": -84.0435100147268, - "shape_pt_sequence": 95, - "shape_dist_traveled": 2.228 - } - }, - { - "model": "feed.shape", - "pk": 846, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93796925623814, - "shape_pt_lon": -84.0436073742708, - "shape_pt_sequence": 96, - "shape_dist_traveled": 2.239 - } - }, - { - "model": "feed.shape", - "pk": 847, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93811129632628, - "shape_pt_lon": -84.0437957690067, - "shape_pt_sequence": 97, - "shape_dist_traveled": 2.265 - } - }, - { - "model": "feed.shape", - "pk": 848, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93796149488666, - "shape_pt_lon": -84.0440534496211, - "shape_pt_sequence": 98, - "shape_dist_traveled": 2.298 - } - }, - { - "model": "feed.shape", - "pk": 849, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93777133769974, - "shape_pt_lon": -84.0443836171542, - "shape_pt_sequence": 99, - "shape_dist_traveled": 2.34 - } - }, - { - "model": "feed.shape", - "pk": 850, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.9375818272445, - "shape_pt_lon": -84.0447196978834, - "shape_pt_sequence": 100, - "shape_dist_traveled": 2.382 - } - }, - { - "model": "feed.shape", - "pk": 851, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93745018852863, - "shape_pt_lon": -84.0449635706007, - "shape_pt_sequence": 101, - "shape_dist_traveled": 2.413 - } - }, - { - "model": "feed.shape", - "pk": 852, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93734180767617, - "shape_pt_lon": -84.0451463546949, - "shape_pt_sequence": 102, - "shape_dist_traveled": 2.436 - } - }, - { - "model": "feed.shape", - "pk": 853, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93725372200282, - "shape_pt_lon": -84.0452714142582, - "shape_pt_sequence": 103, - "shape_dist_traveled": 2.453 - } - }, - { - "model": "feed.shape", - "pk": 854, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.937108322267, - "shape_pt_lon": -84.0454262175884, - "shape_pt_sequence": 104, - "shape_dist_traveled": 2.476 - } - }, - { - "model": "feed.shape", - "pk": 855, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93692719931924, - "shape_pt_lon": -84.0455586526682, - "shape_pt_sequence": 105, - "shape_dist_traveled": 2.501 - } - }, - { - "model": "feed.shape", - "pk": 856, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93685401442958, - "shape_pt_lon": -84.0455873611916, - "shape_pt_sequence": 106, - "shape_dist_traveled": 2.51 - } - }, - { - "model": "feed.shape", - "pk": 857, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93677373653686, - "shape_pt_lon": -84.0455923110153, - "shape_pt_sequence": 107, - "shape_dist_traveled": 2.519 - } - }, - { - "model": "feed.shape", - "pk": 858, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93668019604487, - "shape_pt_lon": -84.0455680674162, - "shape_pt_sequence": 108, - "shape_dist_traveled": 2.529 - } - }, - { - "model": "feed.shape", - "pk": 859, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93646480148586, - "shape_pt_lon": -84.0454482787829, - "shape_pt_sequence": 109, - "shape_dist_traveled": 2.556 - } - }, - { - "model": "feed.shape", - "pk": 860, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93636588688585, - "shape_pt_lon": -84.0453892763726, - "shape_pt_sequence": 110, - "shape_dist_traveled": 2.569 - } - }, - { - "model": "feed.shape", - "pk": 861, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93632308831075, - "shape_pt_lon": -84.0453697036442, - "shape_pt_sequence": 111, - "shape_dist_traveled": 2.574 - } - }, - { - "model": "feed.shape", - "pk": 862, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93629762770389, - "shape_pt_lon": -84.0453615303045, - "shape_pt_sequence": 112, - "shape_dist_traveled": 2.577 - } - }, - { - "model": "feed.shape", - "pk": 863, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93624652235345, - "shape_pt_lon": -84.0453532765511, - "shape_pt_sequence": 113, - "shape_dist_traveled": 2.583 - } - }, - { - "model": "feed.shape", - "pk": 864, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93618732594838, - "shape_pt_lon": -84.0453570927397, - "shape_pt_sequence": 114, - "shape_dist_traveled": 2.59 - } - }, - { - "model": "feed.shape", - "pk": 865, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93603538344972, - "shape_pt_lon": -84.0453927689936, - "shape_pt_sequence": 115, - "shape_dist_traveled": 2.607 - } - }, - { - "model": "feed.shape", - "pk": 866, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93577991764324, - "shape_pt_lon": -84.045437957483, - "shape_pt_sequence": 116, - "shape_dist_traveled": 2.636 - } - }, - { - "model": "feed.shape", - "pk": 867, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93565154581259, - "shape_pt_lon": -84.0454621421002, - "shape_pt_sequence": 117, - "shape_dist_traveled": 2.65 - } - }, - { - "model": "feed.shape", - "pk": 868, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93558482499322, - "shape_pt_lon": -84.0455294509499, - "shape_pt_sequence": 118, - "shape_dist_traveled": 2.66 - } - }, - { - "model": "feed.shape", - "pk": 869, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93533787082614, - "shape_pt_lon": -84.0456405554627, - "shape_pt_sequence": 119, - "shape_dist_traveled": 2.69 - } - }, - { - "model": "feed.shape", - "pk": 870, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.9350109333037, - "shape_pt_lon": -84.0456410811815, - "shape_pt_sequence": 120, - "shape_dist_traveled": 2.727 - } - }, - { - "model": "feed.shape", - "pk": 871, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93495968412818, - "shape_pt_lon": -84.0456087998837, - "shape_pt_sequence": 121, - "shape_dist_traveled": 2.733 - } - }, - { - "model": "feed.shape", - "pk": 872, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93464858697721, - "shape_pt_lon": -84.0456196757956, - "shape_pt_sequence": 122, - "shape_dist_traveled": 2.768 - } - }, - { - "model": "feed.shape", - "pk": 873, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93480225304748, - "shape_pt_lon": -84.046294734079, - "shape_pt_sequence": 123, - "shape_dist_traveled": 2.844 - } - }, - { - "model": "feed.shape", - "pk": 874, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93495610721508, - "shape_pt_lon": -84.0470992295944, - "shape_pt_sequence": 124, - "shape_dist_traveled": 2.933 - } - }, - { - "model": "feed.shape", - "pk": 875, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93514466639919, - "shape_pt_lon": -84.047738281775, - "shape_pt_sequence": 125, - "shape_dist_traveled": 3.007 - } - }, - { - "model": "feed.shape", - "pk": 876, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93527584609242, - "shape_pt_lon": -84.048128961463, - "shape_pt_sequence": 126, - "shape_dist_traveled": 3.052 - } - }, - { - "model": "feed.shape", - "pk": 877, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93531583349863, - "shape_pt_lon": -84.0483847176419, - "shape_pt_sequence": 127, - "shape_dist_traveled": 3.08 - } - }, - { - "model": "feed.shape", - "pk": 878, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93529983825585, - "shape_pt_lon": -84.0486296483808, - "shape_pt_sequence": 128, - "shape_dist_traveled": 3.107 - } - }, - { - "model": "feed.shape", - "pk": 879, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93545520267059, - "shape_pt_lon": -84.0486491888617, - "shape_pt_sequence": 129, - "shape_dist_traveled": 3.124 - } - }, - { - "model": "feed.shape", - "pk": 880, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.9354703980085, - "shape_pt_lon": -84.0488055127148, - "shape_pt_sequence": 130, - "shape_dist_traveled": 3.142 - } - }, - { - "model": "feed.shape", - "pk": 881, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93553667972237, - "shape_pt_lon": -84.0490832368349, - "shape_pt_sequence": 131, - "shape_dist_traveled": 3.173 - } - }, - { - "model": "feed.shape", - "pk": 882, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.9355977604479, - "shape_pt_lon": -84.0493162487417, - "shape_pt_sequence": 132, - "shape_dist_traveled": 3.199 - } - }, - { - "model": "feed.shape", - "pk": 883, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93570243695239, - "shape_pt_lon": -84.0495918083302, - "shape_pt_sequence": 133, - "shape_dist_traveled": 3.232 - } - }, - { - "model": "feed.shape", - "pk": 884, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93571038517426, - "shape_pt_lon": -84.0496787768477, - "shape_pt_sequence": 134, - "shape_dist_traveled": 3.241 - } - }, - { - "model": "feed.shape", - "pk": 885, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93571038484225, - "shape_pt_lon": -84.0499696558076, - "shape_pt_sequence": 135, - "shape_dist_traveled": 3.273 - } - }, - { - "model": "feed.shape", - "pk": 886, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93570321714193, - "shape_pt_lon": -84.0500954158227, - "shape_pt_sequence": 136, - "shape_dist_traveled": 3.287 - } - }, - { - "model": "feed.shape", - "pk": 887, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93566700857604, - "shape_pt_lon": -84.0503419760518, - "shape_pt_sequence": 137, - "shape_dist_traveled": 3.314 - } - }, - { - "model": "feed.shape", - "pk": 888, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93560674646944, - "shape_pt_lon": -84.0506470296121, - "shape_pt_sequence": 138, - "shape_dist_traveled": 3.348 - } - }, - { - "model": "feed.shape", - "pk": 889, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93553343216217, - "shape_pt_lon": -84.0510737676674, - "shape_pt_sequence": 139, - "shape_dist_traveled": 3.396 - } - }, - { - "model": "feed.shape", - "pk": 890, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93549263100849, - "shape_pt_lon": -84.0513075140395, - "shape_pt_sequence": 140, - "shape_dist_traveled": 3.422 - } - }, - { - "model": "feed.shape", - "pk": 891, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93546272803463, - "shape_pt_lon": -84.0515459542782, - "shape_pt_sequence": 141, - "shape_dist_traveled": 3.448 - } - }, - { - "model": "feed.shape", - "pk": 892, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93544955548966, - "shape_pt_lon": -84.0516525931019, - "shape_pt_sequence": 142, - "shape_dist_traveled": 3.46 - } - }, - { - "model": "feed.shape", - "pk": 893, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93544794162221, - "shape_pt_lon": -84.0517605730299, - "shape_pt_sequence": 143, - "shape_dist_traveled": 3.472 - } - }, - { - "model": "feed.shape", - "pk": 894, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93547169143514, - "shape_pt_lon": -84.0519830595855, - "shape_pt_sequence": 144, - "shape_dist_traveled": 3.496 - } - }, - { - "model": "feed.shape", - "pk": 895, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93548892832953, - "shape_pt_lon": -84.0521081889526, - "shape_pt_sequence": 145, - "shape_dist_traveled": 3.51 - } - }, - { - "model": "feed.shape", - "pk": 896, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93550175796293, - "shape_pt_lon": -84.0521827017793, - "shape_pt_sequence": 146, - "shape_dist_traveled": 3.519 - } - }, - { - "model": "feed.geoshape", - "pk": 1, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "geometry": "SRID=4326;LINESTRING (-84.0491138975951 9.93554944029271, -84.0491582627979 9.9355589010814, -84.0492241246225 9.93557354275506, -84.049324861376 9.9356000651633, -84.049416778843 9.93563773463719, -84.0495368755472 9.93568399531643, -84.0495945755631 9.93570316048327, -84.0496871639603 9.93571109089738, -84.0498464474787 9.93571292483817, -84.0500877222699 9.93570393244304, -84.050351168656 9.93566539329337, -84.0505937476355 9.93561786205413, -84.050878060609 9.93556519227529, -84.051108901895 9.93552922267821, -84.0513932152566 9.93548169125642, -84.0516410109878 9.93545342942273, -84.0516943904767 9.93544741074256, -84.051754475488 9.93544700627605, -84.0519579288248 9.93546627570862, -84.052131385837 9.93548939902537, -84.0522239834817 9.93550517435119, -84.0523340057342 9.93554618004823, -84.0523914948391 9.93559987797587, -84.0524281689233 9.93565552854654, -84.0524410544122 9.93572094236273, -84.0524182569563 9.93583614886311, -84.0523528383197 9.93603336648931, -84.0522832947174 9.93625691629266, -84.0522431941422 9.93639307154715, -84.0522372469934 9.93653561474882, -84.0522600443969 9.93660005206628, -84.0523423132888 9.93661957852377, -84.0524275557544 9.93659126516027, -84.0524503531584 9.93653854371827, -84.0524483707755 9.93645360359939, -84.052439450052 9.93636085286962, -84.0524268046992 9.93633386047036, -84.0524265645631 9.93630422609543, -84.0524473794854 9.93618120917912, -84.052484053706 9.93600742368285, -84.0525276661302 9.93581118236608, -84.0525355663096 9.93571876163712, -84.0525177541372 9.93563153840537, -84.0524334735888 9.93553310902874, -84.0523512340121 9.93545970504671, -84.0522451765253 9.93542065199216, -84.0521014537632 9.93541674668641, -84.0518556382803 9.93537769362758, -84.0515960083744 9.93533766423581, -84.0515277691646 9.93531364398533, -84.0514612063353 9.93528103728449, -84.0510449054667 9.93537964636139, -84.0506385823758 9.93549228868242, -84.0501428263958 9.93560853450969, -84.0499153784661 9.93564523227799, -84.0495436816674 9.9355593156005, -84.049203385401 9.93549425099087, -84.0487850070695 9.93539252590615, -84.0486462402645 9.93537592835444, -84.0486373195414 9.93528024833921, -84.0483824809879 9.93529755089066, -84.048123669054 9.93524885628052, -84.0477514451489 9.9351256875275, -84.0473850372423 9.93500538311991, -84.0470954278149 9.93492412702167, -84.046441127981 9.93480668693231, -84.0458485099908 9.93468020166955, -84.0456145784198 9.93461570602311, -84.0456080574792 9.93495613335646, -84.0455873014759 9.93502533870439, -84.045580669786 9.93533638426393, -84.045528502083 9.93558174876489, -84.0454554675517 9.9356639649666, -84.0454118867064 9.93591239555134, -84.0453571107868 9.93618345188633, -84.0453649359146 9.93630292207917, -84.0454366662581 9.93644423085287, -84.045567569655 9.93668331840604, -84.045592349228 9.93677195745002, -84.0455871324757 9.9368528887295, -84.0455467026459 9.93694152772752, -84.0454423673758 9.93708540528038, -84.0452787163273 9.9372459343465, -84.0451378640166 9.93733842710149, -84.044752821983 9.93756026309952, -84.0443585013794 9.93777652816203, -84.0438016139119 9.9381041049962, -84.0436166501913 9.93796476738381, -84.0434457982085 9.93791473560688, -84.0432203034589 9.93789047771889, -84.0429894627193 9.93791970638376, -84.0426008139046 9.93798008366965, -84.0424795244151 9.93800449142722, -84.0421782569734 9.9381380917555, -84.0419964534982 9.93816473253672, -84.0418503844357 9.93815830944601, -84.0417251823817 9.93812876322556, -84.0416449024973 9.93807176432108, -84.0416364975937 9.9380170014129, -84.0416378013257 9.9379218878614, -84.0411362584451 9.93790138516287, -84.041068473332 9.93789650346394, -84.0409289658467 9.93846399292934, -84.0409645503437 9.93868999787477, -84.0411343350368 9.93885220465146, -84.0416551779252 9.93915775668989, -84.0417942257713 9.93928866239001, -84.0418835860126 9.9394332650851, -84.0419072239736 9.93950294569722, -84.0422269282472 9.93950393195614, -84.0425117128132 9.93949212322203, -84.0429181490899 9.93945684385667, -84.0433331349077 9.93942503205056, -84.0432631191506 9.93972770605043, -84.0432957235711 9.93979024582779, -84.0433729445674 9.93981898031695, -84.0443132968873 9.94007108411656, -84.0446693302114 9.94016605495639, -84.0448273689979 9.94027244564152, -84.0455400945559 9.94046211098755, -84.0456302713637 9.94049056601295, -84.0455978789472 9.94063822457009, -84.0450688663703 9.94079717180704, -84.04474671421 9.94095438717349, -84.0446527254796 9.94105262250509, -84.0446772759114 9.9414150973303, -84.0447316948875 9.94222783326419, -84.0447692666912 9.94282430588245, -84.0447361152365 9.9430072194504, -84.0446536543918 9.94325327852743, -84.0444658512058 9.94367377439675, -84.0447574980966 9.94380472710699, -84.044883947833 9.94388103477618, -84.044952212081 9.94396870046222, -84.0449991890221 9.94440018674929, -84.045011078064 9.94457575401998, -84.045007224609 9.94495341180596, -84.0450804402532 9.94503790634203, -84.0454078875236 9.94507262278836, -84.0455018337476 9.94509663743075, -84.0455370798079 9.94516495042239, -84.0455279840503 9.94535421093323, -84.0455006967812 9.94569609354827, -84.0454636202844 9.94576019859063, -84.0453783778183 9.9458090133638, -84.0452505141197 9.94587051996754, -84.0451768005758 9.94594579827001, -84.0451498689492 9.9462925242644, -84.0451620803092 9.9463897709987, -84.0452016714679 9.94645002673405, -84.0452387476835 9.94648404073633)", - "has_altitude": false - } - }, - { - "model": "feed.geoshape", - "pk": 2, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "geometry": "SRID=4326;LINESTRING (-84.0491114962244 9.93554615993122, -84.0492324408382 9.93557253860416, -84.0493243902202 9.93559719650295, -84.0495039565472 9.93566832503712, -84.0495983130441 9.93570246673155, -84.0496907438365 9.93570957958473, -84.0498491281346 9.93571147624034, -84.0500893518124 9.93570246663722, -84.0503237982121 9.93566785089355, -84.0505362327233 9.93562801871054, -84.0507591258626 9.93558581568109, -84.0510354553896 9.93553934502577, -84.0513535074206 9.93548718391971, -84.0516944413929 9.93544590778002, -84.0517683691601 9.93544406437546, -84.0521913460308 9.93549752617786, -84.0522746314152 9.93552149197739, -84.0523420082619 9.93554545760814, -84.0523981556341 9.93560168465873, -84.0524318440576 9.93565791169966, -84.0524430735317 9.935720591012, -84.0524187427515 9.93583857529975, -84.0523466867771 9.93605505885652, -84.0522802455722 9.93627443620344, -84.052243749702 9.93639436894143, -84.0522390707544 9.93653263180367, -84.0523349506756 9.93679802054417, -84.0524313369778 9.93706910208629, -84.0525380169441 9.93735023603007, -84.0526437612861 9.9375714563375, -84.0527027160271 9.93774105816322, -84.0527151488461 9.93778978041929, -84.0527273141104 9.93794647765702, -84.0527076622996 9.93809150988507, -84.052635606505 9.93815511047925, -84.0521246655647 9.93840121696546, -84.051894479649 9.93857142751338, -84.0516156036497 9.93879176765612, -84.0514555284908 9.93890106345436, -84.0513020294891 9.93897507515302, -84.0511345760324 9.9390141956147, -84.0509224405605 9.93905117558812, -84.0506014881021 9.93906597792292, -84.0501243834524 9.93909856537408, -84.0497656390733 9.93910318560055, -84.049652930016 9.93906512245888, -84.0495133854688 9.9389773657529, -84.0493115816303 9.93881453893313, -84.0490281988577 9.93860413409909, -84.0488647834885 9.93847607358095, -84.0486425856324 9.93830796101282, -84.0484368995492 9.93812775111203, -84.0482768335369 9.93798100124938, -84.0479566982914 9.93768022319365, -84.0479111252314 9.93763286635998, -84.0478722576937 9.93758319780721, -84.0478404135935 9.93753870216281, -84.0478139339113 9.9374942065184, -84.0477923420699 9.93745024180206, -84.0477606919451 9.93735938216936, -84.0477606931305 9.93724916693389, -84.0477784341865 9.93715177760806, -84.0477987581936 9.93705710158646, -84.0479001602699 9.93672866697375, -84.0479940310818 9.93643873625598, -84.0481209106209 9.93605459371357, -84.0481497577059 9.93594785009141, -84.0481926863882 9.93584672067646, -84.0482902977589 9.93562414968525, -84.0483541402688 9.93555563302149, -84.048395536302 9.93552377293763, -84.0484359265072 9.93549323384328, -84.0485562630898 9.93545924101029, -84.0486084574091 9.93545410965148, -84.0486583047952 9.93545261101962, -84.0486381383254 9.93527714539185, -84.0483849370953 9.93529369875646, -84.0481250138729 9.93524845287248, -84.0476876510322 9.93510490695821, -84.0471049676225 9.93492309622952, -84.0463710454434 9.93478795156821, -84.0458810362687 9.93468712924438, -84.0456150110652 9.93461716476174, -84.045615726073 9.93466453460568, -84.0456098658075 9.93495411611772, -84.0455893287031 9.93501867239507, -84.0455828491321 9.93533255656777, -84.0455310895244 9.93558174215077, -84.0454587191306 9.93565354440517, -84.0453935565556 9.93601427775509, -84.0453574183472 9.93618250695711, -84.0453568135217 9.93624056084127, -84.0453642553238 9.93629795423082, -84.0455215059456 9.93659318251401, -84.0455703414396 9.93667976807258, -84.0455957359235 9.9367692395777, -84.0455879222361 9.93685293870503, -84.0455491295231 9.93694173624727, -84.0454446214555 9.93708123470739, -84.0452817159445 9.93724313131711, -84.0451254422096 9.93734607124923, -84.0448724740612 9.93748749351063, -84.0446484093239 9.93761860756564, -84.0443002302728 9.93781098243242, -84.0439934603325 9.93799146315684, -84.0438034580265 9.93810165004318, -84.0436169062427 9.93796407612903, -84.043444027742 9.93791116339785, -84.0432193842326 9.93788614994896, -84.0429361376045 9.93792655633902, -84.0424812505301 9.93800099196738, -84.0421772565051 9.93813818359375, -84.0419985184082 9.93816415907815, -84.0418510350607 9.9381545385288, -84.0417260160641 9.93812567687818, -84.0416527622632 9.93807564954973, -84.0416384252501 9.93804289664845, -84.0416361581774 9.93801311595451, -84.0416381115992 9.93792172067878, -84.0412122658535 9.93790247956499, -84.0410686893496 9.93789478311904, -84.040969095546 9.93830046896954, -84.0409298363785 9.93846168564775, -84.040967928104 9.93868873033166, -84.0411370173071 9.93884815398905, -84.0416568644267 9.93915383599336, -84.0417935755105 9.93928521203319, -84.0418876857024 9.93942977628924, -84.0419089725314 9.93950150662073, -84.0422428396408 9.93950371370814, -84.0425204684191 9.93948613333313, -84.0430246306461 9.93944529338017, -84.0433356324423 9.93942327481619, -84.0432655607324 9.93972442200525, -84.043299171515 9.93978732393233, -84.0433809579747 9.93981711902594, -84.0437596394605 9.93991974845217, -84.0443170698121 9.94007043205839, -84.0446744654815 9.94016533658292, -84.0448268343636 9.94027017298111, -84.045244089757 9.94038169599758, -84.045632855511 9.94048873914792, -84.045599244728 9.94063882056966, -84.0450681942005 9.94079662666821, -84.044750328054 9.94095071185347, -84.0446554341072 9.9410528605391, -84.04469185811 9.94157411286451, -84.0447474726987 9.94242227255298, -84.0447699014639 9.94283107241787, -84.0447350564938 9.94300697065598, -84.0446544775012 9.94326009234421, -84.0445407320727 9.94351468777105, -84.0444710421328 9.94366913468646, -84.0447541575134 9.9437999854876, -84.0448848261506 9.94388149907578, -84.0449552037605 9.94396600743452, -84.0449932717292 9.94433419150155, -84.0450138149367 9.94457398813642, -84.045010504636 9.94495221337372, -84.0450833311997 9.94503698779598, -84.045389534011 9.94506796311185, -84.0455020842335 9.94509404758507, -84.0455418078417 9.94516741015652, -84.0455036631251 9.94569411437748, -84.0454645549726 9.94576235686358, -84.0452550477597 9.94586939851089, -84.0451777429595 9.94594554151604, -84.0451530949856 9.94629085058927, -84.0451636656039 9.94638848955421, -84.0452028781838 9.94644918315917, -84.0452462913844 9.94648865740507)", - "has_altitude": false - } - }, - { - "model": "feed.geoshape", - "pk": 3, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "geometry": "SRID=4326;LINESTRING (-84.052232462037 9.93551240308205, -84.0523024805564 9.93553038682294, -84.0523354193901 9.93554317941351, -84.0523952582046 9.93560006968185, -84.0524284133704 9.93565298376728, -84.0524404498132 9.93571914349433, -84.0524171180445 9.93583719162457, -84.0523801266021 9.93594643029256, -84.0523343631691 9.93608834513962, -84.0522977078958 9.93620422239772, -84.0522711599884 9.936293049843, -84.0522405229359 9.93639226353531, -84.0522367457551 9.93653093553953, -84.0522590055211 9.93659589447438, -84.0523412639074 9.93661615058734, -84.0524260404882 9.9365876265418, -84.0524499625703 9.9365355393877, -84.0524473462339 9.93644867420793, -84.0524384481957 9.93635813864212, -84.052426075736 9.93632957313295, -84.0524254379402 9.93630067737655, -84.0524455386407 9.9361767385198, -84.0524692189919 9.93606938255121, -84.0525134237392 9.9358662876061, -84.0525277028597 9.93580530982546, -84.0525351455981 9.93571720324209, -84.0525170973821 9.93562932790421, -84.0524334827489 9.93552958615174, -84.052350672979 9.93545575661828, -84.0522446182099 9.93541638163459, -84.0520977731443 9.93541236377893, -84.0517673714683 9.9353609350822, -84.0515957473315 9.93533537431955, -84.0514578761312 9.93527832074849, -84.051051560594 9.93537394568805, -84.0506488451042 9.93548509593826, -84.0503446866737 9.93555656904013, -84.0501407351937 9.93560639042598, -84.0499188359838 9.93564014039442, -84.0495240741516 9.93555237106771, -84.0493169635181 9.9355127171103, -84.0490255135247 9.93544759669272, -84.0487899823799 9.93538988817417, -84.0486447689264 9.93537301317815, -84.0486366108669 9.93527658461171, -84.0483784246656 9.93529274995559, -84.0481238929513 9.93524694618673, -84.0478057230236 9.93514165787212, -84.0473807827294 9.93500316815773, -84.0470859236543 9.93492049042863, -84.0464195689003 9.93479657132182, -84.0458857020311 9.93468604728109, -84.0456137031377 9.9346124699569, -84.0456081393267 9.93481022852054, -84.0456083692307 9.93495379560579, -84.0455873976348 9.93502122053513, -84.0455815527507 9.93525069991888, -84.0455791055204 9.93533621207088, -84.0455277100451 9.9355796939962, -84.0454545424224 9.93566141737569, -84.0454033749615 9.93593880374486, -84.0453561940705 9.93617987563359, -84.0453622217276 9.93629878421235, -84.0454544077961 9.93647074793075, -84.0455491574187 9.9366470154013, -84.0455671051487 9.93667996169247, -84.0455923951325 9.93677076487081, -84.0455875957907 9.93685019478803, -84.0455459896891 9.93693939078323, -84.0454405657035 9.93708216879507, -84.0452791956738 9.9372417505605, -84.0451437718914 9.93733175001592, -84.0448843455207 9.93747880276838, -84.0446848467803 9.93759383837854, -84.0443877220931 9.93775722150572, -84.0440980878075 9.93792650160209, -84.0437999865192 9.93809919166979, -84.0436147985756 9.93796097853527, -84.0434434787742 9.93791115773413, -84.0432188653814 9.9378853721441, -84.0429382281456 9.93792474683056, -84.0425692976739 9.93798421082772, -84.0424760119919 9.93799717971221, -84.0421774270254 9.93813619639644, -84.0419972282554 9.93816151133474, -84.0418487515775 9.93815347569085, -84.0417223014224 9.93812695789198, -84.041649694696 9.93807552975984, -84.0416317469654 9.93801445884308, -84.0416350505556 9.93791897942971, -84.0410687729965 9.93789540463778, -84.0409278059346 9.93846102257875, -84.0409636843222 9.93868770509072, -84.0411317795776 9.93884702967763, -84.0416545090707 9.93915009329333, -84.0417940169538 9.93928437269097, -84.0418844077991 9.93942339095397, -84.0419066090587 9.93949992907343, -84.0422475569833 9.93949992907343, -84.043074 9.939437, -84.0433290766316 9.9394249524573, -84.0432616940963 9.93972312001197, -84.0432938739159 9.9397847344284, -84.0433818049407 9.9398186343525, -84.0440308770623 9.93998824672434, -84.0446658158992 9.94015974971341, -84.0448245474961 9.94026910203425, -84.0451873514683 9.94036490303632, -84.0456290389484 9.94048769323097, -84.0455931434884 9.94063635155576, -84.0450690355552 9.94079234514589, -84.0447505513004 9.94094918383372, -84.0446520351469 9.94104532842372, -84.0446571934664 9.94113081479986, -84.0446770863329 9.94144321527622, -84.0447142198439 9.94195499816524, -84.0447371192727 9.94233948335795, -84.0447624203313 9.94270561942093, -84.0447662997461 9.94282741926446, -84.0447342405736 9.94300876520552, -84.044661630678 9.94322619282253, -84.0446070756693 9.94336188947768, -84.0444664621215 9.94366938860733, -84.0447499441632 9.94379763572232, -84.0448781808515 9.94387703073651, -84.0449496270056 9.94396544788927, -84.0450074182673 9.94454435151914, -84.0450098494603 9.94494922686726, -84.0450726102459 9.94503488859595, -84.0453994971357 9.94506635931216, -84.0454999143925 9.94509373573383, -84.0455384857143 9.94516587977827, -84.045501640108 9.94569334489241, -84.0454572011088 9.94576818120904, -84.0453571624431 9.94581918999885, -84.0452494124261 9.94586821736523, -84.0451749917014 9.94594549545337, -84.045149887399 9.94628917517751, -84.0451617577946 9.946387887887, -84.0451994142665 9.94644528982524, -84.0452511227568 9.94649012442296)", - "has_altitude": false - } - }, - { - "model": "feed.geoshape", - "pk": 4, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "geometry": "SRID=4326;LINESTRING (-84.0522203008732 9.93551129613598, -84.0522927059177 9.9355310767404, -84.0523347118824 9.93554722789095, -84.0523891977038 9.93559998927965, -84.0524266115309 9.93565665681396, -84.0524387877407 9.93572400544303, -84.0524163085106 9.93583791088976, -84.0524004247557 9.93589348533485, -84.0523801824105 9.93594773879152, -84.052302832233 9.93618639604332, -84.0522406782275 9.93639684624757, -84.0522361299255 9.93653551980098, -84.0523076585187 9.93673682209909, -84.05243186663 9.93708559662569, -84.0525288520072 9.93733577696727, -84.0526438746271 9.93757969853555, -84.0527043524954 9.9377485826659, -84.0527107981436 9.93779188190045, -84.0527199326082 9.93787132360124, -84.0527243732062 9.93795076530203, -84.0527168419396 9.93802242474458, -84.0527036109785 9.93809408418712, -84.0526341385986 9.93815622170643, -84.0524441849862 9.93824866125399, -84.0521210493447 9.93840212874288, -84.0518711468269 9.93859022704029, -84.0517146035903 9.9387164365478, -84.0515516901066 9.93883769238516, -84.0514467461262 9.93890538473733, -84.051298218969 9.93897774723731, -84.0511281313016 9.93901864778466, -84.0509181170952 9.93905404247567, -84.0503591447661 9.93908393146568, -84.0501183551865 9.93910272348104, -84.0499402779348 9.93910706388403, -84.0497648828928 9.93910711111161, -84.0496439745831 9.93906715286185, -84.0494999920866 9.93897699483947, -84.0492839130465 9.93879865248422, -84.0489259634067 9.93852631535243, -84.0486415140485 9.9383125595628, -84.0484645585026 9.93816149920894, -84.0483041187788 9.93801276292967, -84.0479456361923 9.93767314890347, -84.0479035036496 9.93762896738312, -84.0478664002497 9.9375818136517, -84.0478370279249 9.9375407094932, -84.0478110083611 9.93749795410686, -84.0477901145765 9.93745496587906, -84.0477598330601 9.93736508273494, -84.047759267964 9.93726069019733, -84.047793713066 9.93707479279145, -84.0478715216077 9.93681544721791, -84.0479476285628 9.93657305173134, -84.0480642553351 9.93622234344519, -84.0481251956082 9.93602464016541, -84.0481829479595 9.93585590049247, -84.0482522936584 9.9357089398831, -84.0482869664637 9.93563189742607, -84.0483531600847 9.93556048694849, -84.048435114092 9.93549839086817, -84.0485569944104 9.93546527295384, -84.0486547088036 9.9354549236054, -84.048634745016 9.93528001900853, -84.0483794267626 9.93529761291067, -84.0481286733116 9.9352527346308, -84.0477461762194 9.93512765815873, -84.0471055797031 9.93492703280895, -84.046354626689 9.93478949058113, -84.0458746565008 9.93469070939338, -84.0456143293 9.93462060674132, -84.0456070252698 9.93489289845325, -84.045606154414 9.93495950947043, -84.0455877894747 9.93502573261312, -84.0455793808645 9.93533984703067, -84.0455366983597 9.93553106245252, -84.0455256779408 9.93558489672501, -84.0454519050346 9.93566584972937, -84.0453870153627 9.93603020143902, -84.0453504149565 9.93619941008339, -84.0453617663184 9.93630011253566, -84.0454755016038 9.93651948121636, -84.0455653411938 9.93668368683727, -84.045589182648 9.93677258981834, -84.0455874796866 9.93685310570445, -84.0455437249918 9.93694508327091, -84.0454400845081 9.93708383542657, -84.045309807991 9.93721635101928, -84.0452761874456 9.93724819645461, -84.0451229209554 9.93734716375109, -84.0448187291416 9.93752119585777, -84.0445416760749 9.93767426097248, -84.0442186256065 9.93785833808635, -84.0437983732383 9.93810435753431, -84.0436125738981 9.93796632120651, -84.0434414999464 9.93791432144543, -84.0432184120559 9.93788832161072, -84.042939145496 9.93792789506808, -84.0425252959219 9.93799597108977, -84.0424724302894 9.93800488549925, -84.0421750587842 9.9381395635656, -84.0419988023209 9.93816556338036, -84.0418468568672 9.93815877702913, -84.0417208377531 9.93812774499086, -84.0416827286396 9.93810465445374, -84.0416493133915 9.93807826146448, -84.0416349312544 9.93804738144964, -84.0416322837814 9.93801451996184, -84.0416346601389 9.93792436774485, -84.041067340985 9.93790082410227, -84.0409284047187 9.93846425290711, -84.0409624274215 9.93868651413261, -84.0411341586918 9.93885247660523, -84.0416474460876 9.93915539473273, -84.0417889786806 9.93928861127028, -84.0418813247414 9.9394354239606, -84.0419056263361 9.93950244712471, -84.042239368576 9.93950244613303, -84.0425196469705 9.93949446718606, -84.0429991991022 9.93945457168453, -84.043331873611 9.93942712460796, -84.0432605742965 9.93972789866721, -84.0432941313524 9.93979051078508, -84.0433753940134 9.93982252793726, -84.0437147893588 9.93991292983544, -84.0441287509128 9.94002028140903, -84.0446669802431 9.94016644833328, -84.044823754755 9.94027078687104, -84.0456295904777 9.94048864067421, -84.045594280927 9.9406416703034, -84.0450692602221 9.94079771456593, -84.0447481499267 9.9409503711104, -84.0446521079484 9.94105192700053, -84.0446962954808 9.94171142158802, -84.0447683576565 9.94281915936154, -84.0447317924328 9.94301266464211, -84.0446461368594 9.94326484610015, -84.0444664659679 9.94367235170777, -84.044752272012 9.94380140312083, -84.0448814333755 9.9438796367465, -84.0449503878825 9.94396952509255, -84.044987908675 9.94433433418409, -84.0450080280451 9.94457411376674, -84.0450080280451 9.94495390060397, -84.0450786471473 9.94504571713547, -84.0453964329445 9.94507075688808, -84.0454995368328 9.94509858007239, -84.0455360879379 9.94517301639726, -84.0455012141288 9.94569599438186, -84.0454579354822 9.94576731883437, -84.0452474905592 9.94587443785238, -84.0451754590753 9.94594677794762, -84.0451469719024 9.94629204599402, -84.0451610957222 9.9463908179176, -84.0451992300371 9.94645063751956, -84.0452562192863 9.94649738913102)", - "has_altitude": false - } - }, - { - "model": "feed.geoshape", - "pk": 5, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "geometry": "SRID=4326;LINESTRING (-84.0452793145875 9.94651439468106, -84.0453635889366 9.94656979269062, -84.0455133598416 9.94668819013391, -84.0456333624982 9.94677813595565, -84.0458288226395 9.94692110409536, -84.0458784281265 9.94699667079666, -84.0458729567443 9.94709290535486, -84.0457747817661 9.94722193423012, -84.0456766067879 9.94733469552996, -84.0455812484176 9.94735240267321, -84.0454835451677 9.94731698838683, -84.045155482603 9.94706401578786, -84.0449388905875 9.94695753981341, -84.0447927265256 9.94685591607748, -84.0447132911805 9.94674691466528, -84.0446929689046 9.94663836196663, -84.0447054750041 9.9465853910728, -84.0447469011822 9.94652457073993, -84.0447977068717 9.94630948675802, -84.0448235005163 9.94606507414992, -84.0451642894519 9.94607893196729, -84.0451842895768 9.94594726623906, -84.0452538542911 9.94587566747948, -84.0454601695233 9.94577795917383, -84.0455125384658 9.94569943146, -84.0455252458136 9.94545154684154, -84.0455414357082 9.94516751299271, -84.0455037479672 9.94508849180003, -84.0453835472561 9.94505511036374, -84.045084965639 9.94502739484005, -84.0450504044021 9.94499479036127, -84.0450208723069 9.94494963682908, -84.0450154011338 9.94467428591231, -84.0450041637077 9.94435778151253, -84.0449287137552 9.94347268380579, -84.0448982678798 9.94295817880508, -84.0448587644203 9.94230048632557, -84.0448222996627 9.94171228683352, -84.0447760219723 9.94096530647596, -84.0448740739734 9.94090663320268, -84.0449871934796 9.94084406020503, -84.0452171289551 9.94077751897418, -84.0453974813657 9.94072156165138, -84.0456042948351 9.94066022328121, -84.0456331735173 9.94049309734092, -84.0454384499972 9.94043960234258, -84.0451953028132 9.94037244769911, -84.0448203307503 9.94027492444419, -84.0447437519701 9.94022435173391, -84.0446621944019 9.94016681408322, -84.044417503094 9.94010200702146, -84.0444809655781 9.93987745974345, -84.0445245874922 9.93971459423953, -84.0446392902696 9.93927560616025, -84.0446560771702 9.93920545121652, -84.0446448875091 9.93916110643307, -84.0446191813258 9.93912385292449, -84.0445525134932 9.93911625815432, -84.0443337547524 9.93919941590806, -84.044006444136 9.93911055274011, -84.0436747724812 9.9390190082839, -84.0434673567427 9.93895911426052, -84.0433689432454 9.9392879865273, -84.0433274860744 9.93942115014918, -84.0429942406062 9.93944755512195, -84.0427365454686 9.93946810072644, -84.0424561880641 9.93949017843466, -84.0421337910545 9.93949896641922, -84.0419274245262 9.93950631475532, -84.0418524186819 9.93932958005353, -84.041691039804 9.93916814008368, -84.0414413521148 9.93900519121203, -84.0411391429389 9.93882565486029, -84.0410728454411 9.93878072700935, -84.0410213000932 9.93872490109004, -84.0409544792739 9.93861004710345, -84.0409494403816 9.93847396797512, -84.0410341635524 9.93814652860348, -84.0411014405278 9.93790671250708, -84.0413834314017 9.93791663555238, -84.0416285810649 9.93793079347671, -84.0416254546011 9.93801967154644, -84.0416431189912 9.93807996226397, -84.0416788253891 9.93810791480517, -84.0417178845482 9.93813256489417, -84.0418440755105 9.9381630635316, -84.0419580950124 9.93816840355805, -84.0420632597521 9.93816233402513, -84.0421742120474 9.93814321123235, -84.042431585693 9.93803086770445, -84.0424780922361 9.93800811636062, -84.0426586032431 9.93798034157711, -84.0430584128099 9.93791715763552, -84.0431955755255 9.93789378213828, -84.0434355505527 9.9379228858361, -84.0435100147268 9.93793324365073, -84.0436073742708 9.93796925623814, -84.0437957690067 9.93811129632628, -84.0440534496211 9.93796149488666, -84.0443836171542 9.93777133769974, -84.0447196978834 9.9375818272445, -84.0449635706007 9.93745018852863, -84.0451463546949 9.93734180767617, -84.0452714142582 9.93725372200282, -84.0454262175884 9.937108322267, -84.0455586526682 9.93692719931924, -84.0455873611916 9.93685401442958, -84.0455923110153 9.93677373653686, -84.0455680674162 9.93668019604487, -84.0454482787829 9.93646480148586, -84.0453892763726 9.93636588688585, -84.0453697036442 9.93632308831075, -84.0453615303045 9.93629762770389, -84.0453532765511 9.93624652235345, -84.0453570927397 9.93618732594838, -84.0453927689936 9.93603538344972, -84.045437957483 9.93577991764324, -84.0454621421002 9.93565154581259, -84.0455294509499 9.93558482499322, -84.0456405554627 9.93533787082614, -84.0456410811815 9.9350109333037, -84.0456087998837 9.93495968412818, -84.0456196757956 9.93464858697721, -84.046294734079 9.93480225304748, -84.0470992295944 9.93495610721508, -84.047738281775 9.93514466639919, -84.048128961463 9.93527584609242, -84.0483847176419 9.93531583349863, -84.0486296483808 9.93529983825585, -84.0486491888617 9.93545520267059, -84.0488055127148 9.9354703980085, -84.0490832368349 9.93553667972237, -84.0493162487417 9.9355977604479, -84.0495918083302 9.93570243695239, -84.0496787768477 9.93571038517426, -84.0499696558076 9.93571038484225, -84.0500954158227 9.93570321714193, -84.0503419760518 9.93566700857604, -84.0506470296121 9.93560674646944, -84.0510737676674 9.93553343216217, -84.0513075140395 9.93549263100849, -84.0515459542782 9.93546272803463, -84.0516525931019 9.93544955548966, -84.0517605730299 9.93544794162221, -84.0519830595855 9.93547169143514, -84.0521081889526 9.93548892832953, -84.0521827017793 9.93550175796293)", - "has_altitude": false - } - }, - { - "model": "feed.geoshape", - "pk": 6, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "geometry": "SRID=4326;LINESTRING (-84.0452709224469 9.94651450274987, -84.0453586296957 9.9465713930344, -84.0455321860811 9.94670523135418, -84.0457428830683 9.94685977487793, -84.0458252584096 9.94692114024093, -84.045874911642 9.94699848130395, -84.0458702927366 9.94709174550324, -84.0456762984049 9.94733286724273, -84.0455816108455 9.94734992775087, -84.0454811496546 9.94731694409985, -84.0451520526366 9.94706331033958, -84.044934964086 9.94695639770921, -84.0447940381815 9.94685739750313, -84.0447120526121 9.94674934743632, -84.0446901128118 9.94663902259388, -84.0447036688627 9.94658480665502, -84.0447440842844 9.94652566341521, -84.0447956225084 9.94631063663281, -84.0448175623087 9.94607861289951, -84.0448198717614 9.94606268969643, -84.0451616705072 9.94607633849742, -84.0451794721398 9.94594816328299, -84.0452499104458 9.94587650883204, -84.0454566064596 9.94577755742257, -84.0455092507792 9.94570040854178, -84.0455392738468 9.94516698035057, -84.0455023654374 9.94508917283893, -84.045382273899 9.94505732633557, -84.0450808903258 9.94502889195332, -84.0450173803773 9.94495155042415, -84.045015769873 9.94472000465252, -84.0449868892884 9.94425679788889, -84.0449568041774 9.94389594579139, -84.0449197895004 9.9433847319748, -84.0448773383005 9.94261500079999, -84.0448390343892 9.94204155986042, -84.0448024388483 9.94137698645447, -84.0447771566035 9.94096102380372, -84.0450446175143 9.94082181962447, -84.0456053336701 9.94065523781238, -84.045634999557 9.94048314593914, -84.0452283043053 9.9403780406827, -84.04482278961 9.9402703855621, -84.0446641785108 9.94016328794055, -84.0444165990228 9.94010181117775, -84.0445263287881 9.93971666992378, -84.0446221116145 9.93932936015097, -84.0446545394456 9.93920408915902, -84.0446456512568 9.9391568243881, -84.0446159514984 9.93912509354336, -84.0445637722231 9.93911021843789, -84.0443354246074 9.93919615665697, -84.043697 9.939024, -84.0434647440871 9.9389589108528, -84.0433689657322 9.93927926961302, -84.0433251613281 9.9394214266361, -84.043078 9.939438, -84.0424704121516 9.93949676004582, -84.0423387592283 9.93950197815545, -84.042195874555 9.93950471943605, -84.0420595652431 9.93950937287681, -84.0419237588459 9.93950560510053, -84.0418526043861 9.93932694656827, -84.0416871226965 9.93916441674404, -84.0415030389796 9.93904364750639, -84.0411360631089 9.93882652989536, -84.0410711382821 9.93877761093714, -84.0410192892248 9.93872439879922, -84.0409548622543 9.93860739420377, -84.0409464827492 9.93847712489684, -84.0409847362632 9.93831748290179, -84.0410975311932 9.93790526804534, -84.0413721007657 9.93791543483811, -84.0416234000621 9.93792971313351, -84.0416214268987 9.93801943406157, -84.0416385167757 9.93808013647371, -84.0417143841426 9.9381333560273, -84.0417661717713 9.9381491692212, -84.0418402279053 9.93816498245021, -84.041955196169 9.93817110369939, -84.0420620743374 9.93816447211196, -84.042172549653 9.93814558312971, -84.0423590295751 9.93806546361139, -84.0424754995415 9.93800868895506, -84.0426277550985 9.93798455282835, -84.0429680898401 9.93793303246509, -84.0431865014681 9.93789255913571, -84.0434262188335 9.93792278510311, -84.0435140997635 9.93793612530689, -84.0436045719397 9.93796843588535, -84.0437946545471 9.93811029202329, -84.044044224914 9.93796317506452, -84.0443497474269 9.93778888741941, -84.0447040111923 9.93759056212761, -84.0449773758339 9.93743889754011, -84.0451442319336 9.93734106177819, -84.0452700748287 9.93725220134541, -84.0454232410009 9.93710383236486, -84.045480287002 9.93703302156643, -84.0455559204937 9.93692669580576, -84.0455868138288 9.93685320196694, -84.045591032246 9.93677214106483, -84.0455673986725 9.93667892839703, -84.0454873867401 9.93652937757293, -84.0454491600057 9.93646683969579, -84.0454129449283 9.93640033885562, -84.0453776127618 9.93634297166293, -84.0453623778292 9.93629576054226, -84.0453512637102 9.93624363287526, -84.0453538959122 9.9361862212533, -84.0453890269646 9.93603883510741, -84.0454308854351 9.93580414505913, -84.0454587046985 9.93565385732093, -84.0455252542674 9.93558390036268, -84.0455798539966 9.93547184500151, -84.0456377473207 9.93533906172064, -84.0456383288227 9.93501118853525, -84.0456086223286 9.93495718975151, -84.0456168978697 9.93465006354252, -84.0461340991613 9.93477095640989, -84.0468176973466 9.93490403346722, -84.0471113963055 9.93495932029753, -84.0474601236579 9.93505827498137, -84.0478899692808 9.93519897363926, -84.0481284685146 9.93527449143981, -84.0483778894022 9.93531543817006, -84.0486249437023 9.93529755715117, -84.0486430566726 9.93545425079317, -84.0488000764969 9.9354703595261, -84.0490437766179 9.9355323422866)", - "has_altitude": false - } - }, - { - "model": "feed.gtfsprovider", - "pk": 1, - "fields": { - "code": "bUCR", - "name": "bUCR", - "description": "Bus de la UCR", - "website": "https://bucr.digital", - "schedule_url": null, - "trip_updates_url": null, - "vehicle_positions_url": null, - "service_alerts_url": null, - "timezone": "America/costa_rica", - "is_active": true - } - }, - { - "model": "feed.feedinfo", - "pk": 1, - "fields": { - "feed": 1, - "feed_publisher_name": "TCU Tropicalización de la Tecnología", - "feed_publisher_url": "https://tropicalizacion.eie.ucr.ac.cr/", - "feed_lang": "es", - "feed_start_date": "2024-10-01", - "feed_end_date": "2024-12-21", - "feed_version": "v2024.2.1", - "feed_contact_email": "fabian.abarca@ucr.ac.cr" - } - }, - { - "model": "feed.feed", - "pk": 1, - "fields": { - "gtfs_provider": 1, - "http_etag": null, - "http_last_modified": "2024-07-11T00:00:00Z", - "is_current": true, - "retrieved_at": "2024-07-11T04:28:41.332Z" - } - } -] \ No newline at end of file + { + "model": "feed.agency", + "pk": 1, + "fields": { + "feed": "1", + "agency_id": "bUCR", + "agency_name": "Buses de la Universidad de Costa Rica", + "agency_url": "https://bus.ucr.ac.cr/", + "agency_timezone": "America/Costa_Rica", + "agency_lang": "es", + "agency_phone": "25112919", + "agency_fare_url": "https://bus.ucr.ac.cr/#tarifas", + "agency_email": "bus@ucr.ac.cr" + } + }, + { + "model": "feed.route", + "pk": 1, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "agency_id": "bUCR", + "route_short_name": "bUCR L1", + "route_long_name": "Bus interno UCR sin milla", + "route_desc": "Esta ruta conecta las tres fincas del Campus Universitario Rodrigo Facio en San Pedro de Montes de Oca, y no incluye la vuelta por la milla universitaria.", + "route_type": 3, + "route_url": "https://bus.ucr.ac.cr/#L1", + "route_color": "00C0F3", + "route_text_color": "FFFFFF", + "route_sort_order": null + } + }, + { + "model": "feed.route", + "pk": 2, + "fields": { + "feed": "1", + "route_id": "bUCR_L2", + "agency_id": "bUCR", + "route_short_name": "bUCR L2", + "route_long_name": "Bus interno UCR con milla", + "route_desc": "Esta ruta conecta las tres fincas del Campus Universitario Rodrigo Facio en San Pedro de Montes de Oca, e incluye la vuelta por la milla universitaria.", + "route_type": 3, + "route_url": "https://bus.ucr.ac.cr/#L2", + "route_color": "005DA4", + "route_text_color": "FFFFFF", + "route_sort_order": null + } + }, + { + "model": "feed.stop", + "pk": 1, + "fields": { + "feed": "1", + "stop_id": "bUCR_0_01", + "stop_code": "", + "stop_name": "Facultad de Educación", + "stop_desc": "Frente al jardín de la Facultad de Educación (FE)", + "stop_lat": 9.935610136323218, + "stop_lon": -84.04899295728595, + "stop_point": "SRID=4326;POINT (-84.04899295728595 9.935610136323218)", + "zone_id": "bUCR_0", + "stop_url": "", + "location_type": 0, + "parent_station": "", + "stop_timezone": "", + "wheelchair_boarding": 1, + "platform_code": "" + } + }, + { + "model": "feed.stop", + "pk": 2, + "fields": { + "feed": "1", + "stop_id": "bUCR_0_02", + "stop_code": "", + "stop_name": "Escuela de Artes Plásticas", + "stop_desc": "Nuevo edificio de la Escuela de Artes Plásticas (EAP)", + "stop_lat": 9.935501598287884, + "stop_lon": -84.05217559901489, + "stop_point": "SRID=4326;POINT (-84.05217559901489 9.935501598287884)", + "zone_id": "bUCR_0", + "stop_url": "", + "location_type": 0, + "parent_station": "", + "stop_timezone": "", + "wheelchair_boarding": 1, + "platform_code": "" + } + }, + { + "model": "feed.stop", + "pk": 3, + "fields": { + "feed": "1", + "stop_id": "bUCR_0_03", + "stop_code": "", + "stop_name": "Biblioteca de Ciencias de la Salud", + "stop_desc": "Frente al antiguo edificio de la Facultad de Odontología (FOd), diagonal al parqueo de la Biblioteca de Ciencias de la Salud", + "stop_lat": 9.93860832346218, + "stop_lon": -84.0517499001992, + "stop_point": "SRID=4326;POINT (-84.0517499001992 9.93860832346218)", + "zone_id": "bUCR_0", + "stop_url": "", + "location_type": 0, + "parent_station": "", + "stop_timezone": "", + "wheelchair_boarding": 1, + "platform_code": "" + } + }, + { + "model": "feed.stop", + "pk": 4, + "fields": { + "feed": "1", + "stop_id": "bUCR_0_04", + "stop_code": "", + "stop_name": "Facultad de Microbiología", + "stop_desc": "Esquina noreste del parqueo de las Escuelas de Artes Musicales (EAM), Química (EQ) y Biología (EB) y la Facultad de Microbiología (FMic)", + "stop_lat": 9.93832361909286, + "stop_lon": -84.04876049840074, + "stop_point": "SRID=4326;POINT (-84.04876049840074 9.93832361909286 )", + "zone_id": "bUCR_0", + "stop_url": "", + "location_type": 0, + "parent_station": "", + "stop_timezone": "", + "wheelchair_boarding": 1, + "platform_code": "" + } + }, + { + "model": "feed.stop", + "pk": 5, + "fields": { + "feed": "1", + "stop_id": "bUCR_0_05", + "stop_code": "", + "stop_name": "Laboratorio Nacional de Materiales y Modelos Estructurales (LanammeUCR)", + "stop_desc": "Junto al parqueo del Centro de Transferencia Tecnológica (CTT), diagonal al Laboratorio Nacional de Materiales y Modelos Estructurales (LANAMME)", + "stop_lat": 9.935903915437937, + "stop_lon": -84.04537504744147, + "stop_point": "SRID=4326;POINT (-84.04537504744147 9.935903915437937)", + "zone_id": "bUCR_0", + "stop_url": "", + "location_type": 0, + "parent_station": "bUCR_LA", + "stop_timezone": "", + "wheelchair_boarding": 2, + "platform_code": "" + } + }, + { + "model": "feed.stop", + "pk": 6, + "fields": { + "feed": "1", + "stop_id": "bUCR_0_06", + "stop_code": "", + "stop_name": "Facultad de Ingeniería", + "stop_desc": "Costado norte del nuevo edificio de la Facultad de Ingeniería (FI)", + "stop_lat": 9.937467311441509, + "stop_lon": -84.04467644300775, + "stop_point": "SRID=4326;POINT (-84.04467644300775 9.937467311441507)", + "zone_id": "bUCR_0", + "stop_url": "", + "location_type": 0, + "parent_station": "bUCR_FI", + "stop_timezone": "", + "wheelchair_boarding": 2, + "platform_code": "" + } + }, + { + "model": "feed.stop", + "pk": 7, + "fields": { + "feed": "1", + "stop_id": "bUCR_0_07", + "stop_code": "", + "stop_name": "Facultad de Ciencias Sociales", + "stop_desc": "Entre la Facultad de Ciencias Sociales (FCS) y el edificio de parqueos", + "stop_lat": 9.938029607676915, + "stop_lon": -84.04237892478906, + "stop_point": "SRID=4326;POINT (-84.04237892478906 9.938029607676915)", + "zone_id": "bUCR_0", + "stop_url": "", + "location_type": 0, + "parent_station": "bUCR_CS", + "stop_timezone": "", + "wheelchair_boarding": 2, + "platform_code": "" + } + }, + { + "model": "feed.stop", + "pk": 8, + "fields": { + "feed": "1", + "stop_id": "bUCR_0_08", + "stop_code": "", + "stop_name": "Instituto de Investigación en Educación (INIE)", + "stop_desc": "Costado sur del edificio del Instituto de Investigación en Educación (INIE)", + "stop_lat": 9.939451647823136, + "stop_lon": -84.04307776266035, + "stop_point": "SRID=4326;POINT (-84.04307776266035 9.939451647823137)", + "zone_id": "bUCR_0", + "stop_url": "", + "location_type": 0, + "parent_station": "", + "stop_timezone": "", + "wheelchair_boarding": 2, + "platform_code": "" + } + }, + { + "model": "feed.stop", + "pk": 9, + "fields": { + "feed": "1", + "stop_id": "bUCR_0_09", + "stop_code": "", + "stop_name": "Centro de Investigación en Cirugía y Cáncer (CICICA)", + "stop_desc": "Costado sur del edificio del Centro de Investigación en Cirugía y Cáncer (CICICA)", + "stop_lat": 9.940155168862551, + "stop_lon": -84.04450675690296, + "stop_point": "SRID=4326;POINT (-84.04450675690296 9.940155168862551)", + "zone_id": "bUCR_0", + "stop_url": "", + "location_type": 0, + "parent_station": "", + "stop_timezone": "", + "wheelchair_boarding": 2, + "platform_code": "" + } + }, + { + "model": "feed.stop", + "pk": 10, + "fields": { + "feed": "1", + "stop_id": "bUCR_0_10", + "stop_code": "", + "stop_name": "Oficina de Bienestar y Salud (OBS)", + "stop_desc": "Entre el nuevo edificio de la Oficina de Bienestar y Salud (OBS) y el Estadio Ecológico", + "stop_lat": 9.943761220391433, + "stop_lon": -84.04468346245407, + "stop_point": "SRID=4326;POINT (-84.04468346245408 9.943761220391434)", + "zone_id": "bUCR_0", + "stop_url": "", + "location_type": 0, + "parent_station": "", + "stop_timezone": "", + "wheelchair_boarding": 2, + "platform_code": "" + } + }, + { + "model": "feed.stop", + "pk": 11, + "fields": { + "feed": "1", + "stop_id": "bUCR_0_11", + "stop_code": "", + "stop_name": "Facultad de Odontología", + "stop_desc": "En el nuevo edificio de la Facultad de Odontología (FOd) en la Finca 3", + "stop_lat": 9.946441050827923, + "stop_lon": -84.0451915613564, + "stop_point": "SRID=4326;POINT (-84.0451915613564 9.946441050827925)", + "zone_id": "bUCR_0", + "stop_url": "", + "location_type": 0, + "parent_station": "", + "stop_timezone": "", + "wheelchair_boarding": 2, + "platform_code": "" + } + }, + { + "model": "feed.stop", + "pk": 12, + "fields": { + "feed": "1", + "stop_id": "bUCR_1_01", + "stop_code": "", + "stop_name": "Facultad de Odontología", + "stop_desc": "En el nuevo edificio de la Facultad de Odontología (FOd) en la Finca 3", + "stop_lat": 9.946529500847424, + "stop_lon": -84.04535458313804, + "stop_point": "SRID=4326;POINT (-84.04535458313804 9.946529500847424)", + "zone_id": "bUCR_1", + "stop_url": "", + "location_type": 0, + "parent_station": "", + "stop_timezone": "", + "wheelchair_boarding": 2, + "platform_code": "" + } + }, + { + "model": "feed.stop", + "pk": 13, + "fields": { + "feed": "1", + "stop_id": "bUCR_1_02", + "stop_code": "", + "stop_name": "Escuela de Educación Física y Deportes (EDUFI)", + "stop_desc": "Costado este de las canchas multiuso y de la Escuela de Educación Física y Deportes (EDUFI)", + "stop_lat": 9.943381444081362, + "stop_lon": -84.04495180739714, + "stop_point": "SRID=4326;POINT (-84.04495180739714 9.943381444081362)", + "zone_id": "bUCR_1", + "stop_url": "", + "location_type": 0, + "parent_station": "", + "stop_timezone": "", + "wheelchair_boarding": 2, + "platform_code": "" + } + }, + { + "model": "feed.stop", + "pk": 14, + "fields": { + "feed": "1", + "stop_id": "bUCR_1_03", + "stop_code": "", + "stop_name": "Escuela de Nutrición", + "stop_desc": "Esquina noreste del edificio de la Escuela de Nutrición (ENu)", + "stop_lat": 9.939134591559856, + "stop_lon": -84.04468654565294, + "stop_point": "SRID=4326;POINT (-84.04468654565294 9.939134591559855)", + "zone_id": "bUCR_1", + "stop_url": "", + "location_type": 0, + "parent_station": "", + "stop_timezone": "", + "wheelchair_boarding": 2, + "platform_code": "" + } + }, + { + "model": "feed.stop", + "pk": 15, + "fields": { + "feed": "1", + "stop_id": "bUCR_1_04", + "stop_code": "", + "stop_name": "Centro de Investigación en Ciencias del Mar y Limnología (CIMAR)", + "stop_desc": "Entre el edificio de parqueos y el Centro de Investigación en Ciencias del Mar y Limnología (CIMAR)", + "stop_lat": 9.938980381389706, + "stop_lon": -84.0436758508172, + "stop_point": "SRID=4326;POINT (-84.0436758508172 9.938980381389706)", + "zone_id": "bUCR_1", + "stop_url": "", + "location_type": 0, + "parent_station": "", + "stop_timezone": "", + "wheelchair_boarding": 1, + "platform_code": "" + } + }, + { + "model": "feed.stop", + "pk": 16, + "fields": { + "feed": "1", + "stop_id": "bUCR_1_05", + "stop_code": "", + "stop_name": "Centro de Investigación en Matemática Pura y Aplicada (CIMPA)", + "stop_desc": "Frente al edificio del Centro de Investigación en Matemática Pura y Aplicada (CIMPA)", + "stop_lat": 9.939472792042086, + "stop_lon": -84.042189216776, + "stop_point": "SRID=4326;POINT (-84.042189216776 9.939472792042086)", + "zone_id": "bUCR_1", + "stop_url": "", + "location_type": 0, + "parent_station": "", + "stop_timezone": "", + "wheelchair_boarding": 2, + "platform_code": "" + } + }, + { + "model": "feed.stop", + "pk": 17, + "fields": { + "feed": "1", + "stop_id": "bUCR_1_06", + "stop_code": "", + "stop_name": "Facultad de Ciencias Sociales", + "stop_desc": "Entre la Facultad de Ciencias Sociales (FCS) y el edificio de parqueos", + "stop_lat": 9.93813052902614, + "stop_lon": -84.04229551510366, + "stop_point": "SRID=4326;POINT (-84.04229551510366 9.938130529026141)", + "zone_id": "bUCR_1", + "stop_url": "", + "location_type": 0, + "parent_station": "bUCR_CS", + "stop_timezone": "", + "wheelchair_boarding": 1, + "platform_code": "" + } + }, + { + "model": "feed.stop", + "pk": 18, + "fields": { + "feed": "1", + "stop_id": "bUCR_1_07", + "stop_code": "", + "stop_name": "Facultad de Ingeniería", + "stop_desc": "Costado norte del nuevo edificio de la Facultad de Ingeniería (FI), al otro lado de la calle", + "stop_lat": 9.937468669419962, + "stop_lon": -84.04501822768842, + "stop_point": "SRID=4326;POINT (-84.04501822768842 9.937468669419962)", + "zone_id": "bUCR_1", + "stop_url": "", + "location_type": 0, + "parent_station": "bUCR_FI", + "stop_timezone": "", + "wheelchair_boarding": 1, + "platform_code": "" + } + }, + { + "model": "feed.stop", + "pk": 19, + "fields": { + "feed": "1", + "stop_id": "bUCR_1_08", + "stop_code": "", + "stop_name": "Laboratorio Nacional de Materiales y Modelos Estructurales (LanammeUCR)", + "stop_desc": "Junto al parqueo del Centro de Transferencia Tecnológica (CTT), diagonal al Laboratorio Nacional de Materiales y Modelos Estructurales (LANAMME), al otro lado de la calle", + "stop_lat": 9.93589305371453, + "stop_lon": -84.04546950911886, + "stop_point": "SRID=4326;POINT (-84.04546950911886 9.93589305371453)", + "zone_id": "bUCR_1", + "stop_url": "", + "location_type": 0, + "parent_station": "bUCR_LA", + "stop_timezone": "", + "wheelchair_boarding": 2, + "platform_code": "" + } + }, + { + "model": "feed.stop", + "pk": 20, + "fields": { + "feed": "1", + "stop_id": "bUCR_FI", + "stop_code": "", + "stop_name": "Facultad de Ingeniería", + "stop_desc": "En las inmediaciones del edificio de la Facultad de Ingeniería", + "stop_lat": 9.937467311441509, + "stop_lon": -84.04467644300775, + "stop_point": "SRID=4326;POINT (-84.04467644300775 9.937467311441507)", + "zone_id": "", + "stop_url": "", + "location_type": 1, + "parent_station": "", + "stop_timezone": "", + "wheelchair_boarding": 1, + "platform_code": "" + } + }, + { + "model": "feed.stop", + "pk": 21, + "fields": { + "feed": "1", + "stop_id": "bUCR_CS", + "stop_code": "", + "stop_name": "Facultad de Ciencias Sociales", + "stop_desc": "En las inmediaciones del edificio de la Facultad de Ciencias Sociales", + "stop_lat": 9.93813052902614, + "stop_lon": -84.04229551510366, + "stop_point": "SRID=4326;POINT (-84.04229551510366 9.938130529026141)", + "zone_id": "", + "stop_url": "", + "location_type": 1, + "parent_station": "", + "stop_timezone": "", + "wheelchair_boarding": 1, + "platform_code": "" + } + }, + { + "model": "feed.stop", + "pk": 22, + "fields": { + "feed": "1", + "stop_id": "bUCR_LA", + "stop_code": "", + "stop_name": "Laboratorio Nacional de Materiales y Modelos Estructurales (LanammeUCR)", + "stop_desc": "En las inmediaciones del Laboratorio Nacional de Materiales y Modelos Estructurales (LanammeUCR)", + "stop_lat": 9.935785141707278, + "stop_lon": -84.04544067497328, + "stop_point": "SRID=4326;POINT (-84.04544067497328 9.935785141707278)", + "zone_id": "", + "stop_url": "", + "location_type": 1, + "parent_station": "", + "stop_timezone": "", + "wheelchair_boarding": 1, + "platform_code": "" + } + }, + { + "model": "feed.trip", + "pk": 1, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_educacion_sin_milla_entresemana_06:10", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_sin_milla", + "geoshape": 1, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 2, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_educacion_sin_milla_entresemana_06:30", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_sin_milla", + "geoshape": 1, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 3, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_educacion_sin_milla_entresemana_07:00", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_sin_milla", + "geoshape": 1, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 4, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_educacion_sin_milla_entresemana_07:20", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_sin_milla", + "geoshape": 1, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 5, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_educacion_sin_milla_entresemana_07:50", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_sin_milla", + "geoshape": 1, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 6, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_educacion_sin_milla_entresemana_08:10", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_sin_milla", + "geoshape": 1, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 7, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_educacion_sin_milla_entresemana_08:55", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_sin_milla", + "geoshape": 1, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 8, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_educacion_sin_milla_entresemana_09:15", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_sin_milla", + "geoshape": 1, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 9, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_educacion_sin_milla_entresemana_09:45", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_sin_milla", + "geoshape": 1, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 10, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_educacion_sin_milla_entresemana_10:05", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_sin_milla", + "geoshape": 1, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 11, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_educacion_sin_milla_entresemana_10:35", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_sin_milla", + "geoshape": 1, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 12, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_educacion_sin_milla_entresemana_10:55", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_sin_milla", + "geoshape": 1, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 13, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_educacion_sin_milla_entresemana_11:15", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_sin_milla", + "geoshape": 1, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 14, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_educacion_sin_milla_entresemana_11:25", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_sin_milla", + "geoshape": 1, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 15, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_educacion_sin_milla_entresemana_11:40", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_sin_milla", + "geoshape": 1, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 16, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_educacion_sin_milla_entresemana_12:00", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_sin_milla", + "geoshape": 1, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 17, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_educacion_sin_milla_entresemana_12:25", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_sin_milla", + "geoshape": 1, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 18, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_educacion_sin_milla_entresemana_12:35", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_sin_milla", + "geoshape": 1, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 19, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_educacion_sin_milla_entresemana_13:10", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_sin_milla", + "geoshape": 1, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 20, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_educacion_sin_milla_entresemana_13:45", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_sin_milla", + "geoshape": 1, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 21, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_educacion_sin_milla_entresemana_14:10", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_sin_milla", + "geoshape": 1, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 22, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_educacion_sin_milla_entresemana_14:30", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_sin_milla", + "geoshape": 1, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 23, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_educacion_sin_milla_entresemana_14:55", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_sin_milla", + "geoshape": 1, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 24, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_educacion_sin_milla_entresemana_15:15", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_sin_milla", + "geoshape": 1, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 25, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_educacion_sin_milla_entresemana_15:55", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_sin_milla", + "geoshape": 1, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 26, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_educacion_sin_milla_entresemana_16:30", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_sin_milla", + "geoshape": 1, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 27, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_educacion_sin_milla_entresemana_16:55", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_sin_milla", + "geoshape": 1, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 28, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_educacion_sin_milla_entresemana_17:30", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_sin_milla", + "geoshape": 1, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 29, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_educacion_sin_milla_entresemana_17:55", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_sin_milla", + "geoshape": 1, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 30, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_educacion_sin_milla_entresemana_18:25", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_sin_milla", + "geoshape": 1, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 31, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_educacion_sin_milla_entresemana_18:50", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_sin_milla", + "geoshape": 1, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 32, + "fields": { + "feed": "1", + "route_id": "bUCR_L2", + "service_id": "entresemana", + "trip_id": "desde_educacion_con_milla_entresemana_19:15", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_con_milla", + "geoshape": 2, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 33, + "fields": { + "feed": "1", + "route_id": "bUCR_L2", + "service_id": "entresemana", + "trip_id": "desde_educacion_con_milla_entresemana_20:10", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_con_milla", + "geoshape": 2, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 34, + "fields": { + "feed": "1", + "route_id": "bUCR_L2", + "service_id": "entresemana", + "trip_id": "desde_educacion_con_milla_entresemana_20:50", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_con_milla", + "geoshape": 2, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 35, + "fields": { + "feed": "1", + "route_id": "bUCR_L2", + "service_id": "entresemana", + "trip_id": "desde_educacion_con_milla_entresemana_21:00", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_con_milla", + "geoshape": 2, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 36, + "fields": { + "feed": "1", + "route_id": "bUCR_L2", + "service_id": "entresemana", + "trip_id": "desde_educacion_con_milla_entresemana_21:35", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_con_milla", + "geoshape": 2, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 37, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_artes_sin_milla_entresemana_06:20", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_artes_sin_milla", + "geoshape": 3, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 38, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_artes_sin_milla_entresemana_06:40", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_artes_sin_milla", + "geoshape": 3, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 39, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_artes_sin_milla_entresemana_07:10", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_artes_sin_milla", + "geoshape": 3, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 40, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_artes_sin_milla_entresemana_07:30", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_artes_sin_milla", + "geoshape": 3, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 41, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_artes_sin_milla_entresemana_08:00", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_artes_sin_milla", + "geoshape": 3, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 42, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_artes_sin_milla_entresemana_08:35", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_artes_sin_milla", + "geoshape": 3, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 43, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_artes_sin_milla_entresemana_09:05", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_artes_sin_milla", + "geoshape": 3, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 44, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_artes_sin_milla_entresemana_09:25", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_artes_sin_milla", + "geoshape": 3, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 45, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_artes_sin_milla_entresemana_09:55", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_artes_sin_milla", + "geoshape": 3, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 46, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_artes_sin_milla_entresemana_10:15", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_artes_sin_milla", + "geoshape": 3, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 47, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_artes_sin_milla_entresemana_10:45", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_artes_sin_milla", + "geoshape": 3, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 48, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_artes_sin_milla_entresemana_11:05", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_artes_sin_milla", + "geoshape": 3, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 49, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_artes_sin_milla_entresemana_11:35", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_artes_sin_milla", + "geoshape": 3, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 50, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_artes_sin_milla_entresemana_11:50", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_artes_sin_milla", + "geoshape": 3, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 51, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_artes_sin_milla_entresemana_12:10", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_artes_sin_milla", + "geoshape": 3, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 52, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_artes_sin_milla_entresemana_12:30", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_artes_sin_milla", + "geoshape": 3, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 53, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_artes_sin_milla_entresemana_12:45", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_artes_sin_milla", + "geoshape": 3, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 54, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_artes_sin_milla_entresemana_13:20", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_artes_sin_milla", + "geoshape": 3, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 55, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_artes_sin_milla_entresemana_14:00", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_artes_sin_milla", + "geoshape": 3, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 56, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_artes_sin_milla_entresemana_14:20", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_artes_sin_milla", + "geoshape": 3, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 57, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_artes_sin_milla_entresemana_14:45", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_artes_sin_milla", + "geoshape": 3, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 58, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_artes_sin_milla_entresemana_15:05", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_artes_sin_milla", + "geoshape": 3, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 59, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_artes_sin_milla_entresemana_15:30", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_artes_sin_milla", + "geoshape": 3, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 60, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_artes_sin_milla_entresemana_16:05", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_artes_sin_milla", + "geoshape": 3, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 61, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_artes_sin_milla_entresemana_16:40", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_artes_sin_milla", + "geoshape": 3, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 62, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_artes_sin_milla_entresemana_17:05", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_artes_sin_milla", + "geoshape": 3, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 63, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_artes_sin_milla_entresemana_17:40", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_artes_sin_milla", + "geoshape": 3, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 64, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_artes_sin_milla_entresemana_18:05", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_artes_sin_milla", + "geoshape": 3, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 65, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_artes_sin_milla_entresemana_18:35", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_artes_sin_milla", + "geoshape": 3, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 66, + "fields": { + "feed": "1", + "route_id": "bUCR_L2", + "service_id": "entresemana", + "trip_id": "desde_artes_con_milla_entresemana_19:00", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_artes_con_milla", + "geoshape": 4, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 67, + "fields": { + "feed": "1", + "route_id": "bUCR_L2", + "service_id": "entresemana", + "trip_id": "desde_artes_con_milla_entresemana_19:35", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_artes_con_milla", + "geoshape": 4, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 68, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_artes_entresemana_06:20", + "trip_headsign": "Artes Plásticas", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_artes", + "geoshape": 5, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 69, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_educacion_entresemana_06:40", + "trip_headsign": "Educación", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_educacion", + "geoshape": 6, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 70, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_artes_entresemana_06:50", + "trip_headsign": "Artes Plásticas", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_artes", + "geoshape": 5, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 71, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_educacion_entresemana_07:00", + "trip_headsign": "Educación", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_educacion", + "geoshape": 6, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 72, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_artes_entresemana_07:10", + "trip_headsign": "Artes Plásticas", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_artes", + "geoshape": 5, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 73, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_educacion_entresemana_07:30", + "trip_headsign": "Educación", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_educacion", + "geoshape": 6, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 74, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_artes_entresemana_07:40", + "trip_headsign": "Artes Plásticas", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_artes", + "geoshape": 5, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 75, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_educacion_entresemana_07:50", + "trip_headsign": "Educación", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_educacion", + "geoshape": 6, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 76, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_artes_entresemana_08:00", + "trip_headsign": "Artes Plásticas", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_artes", + "geoshape": 5, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 77, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_educacion_entresemana_08:35", + "trip_headsign": "Educación", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_educacion", + "geoshape": 6, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 78, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_artes_entresemana_08:45", + "trip_headsign": "Artes Plásticas", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_artes", + "geoshape": 5, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 79, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_educacion_entresemana_08:55", + "trip_headsign": "Educación", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_educacion", + "geoshape": 6, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 80, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_artes_entresemana_09:05", + "trip_headsign": "Artes Plásticas", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_artes", + "geoshape": 5, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 81, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_educacion_entresemana_09:25", + "trip_headsign": "Educación", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_educacion", + "geoshape": 6, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 82, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_artes_entresemana_09:35", + "trip_headsign": "Artes Plásticas", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_artes", + "geoshape": 5, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 83, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_educacion_entresemana_09:45", + "trip_headsign": "Educación", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_educacion", + "geoshape": 6, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 84, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_artes_entresemana_09:55", + "trip_headsign": "Artes Plásticas", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_artes", + "geoshape": 5, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 85, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_educacion_entresemana_10:15", + "trip_headsign": "Educación", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_educacion", + "geoshape": 6, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 86, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_artes_entresemana_10:25", + "trip_headsign": "Artes Plásticas", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_artes", + "geoshape": 5, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 87, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_educacion_entresemana_10:35", + "trip_headsign": "Educación", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_educacion", + "geoshape": 6, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 88, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_artes_entresemana_10:45", + "trip_headsign": "Artes Plásticas", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_artes", + "geoshape": 5, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 89, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_educacion_entresemana_11:05", + "trip_headsign": "Educación", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_educacion", + "geoshape": 6, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 90, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_artes_entresemana_11:15", + "trip_headsign": "Artes Plásticas", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_artes", + "geoshape": 5, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 91, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_educacion_entresemana_11:20", + "trip_headsign": "Educación", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_educacion", + "geoshape": 6, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 92, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_artes_entresemana_11:30", + "trip_headsign": "Artes Plásticas", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_artes", + "geoshape": 5, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 93, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_educacion_entresemana_11:40", + "trip_headsign": "Educación", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_educacion", + "geoshape": 6, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 94, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_artes_entresemana_11:50", + "trip_headsign": "Artes Plásticas", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_artes", + "geoshape": 5, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 95, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_educacion_entresemana_12:05", + "trip_headsign": "Educación", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_educacion", + "geoshape": 6, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 96, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_artes_entresemana_12:10", + "trip_headsign": "Artes Plásticas", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_artes", + "geoshape": 5, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 97, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_educacion_entresemana_12:15", + "trip_headsign": "Educación", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_educacion", + "geoshape": 6, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 98, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_artes_entresemana_12:25", + "trip_headsign": "Artes Plásticas", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_artes", + "geoshape": 5, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 99, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_educacion_entresemana_12:50", + "trip_headsign": "Educación", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_educacion", + "geoshape": 6, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 100, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_artes_entresemana_13:00", + "trip_headsign": "Artes Plásticas", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_artes", + "geoshape": 5, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 101, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_educacion_entresemana_13:25", + "trip_headsign": "Educación", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_educacion", + "geoshape": 6, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 102, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_artes_entresemana_13:40", + "trip_headsign": "Artes Plásticas", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_artes", + "geoshape": 5, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 103, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_educacion_entresemana_13:50", + "trip_headsign": "Educación", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_educacion", + "geoshape": 6, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 104, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_artes_entresemana_14:00", + "trip_headsign": "Artes Plásticas", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_artes", + "geoshape": 5, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 105, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_educacion_entresemana_14:10", + "trip_headsign": "Educación", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_educacion", + "geoshape": 6, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 106, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_artes_entresemana_14:25", + "trip_headsign": "Artes Plásticas", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_artes", + "geoshape": 5, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 107, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_educacion_entresemana_14:35", + "trip_headsign": "Educación", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_educacion", + "geoshape": 6, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 108, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_artes_entresemana_14:45", + "trip_headsign": "Artes Plásticas", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_artes", + "geoshape": 5, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 109, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_educacion_entresemana_14:55", + "trip_headsign": "Educación", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_educacion", + "geoshape": 6, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 110, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_artes_entresemana_15:10", + "trip_headsign": "Artes Plásticas", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_artes", + "geoshape": 5, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 111, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_educacion_entresemana_15:20", + "trip_headsign": "Educación", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_educacion", + "geoshape": 6, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 112, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_artes_entresemana_15:30", + "trip_headsign": "Artes Plásticas", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_artes", + "geoshape": 5, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 113, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_educacion_entresemana_16:05", + "trip_headsign": "Educación", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_educacion", + "geoshape": 6, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 114, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_artes_entresemana_16:15", + "trip_headsign": "Artes Plásticas", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_artes", + "geoshape": 5, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 115, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_educacion_entresemana_16:30", + "trip_headsign": "Educación", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_educacion", + "geoshape": 6, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 116, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_artes_entresemana_16:40", + "trip_headsign": "Artes Plásticas", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_artes", + "geoshape": 5, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 117, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_educacion_entresemana_17:05", + "trip_headsign": "Educación", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_educacion", + "geoshape": 6, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 118, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_artes_entresemana_17:15", + "trip_headsign": "Artes Plásticas", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_artes", + "geoshape": 5, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 119, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_educacion_entresemana_17:30", + "trip_headsign": "Educación", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_educacion", + "geoshape": 6, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 120, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_artes_entresemana_17:40", + "trip_headsign": "Artes Plásticas", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_artes", + "geoshape": 5, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 121, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_educacion_entresemana_18:05", + "trip_headsign": "Educación", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_educacion", + "geoshape": 6, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 122, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_artes_entresemana_18:15", + "trip_headsign": "Artes Plásticas", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_artes", + "geoshape": 5, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 123, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_educacion_entresemana_18:30", + "trip_headsign": "Educación", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_educacion", + "geoshape": 6, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 124, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_artes_entresemana_18:40", + "trip_headsign": "Artes Plásticas", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_artes", + "geoshape": 5, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 125, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_educacion_entresemana_18:55", + "trip_headsign": "Educación", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_educacion", + "geoshape": 6, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 126, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_educacion_entresemana_19:15", + "trip_headsign": "Educación", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_educacion", + "geoshape": 6, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 127, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_artes_entresemana_19:50", + "trip_headsign": "Artes Plásticas", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_artes", + "geoshape": 5, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 128, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_educacion_entresemana_20:30", + "trip_headsign": "Educación", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_educacion", + "geoshape": 6, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 129, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_educacion_entresemana_20:40", + "trip_headsign": "Educación", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_educacion", + "geoshape": 6, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.trip", + "pk": 130, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_educacion_entresemana_21:15", + "trip_headsign": "Educación", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_educacion", + "geoshape": 6, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "feed.stoptime", + "pk": 1, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_06:10", + "arrival_time": "06:10:00", + "departure_time": "06:10:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 2, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_06:10", + "arrival_time": "06:18:28.582000", + "departure_time": "06:18:28.582000", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.554, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 3, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_06:10", + "arrival_time": "06:19:45.164000", + "departure_time": "06:19:45.164000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.788, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 4, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_06:10", + "arrival_time": "06:21:14.182000", + "departure_time": "06:21:14.182000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.06, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 5, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_06:10", + "arrival_time": "06:24:18.764000", + "departure_time": "06:24:18.764000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.624, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 6, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_06:10", + "arrival_time": "06:25:23.564000", + "departure_time": "06:25:23.564000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.822, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 7, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_06:10", + "arrival_time": "06:28:20.291000", + "departure_time": "06:28:20.291000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.362, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 8, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_06:10", + "arrival_time": "06:30:34.145000", + "departure_time": "06:30:34.145000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.771, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 9, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_06:30", + "arrival_time": "06:30:00", + "departure_time": "06:30:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 10, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_06:30", + "arrival_time": "06:38:28.582000", + "departure_time": "06:38:28.582000", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.554, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 11, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_06:30", + "arrival_time": "06:39:45.164000", + "departure_time": "06:39:45.164000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.788, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 12, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_06:30", + "arrival_time": "06:41:14.182000", + "departure_time": "06:41:14.182000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.06, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 13, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_06:30", + "arrival_time": "06:44:18.764000", + "departure_time": "06:44:18.764000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.624, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 14, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_06:30", + "arrival_time": "06:45:23.564000", + "departure_time": "06:45:23.564000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.822, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 15, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_06:30", + "arrival_time": "06:48:20.291000", + "departure_time": "06:48:20.291000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.362, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 16, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_06:30", + "arrival_time": "06:50:34.145000", + "departure_time": "06:50:34.145000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.771, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 17, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_07:00", + "arrival_time": "07:00:00", + "departure_time": "07:00:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 18, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_07:00", + "arrival_time": "07:08:28.582000", + "departure_time": "07:08:28.582000", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.554, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 19, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_07:00", + "arrival_time": "07:09:45.164000", + "departure_time": "07:09:45.164000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.788, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 20, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_07:00", + "arrival_time": "07:11:14.182000", + "departure_time": "07:11:14.182000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.06, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 21, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_07:00", + "arrival_time": "07:14:18.764000", + "departure_time": "07:14:18.764000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.624, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 22, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_07:00", + "arrival_time": "07:15:23.564000", + "departure_time": "07:15:23.564000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.822, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 23, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_07:00", + "arrival_time": "07:18:20.291000", + "departure_time": "07:18:20.291000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.362, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 24, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_07:00", + "arrival_time": "07:20:34.145000", + "departure_time": "07:20:34.145000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.771, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 25, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_07:20", + "arrival_time": "07:20:00", + "departure_time": "07:20:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 26, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_07:20", + "arrival_time": "07:28:28.582000", + "departure_time": "07:28:28.582000", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.554, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 27, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_07:20", + "arrival_time": "07:29:45.164000", + "departure_time": "07:29:45.164000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.788, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 28, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_07:20", + "arrival_time": "07:31:14.182000", + "departure_time": "07:31:14.182000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.06, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 29, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_07:20", + "arrival_time": "07:34:18.764000", + "departure_time": "07:34:18.764000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.624, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 30, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_07:20", + "arrival_time": "07:35:23.564000", + "departure_time": "07:35:23.564000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.822, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 31, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_07:20", + "arrival_time": "07:38:20.291000", + "departure_time": "07:38:20.291000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.362, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 32, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_07:20", + "arrival_time": "07:40:34.145000", + "departure_time": "07:40:34.145000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.771, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 33, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_07:50", + "arrival_time": "07:50:00", + "departure_time": "07:50:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 34, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_07:50", + "arrival_time": "07:58:28.582000", + "departure_time": "07:58:28.582000", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.554, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 35, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_07:50", + "arrival_time": "07:59:45.164000", + "departure_time": "07:59:45.164000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.788, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 36, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_07:50", + "arrival_time": "08:01:14.182000", + "departure_time": "08:01:14.182000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.06, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 37, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_07:50", + "arrival_time": "08:04:18.764000", + "departure_time": "08:04:18.764000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.624, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 38, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_07:50", + "arrival_time": "08:05:23.564000", + "departure_time": "08:05:23.564000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.822, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 39, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_07:50", + "arrival_time": "08:08:20.291000", + "departure_time": "08:08:20.291000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.362, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 40, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_07:50", + "arrival_time": "08:10:34.145000", + "departure_time": "08:10:34.145000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.771, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 41, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_08:10", + "arrival_time": "08:10:00", + "departure_time": "08:10:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 42, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_08:10", + "arrival_time": "08:18:28.582000", + "departure_time": "08:18:28.582000", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.554, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 43, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_08:10", + "arrival_time": "08:19:45.164000", + "departure_time": "08:19:45.164000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.788, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 44, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_08:10", + "arrival_time": "08:21:14.182000", + "departure_time": "08:21:14.182000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.06, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 45, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_08:10", + "arrival_time": "08:24:18.764000", + "departure_time": "08:24:18.764000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.624, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 46, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_08:10", + "arrival_time": "08:25:23.564000", + "departure_time": "08:25:23.564000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.822, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 47, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_08:10", + "arrival_time": "08:28:20.291000", + "departure_time": "08:28:20.291000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.362, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 48, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_08:10", + "arrival_time": "08:30:34.145000", + "departure_time": "08:30:34.145000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.771, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 49, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_08:55", + "arrival_time": "08:55:00", + "departure_time": "08:55:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 50, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_08:55", + "arrival_time": "09:03:28.582000", + "departure_time": "09:03:28.582000", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.554, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 51, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_08:55", + "arrival_time": "09:04:45.164000", + "departure_time": "09:04:45.164000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.788, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 52, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_08:55", + "arrival_time": "09:06:14.182000", + "departure_time": "09:06:14.182000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.06, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 53, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_08:55", + "arrival_time": "09:09:18.764000", + "departure_time": "09:09:18.764000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.624, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 54, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_08:55", + "arrival_time": "09:10:23.564000", + "departure_time": "09:10:23.564000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.822, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 55, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_08:55", + "arrival_time": "09:13:20.291000", + "departure_time": "09:13:20.291000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.362, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 56, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_08:55", + "arrival_time": "09:15:34.145000", + "departure_time": "09:15:34.145000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.771, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 57, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_09:15", + "arrival_time": "09:15:00", + "departure_time": "09:15:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 58, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_09:15", + "arrival_time": "09:23:28.582000", + "departure_time": "09:23:28.582000", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.554, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 59, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_09:15", + "arrival_time": "09:24:45.164000", + "departure_time": "09:24:45.164000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.788, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 60, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_09:15", + "arrival_time": "09:26:14.182000", + "departure_time": "09:26:14.182000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.06, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 61, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_09:15", + "arrival_time": "09:29:18.764000", + "departure_time": "09:29:18.764000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.624, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 62, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_09:15", + "arrival_time": "09:30:23.564000", + "departure_time": "09:30:23.564000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.822, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 63, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_09:15", + "arrival_time": "09:33:20.291000", + "departure_time": "09:33:20.291000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.362, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 64, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_09:15", + "arrival_time": "09:35:34.145000", + "departure_time": "09:35:34.145000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.771, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 65, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_09:45", + "arrival_time": "09:45:00", + "departure_time": "09:45:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 66, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_09:45", + "arrival_time": "09:53:28.582000", + "departure_time": "09:53:28.582000", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.554, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 67, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_09:45", + "arrival_time": "09:54:45.164000", + "departure_time": "09:54:45.164000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.788, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 68, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_09:45", + "arrival_time": "09:56:14.182000", + "departure_time": "09:56:14.182000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.06, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 69, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_09:45", + "arrival_time": "09:59:18.764000", + "departure_time": "09:59:18.764000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.624, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 70, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_09:45", + "arrival_time": "10:00:23.564000", + "departure_time": "10:00:23.564000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.822, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 71, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_09:45", + "arrival_time": "10:03:20.291000", + "departure_time": "10:03:20.291000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.362, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 72, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_09:45", + "arrival_time": "10:05:34.145000", + "departure_time": "10:05:34.145000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.771, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 73, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_10:05", + "arrival_time": "10:05:00", + "departure_time": "10:05:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 74, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_10:05", + "arrival_time": "10:13:28.582000", + "departure_time": "10:13:28.582000", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.554, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 75, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_10:05", + "arrival_time": "10:14:45.164000", + "departure_time": "10:14:45.164000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.788, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 76, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_10:05", + "arrival_time": "10:16:14.182000", + "departure_time": "10:16:14.182000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.06, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 77, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_10:05", + "arrival_time": "10:19:18.764000", + "departure_time": "10:19:18.764000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.624, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 78, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_10:05", + "arrival_time": "10:20:23.564000", + "departure_time": "10:20:23.564000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.822, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 79, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_10:05", + "arrival_time": "10:23:20.291000", + "departure_time": "10:23:20.291000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.362, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 80, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_10:05", + "arrival_time": "10:25:34.145000", + "departure_time": "10:25:34.145000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.771, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 81, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_10:35", + "arrival_time": "10:35:00", + "departure_time": "10:35:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 82, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_10:35", + "arrival_time": "10:43:28.582000", + "departure_time": "10:43:28.582000", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.554, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 83, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_10:35", + "arrival_time": "10:44:45.164000", + "departure_time": "10:44:45.164000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.788, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 84, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_10:35", + "arrival_time": "10:46:14.182000", + "departure_time": "10:46:14.182000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.06, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 85, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_10:35", + "arrival_time": "10:49:18.764000", + "departure_time": "10:49:18.764000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.624, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 86, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_10:35", + "arrival_time": "10:50:23.564000", + "departure_time": "10:50:23.564000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.822, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 87, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_10:35", + "arrival_time": "10:53:20.291000", + "departure_time": "10:53:20.291000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.362, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 88, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_10:35", + "arrival_time": "10:55:34.145000", + "departure_time": "10:55:34.145000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.771, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 89, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_10:55", + "arrival_time": "10:55:00", + "departure_time": "10:55:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 90, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_10:55", + "arrival_time": "11:03:28.582000", + "departure_time": "11:03:28.582000", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.554, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 91, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_10:55", + "arrival_time": "11:04:45.164000", + "departure_time": "11:04:45.164000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.788, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 92, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_10:55", + "arrival_time": "11:06:14.182000", + "departure_time": "11:06:14.182000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.06, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 93, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_10:55", + "arrival_time": "11:09:18.764000", + "departure_time": "11:09:18.764000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.624, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 94, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_10:55", + "arrival_time": "11:10:23.564000", + "departure_time": "11:10:23.564000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.822, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 95, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_10:55", + "arrival_time": "11:13:20.291000", + "departure_time": "11:13:20.291000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.362, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 96, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_10:55", + "arrival_time": "11:15:34.145000", + "departure_time": "11:15:34.145000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.771, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 97, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_11:15", + "arrival_time": "11:15:00", + "departure_time": "11:15:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 98, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_11:15", + "arrival_time": "11:23:28.582000", + "departure_time": "11:23:28.582000", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.554, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 99, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_11:15", + "arrival_time": "11:24:45.164000", + "departure_time": "11:24:45.164000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.788, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 100, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_11:15", + "arrival_time": "11:26:14.182000", + "departure_time": "11:26:14.182000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.06, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 101, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_11:15", + "arrival_time": "11:29:18.764000", + "departure_time": "11:29:18.764000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.624, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 102, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_11:15", + "arrival_time": "11:30:23.564000", + "departure_time": "11:30:23.564000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.822, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 103, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_11:15", + "arrival_time": "11:33:20.291000", + "departure_time": "11:33:20.291000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.362, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 104, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_11:15", + "arrival_time": "11:35:34.145000", + "departure_time": "11:35:34.145000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.771, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 105, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_11:25", + "arrival_time": "11:25:00", + "departure_time": "11:25:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 106, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_11:25", + "arrival_time": "11:33:28.582000", + "departure_time": "11:33:28.582000", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.554, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 107, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_11:25", + "arrival_time": "11:34:45.164000", + "departure_time": "11:34:45.164000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.788, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 108, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_11:25", + "arrival_time": "11:36:14.182000", + "departure_time": "11:36:14.182000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.06, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 109, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_11:25", + "arrival_time": "11:39:18.764000", + "departure_time": "11:39:18.764000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.624, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 110, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_11:25", + "arrival_time": "11:40:23.564000", + "departure_time": "11:40:23.564000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.822, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 111, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_11:25", + "arrival_time": "11:43:20.291000", + "departure_time": "11:43:20.291000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.362, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 112, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_11:25", + "arrival_time": "11:45:34.145000", + "departure_time": "11:45:34.145000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.771, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 113, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_11:40", + "arrival_time": "11:40:00", + "departure_time": "11:40:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 114, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_11:40", + "arrival_time": "11:48:28.582000", + "departure_time": "11:48:28.582000", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.554, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 115, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_11:40", + "arrival_time": "11:49:45.164000", + "departure_time": "11:49:45.164000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.788, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 116, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_11:40", + "arrival_time": "11:51:14.182000", + "departure_time": "11:51:14.182000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.06, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 117, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_11:40", + "arrival_time": "11:54:18.764000", + "departure_time": "11:54:18.764000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.624, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 118, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_11:40", + "arrival_time": "11:55:23.564000", + "departure_time": "11:55:23.564000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.822, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 119, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_11:40", + "arrival_time": "11:58:20.291000", + "departure_time": "11:58:20.291000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.362, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 120, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_11:40", + "arrival_time": "12:00:34.145000", + "departure_time": "12:00:34.145000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.771, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 121, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_12:00", + "arrival_time": "12:00:00", + "departure_time": "12:00:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 122, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_12:00", + "arrival_time": "12:08:28.582000", + "departure_time": "12:08:28.582000", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.554, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 123, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_12:00", + "arrival_time": "12:09:45.164000", + "departure_time": "12:09:45.164000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.788, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 124, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_12:00", + "arrival_time": "12:11:14.182000", + "departure_time": "12:11:14.182000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.06, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 125, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_12:00", + "arrival_time": "12:14:18.764000", + "departure_time": "12:14:18.764000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.624, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 126, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_12:00", + "arrival_time": "12:15:23.564000", + "departure_time": "12:15:23.564000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.822, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 127, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_12:00", + "arrival_time": "12:18:20.291000", + "departure_time": "12:18:20.291000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.362, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 128, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_12:00", + "arrival_time": "12:20:34.145000", + "departure_time": "12:20:34.145000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.771, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 129, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_12:25", + "arrival_time": "12:25:00", + "departure_time": "12:25:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 130, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_12:25", + "arrival_time": "12:33:28.582000", + "departure_time": "12:33:28.582000", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.554, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 131, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_12:25", + "arrival_time": "12:34:45.164000", + "departure_time": "12:34:45.164000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.788, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 132, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_12:25", + "arrival_time": "12:36:14.182000", + "departure_time": "12:36:14.182000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.06, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 133, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_12:25", + "arrival_time": "12:39:18.764000", + "departure_time": "12:39:18.764000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.624, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 134, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_12:25", + "arrival_time": "12:40:23.564000", + "departure_time": "12:40:23.564000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.822, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 135, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_12:25", + "arrival_time": "12:43:20.291000", + "departure_time": "12:43:20.291000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.362, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 136, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_12:25", + "arrival_time": "12:45:34.145000", + "departure_time": "12:45:34.145000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.771, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 137, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_12:35", + "arrival_time": "12:35:00", + "departure_time": "12:35:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 138, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_12:35", + "arrival_time": "12:43:28.582000", + "departure_time": "12:43:28.582000", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.554, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 139, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_12:35", + "arrival_time": "12:44:45.164000", + "departure_time": "12:44:45.164000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.788, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 140, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_12:35", + "arrival_time": "12:46:14.182000", + "departure_time": "12:46:14.182000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.06, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 141, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_12:35", + "arrival_time": "12:49:18.764000", + "departure_time": "12:49:18.764000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.624, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 142, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_12:35", + "arrival_time": "12:50:23.564000", + "departure_time": "12:50:23.564000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.822, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 143, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_12:35", + "arrival_time": "12:53:20.291000", + "departure_time": "12:53:20.291000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.362, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 144, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_12:35", + "arrival_time": "12:55:34.145000", + "departure_time": "12:55:34.145000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.771, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 145, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_13:10", + "arrival_time": "13:10:00", + "departure_time": "13:10:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 146, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_13:10", + "arrival_time": "13:18:28.582000", + "departure_time": "13:18:28.582000", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.554, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 147, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_13:10", + "arrival_time": "13:19:45.164000", + "departure_time": "13:19:45.164000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.788, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 148, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_13:10", + "arrival_time": "13:21:14.182000", + "departure_time": "13:21:14.182000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.06, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 149, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_13:10", + "arrival_time": "13:24:18.764000", + "departure_time": "13:24:18.764000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.624, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 150, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_13:10", + "arrival_time": "13:25:23.564000", + "departure_time": "13:25:23.564000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.822, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 151, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_13:10", + "arrival_time": "13:28:20.291000", + "departure_time": "13:28:20.291000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.362, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 152, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_13:10", + "arrival_time": "13:30:34.145000", + "departure_time": "13:30:34.145000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.771, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 153, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_13:45", + "arrival_time": "13:45:00", + "departure_time": "13:45:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 154, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_13:45", + "arrival_time": "13:53:28.582000", + "departure_time": "13:53:28.582000", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.554, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 155, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_13:45", + "arrival_time": "13:54:45.164000", + "departure_time": "13:54:45.164000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.788, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 156, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_13:45", + "arrival_time": "13:56:14.182000", + "departure_time": "13:56:14.182000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.06, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 157, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_13:45", + "arrival_time": "13:59:18.764000", + "departure_time": "13:59:18.764000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.624, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 158, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_13:45", + "arrival_time": "14:00:23.564000", + "departure_time": "14:00:23.564000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.822, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 159, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_13:45", + "arrival_time": "14:03:20.291000", + "departure_time": "14:03:20.291000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.362, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 160, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_13:45", + "arrival_time": "14:05:34.145000", + "departure_time": "14:05:34.145000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.771, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 161, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_14:10", + "arrival_time": "14:10:00", + "departure_time": "14:10:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 162, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_14:10", + "arrival_time": "14:18:28.582000", + "departure_time": "14:18:28.582000", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.554, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 163, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_14:10", + "arrival_time": "14:19:45.164000", + "departure_time": "14:19:45.164000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.788, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 164, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_14:10", + "arrival_time": "14:21:14.182000", + "departure_time": "14:21:14.182000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.06, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 165, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_14:10", + "arrival_time": "14:24:18.764000", + "departure_time": "14:24:18.764000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.624, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 166, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_14:10", + "arrival_time": "14:25:23.564000", + "departure_time": "14:25:23.564000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.822, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 167, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_14:10", + "arrival_time": "14:28:20.291000", + "departure_time": "14:28:20.291000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.362, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 168, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_14:10", + "arrival_time": "14:30:34.145000", + "departure_time": "14:30:34.145000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.771, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 169, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_14:30", + "arrival_time": "14:30:00", + "departure_time": "14:30:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 170, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_14:30", + "arrival_time": "14:38:28.582000", + "departure_time": "14:38:28.582000", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.554, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 171, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_14:30", + "arrival_time": "14:39:45.164000", + "departure_time": "14:39:45.164000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.788, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 172, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_14:30", + "arrival_time": "14:41:14.182000", + "departure_time": "14:41:14.182000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.06, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 173, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_14:30", + "arrival_time": "14:44:18.764000", + "departure_time": "14:44:18.764000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.624, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 174, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_14:30", + "arrival_time": "14:45:23.564000", + "departure_time": "14:45:23.564000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.822, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 175, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_14:30", + "arrival_time": "14:48:20.291000", + "departure_time": "14:48:20.291000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.362, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 176, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_14:30", + "arrival_time": "14:50:34.145000", + "departure_time": "14:50:34.145000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.771, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 177, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_14:55", + "arrival_time": "14:55:00", + "departure_time": "14:55:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 178, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_14:55", + "arrival_time": "15:03:28.582000", + "departure_time": "15:03:28.582000", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.554, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 179, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_14:55", + "arrival_time": "15:04:45.164000", + "departure_time": "15:04:45.164000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.788, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 180, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_14:55", + "arrival_time": "15:06:14.182000", + "departure_time": "15:06:14.182000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.06, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 181, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_14:55", + "arrival_time": "15:09:18.764000", + "departure_time": "15:09:18.764000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.624, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 182, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_14:55", + "arrival_time": "15:10:23.564000", + "departure_time": "15:10:23.564000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.822, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 183, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_14:55", + "arrival_time": "15:13:20.291000", + "departure_time": "15:13:20.291000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.362, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 184, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_14:55", + "arrival_time": "15:15:34.145000", + "departure_time": "15:15:34.145000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.771, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 185, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_15:15", + "arrival_time": "15:15:00", + "departure_time": "15:15:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 186, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_15:15", + "arrival_time": "15:23:28.582000", + "departure_time": "15:23:28.582000", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.554, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 187, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_15:15", + "arrival_time": "15:24:45.164000", + "departure_time": "15:24:45.164000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.788, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 188, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_15:15", + "arrival_time": "15:26:14.182000", + "departure_time": "15:26:14.182000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.06, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 189, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_15:15", + "arrival_time": "15:29:18.764000", + "departure_time": "15:29:18.764000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.624, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 190, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_15:15", + "arrival_time": "15:30:23.564000", + "departure_time": "15:30:23.564000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.822, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 191, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_15:15", + "arrival_time": "15:33:20.291000", + "departure_time": "15:33:20.291000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.362, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 192, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_15:15", + "arrival_time": "15:35:34.145000", + "departure_time": "15:35:34.145000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.771, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 193, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_15:55", + "arrival_time": "15:55:00", + "departure_time": "15:55:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 194, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_15:55", + "arrival_time": "16:03:28.582000", + "departure_time": "16:03:28.582000", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.554, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 195, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_15:55", + "arrival_time": "16:04:45.164000", + "departure_time": "16:04:45.164000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.788, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 196, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_15:55", + "arrival_time": "16:06:14.182000", + "departure_time": "16:06:14.182000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.06, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 197, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_15:55", + "arrival_time": "16:09:18.764000", + "departure_time": "16:09:18.764000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.624, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 198, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_15:55", + "arrival_time": "16:10:23.564000", + "departure_time": "16:10:23.564000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.822, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 199, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_15:55", + "arrival_time": "16:13:20.291000", + "departure_time": "16:13:20.291000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.362, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 200, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_15:55", + "arrival_time": "16:15:34.145000", + "departure_time": "16:15:34.145000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.771, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 201, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_16:30", + "arrival_time": "16:30:00", + "departure_time": "16:30:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 202, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_16:30", + "arrival_time": "16:38:28.582000", + "departure_time": "16:38:28.582000", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.554, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 203, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_16:30", + "arrival_time": "16:39:45.164000", + "departure_time": "16:39:45.164000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.788, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 204, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_16:30", + "arrival_time": "16:41:14.182000", + "departure_time": "16:41:14.182000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.06, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 205, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_16:30", + "arrival_time": "16:44:18.764000", + "departure_time": "16:44:18.764000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.624, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 206, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_16:30", + "arrival_time": "16:45:23.564000", + "departure_time": "16:45:23.564000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.822, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 207, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_16:30", + "arrival_time": "16:48:20.291000", + "departure_time": "16:48:20.291000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.362, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 208, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_16:30", + "arrival_time": "16:50:34.145000", + "departure_time": "16:50:34.145000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.771, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 209, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_16:55", + "arrival_time": "16:55:00", + "departure_time": "16:55:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 210, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_16:55", + "arrival_time": "17:03:28.582000", + "departure_time": "17:03:28.582000", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.554, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 211, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_16:55", + "arrival_time": "17:04:45.164000", + "departure_time": "17:04:45.164000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.788, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 212, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_16:55", + "arrival_time": "17:06:14.182000", + "departure_time": "17:06:14.182000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.06, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 213, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_16:55", + "arrival_time": "17:09:18.764000", + "departure_time": "17:09:18.764000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.624, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 214, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_16:55", + "arrival_time": "17:10:23.564000", + "departure_time": "17:10:23.564000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.822, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 215, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_16:55", + "arrival_time": "17:13:20.291000", + "departure_time": "17:13:20.291000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.362, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 216, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_16:55", + "arrival_time": "17:15:34.145000", + "departure_time": "17:15:34.145000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.771, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 217, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_17:30", + "arrival_time": "17:30:00", + "departure_time": "17:30:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 218, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_17:30", + "arrival_time": "17:38:28.582000", + "departure_time": "17:38:28.582000", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.554, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 219, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_17:30", + "arrival_time": "17:39:45.164000", + "departure_time": "17:39:45.164000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.788, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 220, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_17:30", + "arrival_time": "17:41:14.182000", + "departure_time": "17:41:14.182000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.06, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 221, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_17:30", + "arrival_time": "17:44:18.764000", + "departure_time": "17:44:18.764000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.624, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 222, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_17:30", + "arrival_time": "17:45:23.564000", + "departure_time": "17:45:23.564000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.822, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 223, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_17:30", + "arrival_time": "17:48:20.291000", + "departure_time": "17:48:20.291000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.362, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 224, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_17:30", + "arrival_time": "17:50:34.145000", + "departure_time": "17:50:34.145000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.771, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 225, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_17:55", + "arrival_time": "17:55:00", + "departure_time": "17:55:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 226, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_17:55", + "arrival_time": "18:03:28.582000", + "departure_time": "18:03:28.582000", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.554, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 227, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_17:55", + "arrival_time": "18:04:45.164000", + "departure_time": "18:04:45.164000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.788, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 228, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_17:55", + "arrival_time": "18:06:14.182000", + "departure_time": "18:06:14.182000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.06, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 229, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_17:55", + "arrival_time": "18:09:18.764000", + "departure_time": "18:09:18.764000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.624, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 230, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_17:55", + "arrival_time": "18:10:23.564000", + "departure_time": "18:10:23.564000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.822, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 231, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_17:55", + "arrival_time": "18:13:20.291000", + "departure_time": "18:13:20.291000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.362, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 232, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_17:55", + "arrival_time": "18:15:34.145000", + "departure_time": "18:15:34.145000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.771, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 233, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_18:25", + "arrival_time": "18:25:00", + "departure_time": "18:25:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 234, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_18:25", + "arrival_time": "18:33:28.582000", + "departure_time": "18:33:28.582000", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.554, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 235, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_18:25", + "arrival_time": "18:34:45.164000", + "departure_time": "18:34:45.164000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.788, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 236, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_18:25", + "arrival_time": "18:36:14.182000", + "departure_time": "18:36:14.182000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.06, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 237, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_18:25", + "arrival_time": "18:39:18.764000", + "departure_time": "18:39:18.764000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.624, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 238, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_18:25", + "arrival_time": "18:40:23.564000", + "departure_time": "18:40:23.564000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.822, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 239, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_18:25", + "arrival_time": "18:43:20.291000", + "departure_time": "18:43:20.291000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.362, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 240, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_18:25", + "arrival_time": "18:45:34.145000", + "departure_time": "18:45:34.145000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.771, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 241, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_18:50", + "arrival_time": "18:50:00", + "departure_time": "18:50:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 242, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_18:50", + "arrival_time": "18:58:28.582000", + "departure_time": "18:58:28.582000", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.554, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 243, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_18:50", + "arrival_time": "18:59:45.164000", + "departure_time": "18:59:45.164000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.788, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 244, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_18:50", + "arrival_time": "19:01:14.182000", + "departure_time": "19:01:14.182000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.06, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 245, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_18:50", + "arrival_time": "19:04:18.764000", + "departure_time": "19:04:18.764000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.624, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 246, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_18:50", + "arrival_time": "19:05:23.564000", + "departure_time": "19:05:23.564000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.822, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 247, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_18:50", + "arrival_time": "19:08:20.291000", + "departure_time": "19:08:20.291000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.362, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 248, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_18:50", + "arrival_time": "19:10:34.145000", + "departure_time": "19:10:34.145000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.771, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 249, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_19:15", + "arrival_time": "19:15:00", + "departure_time": "19:15:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 250, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_19:15", + "arrival_time": "19:19:22.473000", + "departure_time": "19:19:22.473000", + "stop_id": "bUCR_0_03", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.802, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 251, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_19:15", + "arrival_time": "19:21:20.945000", + "departure_time": "19:21:20.945000", + "stop_id": "bUCR_0_04", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.164, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 252, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_19:15", + "arrival_time": "19:26:19.418000", + "departure_time": "19:26:19.418000", + "stop_id": "bUCR_0_05", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.076, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 253, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_19:15", + "arrival_time": "19:27:36.655000", + "departure_time": "19:27:36.655000", + "stop_id": "bUCR_0_06", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.312, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 254, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_19:15", + "arrival_time": "19:29:13.200000", + "departure_time": "19:29:13.200000", + "stop_id": "bUCR_0_07", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.607, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 255, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_19:15", + "arrival_time": "19:32:05.673000", + "departure_time": "19:32:05.673000", + "stop_id": "bUCR_0_08", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.134, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 256, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_19:15", + "arrival_time": "19:33:10.473000", + "departure_time": "19:33:10.473000", + "stop_id": "bUCR_0_09", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.332, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 257, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_19:15", + "arrival_time": "19:36:00.982000", + "departure_time": "19:36:00.982000", + "stop_id": "bUCR_0_10", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.853, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 258, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_19:15", + "arrival_time": "19:38:21.055000", + "departure_time": "19:38:21.055000", + "stop_id": "bUCR_0_11", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 4.281, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 259, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_20:10", + "arrival_time": "20:10:00", + "departure_time": "20:10:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 260, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_20:10", + "arrival_time": "20:14:22.473000", + "departure_time": "20:14:22.473000", + "stop_id": "bUCR_0_03", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.802, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 261, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_20:10", + "arrival_time": "20:16:20.945000", + "departure_time": "20:16:20.945000", + "stop_id": "bUCR_0_04", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.164, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 262, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_20:10", + "arrival_time": "20:21:19.418000", + "departure_time": "20:21:19.418000", + "stop_id": "bUCR_0_05", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.076, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 263, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_20:10", + "arrival_time": "20:22:36.655000", + "departure_time": "20:22:36.655000", + "stop_id": "bUCR_0_06", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.312, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 264, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_20:10", + "arrival_time": "20:24:13.200000", + "departure_time": "20:24:13.200000", + "stop_id": "bUCR_0_07", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.607, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 265, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_20:10", + "arrival_time": "20:27:05.673000", + "departure_time": "20:27:05.673000", + "stop_id": "bUCR_0_08", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.134, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 266, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_20:10", + "arrival_time": "20:28:10.473000", + "departure_time": "20:28:10.473000", + "stop_id": "bUCR_0_09", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.332, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 267, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_20:10", + "arrival_time": "20:31:00.982000", + "departure_time": "20:31:00.982000", + "stop_id": "bUCR_0_10", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.853, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 268, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_20:10", + "arrival_time": "20:33:21.055000", + "departure_time": "20:33:21.055000", + "stop_id": "bUCR_0_11", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 4.281, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 269, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_20:50", + "arrival_time": "20:50:00", + "departure_time": "20:50:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 270, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_20:50", + "arrival_time": "20:54:22.473000", + "departure_time": "20:54:22.473000", + "stop_id": "bUCR_0_03", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.802, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 271, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_20:50", + "arrival_time": "20:56:20.945000", + "departure_time": "20:56:20.945000", + "stop_id": "bUCR_0_04", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.164, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 272, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_20:50", + "arrival_time": "21:01:19.418000", + "departure_time": "21:01:19.418000", + "stop_id": "bUCR_0_05", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.076, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 273, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_20:50", + "arrival_time": "21:02:36.655000", + "departure_time": "21:02:36.655000", + "stop_id": "bUCR_0_06", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.312, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 274, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_20:50", + "arrival_time": "21:04:13.200000", + "departure_time": "21:04:13.200000", + "stop_id": "bUCR_0_07", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.607, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 275, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_20:50", + "arrival_time": "21:07:05.673000", + "departure_time": "21:07:05.673000", + "stop_id": "bUCR_0_08", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.134, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 276, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_20:50", + "arrival_time": "21:08:10.473000", + "departure_time": "21:08:10.473000", + "stop_id": "bUCR_0_09", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.332, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 277, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_20:50", + "arrival_time": "21:11:00.982000", + "departure_time": "21:11:00.982000", + "stop_id": "bUCR_0_10", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.853, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 278, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_20:50", + "arrival_time": "21:13:21.055000", + "departure_time": "21:13:21.055000", + "stop_id": "bUCR_0_11", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 4.281, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 279, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_21:00", + "arrival_time": "21:00:00", + "departure_time": "21:00:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 280, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_21:00", + "arrival_time": "21:04:22.473000", + "departure_time": "21:04:22.473000", + "stop_id": "bUCR_0_03", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.802, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 281, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_21:00", + "arrival_time": "21:06:20.945000", + "departure_time": "21:06:20.945000", + "stop_id": "bUCR_0_04", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.164, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 282, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_21:00", + "arrival_time": "21:11:19.418000", + "departure_time": "21:11:19.418000", + "stop_id": "bUCR_0_05", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.076, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 283, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_21:00", + "arrival_time": "21:12:36.655000", + "departure_time": "21:12:36.655000", + "stop_id": "bUCR_0_06", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.312, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 284, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_21:00", + "arrival_time": "21:14:13.200000", + "departure_time": "21:14:13.200000", + "stop_id": "bUCR_0_07", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.607, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 285, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_21:00", + "arrival_time": "21:17:05.673000", + "departure_time": "21:17:05.673000", + "stop_id": "bUCR_0_08", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.134, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 286, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_21:00", + "arrival_time": "21:18:10.473000", + "departure_time": "21:18:10.473000", + "stop_id": "bUCR_0_09", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.332, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 287, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_21:00", + "arrival_time": "21:21:00.982000", + "departure_time": "21:21:00.982000", + "stop_id": "bUCR_0_10", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.853, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 288, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_21:00", + "arrival_time": "21:23:21.055000", + "departure_time": "21:23:21.055000", + "stop_id": "bUCR_0_11", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 4.281, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 289, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_21:35", + "arrival_time": "21:35:00", + "departure_time": "21:35:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 290, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_21:35", + "arrival_time": "21:39:22.473000", + "departure_time": "21:39:22.473000", + "stop_id": "bUCR_0_03", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.802, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 291, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_21:35", + "arrival_time": "21:41:20.945000", + "departure_time": "21:41:20.945000", + "stop_id": "bUCR_0_04", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.164, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 292, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_21:35", + "arrival_time": "21:46:19.418000", + "departure_time": "21:46:19.418000", + "stop_id": "bUCR_0_05", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.076, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 293, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_21:35", + "arrival_time": "21:47:36.655000", + "departure_time": "21:47:36.655000", + "stop_id": "bUCR_0_06", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.312, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 294, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_21:35", + "arrival_time": "21:49:13.200000", + "departure_time": "21:49:13.200000", + "stop_id": "bUCR_0_07", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.607, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 295, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_21:35", + "arrival_time": "21:52:05.673000", + "departure_time": "21:52:05.673000", + "stop_id": "bUCR_0_08", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.134, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 296, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_21:35", + "arrival_time": "21:53:10.473000", + "departure_time": "21:53:10.473000", + "stop_id": "bUCR_0_09", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.332, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 297, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_21:35", + "arrival_time": "21:56:00.982000", + "departure_time": "21:56:00.982000", + "stop_id": "bUCR_0_10", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.853, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 298, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_21:35", + "arrival_time": "21:58:21.055000", + "departure_time": "21:58:21.055000", + "stop_id": "bUCR_0_11", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 4.281, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 299, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_06:20", + "arrival_time": "06:20:00", + "departure_time": "06:20:00", + "stop_id": "bUCR_0_02", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 300, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_06:20", + "arrival_time": "06:26:36", + "departure_time": "06:26:36", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.21, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 301, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_06:20", + "arrival_time": "06:27:54.218000", + "departure_time": "06:27:54.218000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.449, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 302, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_06:20", + "arrival_time": "06:29:32.400000", + "departure_time": "06:29:32.400000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.749, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 303, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_06:20", + "arrival_time": "06:32:24.545000", + "departure_time": "06:32:24.545000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.275, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 304, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_06:20", + "arrival_time": "06:33:29.345000", + "departure_time": "06:33:29.345000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.473, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 305, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_06:20", + "arrival_time": "06:36:13.964000", + "departure_time": "06:36:13.964000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.976, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 306, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_06:20", + "arrival_time": "06:38:40.255000", + "departure_time": "06:38:40.255000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.423, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 307, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_06:40", + "arrival_time": "06:40:00", + "departure_time": "06:40:00", + "stop_id": "bUCR_0_02", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 308, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_06:40", + "arrival_time": "06:46:36", + "departure_time": "06:46:36", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.21, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 309, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_06:40", + "arrival_time": "06:47:54.218000", + "departure_time": "06:47:54.218000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.449, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 310, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_06:40", + "arrival_time": "06:49:32.400000", + "departure_time": "06:49:32.400000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.749, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 311, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_06:40", + "arrival_time": "06:52:24.545000", + "departure_time": "06:52:24.545000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.275, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 312, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_06:40", + "arrival_time": "06:53:29.345000", + "departure_time": "06:53:29.345000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.473, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 313, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_06:40", + "arrival_time": "06:56:13.964000", + "departure_time": "06:56:13.964000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.976, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 314, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_06:40", + "arrival_time": "06:58:40.255000", + "departure_time": "06:58:40.255000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.423, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 315, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_07:10", + "arrival_time": "07:10:00", + "departure_time": "07:10:00", + "stop_id": "bUCR_0_02", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 316, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_07:10", + "arrival_time": "07:16:36", + "departure_time": "07:16:36", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.21, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 317, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_07:10", + "arrival_time": "07:17:54.218000", + "departure_time": "07:17:54.218000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.449, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 318, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_07:10", + "arrival_time": "07:19:32.400000", + "departure_time": "07:19:32.400000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.749, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 319, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_07:10", + "arrival_time": "07:22:24.545000", + "departure_time": "07:22:24.545000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.275, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 320, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_07:10", + "arrival_time": "07:23:29.345000", + "departure_time": "07:23:29.345000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.473, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 321, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_07:10", + "arrival_time": "07:26:13.964000", + "departure_time": "07:26:13.964000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.976, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 322, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_07:10", + "arrival_time": "07:28:40.255000", + "departure_time": "07:28:40.255000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.423, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 323, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_07:30", + "arrival_time": "07:30:00", + "departure_time": "07:30:00", + "stop_id": "bUCR_0_02", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 324, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_07:30", + "arrival_time": "07:36:36", + "departure_time": "07:36:36", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.21, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 325, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_07:30", + "arrival_time": "07:37:54.218000", + "departure_time": "07:37:54.218000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.449, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 326, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_07:30", + "arrival_time": "07:39:32.400000", + "departure_time": "07:39:32.400000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.749, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 327, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_07:30", + "arrival_time": "07:42:24.545000", + "departure_time": "07:42:24.545000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.275, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 328, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_07:30", + "arrival_time": "07:43:29.345000", + "departure_time": "07:43:29.345000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.473, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 329, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_07:30", + "arrival_time": "07:46:13.964000", + "departure_time": "07:46:13.964000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.976, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 330, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_07:30", + "arrival_time": "07:48:40.255000", + "departure_time": "07:48:40.255000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.423, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 331, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_08:00", + "arrival_time": "08:00:00", + "departure_time": "08:00:00", + "stop_id": "bUCR_0_02", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 332, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_08:00", + "arrival_time": "08:06:36", + "departure_time": "08:06:36", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.21, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 333, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_08:00", + "arrival_time": "08:07:54.218000", + "departure_time": "08:07:54.218000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.449, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 334, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_08:00", + "arrival_time": "08:09:32.400000", + "departure_time": "08:09:32.400000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.749, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 335, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_08:00", + "arrival_time": "08:12:24.545000", + "departure_time": "08:12:24.545000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.275, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 336, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_08:00", + "arrival_time": "08:13:29.345000", + "departure_time": "08:13:29.345000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.473, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 337, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_08:00", + "arrival_time": "08:16:13.964000", + "departure_time": "08:16:13.964000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.976, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 338, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_08:00", + "arrival_time": "08:18:40.255000", + "departure_time": "08:18:40.255000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.423, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 339, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_08:35", + "arrival_time": "08:35:00", + "departure_time": "08:35:00", + "stop_id": "bUCR_0_02", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 340, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_08:35", + "arrival_time": "08:41:36", + "departure_time": "08:41:36", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.21, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 341, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_08:35", + "arrival_time": "08:42:54.218000", + "departure_time": "08:42:54.218000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.449, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 342, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_08:35", + "arrival_time": "08:44:32.400000", + "departure_time": "08:44:32.400000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.749, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 343, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_08:35", + "arrival_time": "08:47:24.545000", + "departure_time": "08:47:24.545000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.275, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 344, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_08:35", + "arrival_time": "08:48:29.345000", + "departure_time": "08:48:29.345000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.473, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 345, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_08:35", + "arrival_time": "08:51:13.964000", + "departure_time": "08:51:13.964000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.976, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 346, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_08:35", + "arrival_time": "08:53:40.255000", + "departure_time": "08:53:40.255000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.423, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 347, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_09:05", + "arrival_time": "09:05:00", + "departure_time": "09:05:00", + "stop_id": "bUCR_0_02", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 348, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_09:05", + "arrival_time": "09:11:36", + "departure_time": "09:11:36", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.21, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 349, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_09:05", + "arrival_time": "09:12:54.218000", + "departure_time": "09:12:54.218000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.449, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 350, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_09:05", + "arrival_time": "09:14:32.400000", + "departure_time": "09:14:32.400000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.749, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 351, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_09:05", + "arrival_time": "09:17:24.545000", + "departure_time": "09:17:24.545000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.275, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 352, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_09:05", + "arrival_time": "09:18:29.345000", + "departure_time": "09:18:29.345000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.473, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 353, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_09:05", + "arrival_time": "09:21:13.964000", + "departure_time": "09:21:13.964000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.976, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 354, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_09:05", + "arrival_time": "09:23:40.255000", + "departure_time": "09:23:40.255000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.423, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 355, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_09:25", + "arrival_time": "09:25:00", + "departure_time": "09:25:00", + "stop_id": "bUCR_0_02", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 356, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_09:25", + "arrival_time": "09:31:36", + "departure_time": "09:31:36", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.21, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 357, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_09:25", + "arrival_time": "09:32:54.218000", + "departure_time": "09:32:54.218000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.449, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 358, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_09:25", + "arrival_time": "09:34:32.400000", + "departure_time": "09:34:32.400000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.749, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 359, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_09:25", + "arrival_time": "09:37:24.545000", + "departure_time": "09:37:24.545000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.275, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 360, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_09:25", + "arrival_time": "09:38:29.345000", + "departure_time": "09:38:29.345000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.473, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 361, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_09:25", + "arrival_time": "09:41:13.964000", + "departure_time": "09:41:13.964000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.976, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 362, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_09:25", + "arrival_time": "09:43:40.255000", + "departure_time": "09:43:40.255000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.423, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 363, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_09:55", + "arrival_time": "09:55:00", + "departure_time": "09:55:00", + "stop_id": "bUCR_0_02", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 364, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_09:55", + "arrival_time": "10:01:36", + "departure_time": "10:01:36", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.21, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 365, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_09:55", + "arrival_time": "10:02:54.218000", + "departure_time": "10:02:54.218000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.449, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 366, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_09:55", + "arrival_time": "10:04:32.400000", + "departure_time": "10:04:32.400000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.749, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 367, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_09:55", + "arrival_time": "10:07:24.545000", + "departure_time": "10:07:24.545000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.275, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 368, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_09:55", + "arrival_time": "10:08:29.345000", + "departure_time": "10:08:29.345000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.473, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 369, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_09:55", + "arrival_time": "10:11:13.964000", + "departure_time": "10:11:13.964000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.976, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 370, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_09:55", + "arrival_time": "10:13:40.255000", + "departure_time": "10:13:40.255000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.423, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 371, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_10:15", + "arrival_time": "10:15:00", + "departure_time": "10:15:00", + "stop_id": "bUCR_0_02", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 372, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_10:15", + "arrival_time": "10:21:36", + "departure_time": "10:21:36", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.21, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 373, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_10:15", + "arrival_time": "10:22:54.218000", + "departure_time": "10:22:54.218000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.449, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 374, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_10:15", + "arrival_time": "10:24:32.400000", + "departure_time": "10:24:32.400000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.749, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 375, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_10:15", + "arrival_time": "10:27:24.545000", + "departure_time": "10:27:24.545000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.275, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 376, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_10:15", + "arrival_time": "10:28:29.345000", + "departure_time": "10:28:29.345000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.473, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 377, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_10:15", + "arrival_time": "10:31:13.964000", + "departure_time": "10:31:13.964000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.976, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 378, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_10:15", + "arrival_time": "10:33:40.255000", + "departure_time": "10:33:40.255000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.423, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 379, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_10:45", + "arrival_time": "10:45:00", + "departure_time": "10:45:00", + "stop_id": "bUCR_0_02", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 380, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_10:45", + "arrival_time": "10:51:36", + "departure_time": "10:51:36", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.21, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 381, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_10:45", + "arrival_time": "10:52:54.218000", + "departure_time": "10:52:54.218000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.449, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 382, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_10:45", + "arrival_time": "10:54:32.400000", + "departure_time": "10:54:32.400000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.749, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 383, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_10:45", + "arrival_time": "10:57:24.545000", + "departure_time": "10:57:24.545000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.275, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 384, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_10:45", + "arrival_time": "10:58:29.345000", + "departure_time": "10:58:29.345000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.473, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 385, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_10:45", + "arrival_time": "11:01:13.964000", + "departure_time": "11:01:13.964000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.976, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 386, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_10:45", + "arrival_time": "11:03:40.255000", + "departure_time": "11:03:40.255000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.423, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 387, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_11:05", + "arrival_time": "11:05:00", + "departure_time": "11:05:00", + "stop_id": "bUCR_0_02", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 388, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_11:05", + "arrival_time": "11:11:36", + "departure_time": "11:11:36", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.21, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 389, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_11:05", + "arrival_time": "11:12:54.218000", + "departure_time": "11:12:54.218000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.449, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 390, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_11:05", + "arrival_time": "11:14:32.400000", + "departure_time": "11:14:32.400000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.749, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 391, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_11:05", + "arrival_time": "11:17:24.545000", + "departure_time": "11:17:24.545000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.275, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 392, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_11:05", + "arrival_time": "11:18:29.345000", + "departure_time": "11:18:29.345000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.473, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 393, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_11:05", + "arrival_time": "11:21:13.964000", + "departure_time": "11:21:13.964000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.976, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 394, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_11:05", + "arrival_time": "11:23:40.255000", + "departure_time": "11:23:40.255000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.423, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 395, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_11:35", + "arrival_time": "11:35:00", + "departure_time": "11:35:00", + "stop_id": "bUCR_0_02", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 396, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_11:35", + "arrival_time": "11:41:36", + "departure_time": "11:41:36", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.21, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 397, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_11:35", + "arrival_time": "11:42:54.218000", + "departure_time": "11:42:54.218000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.449, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 398, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_11:35", + "arrival_time": "11:44:32.400000", + "departure_time": "11:44:32.400000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.749, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 399, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_11:35", + "arrival_time": "11:47:24.545000", + "departure_time": "11:47:24.545000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.275, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 400, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_11:35", + "arrival_time": "11:48:29.345000", + "departure_time": "11:48:29.345000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.473, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 401, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_11:35", + "arrival_time": "11:51:13.964000", + "departure_time": "11:51:13.964000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.976, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 402, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_11:35", + "arrival_time": "11:53:40.255000", + "departure_time": "11:53:40.255000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.423, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 403, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_11:50", + "arrival_time": "11:50:00", + "departure_time": "11:50:00", + "stop_id": "bUCR_0_02", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 404, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_11:50", + "arrival_time": "11:56:36", + "departure_time": "11:56:36", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.21, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 405, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_11:50", + "arrival_time": "11:57:54.218000", + "departure_time": "11:57:54.218000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.449, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 406, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_11:50", + "arrival_time": "11:59:32.400000", + "departure_time": "11:59:32.400000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.749, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 407, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_11:50", + "arrival_time": "12:02:24.545000", + "departure_time": "12:02:24.545000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.275, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 408, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_11:50", + "arrival_time": "12:03:29.345000", + "departure_time": "12:03:29.345000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.473, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 409, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_11:50", + "arrival_time": "12:06:13.964000", + "departure_time": "12:06:13.964000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.976, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 410, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_11:50", + "arrival_time": "12:08:40.255000", + "departure_time": "12:08:40.255000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.423, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 411, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_12:10", + "arrival_time": "12:10:00", + "departure_time": "12:10:00", + "stop_id": "bUCR_0_02", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 412, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_12:10", + "arrival_time": "12:16:36", + "departure_time": "12:16:36", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.21, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 413, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_12:10", + "arrival_time": "12:17:54.218000", + "departure_time": "12:17:54.218000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.449, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 414, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_12:10", + "arrival_time": "12:19:32.400000", + "departure_time": "12:19:32.400000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.749, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 415, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_12:10", + "arrival_time": "12:22:24.545000", + "departure_time": "12:22:24.545000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.275, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 416, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_12:10", + "arrival_time": "12:23:29.345000", + "departure_time": "12:23:29.345000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.473, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 417, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_12:10", + "arrival_time": "12:26:13.964000", + "departure_time": "12:26:13.964000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.976, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 418, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_12:10", + "arrival_time": "12:28:40.255000", + "departure_time": "12:28:40.255000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.423, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 419, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_12:30", + "arrival_time": "12:30:00", + "departure_time": "12:30:00", + "stop_id": "bUCR_0_02", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 420, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_12:30", + "arrival_time": "12:36:36", + "departure_time": "12:36:36", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.21, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 421, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_12:30", + "arrival_time": "12:37:54.218000", + "departure_time": "12:37:54.218000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.449, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 422, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_12:30", + "arrival_time": "12:39:32.400000", + "departure_time": "12:39:32.400000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.749, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 423, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_12:30", + "arrival_time": "12:42:24.545000", + "departure_time": "12:42:24.545000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.275, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 424, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_12:30", + "arrival_time": "12:43:29.345000", + "departure_time": "12:43:29.345000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.473, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 425, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_12:30", + "arrival_time": "12:46:13.964000", + "departure_time": "12:46:13.964000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.976, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 426, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_12:30", + "arrival_time": "12:48:40.255000", + "departure_time": "12:48:40.255000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.423, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 427, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_12:45", + "arrival_time": "12:45:00", + "departure_time": "12:45:00", + "stop_id": "bUCR_0_02", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 428, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_12:45", + "arrival_time": "12:51:36", + "departure_time": "12:51:36", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.21, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 429, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_12:45", + "arrival_time": "12:52:54.218000", + "departure_time": "12:52:54.218000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.449, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 430, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_12:45", + "arrival_time": "12:54:32.400000", + "departure_time": "12:54:32.400000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.749, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 431, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_12:45", + "arrival_time": "12:57:24.545000", + "departure_time": "12:57:24.545000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.275, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 432, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_12:45", + "arrival_time": "12:58:29.345000", + "departure_time": "12:58:29.345000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.473, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 433, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_12:45", + "arrival_time": "13:01:13.964000", + "departure_time": "13:01:13.964000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.976, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 434, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_12:45", + "arrival_time": "13:03:40.255000", + "departure_time": "13:03:40.255000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.423, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 435, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_13:20", + "arrival_time": "13:20:00", + "departure_time": "13:20:00", + "stop_id": "bUCR_0_02", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 436, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_13:20", + "arrival_time": "13:26:36", + "departure_time": "13:26:36", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.21, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 437, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_13:20", + "arrival_time": "13:27:54.218000", + "departure_time": "13:27:54.218000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.449, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 438, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_13:20", + "arrival_time": "13:29:32.400000", + "departure_time": "13:29:32.400000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.749, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 439, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_13:20", + "arrival_time": "13:32:24.545000", + "departure_time": "13:32:24.545000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.275, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 440, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_13:20", + "arrival_time": "13:33:29.345000", + "departure_time": "13:33:29.345000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.473, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 441, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_13:20", + "arrival_time": "13:36:13.964000", + "departure_time": "13:36:13.964000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.976, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 442, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_13:20", + "arrival_time": "13:38:40.255000", + "departure_time": "13:38:40.255000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.423, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 443, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_14:00", + "arrival_time": "14:00:00", + "departure_time": "14:00:00", + "stop_id": "bUCR_0_02", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 444, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_14:00", + "arrival_time": "14:06:36", + "departure_time": "14:06:36", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.21, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 445, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_14:00", + "arrival_time": "14:07:54.218000", + "departure_time": "14:07:54.218000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.449, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 446, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_14:00", + "arrival_time": "14:09:32.400000", + "departure_time": "14:09:32.400000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.749, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 447, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_14:00", + "arrival_time": "14:12:24.545000", + "departure_time": "14:12:24.545000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.275, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 448, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_14:00", + "arrival_time": "14:13:29.345000", + "departure_time": "14:13:29.345000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.473, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 449, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_14:00", + "arrival_time": "14:16:13.964000", + "departure_time": "14:16:13.964000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.976, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 450, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_14:00", + "arrival_time": "14:18:40.255000", + "departure_time": "14:18:40.255000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.423, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 451, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_14:20", + "arrival_time": "14:20:00", + "departure_time": "14:20:00", + "stop_id": "bUCR_0_02", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 452, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_14:20", + "arrival_time": "14:26:36", + "departure_time": "14:26:36", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.21, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 453, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_14:20", + "arrival_time": "14:27:54.218000", + "departure_time": "14:27:54.218000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.449, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 454, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_14:20", + "arrival_time": "14:29:32.400000", + "departure_time": "14:29:32.400000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.749, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 455, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_14:20", + "arrival_time": "14:32:24.545000", + "departure_time": "14:32:24.545000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.275, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 456, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_14:20", + "arrival_time": "14:33:29.345000", + "departure_time": "14:33:29.345000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.473, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 457, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_14:20", + "arrival_time": "14:36:13.964000", + "departure_time": "14:36:13.964000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.976, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 458, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_14:20", + "arrival_time": "14:38:40.255000", + "departure_time": "14:38:40.255000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.423, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 459, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_14:45", + "arrival_time": "14:45:00", + "departure_time": "14:45:00", + "stop_id": "bUCR_0_02", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 460, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_14:45", + "arrival_time": "14:51:36", + "departure_time": "14:51:36", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.21, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 461, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_14:45", + "arrival_time": "14:52:54.218000", + "departure_time": "14:52:54.218000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.449, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 462, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_14:45", + "arrival_time": "14:54:32.400000", + "departure_time": "14:54:32.400000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.749, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 463, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_14:45", + "arrival_time": "14:57:24.545000", + "departure_time": "14:57:24.545000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.275, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 464, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_14:45", + "arrival_time": "14:58:29.345000", + "departure_time": "14:58:29.345000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.473, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 465, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_14:45", + "arrival_time": "15:01:13.964000", + "departure_time": "15:01:13.964000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.976, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 466, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_14:45", + "arrival_time": "15:03:40.255000", + "departure_time": "15:03:40.255000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.423, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 467, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_15:05", + "arrival_time": "15:05:00", + "departure_time": "15:05:00", + "stop_id": "bUCR_0_02", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 468, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_15:05", + "arrival_time": "15:11:36", + "departure_time": "15:11:36", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.21, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 469, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_15:05", + "arrival_time": "15:12:54.218000", + "departure_time": "15:12:54.218000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.449, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 470, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_15:05", + "arrival_time": "15:14:32.400000", + "departure_time": "15:14:32.400000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.749, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 471, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_15:05", + "arrival_time": "15:17:24.545000", + "departure_time": "15:17:24.545000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.275, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 472, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_15:05", + "arrival_time": "15:18:29.345000", + "departure_time": "15:18:29.345000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.473, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 473, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_15:05", + "arrival_time": "15:21:13.964000", + "departure_time": "15:21:13.964000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.976, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 474, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_15:05", + "arrival_time": "15:23:40.255000", + "departure_time": "15:23:40.255000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.423, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 475, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_15:30", + "arrival_time": "15:30:00", + "departure_time": "15:30:00", + "stop_id": "bUCR_0_02", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 476, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_15:30", + "arrival_time": "15:36:36", + "departure_time": "15:36:36", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.21, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 477, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_15:30", + "arrival_time": "15:37:54.218000", + "departure_time": "15:37:54.218000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.449, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 478, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_15:30", + "arrival_time": "15:39:32.400000", + "departure_time": "15:39:32.400000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.749, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 479, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_15:30", + "arrival_time": "15:42:24.545000", + "departure_time": "15:42:24.545000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.275, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 480, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_15:30", + "arrival_time": "15:43:29.345000", + "departure_time": "15:43:29.345000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.473, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 481, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_15:30", + "arrival_time": "15:46:13.964000", + "departure_time": "15:46:13.964000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.976, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 482, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_15:30", + "arrival_time": "15:48:40.255000", + "departure_time": "15:48:40.255000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.423, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 483, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_16:05", + "arrival_time": "16:05:00", + "departure_time": "16:05:00", + "stop_id": "bUCR_0_02", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 484, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_16:05", + "arrival_time": "16:11:36", + "departure_time": "16:11:36", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.21, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 485, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_16:05", + "arrival_time": "16:12:54.218000", + "departure_time": "16:12:54.218000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.449, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 486, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_16:05", + "arrival_time": "16:14:32.400000", + "departure_time": "16:14:32.400000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.749, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 487, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_16:05", + "arrival_time": "16:17:24.545000", + "departure_time": "16:17:24.545000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.275, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 488, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_16:05", + "arrival_time": "16:18:29.345000", + "departure_time": "16:18:29.345000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.473, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 489, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_16:05", + "arrival_time": "16:21:13.964000", + "departure_time": "16:21:13.964000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.976, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 490, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_16:05", + "arrival_time": "16:23:40.255000", + "departure_time": "16:23:40.255000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.423, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 491, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_16:40", + "arrival_time": "16:40:00", + "departure_time": "16:40:00", + "stop_id": "bUCR_0_02", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 492, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_16:40", + "arrival_time": "16:46:36", + "departure_time": "16:46:36", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.21, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 493, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_16:40", + "arrival_time": "16:47:54.218000", + "departure_time": "16:47:54.218000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.449, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 494, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_16:40", + "arrival_time": "16:49:32.400000", + "departure_time": "16:49:32.400000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.749, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 495, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_16:40", + "arrival_time": "16:52:24.545000", + "departure_time": "16:52:24.545000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.275, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 496, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_16:40", + "arrival_time": "16:53:29.345000", + "departure_time": "16:53:29.345000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.473, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 497, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_16:40", + "arrival_time": "16:56:13.964000", + "departure_time": "16:56:13.964000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.976, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 498, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_16:40", + "arrival_time": "16:58:40.255000", + "departure_time": "16:58:40.255000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.423, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 499, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_17:05", + "arrival_time": "17:05:00", + "departure_time": "17:05:00", + "stop_id": "bUCR_0_02", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 500, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_17:05", + "arrival_time": "17:11:36", + "departure_time": "17:11:36", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.21, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 501, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_17:05", + "arrival_time": "17:12:54.218000", + "departure_time": "17:12:54.218000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.449, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 502, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_17:05", + "arrival_time": "17:14:32.400000", + "departure_time": "17:14:32.400000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.749, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 503, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_17:05", + "arrival_time": "17:17:24.545000", + "departure_time": "17:17:24.545000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.275, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 504, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_17:05", + "arrival_time": "17:18:29.345000", + "departure_time": "17:18:29.345000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.473, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 505, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_17:05", + "arrival_time": "17:21:13.964000", + "departure_time": "17:21:13.964000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.976, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 506, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_17:05", + "arrival_time": "17:23:40.255000", + "departure_time": "17:23:40.255000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.423, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 507, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_17:40", + "arrival_time": "17:40:00", + "departure_time": "17:40:00", + "stop_id": "bUCR_0_02", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 508, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_17:40", + "arrival_time": "17:46:36", + "departure_time": "17:46:36", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.21, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 509, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_17:40", + "arrival_time": "17:47:54.218000", + "departure_time": "17:47:54.218000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.449, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 510, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_17:40", + "arrival_time": "17:49:32.400000", + "departure_time": "17:49:32.400000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.749, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 511, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_17:40", + "arrival_time": "17:52:24.545000", + "departure_time": "17:52:24.545000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.275, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 512, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_17:40", + "arrival_time": "17:53:29.345000", + "departure_time": "17:53:29.345000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.473, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 513, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_17:40", + "arrival_time": "17:56:13.964000", + "departure_time": "17:56:13.964000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.976, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 514, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_17:40", + "arrival_time": "17:58:40.255000", + "departure_time": "17:58:40.255000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.423, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 515, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_18:05", + "arrival_time": "18:05:00", + "departure_time": "18:05:00", + "stop_id": "bUCR_0_02", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 516, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_18:05", + "arrival_time": "18:11:36", + "departure_time": "18:11:36", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.21, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 517, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_18:05", + "arrival_time": "18:12:54.218000", + "departure_time": "18:12:54.218000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.449, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 518, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_18:05", + "arrival_time": "18:14:32.400000", + "departure_time": "18:14:32.400000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.749, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 519, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_18:05", + "arrival_time": "18:17:24.545000", + "departure_time": "18:17:24.545000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.275, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 520, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_18:05", + "arrival_time": "18:18:29.345000", + "departure_time": "18:18:29.345000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.473, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 521, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_18:05", + "arrival_time": "18:21:13.964000", + "departure_time": "18:21:13.964000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.976, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 522, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_18:05", + "arrival_time": "18:23:40.255000", + "departure_time": "18:23:40.255000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.423, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 523, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_18:35", + "arrival_time": "18:35:00", + "departure_time": "18:35:00", + "stop_id": "bUCR_0_02", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 524, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_18:35", + "arrival_time": "18:41:36", + "departure_time": "18:41:36", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.21, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 525, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_18:35", + "arrival_time": "18:42:54.218000", + "departure_time": "18:42:54.218000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.449, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 526, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_18:35", + "arrival_time": "18:44:32.400000", + "departure_time": "18:44:32.400000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.749, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 527, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_18:35", + "arrival_time": "18:47:24.545000", + "departure_time": "18:47:24.545000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.275, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 528, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_18:35", + "arrival_time": "18:48:29.345000", + "departure_time": "18:48:29.345000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.473, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 529, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_18:35", + "arrival_time": "18:51:13.964000", + "departure_time": "18:51:13.964000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.976, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 530, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_18:35", + "arrival_time": "18:53:40.255000", + "departure_time": "18:53:40.255000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.423, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 531, + "fields": { + "feed": "1", + "trip_id": "desde_artes_con_milla_entresemana_19:00", + "arrival_time": "19:00:00", + "departure_time": "19:00:00", + "stop_id": "bUCR_0_02", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 532, + "fields": { + "feed": "1", + "trip_id": "desde_artes_con_milla_entresemana_19:00", + "arrival_time": "19:02:24.327000", + "departure_time": "19:02:24.327000", + "stop_id": "bUCR_0_03", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.441, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 533, + "fields": { + "feed": "1", + "trip_id": "desde_artes_con_milla_entresemana_19:00", + "arrival_time": "19:04:27.382000", + "departure_time": "19:04:27.382000", + "stop_id": "bUCR_0_04", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.817, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 534, + "fields": { + "feed": "1", + "trip_id": "desde_artes_con_milla_entresemana_19:00", + "arrival_time": "19:09:26.182000", + "departure_time": "19:09:26.182000", + "stop_id": "bUCR_0_05", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.73, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 535, + "fields": { + "feed": "1", + "trip_id": "desde_artes_con_milla_entresemana_19:00", + "arrival_time": "19:10:46.691000", + "departure_time": "19:10:46.691000", + "stop_id": "bUCR_0_06", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.976, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 536, + "fields": { + "feed": "1", + "trip_id": "desde_artes_con_milla_entresemana_19:00", + "arrival_time": "19:12:19.309000", + "departure_time": "19:12:19.309000", + "stop_id": "bUCR_0_07", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.259, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 537, + "fields": { + "feed": "1", + "trip_id": "desde_artes_con_milla_entresemana_19:00", + "arrival_time": "19:15:11.127000", + "departure_time": "19:15:11.127000", + "stop_id": "bUCR_0_08", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.784, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 538, + "fields": { + "feed": "1", + "trip_id": "desde_artes_con_milla_entresemana_19:00", + "arrival_time": "19:16:16.255000", + "departure_time": "19:16:16.255000", + "stop_id": "bUCR_0_09", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.983, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 539, + "fields": { + "feed": "1", + "trip_id": "desde_artes_con_milla_entresemana_19:00", + "arrival_time": "19:19:12.982000", + "departure_time": "19:19:12.982000", + "stop_id": "bUCR_0_10", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.523, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 540, + "fields": { + "feed": "1", + "trip_id": "desde_artes_con_milla_entresemana_19:00", + "arrival_time": "19:21:27.491000", + "departure_time": "19:21:27.491000", + "stop_id": "bUCR_0_11", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.934, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 541, + "fields": { + "feed": "1", + "trip_id": "desde_artes_con_milla_entresemana_19:35", + "arrival_time": "19:35:00", + "departure_time": "19:35:00", + "stop_id": "bUCR_0_02", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 542, + "fields": { + "feed": "1", + "trip_id": "desde_artes_con_milla_entresemana_19:35", + "arrival_time": "19:37:24.327000", + "departure_time": "19:37:24.327000", + "stop_id": "bUCR_0_03", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.441, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 543, + "fields": { + "feed": "1", + "trip_id": "desde_artes_con_milla_entresemana_19:35", + "arrival_time": "19:39:27.382000", + "departure_time": "19:39:27.382000", + "stop_id": "bUCR_0_04", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.817, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 544, + "fields": { + "feed": "1", + "trip_id": "desde_artes_con_milla_entresemana_19:35", + "arrival_time": "19:44:26.182000", + "departure_time": "19:44:26.182000", + "stop_id": "bUCR_0_05", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.73, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 545, + "fields": { + "feed": "1", + "trip_id": "desde_artes_con_milla_entresemana_19:35", + "arrival_time": "19:45:46.691000", + "departure_time": "19:45:46.691000", + "stop_id": "bUCR_0_06", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.976, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 546, + "fields": { + "feed": "1", + "trip_id": "desde_artes_con_milla_entresemana_19:35", + "arrival_time": "19:47:19.309000", + "departure_time": "19:47:19.309000", + "stop_id": "bUCR_0_07", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.259, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 547, + "fields": { + "feed": "1", + "trip_id": "desde_artes_con_milla_entresemana_19:35", + "arrival_time": "19:50:11.127000", + "departure_time": "19:50:11.127000", + "stop_id": "bUCR_0_08", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.784, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 548, + "fields": { + "feed": "1", + "trip_id": "desde_artes_con_milla_entresemana_19:35", + "arrival_time": "19:51:16.255000", + "departure_time": "19:51:16.255000", + "stop_id": "bUCR_0_09", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.983, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 549, + "fields": { + "feed": "1", + "trip_id": "desde_artes_con_milla_entresemana_19:35", + "arrival_time": "19:54:12.982000", + "departure_time": "19:54:12.982000", + "stop_id": "bUCR_0_10", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.523, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 550, + "fields": { + "feed": "1", + "trip_id": "desde_artes_con_milla_entresemana_19:35", + "arrival_time": "19:56:27.491000", + "departure_time": "19:56:27.491000", + "stop_id": "bUCR_0_11", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.934, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 551, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_06:20", + "arrival_time": "06:20:00", + "departure_time": "06:20:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 552, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_06:20", + "arrival_time": "06:24:15.927000", + "departure_time": "06:24:15.927000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.782, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 553, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_06:20", + "arrival_time": "06:27:27.709000", + "departure_time": "06:27:27.709000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.368, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 554, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_06:20", + "arrival_time": "06:28:04.691000", + "departure_time": "06:28:04.691000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.481, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 555, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_06:20", + "arrival_time": "06:29:12.764000", + "departure_time": "06:29:12.764000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.689, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 556, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_06:20", + "arrival_time": "06:31:29.891000", + "departure_time": "06:31:29.891000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.108, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 557, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_06:20", + "arrival_time": "06:33:09.709000", + "departure_time": "06:33:09.709000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.413, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 558, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_06:20", + "arrival_time": "06:34:22.691000", + "departure_time": "06:34:22.691000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.636, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 559, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_06:20", + "arrival_time": "06:39:11.673000", + "departure_time": "06:39:11.673000", + "stop_id": "bUCR_0_02", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.519, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 560, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_06:40", + "arrival_time": "06:40:00", + "departure_time": "06:40:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 561, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_06:40", + "arrival_time": "06:44:00.873000", + "departure_time": "06:44:00.873000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.736, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 562, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_06:40", + "arrival_time": "06:47:28.364000", + "departure_time": "06:47:28.364000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.37, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 563, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_06:40", + "arrival_time": "06:48:12.873000", + "departure_time": "06:48:12.873000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.506, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 564, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_06:40", + "arrival_time": "06:49:11.127000", + "departure_time": "06:49:11.127000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.684, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 565, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_06:40", + "arrival_time": "06:51:27.600000", + "departure_time": "06:51:27.600000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.101, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 566, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_06:40", + "arrival_time": "06:53:11.018000", + "departure_time": "06:53:11.018000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.417, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 567, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_06:40", + "arrival_time": "06:54:22.364000", + "departure_time": "06:54:22.364000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.635, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 568, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_06:40", + "arrival_time": "06:57:17.782000", + "departure_time": "06:57:17.782000", + "stop_id": "bUCR_0_01", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.171, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 569, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_06:50", + "arrival_time": "06:50:00", + "departure_time": "06:50:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 570, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_06:50", + "arrival_time": "06:54:15.927000", + "departure_time": "06:54:15.927000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.782, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 571, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_06:50", + "arrival_time": "06:57:27.709000", + "departure_time": "06:57:27.709000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.368, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 572, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_06:50", + "arrival_time": "06:58:04.691000", + "departure_time": "06:58:04.691000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.481, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 573, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_06:50", + "arrival_time": "06:59:12.764000", + "departure_time": "06:59:12.764000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.689, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 574, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_06:50", + "arrival_time": "07:01:29.891000", + "departure_time": "07:01:29.891000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.108, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 575, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_06:50", + "arrival_time": "07:03:09.709000", + "departure_time": "07:03:09.709000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.413, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 576, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_06:50", + "arrival_time": "07:04:22.691000", + "departure_time": "07:04:22.691000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.636, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 577, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_06:50", + "arrival_time": "07:09:11.673000", + "departure_time": "07:09:11.673000", + "stop_id": "bUCR_0_02", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.519, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 578, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_07:00", + "arrival_time": "07:00:00", + "departure_time": "07:00:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 579, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_07:00", + "arrival_time": "07:04:00.873000", + "departure_time": "07:04:00.873000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.736, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 580, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_07:00", + "arrival_time": "07:07:28.364000", + "departure_time": "07:07:28.364000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.37, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 581, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_07:00", + "arrival_time": "07:08:12.873000", + "departure_time": "07:08:12.873000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.506, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 582, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_07:00", + "arrival_time": "07:09:11.127000", + "departure_time": "07:09:11.127000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.684, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 583, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_07:00", + "arrival_time": "07:11:27.600000", + "departure_time": "07:11:27.600000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.101, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 584, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_07:00", + "arrival_time": "07:13:11.018000", + "departure_time": "07:13:11.018000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.417, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 585, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_07:00", + "arrival_time": "07:14:22.364000", + "departure_time": "07:14:22.364000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.635, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 586, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_07:00", + "arrival_time": "07:17:17.782000", + "departure_time": "07:17:17.782000", + "stop_id": "bUCR_0_01", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.171, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 587, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_07:10", + "arrival_time": "07:10:00", + "departure_time": "07:10:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 588, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_07:10", + "arrival_time": "07:14:15.927000", + "departure_time": "07:14:15.927000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.782, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 589, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_07:10", + "arrival_time": "07:17:27.709000", + "departure_time": "07:17:27.709000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.368, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 590, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_07:10", + "arrival_time": "07:18:04.691000", + "departure_time": "07:18:04.691000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.481, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 591, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_07:10", + "arrival_time": "07:19:12.764000", + "departure_time": "07:19:12.764000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.689, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 592, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_07:10", + "arrival_time": "07:21:29.891000", + "departure_time": "07:21:29.891000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.108, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 593, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_07:10", + "arrival_time": "07:23:09.709000", + "departure_time": "07:23:09.709000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.413, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 594, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_07:10", + "arrival_time": "07:24:22.691000", + "departure_time": "07:24:22.691000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.636, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 595, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_07:10", + "arrival_time": "07:29:11.673000", + "departure_time": "07:29:11.673000", + "stop_id": "bUCR_0_02", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.519, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 596, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_07:30", + "arrival_time": "07:30:00", + "departure_time": "07:30:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 597, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_07:30", + "arrival_time": "07:34:00.873000", + "departure_time": "07:34:00.873000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.736, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 598, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_07:30", + "arrival_time": "07:37:28.364000", + "departure_time": "07:37:28.364000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.37, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 599, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_07:30", + "arrival_time": "07:38:12.873000", + "departure_time": "07:38:12.873000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.506, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 600, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_07:30", + "arrival_time": "07:39:11.127000", + "departure_time": "07:39:11.127000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.684, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 601, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_07:30", + "arrival_time": "07:41:27.600000", + "departure_time": "07:41:27.600000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.101, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 602, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_07:30", + "arrival_time": "07:43:11.018000", + "departure_time": "07:43:11.018000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.417, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 603, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_07:30", + "arrival_time": "07:44:22.364000", + "departure_time": "07:44:22.364000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.635, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 604, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_07:30", + "arrival_time": "07:47:17.782000", + "departure_time": "07:47:17.782000", + "stop_id": "bUCR_0_01", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.171, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 605, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_07:40", + "arrival_time": "07:40:00", + "departure_time": "07:40:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 606, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_07:40", + "arrival_time": "07:44:15.927000", + "departure_time": "07:44:15.927000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.782, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 607, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_07:40", + "arrival_time": "07:47:27.709000", + "departure_time": "07:47:27.709000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.368, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 608, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_07:40", + "arrival_time": "07:48:04.691000", + "departure_time": "07:48:04.691000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.481, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 609, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_07:40", + "arrival_time": "07:49:12.764000", + "departure_time": "07:49:12.764000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.689, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 610, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_07:40", + "arrival_time": "07:51:29.891000", + "departure_time": "07:51:29.891000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.108, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 611, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_07:40", + "arrival_time": "07:53:09.709000", + "departure_time": "07:53:09.709000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.413, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 612, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_07:40", + "arrival_time": "07:54:22.691000", + "departure_time": "07:54:22.691000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.636, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 613, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_07:40", + "arrival_time": "07:59:11.673000", + "departure_time": "07:59:11.673000", + "stop_id": "bUCR_0_02", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.519, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 614, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_07:50", + "arrival_time": "07:50:00", + "departure_time": "07:50:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 615, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_07:50", + "arrival_time": "07:54:00.873000", + "departure_time": "07:54:00.873000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.736, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 616, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_07:50", + "arrival_time": "07:57:28.364000", + "departure_time": "07:57:28.364000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.37, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 617, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_07:50", + "arrival_time": "07:58:12.873000", + "departure_time": "07:58:12.873000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.506, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 618, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_07:50", + "arrival_time": "07:59:11.127000", + "departure_time": "07:59:11.127000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.684, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 619, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_07:50", + "arrival_time": "08:01:27.600000", + "departure_time": "08:01:27.600000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.101, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 620, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_07:50", + "arrival_time": "08:03:11.018000", + "departure_time": "08:03:11.018000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.417, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 621, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_07:50", + "arrival_time": "08:04:22.364000", + "departure_time": "08:04:22.364000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.635, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 622, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_07:50", + "arrival_time": "08:07:17.782000", + "departure_time": "08:07:17.782000", + "stop_id": "bUCR_0_01", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.171, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 623, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_08:00", + "arrival_time": "08:00:00", + "departure_time": "08:00:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 624, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_08:00", + "arrival_time": "08:04:15.927000", + "departure_time": "08:04:15.927000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.782, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 625, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_08:00", + "arrival_time": "08:07:27.709000", + "departure_time": "08:07:27.709000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.368, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 626, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_08:00", + "arrival_time": "08:08:04.691000", + "departure_time": "08:08:04.691000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.481, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 627, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_08:00", + "arrival_time": "08:09:12.764000", + "departure_time": "08:09:12.764000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.689, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 628, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_08:00", + "arrival_time": "08:11:29.891000", + "departure_time": "08:11:29.891000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.108, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 629, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_08:00", + "arrival_time": "08:13:09.709000", + "departure_time": "08:13:09.709000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.413, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 630, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_08:00", + "arrival_time": "08:14:22.691000", + "departure_time": "08:14:22.691000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.636, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 631, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_08:00", + "arrival_time": "08:19:11.673000", + "departure_time": "08:19:11.673000", + "stop_id": "bUCR_0_02", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.519, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 632, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_08:35", + "arrival_time": "08:35:00", + "departure_time": "08:35:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 633, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_08:35", + "arrival_time": "08:39:00.873000", + "departure_time": "08:39:00.873000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.736, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 634, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_08:35", + "arrival_time": "08:42:28.364000", + "departure_time": "08:42:28.364000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.37, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 635, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_08:35", + "arrival_time": "08:43:12.873000", + "departure_time": "08:43:12.873000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.506, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 636, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_08:35", + "arrival_time": "08:44:11.127000", + "departure_time": "08:44:11.127000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.684, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 637, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_08:35", + "arrival_time": "08:46:27.600000", + "departure_time": "08:46:27.600000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.101, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 638, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_08:35", + "arrival_time": "08:48:11.018000", + "departure_time": "08:48:11.018000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.417, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 639, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_08:35", + "arrival_time": "08:49:22.364000", + "departure_time": "08:49:22.364000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.635, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 640, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_08:35", + "arrival_time": "08:52:17.782000", + "departure_time": "08:52:17.782000", + "stop_id": "bUCR_0_01", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.171, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 641, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_08:45", + "arrival_time": "08:45:00", + "departure_time": "08:45:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 642, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_08:45", + "arrival_time": "08:49:15.927000", + "departure_time": "08:49:15.927000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.782, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 643, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_08:45", + "arrival_time": "08:52:27.709000", + "departure_time": "08:52:27.709000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.368, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 644, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_08:45", + "arrival_time": "08:53:04.691000", + "departure_time": "08:53:04.691000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.481, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 645, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_08:45", + "arrival_time": "08:54:12.764000", + "departure_time": "08:54:12.764000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.689, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 646, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_08:45", + "arrival_time": "08:56:29.891000", + "departure_time": "08:56:29.891000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.108, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 647, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_08:45", + "arrival_time": "08:58:09.709000", + "departure_time": "08:58:09.709000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.413, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 648, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_08:45", + "arrival_time": "08:59:22.691000", + "departure_time": "08:59:22.691000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.636, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 649, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_08:45", + "arrival_time": "09:04:11.673000", + "departure_time": "09:04:11.673000", + "stop_id": "bUCR_0_02", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.519, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 650, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_08:55", + "arrival_time": "08:55:00", + "departure_time": "08:55:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 651, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_08:55", + "arrival_time": "08:59:00.873000", + "departure_time": "08:59:00.873000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.736, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 652, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_08:55", + "arrival_time": "09:02:28.364000", + "departure_time": "09:02:28.364000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.37, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 653, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_08:55", + "arrival_time": "09:03:12.873000", + "departure_time": "09:03:12.873000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.506, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 654, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_08:55", + "arrival_time": "09:04:11.127000", + "departure_time": "09:04:11.127000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.684, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 655, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_08:55", + "arrival_time": "09:06:27.600000", + "departure_time": "09:06:27.600000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.101, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 656, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_08:55", + "arrival_time": "09:08:11.018000", + "departure_time": "09:08:11.018000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.417, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 657, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_08:55", + "arrival_time": "09:09:22.364000", + "departure_time": "09:09:22.364000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.635, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 658, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_08:55", + "arrival_time": "09:12:17.782000", + "departure_time": "09:12:17.782000", + "stop_id": "bUCR_0_01", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.171, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 659, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_09:05", + "arrival_time": "09:05:00", + "departure_time": "09:05:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 660, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_09:05", + "arrival_time": "09:09:15.927000", + "departure_time": "09:09:15.927000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.782, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 661, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_09:05", + "arrival_time": "09:12:27.709000", + "departure_time": "09:12:27.709000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.368, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 662, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_09:05", + "arrival_time": "09:13:04.691000", + "departure_time": "09:13:04.691000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.481, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 663, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_09:05", + "arrival_time": "09:14:12.764000", + "departure_time": "09:14:12.764000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.689, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 664, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_09:05", + "arrival_time": "09:16:29.891000", + "departure_time": "09:16:29.891000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.108, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 665, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_09:05", + "arrival_time": "09:18:09.709000", + "departure_time": "09:18:09.709000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.413, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 666, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_09:05", + "arrival_time": "09:19:22.691000", + "departure_time": "09:19:22.691000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.636, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 667, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_09:05", + "arrival_time": "09:24:11.673000", + "departure_time": "09:24:11.673000", + "stop_id": "bUCR_0_02", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.519, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 668, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_09:25", + "arrival_time": "09:25:00", + "departure_time": "09:25:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 669, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_09:25", + "arrival_time": "09:29:00.873000", + "departure_time": "09:29:00.873000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.736, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 670, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_09:25", + "arrival_time": "09:32:28.364000", + "departure_time": "09:32:28.364000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.37, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 671, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_09:25", + "arrival_time": "09:33:12.873000", + "departure_time": "09:33:12.873000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.506, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 672, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_09:25", + "arrival_time": "09:34:11.127000", + "departure_time": "09:34:11.127000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.684, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 673, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_09:25", + "arrival_time": "09:36:27.600000", + "departure_time": "09:36:27.600000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.101, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 674, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_09:25", + "arrival_time": "09:38:11.018000", + "departure_time": "09:38:11.018000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.417, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 675, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_09:25", + "arrival_time": "09:39:22.364000", + "departure_time": "09:39:22.364000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.635, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 676, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_09:25", + "arrival_time": "09:42:17.782000", + "departure_time": "09:42:17.782000", + "stop_id": "bUCR_0_01", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.171, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 677, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_09:35", + "arrival_time": "09:35:00", + "departure_time": "09:35:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 678, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_09:35", + "arrival_time": "09:39:15.927000", + "departure_time": "09:39:15.927000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.782, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 679, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_09:35", + "arrival_time": "09:42:27.709000", + "departure_time": "09:42:27.709000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.368, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 680, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_09:35", + "arrival_time": "09:43:04.691000", + "departure_time": "09:43:04.691000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.481, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 681, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_09:35", + "arrival_time": "09:44:12.764000", + "departure_time": "09:44:12.764000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.689, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 682, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_09:35", + "arrival_time": "09:46:29.891000", + "departure_time": "09:46:29.891000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.108, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 683, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_09:35", + "arrival_time": "09:48:09.709000", + "departure_time": "09:48:09.709000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.413, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 684, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_09:35", + "arrival_time": "09:49:22.691000", + "departure_time": "09:49:22.691000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.636, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 685, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_09:35", + "arrival_time": "09:54:11.673000", + "departure_time": "09:54:11.673000", + "stop_id": "bUCR_0_02", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.519, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 686, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_09:45", + "arrival_time": "09:45:00", + "departure_time": "09:45:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 687, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_09:45", + "arrival_time": "09:49:00.873000", + "departure_time": "09:49:00.873000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.736, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 688, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_09:45", + "arrival_time": "09:52:28.364000", + "departure_time": "09:52:28.364000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.37, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 689, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_09:45", + "arrival_time": "09:53:12.873000", + "departure_time": "09:53:12.873000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.506, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 690, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_09:45", + "arrival_time": "09:54:11.127000", + "departure_time": "09:54:11.127000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.684, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 691, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_09:45", + "arrival_time": "09:56:27.600000", + "departure_time": "09:56:27.600000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.101, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 692, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_09:45", + "arrival_time": "09:58:11.018000", + "departure_time": "09:58:11.018000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.417, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 693, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_09:45", + "arrival_time": "09:59:22.364000", + "departure_time": "09:59:22.364000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.635, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 694, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_09:45", + "arrival_time": "10:02:17.782000", + "departure_time": "10:02:17.782000", + "stop_id": "bUCR_0_01", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.171, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 695, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_09:55", + "arrival_time": "09:55:00", + "departure_time": "09:55:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 696, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_09:55", + "arrival_time": "09:59:15.927000", + "departure_time": "09:59:15.927000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.782, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 697, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_09:55", + "arrival_time": "10:02:27.709000", + "departure_time": "10:02:27.709000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.368, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 698, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_09:55", + "arrival_time": "10:03:04.691000", + "departure_time": "10:03:04.691000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.481, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 699, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_09:55", + "arrival_time": "10:04:12.764000", + "departure_time": "10:04:12.764000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.689, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 700, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_09:55", + "arrival_time": "10:06:29.891000", + "departure_time": "10:06:29.891000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.108, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 701, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_09:55", + "arrival_time": "10:08:09.709000", + "departure_time": "10:08:09.709000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.413, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 702, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_09:55", + "arrival_time": "10:09:22.691000", + "departure_time": "10:09:22.691000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.636, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 703, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_09:55", + "arrival_time": "10:14:11.673000", + "departure_time": "10:14:11.673000", + "stop_id": "bUCR_0_02", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.519, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 704, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_10:15", + "arrival_time": "10:15:00", + "departure_time": "10:15:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 705, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_10:15", + "arrival_time": "10:19:00.873000", + "departure_time": "10:19:00.873000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.736, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 706, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_10:15", + "arrival_time": "10:22:28.364000", + "departure_time": "10:22:28.364000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.37, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 707, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_10:15", + "arrival_time": "10:23:12.873000", + "departure_time": "10:23:12.873000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.506, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 708, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_10:15", + "arrival_time": "10:24:11.127000", + "departure_time": "10:24:11.127000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.684, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 709, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_10:15", + "arrival_time": "10:26:27.600000", + "departure_time": "10:26:27.600000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.101, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 710, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_10:15", + "arrival_time": "10:28:11.018000", + "departure_time": "10:28:11.018000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.417, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 711, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_10:15", + "arrival_time": "10:29:22.364000", + "departure_time": "10:29:22.364000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.635, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 712, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_10:15", + "arrival_time": "10:32:17.782000", + "departure_time": "10:32:17.782000", + "stop_id": "bUCR_0_01", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.171, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 713, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_10:25", + "arrival_time": "10:25:00", + "departure_time": "10:25:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 714, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_10:25", + "arrival_time": "10:29:15.927000", + "departure_time": "10:29:15.927000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.782, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 715, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_10:25", + "arrival_time": "10:32:27.709000", + "departure_time": "10:32:27.709000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.368, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 716, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_10:25", + "arrival_time": "10:33:04.691000", + "departure_time": "10:33:04.691000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.481, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 717, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_10:25", + "arrival_time": "10:34:12.764000", + "departure_time": "10:34:12.764000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.689, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 718, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_10:25", + "arrival_time": "10:36:29.891000", + "departure_time": "10:36:29.891000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.108, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 719, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_10:25", + "arrival_time": "10:38:09.709000", + "departure_time": "10:38:09.709000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.413, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 720, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_10:25", + "arrival_time": "10:39:22.691000", + "departure_time": "10:39:22.691000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.636, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 721, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_10:25", + "arrival_time": "10:44:11.673000", + "departure_time": "10:44:11.673000", + "stop_id": "bUCR_0_02", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.519, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 722, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_10:35", + "arrival_time": "10:35:00", + "departure_time": "10:35:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 723, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_10:35", + "arrival_time": "10:39:00.873000", + "departure_time": "10:39:00.873000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.736, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 724, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_10:35", + "arrival_time": "10:42:28.364000", + "departure_time": "10:42:28.364000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.37, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 725, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_10:35", + "arrival_time": "10:43:12.873000", + "departure_time": "10:43:12.873000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.506, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 726, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_10:35", + "arrival_time": "10:44:11.127000", + "departure_time": "10:44:11.127000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.684, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 727, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_10:35", + "arrival_time": "10:46:27.600000", + "departure_time": "10:46:27.600000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.101, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 728, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_10:35", + "arrival_time": "10:48:11.018000", + "departure_time": "10:48:11.018000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.417, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 729, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_10:35", + "arrival_time": "10:49:22.364000", + "departure_time": "10:49:22.364000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.635, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 730, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_10:35", + "arrival_time": "10:52:17.782000", + "departure_time": "10:52:17.782000", + "stop_id": "bUCR_0_01", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.171, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 731, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_10:45", + "arrival_time": "10:45:00", + "departure_time": "10:45:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 732, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_10:45", + "arrival_time": "10:49:15.927000", + "departure_time": "10:49:15.927000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.782, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 733, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_10:45", + "arrival_time": "10:52:27.709000", + "departure_time": "10:52:27.709000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.368, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 734, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_10:45", + "arrival_time": "10:53:04.691000", + "departure_time": "10:53:04.691000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.481, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 735, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_10:45", + "arrival_time": "10:54:12.764000", + "departure_time": "10:54:12.764000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.689, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 736, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_10:45", + "arrival_time": "10:56:29.891000", + "departure_time": "10:56:29.891000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.108, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 737, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_10:45", + "arrival_time": "10:58:09.709000", + "departure_time": "10:58:09.709000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.413, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 738, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_10:45", + "arrival_time": "10:59:22.691000", + "departure_time": "10:59:22.691000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.636, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 739, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_10:45", + "arrival_time": "11:04:11.673000", + "departure_time": "11:04:11.673000", + "stop_id": "bUCR_0_02", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.519, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 740, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_11:05", + "arrival_time": "11:05:00", + "departure_time": "11:05:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 741, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_11:05", + "arrival_time": "11:09:00.873000", + "departure_time": "11:09:00.873000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.736, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 742, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_11:05", + "arrival_time": "11:12:28.364000", + "departure_time": "11:12:28.364000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.37, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 743, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_11:05", + "arrival_time": "11:13:12.873000", + "departure_time": "11:13:12.873000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.506, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 744, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_11:05", + "arrival_time": "11:14:11.127000", + "departure_time": "11:14:11.127000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.684, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 745, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_11:05", + "arrival_time": "11:16:27.600000", + "departure_time": "11:16:27.600000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.101, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 746, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_11:05", + "arrival_time": "11:18:11.018000", + "departure_time": "11:18:11.018000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.417, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 747, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_11:05", + "arrival_time": "11:19:22.364000", + "departure_time": "11:19:22.364000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.635, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 748, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_11:05", + "arrival_time": "11:22:17.782000", + "departure_time": "11:22:17.782000", + "stop_id": "bUCR_0_01", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.171, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 749, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_11:15", + "arrival_time": "11:15:00", + "departure_time": "11:15:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 750, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_11:15", + "arrival_time": "11:19:15.927000", + "departure_time": "11:19:15.927000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.782, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 751, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_11:15", + "arrival_time": "11:22:27.709000", + "departure_time": "11:22:27.709000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.368, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 752, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_11:15", + "arrival_time": "11:23:04.691000", + "departure_time": "11:23:04.691000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.481, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 753, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_11:15", + "arrival_time": "11:24:12.764000", + "departure_time": "11:24:12.764000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.689, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 754, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_11:15", + "arrival_time": "11:26:29.891000", + "departure_time": "11:26:29.891000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.108, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 755, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_11:15", + "arrival_time": "11:28:09.709000", + "departure_time": "11:28:09.709000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.413, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 756, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_11:15", + "arrival_time": "11:29:22.691000", + "departure_time": "11:29:22.691000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.636, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 757, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_11:15", + "arrival_time": "11:34:11.673000", + "departure_time": "11:34:11.673000", + "stop_id": "bUCR_0_02", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.519, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 758, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_11:20", + "arrival_time": "11:20:00", + "departure_time": "11:20:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 759, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_11:20", + "arrival_time": "11:24:00.873000", + "departure_time": "11:24:00.873000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.736, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 760, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_11:20", + "arrival_time": "11:27:28.364000", + "departure_time": "11:27:28.364000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.37, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 761, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_11:20", + "arrival_time": "11:28:12.873000", + "departure_time": "11:28:12.873000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.506, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 762, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_11:20", + "arrival_time": "11:29:11.127000", + "departure_time": "11:29:11.127000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.684, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 763, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_11:20", + "arrival_time": "11:31:27.600000", + "departure_time": "11:31:27.600000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.101, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 764, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_11:20", + "arrival_time": "11:33:11.018000", + "departure_time": "11:33:11.018000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.417, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 765, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_11:20", + "arrival_time": "11:34:22.364000", + "departure_time": "11:34:22.364000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.635, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 766, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_11:20", + "arrival_time": "11:37:17.782000", + "departure_time": "11:37:17.782000", + "stop_id": "bUCR_0_01", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.171, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 767, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_11:30", + "arrival_time": "11:30:00", + "departure_time": "11:30:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 768, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_11:30", + "arrival_time": "11:34:15.927000", + "departure_time": "11:34:15.927000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.782, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 769, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_11:30", + "arrival_time": "11:37:27.709000", + "departure_time": "11:37:27.709000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.368, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 770, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_11:30", + "arrival_time": "11:38:04.691000", + "departure_time": "11:38:04.691000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.481, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 771, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_11:30", + "arrival_time": "11:39:12.764000", + "departure_time": "11:39:12.764000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.689, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 772, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_11:30", + "arrival_time": "11:41:29.891000", + "departure_time": "11:41:29.891000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.108, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 773, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_11:30", + "arrival_time": "11:43:09.709000", + "departure_time": "11:43:09.709000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.413, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 774, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_11:30", + "arrival_time": "11:44:22.691000", + "departure_time": "11:44:22.691000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.636, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 775, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_11:30", + "arrival_time": "11:49:11.673000", + "departure_time": "11:49:11.673000", + "stop_id": "bUCR_0_02", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.519, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 776, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_11:40", + "arrival_time": "11:40:00", + "departure_time": "11:40:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 777, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_11:40", + "arrival_time": "11:44:00.873000", + "departure_time": "11:44:00.873000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.736, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 778, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_11:40", + "arrival_time": "11:47:28.364000", + "departure_time": "11:47:28.364000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.37, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 779, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_11:40", + "arrival_time": "11:48:12.873000", + "departure_time": "11:48:12.873000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.506, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 780, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_11:40", + "arrival_time": "11:49:11.127000", + "departure_time": "11:49:11.127000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.684, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 781, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_11:40", + "arrival_time": "11:51:27.600000", + "departure_time": "11:51:27.600000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.101, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 782, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_11:40", + "arrival_time": "11:53:11.018000", + "departure_time": "11:53:11.018000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.417, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 783, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_11:40", + "arrival_time": "11:54:22.364000", + "departure_time": "11:54:22.364000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.635, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 784, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_11:40", + "arrival_time": "11:57:17.782000", + "departure_time": "11:57:17.782000", + "stop_id": "bUCR_0_01", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.171, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 785, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_11:50", + "arrival_time": "11:50:00", + "departure_time": "11:50:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 786, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_11:50", + "arrival_time": "11:54:15.927000", + "departure_time": "11:54:15.927000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.782, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 787, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_11:50", + "arrival_time": "11:57:27.709000", + "departure_time": "11:57:27.709000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.368, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 788, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_11:50", + "arrival_time": "11:58:04.691000", + "departure_time": "11:58:04.691000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.481, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 789, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_11:50", + "arrival_time": "11:59:12.764000", + "departure_time": "11:59:12.764000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.689, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 790, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_11:50", + "arrival_time": "12:01:29.891000", + "departure_time": "12:01:29.891000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.108, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 791, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_11:50", + "arrival_time": "12:03:09.709000", + "departure_time": "12:03:09.709000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.413, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 792, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_11:50", + "arrival_time": "12:04:22.691000", + "departure_time": "12:04:22.691000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.636, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 793, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_11:50", + "arrival_time": "12:09:11.673000", + "departure_time": "12:09:11.673000", + "stop_id": "bUCR_0_02", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.519, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 794, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_12:05", + "arrival_time": "12:05:00", + "departure_time": "12:05:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 795, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_12:05", + "arrival_time": "12:09:00.873000", + "departure_time": "12:09:00.873000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.736, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 796, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_12:05", + "arrival_time": "12:12:28.364000", + "departure_time": "12:12:28.364000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.37, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 797, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_12:05", + "arrival_time": "12:13:12.873000", + "departure_time": "12:13:12.873000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.506, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 798, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_12:05", + "arrival_time": "12:14:11.127000", + "departure_time": "12:14:11.127000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.684, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 799, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_12:05", + "arrival_time": "12:16:27.600000", + "departure_time": "12:16:27.600000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.101, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 800, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_12:05", + "arrival_time": "12:18:11.018000", + "departure_time": "12:18:11.018000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.417, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 801, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_12:05", + "arrival_time": "12:19:22.364000", + "departure_time": "12:19:22.364000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.635, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 802, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_12:05", + "arrival_time": "12:22:17.782000", + "departure_time": "12:22:17.782000", + "stop_id": "bUCR_0_01", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.171, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 803, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_12:10", + "arrival_time": "12:10:00", + "departure_time": "12:10:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 804, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_12:10", + "arrival_time": "12:14:15.927000", + "departure_time": "12:14:15.927000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.782, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 805, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_12:10", + "arrival_time": "12:17:27.709000", + "departure_time": "12:17:27.709000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.368, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 806, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_12:10", + "arrival_time": "12:18:04.691000", + "departure_time": "12:18:04.691000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.481, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 807, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_12:10", + "arrival_time": "12:19:12.764000", + "departure_time": "12:19:12.764000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.689, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 808, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_12:10", + "arrival_time": "12:21:29.891000", + "departure_time": "12:21:29.891000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.108, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 809, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_12:10", + "arrival_time": "12:23:09.709000", + "departure_time": "12:23:09.709000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.413, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 810, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_12:10", + "arrival_time": "12:24:22.691000", + "departure_time": "12:24:22.691000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.636, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 811, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_12:10", + "arrival_time": "12:29:11.673000", + "departure_time": "12:29:11.673000", + "stop_id": "bUCR_0_02", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.519, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 812, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_12:15", + "arrival_time": "12:15:00", + "departure_time": "12:15:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 813, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_12:15", + "arrival_time": "12:19:00.873000", + "departure_time": "12:19:00.873000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.736, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 814, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_12:15", + "arrival_time": "12:22:28.364000", + "departure_time": "12:22:28.364000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.37, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 815, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_12:15", + "arrival_time": "12:23:12.873000", + "departure_time": "12:23:12.873000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.506, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 816, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_12:15", + "arrival_time": "12:24:11.127000", + "departure_time": "12:24:11.127000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.684, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 817, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_12:15", + "arrival_time": "12:26:27.600000", + "departure_time": "12:26:27.600000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.101, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 818, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_12:15", + "arrival_time": "12:28:11.018000", + "departure_time": "12:28:11.018000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.417, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 819, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_12:15", + "arrival_time": "12:29:22.364000", + "departure_time": "12:29:22.364000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.635, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 820, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_12:15", + "arrival_time": "12:32:17.782000", + "departure_time": "12:32:17.782000", + "stop_id": "bUCR_0_01", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.171, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 821, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_12:25", + "arrival_time": "12:25:00", + "departure_time": "12:25:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 822, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_12:25", + "arrival_time": "12:29:15.927000", + "departure_time": "12:29:15.927000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.782, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 823, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_12:25", + "arrival_time": "12:32:27.709000", + "departure_time": "12:32:27.709000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.368, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 824, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_12:25", + "arrival_time": "12:33:04.691000", + "departure_time": "12:33:04.691000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.481, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 825, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_12:25", + "arrival_time": "12:34:12.764000", + "departure_time": "12:34:12.764000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.689, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 826, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_12:25", + "arrival_time": "12:36:29.891000", + "departure_time": "12:36:29.891000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.108, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 827, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_12:25", + "arrival_time": "12:38:09.709000", + "departure_time": "12:38:09.709000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.413, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 828, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_12:25", + "arrival_time": "12:39:22.691000", + "departure_time": "12:39:22.691000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.636, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 829, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_12:25", + "arrival_time": "12:44:11.673000", + "departure_time": "12:44:11.673000", + "stop_id": "bUCR_0_02", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.519, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 830, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_12:50", + "arrival_time": "12:50:00", + "departure_time": "12:50:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 831, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_12:50", + "arrival_time": "12:54:00.873000", + "departure_time": "12:54:00.873000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.736, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 832, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_12:50", + "arrival_time": "12:57:28.364000", + "departure_time": "12:57:28.364000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.37, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 833, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_12:50", + "arrival_time": "12:58:12.873000", + "departure_time": "12:58:12.873000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.506, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 834, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_12:50", + "arrival_time": "12:59:11.127000", + "departure_time": "12:59:11.127000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.684, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 835, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_12:50", + "arrival_time": "13:01:27.600000", + "departure_time": "13:01:27.600000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.101, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 836, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_12:50", + "arrival_time": "13:03:11.018000", + "departure_time": "13:03:11.018000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.417, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 837, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_12:50", + "arrival_time": "13:04:22.364000", + "departure_time": "13:04:22.364000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.635, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 838, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_12:50", + "arrival_time": "13:07:17.782000", + "departure_time": "13:07:17.782000", + "stop_id": "bUCR_0_01", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.171, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 839, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_13:00", + "arrival_time": "13:00:00", + "departure_time": "13:00:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 840, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_13:00", + "arrival_time": "13:04:15.927000", + "departure_time": "13:04:15.927000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.782, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 841, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_13:00", + "arrival_time": "13:07:27.709000", + "departure_time": "13:07:27.709000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.368, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 842, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_13:00", + "arrival_time": "13:08:04.691000", + "departure_time": "13:08:04.691000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.481, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 843, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_13:00", + "arrival_time": "13:09:12.764000", + "departure_time": "13:09:12.764000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.689, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 844, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_13:00", + "arrival_time": "13:11:29.891000", + "departure_time": "13:11:29.891000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.108, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 845, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_13:00", + "arrival_time": "13:13:09.709000", + "departure_time": "13:13:09.709000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.413, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 846, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_13:00", + "arrival_time": "13:14:22.691000", + "departure_time": "13:14:22.691000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.636, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 847, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_13:00", + "arrival_time": "13:19:11.673000", + "departure_time": "13:19:11.673000", + "stop_id": "bUCR_0_02", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.519, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 848, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_13:25", + "arrival_time": "13:25:00", + "departure_time": "13:25:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 849, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_13:25", + "arrival_time": "13:29:00.873000", + "departure_time": "13:29:00.873000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.736, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 850, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_13:25", + "arrival_time": "13:32:28.364000", + "departure_time": "13:32:28.364000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.37, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 851, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_13:25", + "arrival_time": "13:33:12.873000", + "departure_time": "13:33:12.873000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.506, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 852, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_13:25", + "arrival_time": "13:34:11.127000", + "departure_time": "13:34:11.127000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.684, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 853, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_13:25", + "arrival_time": "13:36:27.600000", + "departure_time": "13:36:27.600000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.101, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 854, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_13:25", + "arrival_time": "13:38:11.018000", + "departure_time": "13:38:11.018000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.417, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 855, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_13:25", + "arrival_time": "13:39:22.364000", + "departure_time": "13:39:22.364000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.635, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 856, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_13:25", + "arrival_time": "13:42:17.782000", + "departure_time": "13:42:17.782000", + "stop_id": "bUCR_0_01", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.171, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 857, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_13:40", + "arrival_time": "13:40:00", + "departure_time": "13:40:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 858, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_13:40", + "arrival_time": "13:44:15.927000", + "departure_time": "13:44:15.927000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.782, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 859, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_13:40", + "arrival_time": "13:47:27.709000", + "departure_time": "13:47:27.709000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.368, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 860, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_13:40", + "arrival_time": "13:48:04.691000", + "departure_time": "13:48:04.691000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.481, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 861, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_13:40", + "arrival_time": "13:49:12.764000", + "departure_time": "13:49:12.764000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.689, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 862, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_13:40", + "arrival_time": "13:51:29.891000", + "departure_time": "13:51:29.891000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.108, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 863, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_13:40", + "arrival_time": "13:53:09.709000", + "departure_time": "13:53:09.709000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.413, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 864, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_13:40", + "arrival_time": "13:54:22.691000", + "departure_time": "13:54:22.691000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.636, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 865, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_13:40", + "arrival_time": "13:59:11.673000", + "departure_time": "13:59:11.673000", + "stop_id": "bUCR_0_02", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.519, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 866, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_13:50", + "arrival_time": "13:50:00", + "departure_time": "13:50:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 867, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_13:50", + "arrival_time": "13:54:00.873000", + "departure_time": "13:54:00.873000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.736, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 868, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_13:50", + "arrival_time": "13:57:28.364000", + "departure_time": "13:57:28.364000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.37, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 869, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_13:50", + "arrival_time": "13:58:12.873000", + "departure_time": "13:58:12.873000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.506, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 870, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_13:50", + "arrival_time": "13:59:11.127000", + "departure_time": "13:59:11.127000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.684, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 871, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_13:50", + "arrival_time": "14:01:27.600000", + "departure_time": "14:01:27.600000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.101, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 872, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_13:50", + "arrival_time": "14:03:11.018000", + "departure_time": "14:03:11.018000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.417, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 873, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_13:50", + "arrival_time": "14:04:22.364000", + "departure_time": "14:04:22.364000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.635, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 874, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_13:50", + "arrival_time": "14:07:17.782000", + "departure_time": "14:07:17.782000", + "stop_id": "bUCR_0_01", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.171, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 875, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_14:00", + "arrival_time": "14:00:00", + "departure_time": "14:00:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 876, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_14:00", + "arrival_time": "14:04:15.927000", + "departure_time": "14:04:15.927000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.782, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 877, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_14:00", + "arrival_time": "14:07:27.709000", + "departure_time": "14:07:27.709000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.368, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 878, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_14:00", + "arrival_time": "14:08:04.691000", + "departure_time": "14:08:04.691000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.481, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 879, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_14:00", + "arrival_time": "14:09:12.764000", + "departure_time": "14:09:12.764000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.689, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 880, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_14:00", + "arrival_time": "14:11:29.891000", + "departure_time": "14:11:29.891000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.108, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 881, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_14:00", + "arrival_time": "14:13:09.709000", + "departure_time": "14:13:09.709000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.413, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 882, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_14:00", + "arrival_time": "14:14:22.691000", + "departure_time": "14:14:22.691000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.636, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 883, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_14:00", + "arrival_time": "14:19:11.673000", + "departure_time": "14:19:11.673000", + "stop_id": "bUCR_0_02", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.519, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 884, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_14:10", + "arrival_time": "14:10:00", + "departure_time": "14:10:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 885, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_14:10", + "arrival_time": "14:14:00.873000", + "departure_time": "14:14:00.873000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.736, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 886, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_14:10", + "arrival_time": "14:17:28.364000", + "departure_time": "14:17:28.364000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.37, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 887, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_14:10", + "arrival_time": "14:18:12.873000", + "departure_time": "14:18:12.873000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.506, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 888, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_14:10", + "arrival_time": "14:19:11.127000", + "departure_time": "14:19:11.127000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.684, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 889, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_14:10", + "arrival_time": "14:21:27.600000", + "departure_time": "14:21:27.600000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.101, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 890, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_14:10", + "arrival_time": "14:23:11.018000", + "departure_time": "14:23:11.018000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.417, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 891, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_14:10", + "arrival_time": "14:24:22.364000", + "departure_time": "14:24:22.364000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.635, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 892, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_14:10", + "arrival_time": "14:27:17.782000", + "departure_time": "14:27:17.782000", + "stop_id": "bUCR_0_01", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.171, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 893, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_14:25", + "arrival_time": "14:25:00", + "departure_time": "14:25:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 894, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_14:25", + "arrival_time": "14:29:15.927000", + "departure_time": "14:29:15.927000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.782, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 895, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_14:25", + "arrival_time": "14:32:27.709000", + "departure_time": "14:32:27.709000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.368, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 896, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_14:25", + "arrival_time": "14:33:04.691000", + "departure_time": "14:33:04.691000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.481, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 897, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_14:25", + "arrival_time": "14:34:12.764000", + "departure_time": "14:34:12.764000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.689, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 898, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_14:25", + "arrival_time": "14:36:29.891000", + "departure_time": "14:36:29.891000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.108, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 899, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_14:25", + "arrival_time": "14:38:09.709000", + "departure_time": "14:38:09.709000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.413, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 900, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_14:25", + "arrival_time": "14:39:22.691000", + "departure_time": "14:39:22.691000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.636, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 901, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_14:25", + "arrival_time": "14:44:11.673000", + "departure_time": "14:44:11.673000", + "stop_id": "bUCR_0_02", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.519, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 902, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_14:35", + "arrival_time": "14:35:00", + "departure_time": "14:35:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 903, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_14:35", + "arrival_time": "14:39:00.873000", + "departure_time": "14:39:00.873000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.736, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 904, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_14:35", + "arrival_time": "14:42:28.364000", + "departure_time": "14:42:28.364000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.37, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 905, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_14:35", + "arrival_time": "14:43:12.873000", + "departure_time": "14:43:12.873000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.506, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 906, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_14:35", + "arrival_time": "14:44:11.127000", + "departure_time": "14:44:11.127000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.684, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 907, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_14:35", + "arrival_time": "14:46:27.600000", + "departure_time": "14:46:27.600000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.101, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 908, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_14:35", + "arrival_time": "14:48:11.018000", + "departure_time": "14:48:11.018000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.417, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 909, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_14:35", + "arrival_time": "14:49:22.364000", + "departure_time": "14:49:22.364000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.635, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 910, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_14:35", + "arrival_time": "14:52:17.782000", + "departure_time": "14:52:17.782000", + "stop_id": "bUCR_0_01", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.171, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 911, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_14:45", + "arrival_time": "14:45:00", + "departure_time": "14:45:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 912, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_14:45", + "arrival_time": "14:49:15.927000", + "departure_time": "14:49:15.927000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.782, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 913, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_14:45", + "arrival_time": "14:52:27.709000", + "departure_time": "14:52:27.709000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.368, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 914, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_14:45", + "arrival_time": "14:53:04.691000", + "departure_time": "14:53:04.691000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.481, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 915, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_14:45", + "arrival_time": "14:54:12.764000", + "departure_time": "14:54:12.764000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.689, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 916, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_14:45", + "arrival_time": "14:56:29.891000", + "departure_time": "14:56:29.891000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.108, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 917, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_14:45", + "arrival_time": "14:58:09.709000", + "departure_time": "14:58:09.709000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.413, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 918, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_14:45", + "arrival_time": "14:59:22.691000", + "departure_time": "14:59:22.691000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.636, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 919, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_14:45", + "arrival_time": "15:04:11.673000", + "departure_time": "15:04:11.673000", + "stop_id": "bUCR_0_02", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.519, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 920, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_14:55", + "arrival_time": "14:55:00", + "departure_time": "14:55:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 921, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_14:55", + "arrival_time": "14:59:00.873000", + "departure_time": "14:59:00.873000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.736, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 922, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_14:55", + "arrival_time": "15:02:28.364000", + "departure_time": "15:02:28.364000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.37, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 923, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_14:55", + "arrival_time": "15:03:12.873000", + "departure_time": "15:03:12.873000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.506, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 924, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_14:55", + "arrival_time": "15:04:11.127000", + "departure_time": "15:04:11.127000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.684, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 925, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_14:55", + "arrival_time": "15:06:27.600000", + "departure_time": "15:06:27.600000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.101, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 926, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_14:55", + "arrival_time": "15:08:11.018000", + "departure_time": "15:08:11.018000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.417, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 927, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_14:55", + "arrival_time": "15:09:22.364000", + "departure_time": "15:09:22.364000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.635, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 928, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_14:55", + "arrival_time": "15:12:17.782000", + "departure_time": "15:12:17.782000", + "stop_id": "bUCR_0_01", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.171, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 929, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_15:10", + "arrival_time": "15:10:00", + "departure_time": "15:10:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 930, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_15:10", + "arrival_time": "15:14:15.927000", + "departure_time": "15:14:15.927000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.782, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 931, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_15:10", + "arrival_time": "15:17:27.709000", + "departure_time": "15:17:27.709000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.368, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 932, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_15:10", + "arrival_time": "15:18:04.691000", + "departure_time": "15:18:04.691000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.481, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 933, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_15:10", + "arrival_time": "15:19:12.764000", + "departure_time": "15:19:12.764000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.689, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 934, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_15:10", + "arrival_time": "15:21:29.891000", + "departure_time": "15:21:29.891000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.108, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 935, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_15:10", + "arrival_time": "15:23:09.709000", + "departure_time": "15:23:09.709000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.413, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 936, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_15:10", + "arrival_time": "15:24:22.691000", + "departure_time": "15:24:22.691000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.636, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 937, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_15:10", + "arrival_time": "15:29:11.673000", + "departure_time": "15:29:11.673000", + "stop_id": "bUCR_0_02", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.519, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 938, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_15:20", + "arrival_time": "15:20:00", + "departure_time": "15:20:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 939, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_15:20", + "arrival_time": "15:24:00.873000", + "departure_time": "15:24:00.873000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.736, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 940, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_15:20", + "arrival_time": "15:27:28.364000", + "departure_time": "15:27:28.364000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.37, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 941, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_15:20", + "arrival_time": "15:28:12.873000", + "departure_time": "15:28:12.873000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.506, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 942, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_15:20", + "arrival_time": "15:29:11.127000", + "departure_time": "15:29:11.127000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.684, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 943, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_15:20", + "arrival_time": "15:31:27.600000", + "departure_time": "15:31:27.600000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.101, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 944, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_15:20", + "arrival_time": "15:33:11.018000", + "departure_time": "15:33:11.018000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.417, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 945, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_15:20", + "arrival_time": "15:34:22.364000", + "departure_time": "15:34:22.364000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.635, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 946, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_15:20", + "arrival_time": "15:37:17.782000", + "departure_time": "15:37:17.782000", + "stop_id": "bUCR_0_01", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.171, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 947, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_15:30", + "arrival_time": "15:30:00", + "departure_time": "15:30:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 948, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_15:30", + "arrival_time": "15:34:15.927000", + "departure_time": "15:34:15.927000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.782, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 949, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_15:30", + "arrival_time": "15:37:27.709000", + "departure_time": "15:37:27.709000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.368, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 950, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_15:30", + "arrival_time": "15:38:04.691000", + "departure_time": "15:38:04.691000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.481, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 951, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_15:30", + "arrival_time": "15:39:12.764000", + "departure_time": "15:39:12.764000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.689, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 952, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_15:30", + "arrival_time": "15:41:29.891000", + "departure_time": "15:41:29.891000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.108, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 953, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_15:30", + "arrival_time": "15:43:09.709000", + "departure_time": "15:43:09.709000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.413, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 954, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_15:30", + "arrival_time": "15:44:22.691000", + "departure_time": "15:44:22.691000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.636, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 955, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_15:30", + "arrival_time": "15:49:11.673000", + "departure_time": "15:49:11.673000", + "stop_id": "bUCR_0_02", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.519, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 956, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_16:05", + "arrival_time": "16:05:00", + "departure_time": "16:05:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 957, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_16:05", + "arrival_time": "16:09:00.873000", + "departure_time": "16:09:00.873000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.736, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 958, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_16:05", + "arrival_time": "16:12:28.364000", + "departure_time": "16:12:28.364000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.37, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 959, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_16:05", + "arrival_time": "16:13:12.873000", + "departure_time": "16:13:12.873000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.506, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 960, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_16:05", + "arrival_time": "16:14:11.127000", + "departure_time": "16:14:11.127000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.684, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 961, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_16:05", + "arrival_time": "16:16:27.600000", + "departure_time": "16:16:27.600000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.101, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 962, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_16:05", + "arrival_time": "16:18:11.018000", + "departure_time": "16:18:11.018000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.417, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 963, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_16:05", + "arrival_time": "16:19:22.364000", + "departure_time": "16:19:22.364000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.635, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 964, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_16:05", + "arrival_time": "16:22:17.782000", + "departure_time": "16:22:17.782000", + "stop_id": "bUCR_0_01", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.171, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 965, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_16:15", + "arrival_time": "16:15:00", + "departure_time": "16:15:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 966, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_16:15", + "arrival_time": "16:19:15.927000", + "departure_time": "16:19:15.927000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.782, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 967, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_16:15", + "arrival_time": "16:22:27.709000", + "departure_time": "16:22:27.709000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.368, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 968, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_16:15", + "arrival_time": "16:23:04.691000", + "departure_time": "16:23:04.691000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.481, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 969, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_16:15", + "arrival_time": "16:24:12.764000", + "departure_time": "16:24:12.764000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.689, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 970, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_16:15", + "arrival_time": "16:26:29.891000", + "departure_time": "16:26:29.891000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.108, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 971, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_16:15", + "arrival_time": "16:28:09.709000", + "departure_time": "16:28:09.709000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.413, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 972, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_16:15", + "arrival_time": "16:29:22.691000", + "departure_time": "16:29:22.691000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.636, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 973, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_16:15", + "arrival_time": "16:34:11.673000", + "departure_time": "16:34:11.673000", + "stop_id": "bUCR_0_02", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.519, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 974, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_16:30", + "arrival_time": "16:30:00", + "departure_time": "16:30:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 975, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_16:30", + "arrival_time": "16:34:00.873000", + "departure_time": "16:34:00.873000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.736, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 976, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_16:30", + "arrival_time": "16:37:28.364000", + "departure_time": "16:37:28.364000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.37, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 977, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_16:30", + "arrival_time": "16:38:12.873000", + "departure_time": "16:38:12.873000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.506, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 978, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_16:30", + "arrival_time": "16:39:11.127000", + "departure_time": "16:39:11.127000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.684, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 979, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_16:30", + "arrival_time": "16:41:27.600000", + "departure_time": "16:41:27.600000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.101, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 980, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_16:30", + "arrival_time": "16:43:11.018000", + "departure_time": "16:43:11.018000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.417, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 981, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_16:30", + "arrival_time": "16:44:22.364000", + "departure_time": "16:44:22.364000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.635, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 982, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_16:30", + "arrival_time": "16:47:17.782000", + "departure_time": "16:47:17.782000", + "stop_id": "bUCR_0_01", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.171, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 983, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_16:40", + "arrival_time": "16:40:00", + "departure_time": "16:40:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 984, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_16:40", + "arrival_time": "16:44:15.927000", + "departure_time": "16:44:15.927000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.782, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 985, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_16:40", + "arrival_time": "16:47:27.709000", + "departure_time": "16:47:27.709000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.368, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 986, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_16:40", + "arrival_time": "16:48:04.691000", + "departure_time": "16:48:04.691000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.481, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 987, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_16:40", + "arrival_time": "16:49:12.764000", + "departure_time": "16:49:12.764000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.689, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 988, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_16:40", + "arrival_time": "16:51:29.891000", + "departure_time": "16:51:29.891000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.108, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 989, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_16:40", + "arrival_time": "16:53:09.709000", + "departure_time": "16:53:09.709000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.413, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 990, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_16:40", + "arrival_time": "16:54:22.691000", + "departure_time": "16:54:22.691000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.636, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 991, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_16:40", + "arrival_time": "16:59:11.673000", + "departure_time": "16:59:11.673000", + "stop_id": "bUCR_0_02", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.519, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 992, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_17:05", + "arrival_time": "17:05:00", + "departure_time": "17:05:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 993, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_17:05", + "arrival_time": "17:09:00.873000", + "departure_time": "17:09:00.873000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.736, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 994, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_17:05", + "arrival_time": "17:12:28.364000", + "departure_time": "17:12:28.364000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.37, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 995, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_17:05", + "arrival_time": "17:13:12.873000", + "departure_time": "17:13:12.873000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.506, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 996, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_17:05", + "arrival_time": "17:14:11.127000", + "departure_time": "17:14:11.127000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.684, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 997, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_17:05", + "arrival_time": "17:16:27.600000", + "departure_time": "17:16:27.600000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.101, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 998, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_17:05", + "arrival_time": "17:18:11.018000", + "departure_time": "17:18:11.018000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.417, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 999, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_17:05", + "arrival_time": "17:19:22.364000", + "departure_time": "17:19:22.364000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.635, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1000, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_17:05", + "arrival_time": "17:22:17.782000", + "departure_time": "17:22:17.782000", + "stop_id": "bUCR_0_01", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.171, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1001, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_17:15", + "arrival_time": "17:15:00", + "departure_time": "17:15:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 1002, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_17:15", + "arrival_time": "17:19:15.927000", + "departure_time": "17:19:15.927000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.782, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1003, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_17:15", + "arrival_time": "17:22:27.709000", + "departure_time": "17:22:27.709000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.368, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1004, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_17:15", + "arrival_time": "17:23:04.691000", + "departure_time": "17:23:04.691000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.481, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1005, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_17:15", + "arrival_time": "17:24:12.764000", + "departure_time": "17:24:12.764000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.689, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1006, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_17:15", + "arrival_time": "17:26:29.891000", + "departure_time": "17:26:29.891000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.108, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1007, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_17:15", + "arrival_time": "17:28:09.709000", + "departure_time": "17:28:09.709000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.413, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1008, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_17:15", + "arrival_time": "17:29:22.691000", + "departure_time": "17:29:22.691000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.636, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1009, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_17:15", + "arrival_time": "17:34:11.673000", + "departure_time": "17:34:11.673000", + "stop_id": "bUCR_0_02", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.519, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1010, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_17:30", + "arrival_time": "17:30:00", + "departure_time": "17:30:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 1011, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_17:30", + "arrival_time": "17:34:00.873000", + "departure_time": "17:34:00.873000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.736, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1012, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_17:30", + "arrival_time": "17:37:28.364000", + "departure_time": "17:37:28.364000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.37, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1013, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_17:30", + "arrival_time": "17:38:12.873000", + "departure_time": "17:38:12.873000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.506, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1014, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_17:30", + "arrival_time": "17:39:11.127000", + "departure_time": "17:39:11.127000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.684, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1015, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_17:30", + "arrival_time": "17:41:27.600000", + "departure_time": "17:41:27.600000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.101, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1016, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_17:30", + "arrival_time": "17:43:11.018000", + "departure_time": "17:43:11.018000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.417, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1017, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_17:30", + "arrival_time": "17:44:22.364000", + "departure_time": "17:44:22.364000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.635, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1018, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_17:30", + "arrival_time": "17:47:17.782000", + "departure_time": "17:47:17.782000", + "stop_id": "bUCR_0_01", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.171, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1019, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_17:40", + "arrival_time": "17:40:00", + "departure_time": "17:40:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 1020, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_17:40", + "arrival_time": "17:44:15.927000", + "departure_time": "17:44:15.927000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.782, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1021, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_17:40", + "arrival_time": "17:47:27.709000", + "departure_time": "17:47:27.709000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.368, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1022, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_17:40", + "arrival_time": "17:48:04.691000", + "departure_time": "17:48:04.691000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.481, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1023, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_17:40", + "arrival_time": "17:49:12.764000", + "departure_time": "17:49:12.764000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.689, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1024, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_17:40", + "arrival_time": "17:51:29.891000", + "departure_time": "17:51:29.891000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.108, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1025, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_17:40", + "arrival_time": "17:53:09.709000", + "departure_time": "17:53:09.709000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.413, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1026, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_17:40", + "arrival_time": "17:54:22.691000", + "departure_time": "17:54:22.691000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.636, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1027, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_17:40", + "arrival_time": "17:59:11.673000", + "departure_time": "17:59:11.673000", + "stop_id": "bUCR_0_02", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.519, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1028, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_18:05", + "arrival_time": "18:05:00", + "departure_time": "18:05:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 1029, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_18:05", + "arrival_time": "18:09:00.873000", + "departure_time": "18:09:00.873000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.736, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1030, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_18:05", + "arrival_time": "18:12:28.364000", + "departure_time": "18:12:28.364000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.37, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1031, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_18:05", + "arrival_time": "18:13:12.873000", + "departure_time": "18:13:12.873000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.506, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1032, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_18:05", + "arrival_time": "18:14:11.127000", + "departure_time": "18:14:11.127000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.684, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1033, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_18:05", + "arrival_time": "18:16:27.600000", + "departure_time": "18:16:27.600000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.101, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1034, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_18:05", + "arrival_time": "18:18:11.018000", + "departure_time": "18:18:11.018000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.417, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1035, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_18:05", + "arrival_time": "18:19:22.364000", + "departure_time": "18:19:22.364000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.635, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1036, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_18:05", + "arrival_time": "18:22:17.782000", + "departure_time": "18:22:17.782000", + "stop_id": "bUCR_0_01", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.171, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1037, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_18:15", + "arrival_time": "18:15:00", + "departure_time": "18:15:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 1038, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_18:15", + "arrival_time": "18:19:15.927000", + "departure_time": "18:19:15.927000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.782, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1039, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_18:15", + "arrival_time": "18:22:27.709000", + "departure_time": "18:22:27.709000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.368, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1040, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_18:15", + "arrival_time": "18:23:04.691000", + "departure_time": "18:23:04.691000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.481, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1041, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_18:15", + "arrival_time": "18:24:12.764000", + "departure_time": "18:24:12.764000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.689, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1042, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_18:15", + "arrival_time": "18:26:29.891000", + "departure_time": "18:26:29.891000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.108, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1043, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_18:15", + "arrival_time": "18:28:09.709000", + "departure_time": "18:28:09.709000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.413, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1044, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_18:15", + "arrival_time": "18:29:22.691000", + "departure_time": "18:29:22.691000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.636, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1045, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_18:15", + "arrival_time": "18:34:11.673000", + "departure_time": "18:34:11.673000", + "stop_id": "bUCR_0_02", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.519, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1046, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_18:30", + "arrival_time": "18:30:00", + "departure_time": "18:30:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 1047, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_18:30", + "arrival_time": "18:34:00.873000", + "departure_time": "18:34:00.873000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.736, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1048, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_18:30", + "arrival_time": "18:37:28.364000", + "departure_time": "18:37:28.364000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.37, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1049, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_18:30", + "arrival_time": "18:38:12.873000", + "departure_time": "18:38:12.873000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.506, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1050, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_18:30", + "arrival_time": "18:39:11.127000", + "departure_time": "18:39:11.127000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.684, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1051, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_18:30", + "arrival_time": "18:41:27.600000", + "departure_time": "18:41:27.600000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.101, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1052, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_18:30", + "arrival_time": "18:43:11.018000", + "departure_time": "18:43:11.018000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.417, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1053, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_18:30", + "arrival_time": "18:44:22.364000", + "departure_time": "18:44:22.364000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.635, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1054, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_18:30", + "arrival_time": "18:47:17.782000", + "departure_time": "18:47:17.782000", + "stop_id": "bUCR_0_01", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.171, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1055, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_18:40", + "arrival_time": "18:40:00", + "departure_time": "18:40:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 1056, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_18:40", + "arrival_time": "18:44:15.927000", + "departure_time": "18:44:15.927000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.782, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1057, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_18:40", + "arrival_time": "18:47:27.709000", + "departure_time": "18:47:27.709000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.368, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1058, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_18:40", + "arrival_time": "18:48:04.691000", + "departure_time": "18:48:04.691000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.481, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1059, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_18:40", + "arrival_time": "18:49:12.764000", + "departure_time": "18:49:12.764000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.689, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1060, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_18:40", + "arrival_time": "18:51:29.891000", + "departure_time": "18:51:29.891000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.108, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1061, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_18:40", + "arrival_time": "18:53:09.709000", + "departure_time": "18:53:09.709000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.413, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1062, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_18:40", + "arrival_time": "18:54:22.691000", + "departure_time": "18:54:22.691000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.636, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1063, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_18:40", + "arrival_time": "18:59:11.673000", + "departure_time": "18:59:11.673000", + "stop_id": "bUCR_0_02", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.519, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1064, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_18:55", + "arrival_time": "18:55:00", + "departure_time": "18:55:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 1065, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_18:55", + "arrival_time": "18:59:00.873000", + "departure_time": "18:59:00.873000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.736, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1066, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_18:55", + "arrival_time": "19:02:28.364000", + "departure_time": "19:02:28.364000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.37, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1067, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_18:55", + "arrival_time": "19:03:12.873000", + "departure_time": "19:03:12.873000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.506, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1068, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_18:55", + "arrival_time": "19:04:11.127000", + "departure_time": "19:04:11.127000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.684, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1069, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_18:55", + "arrival_time": "19:06:27.600000", + "departure_time": "19:06:27.600000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.101, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1070, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_18:55", + "arrival_time": "19:08:11.018000", + "departure_time": "19:08:11.018000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.417, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1071, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_18:55", + "arrival_time": "19:09:22.364000", + "departure_time": "19:09:22.364000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.635, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1072, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_18:55", + "arrival_time": "19:12:17.782000", + "departure_time": "19:12:17.782000", + "stop_id": "bUCR_0_01", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.171, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1073, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_19:15", + "arrival_time": "19:15:00", + "departure_time": "19:15:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 1074, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_19:15", + "arrival_time": "19:19:00.873000", + "departure_time": "19:19:00.873000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.736, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1075, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_19:15", + "arrival_time": "19:22:28.364000", + "departure_time": "19:22:28.364000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.37, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1076, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_19:15", + "arrival_time": "19:23:12.873000", + "departure_time": "19:23:12.873000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.506, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1077, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_19:15", + "arrival_time": "19:24:11.127000", + "departure_time": "19:24:11.127000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.684, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1078, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_19:15", + "arrival_time": "19:26:27.600000", + "departure_time": "19:26:27.600000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.101, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1079, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_19:15", + "arrival_time": "19:28:11.018000", + "departure_time": "19:28:11.018000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.417, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1080, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_19:15", + "arrival_time": "19:29:22.364000", + "departure_time": "19:29:22.364000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.635, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1081, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_19:15", + "arrival_time": "19:32:17.782000", + "departure_time": "19:32:17.782000", + "stop_id": "bUCR_0_01", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.171, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1082, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_19:50", + "arrival_time": "19:50:00", + "departure_time": "19:50:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 1083, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_19:50", + "arrival_time": "19:54:15.927000", + "departure_time": "19:54:15.927000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.782, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1084, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_19:50", + "arrival_time": "19:57:27.709000", + "departure_time": "19:57:27.709000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.368, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1085, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_19:50", + "arrival_time": "19:58:04.691000", + "departure_time": "19:58:04.691000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.481, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1086, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_19:50", + "arrival_time": "19:59:12.764000", + "departure_time": "19:59:12.764000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.689, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1087, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_19:50", + "arrival_time": "20:01:29.891000", + "departure_time": "20:01:29.891000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.108, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1088, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_19:50", + "arrival_time": "20:03:09.709000", + "departure_time": "20:03:09.709000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.413, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1089, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_19:50", + "arrival_time": "20:04:22.691000", + "departure_time": "20:04:22.691000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.636, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1090, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_19:50", + "arrival_time": "20:09:11.673000", + "departure_time": "20:09:11.673000", + "stop_id": "bUCR_0_02", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.519, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1091, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_20:30", + "arrival_time": "20:30:00", + "departure_time": "20:30:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 1092, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_20:30", + "arrival_time": "20:34:00.873000", + "departure_time": "20:34:00.873000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.736, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1093, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_20:30", + "arrival_time": "20:37:28.364000", + "departure_time": "20:37:28.364000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.37, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1094, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_20:30", + "arrival_time": "20:38:12.873000", + "departure_time": "20:38:12.873000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.506, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1095, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_20:30", + "arrival_time": "20:39:11.127000", + "departure_time": "20:39:11.127000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.684, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1096, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_20:30", + "arrival_time": "20:41:27.600000", + "departure_time": "20:41:27.600000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.101, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1097, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_20:30", + "arrival_time": "20:43:11.018000", + "departure_time": "20:43:11.018000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.417, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1098, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_20:30", + "arrival_time": "20:44:22.364000", + "departure_time": "20:44:22.364000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.635, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1099, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_20:30", + "arrival_time": "20:47:17.782000", + "departure_time": "20:47:17.782000", + "stop_id": "bUCR_0_01", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.171, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1100, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_20:40", + "arrival_time": "20:40:00", + "departure_time": "20:40:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 1101, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_20:40", + "arrival_time": "20:44:00.873000", + "departure_time": "20:44:00.873000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.736, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1102, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_20:40", + "arrival_time": "20:47:28.364000", + "departure_time": "20:47:28.364000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.37, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1103, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_20:40", + "arrival_time": "20:48:12.873000", + "departure_time": "20:48:12.873000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.506, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1104, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_20:40", + "arrival_time": "20:49:11.127000", + "departure_time": "20:49:11.127000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.684, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1105, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_20:40", + "arrival_time": "20:51:27.600000", + "departure_time": "20:51:27.600000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.101, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1106, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_20:40", + "arrival_time": "20:53:11.018000", + "departure_time": "20:53:11.018000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.417, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1107, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_20:40", + "arrival_time": "20:54:22.364000", + "departure_time": "20:54:22.364000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.635, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1108, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_20:40", + "arrival_time": "20:57:17.782000", + "departure_time": "20:57:17.782000", + "stop_id": "bUCR_0_01", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.171, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1109, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_21:15", + "arrival_time": "21:15:00", + "departure_time": "21:15:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "feed.stoptime", + "pk": 1110, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_21:15", + "arrival_time": "21:19:00.873000", + "departure_time": "21:19:00.873000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.736, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1111, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_21:15", + "arrival_time": "21:22:28.364000", + "departure_time": "21:22:28.364000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.37, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1112, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_21:15", + "arrival_time": "21:23:12.873000", + "departure_time": "21:23:12.873000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.506, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1113, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_21:15", + "arrival_time": "21:24:11.127000", + "departure_time": "21:24:11.127000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.684, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1114, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_21:15", + "arrival_time": "21:26:27.600000", + "departure_time": "21:26:27.600000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.101, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1115, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_21:15", + "arrival_time": "21:28:11.018000", + "departure_time": "21:28:11.018000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.417, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1116, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_21:15", + "arrival_time": "21:29:22.364000", + "departure_time": "21:29:22.364000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.635, + "timepoint": 0 + } + }, + { + "model": "feed.stoptime", + "pk": 1117, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_21:15", + "arrival_time": "21:32:17.782000", + "departure_time": "21:32:17.782000", + "stop_id": "bUCR_0_01", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.171, + "timepoint": 0 + } + }, + { + "model": "feed.calendar", + "pk": 1, + "fields": { + "feed": "1", + "service_id": "entresemana", + "monday": 1, + "tuesday": 1, + "wednesday": 1, + "thursday": 1, + "friday": 1, + "saturday": 0, + "sunday": 0, + "start_date": "2024-01-01", + "end_date": "2024-12-31" + } + }, + { + "model": "feed.farerule", + "pk": 1, + "fields": { + "feed": "1", + "fare_id": "no_tarifa", + "route_id": "bUCR_L1", + "origin_id": "bUCR_0", + "destination_id": "bUCR_0", + "contains_id": "" + } + }, + { + "model": "feed.farerule", + "pk": 2, + "fields": { + "feed": "1", + "fare_id": "no_tarifa", + "route_id": "bUCR_L2", + "origin_id": "bUCR_1", + "destination_id": "bUCR_1", + "contains_id": "" + } + }, + { + "model": "feed.fareattribute", + "pk": 1, + "fields": { + "feed": "1", + "fare_id": "no_tarifa", + "price": 0, + "currency_type": "CRC", + "payment_method": 0, + "transfers": 0, + "transfer_duration": null + } + }, + { + "model": "feed.shape", + "pk": 1, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93554944029271, + "shape_pt_lon": -84.0491138975951, + "shape_pt_sequence": 0, + "shape_dist_traveled": 0.0 + } + }, + { + "model": "feed.shape", + "pk": 2, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.9355589010814, + "shape_pt_lon": -84.0491582627979, + "shape_pt_sequence": 1, + "shape_dist_traveled": 0.005 + } + }, + { + "model": "feed.shape", + "pk": 3, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93557354275506, + "shape_pt_lon": -84.0492241246225, + "shape_pt_sequence": 2, + "shape_dist_traveled": 0.012 + } + }, + { + "model": "feed.shape", + "pk": 4, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.9356000651633, + "shape_pt_lon": -84.049324861376, + "shape_pt_sequence": 3, + "shape_dist_traveled": 0.024 + } + }, + { + "model": "feed.shape", + "pk": 5, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93563773463719, + "shape_pt_lon": -84.049416778843, + "shape_pt_sequence": 4, + "shape_dist_traveled": 0.035 + } + }, + { + "model": "feed.shape", + "pk": 6, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93568399531643, + "shape_pt_lon": -84.0495368755472, + "shape_pt_sequence": 5, + "shape_dist_traveled": 0.049 + } + }, + { + "model": "feed.shape", + "pk": 7, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93570316048327, + "shape_pt_lon": -84.0495945755631, + "shape_pt_sequence": 6, + "shape_dist_traveled": 0.056 + } + }, + { + "model": "feed.shape", + "pk": 8, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93571109089738, + "shape_pt_lon": -84.0496871639603, + "shape_pt_sequence": 7, + "shape_dist_traveled": 0.066 + } + }, + { + "model": "feed.shape", + "pk": 9, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93571292483817, + "shape_pt_lon": -84.0498464474787, + "shape_pt_sequence": 8, + "shape_dist_traveled": 0.083 + } + }, + { + "model": "feed.shape", + "pk": 10, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93570393244304, + "shape_pt_lon": -84.0500877222699, + "shape_pt_sequence": 9, + "shape_dist_traveled": 0.11 + } + }, + { + "model": "feed.shape", + "pk": 11, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93566539329337, + "shape_pt_lon": -84.050351168656, + "shape_pt_sequence": 10, + "shape_dist_traveled": 0.139 + } + }, + { + "model": "feed.shape", + "pk": 12, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93561786205413, + "shape_pt_lon": -84.0505937476355, + "shape_pt_sequence": 11, + "shape_dist_traveled": 0.166 + } + }, + { + "model": "feed.shape", + "pk": 13, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93556519227529, + "shape_pt_lon": -84.050878060609, + "shape_pt_sequence": 12, + "shape_dist_traveled": 0.198 + } + }, + { + "model": "feed.shape", + "pk": 14, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93552922267821, + "shape_pt_lon": -84.051108901895, + "shape_pt_sequence": 13, + "shape_dist_traveled": 0.223 + } + }, + { + "model": "feed.shape", + "pk": 15, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93548169125642, + "shape_pt_lon": -84.0513932152566, + "shape_pt_sequence": 14, + "shape_dist_traveled": 0.255 + } + }, + { + "model": "feed.shape", + "pk": 16, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93545342942273, + "shape_pt_lon": -84.0516410109878, + "shape_pt_sequence": 15, + "shape_dist_traveled": 0.282 + } + }, + { + "model": "feed.shape", + "pk": 17, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93544741074256, + "shape_pt_lon": -84.0516943904767, + "shape_pt_sequence": 16, + "shape_dist_traveled": 0.288 + } + }, + { + "model": "feed.shape", + "pk": 18, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93544700627605, + "shape_pt_lon": -84.051754475488, + "shape_pt_sequence": 17, + "shape_dist_traveled": 0.295 + } + }, + { + "model": "feed.shape", + "pk": 19, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93546627570862, + "shape_pt_lon": -84.0519579288248, + "shape_pt_sequence": 18, + "shape_dist_traveled": 0.317 + } + }, + { + "model": "feed.shape", + "pk": 20, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93548939902537, + "shape_pt_lon": -84.052131385837, + "shape_pt_sequence": 19, + "shape_dist_traveled": 0.336 + } + }, + { + "model": "feed.shape", + "pk": 21, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93550517435119, + "shape_pt_lon": -84.0522239834817, + "shape_pt_sequence": 20, + "shape_dist_traveled": 0.347 + } + }, + { + "model": "feed.shape", + "pk": 22, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93554618004823, + "shape_pt_lon": -84.0523340057342, + "shape_pt_sequence": 21, + "shape_dist_traveled": 0.36 + } + }, + { + "model": "feed.shape", + "pk": 23, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93559987797587, + "shape_pt_lon": -84.0523914948391, + "shape_pt_sequence": 22, + "shape_dist_traveled": 0.368 + } + }, + { + "model": "feed.shape", + "pk": 24, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93565552854654, + "shape_pt_lon": -84.0524281689233, + "shape_pt_sequence": 23, + "shape_dist_traveled": 0.376 + } + }, + { + "model": "feed.shape", + "pk": 25, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93572094236273, + "shape_pt_lon": -84.0524410544122, + "shape_pt_sequence": 24, + "shape_dist_traveled": 0.383 + } + }, + { + "model": "feed.shape", + "pk": 26, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93583614886311, + "shape_pt_lon": -84.0524182569563, + "shape_pt_sequence": 25, + "shape_dist_traveled": 0.396 + } + }, + { + "model": "feed.shape", + "pk": 27, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93603336648931, + "shape_pt_lon": -84.0523528383197, + "shape_pt_sequence": 26, + "shape_dist_traveled": 0.419 + } + }, + { + "model": "feed.shape", + "pk": 28, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93625691629266, + "shape_pt_lon": -84.0522832947174, + "shape_pt_sequence": 27, + "shape_dist_traveled": 0.445 + } + }, + { + "model": "feed.shape", + "pk": 29, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93639307154715, + "shape_pt_lon": -84.0522431941422, + "shape_pt_sequence": 28, + "shape_dist_traveled": 0.46 + } + }, + { + "model": "feed.shape", + "pk": 30, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93653561474882, + "shape_pt_lon": -84.0522372469934, + "shape_pt_sequence": 29, + "shape_dist_traveled": 0.476 + } + }, + { + "model": "feed.shape", + "pk": 31, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93660005206628, + "shape_pt_lon": -84.0522600443969, + "shape_pt_sequence": 30, + "shape_dist_traveled": 0.484 + } + }, + { + "model": "feed.shape", + "pk": 32, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93661957852377, + "shape_pt_lon": -84.0523423132888, + "shape_pt_sequence": 31, + "shape_dist_traveled": 0.493 + } + }, + { + "model": "feed.shape", + "pk": 33, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93659126516027, + "shape_pt_lon": -84.0524275557544, + "shape_pt_sequence": 32, + "shape_dist_traveled": 0.503 + } + }, + { + "model": "feed.shape", + "pk": 34, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93653854371827, + "shape_pt_lon": -84.0524503531584, + "shape_pt_sequence": 33, + "shape_dist_traveled": 0.509 + } + }, + { + "model": "feed.shape", + "pk": 35, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93645360359939, + "shape_pt_lon": -84.0524483707755, + "shape_pt_sequence": 34, + "shape_dist_traveled": 0.519 + } + }, + { + "model": "feed.shape", + "pk": 36, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93636085286962, + "shape_pt_lon": -84.052439450052, + "shape_pt_sequence": 35, + "shape_dist_traveled": 0.529 + } + }, + { + "model": "feed.shape", + "pk": 37, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93633386047036, + "shape_pt_lon": -84.0524268046992, + "shape_pt_sequence": 36, + "shape_dist_traveled": 0.532 + } + }, + { + "model": "feed.shape", + "pk": 38, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93630422609543, + "shape_pt_lon": -84.0524265645631, + "shape_pt_sequence": 37, + "shape_dist_traveled": 0.535 + } + }, + { + "model": "feed.shape", + "pk": 39, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93618120917912, + "shape_pt_lon": -84.0524473794854, + "shape_pt_sequence": 38, + "shape_dist_traveled": 0.549 + } + }, + { + "model": "feed.shape", + "pk": 40, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93600742368285, + "shape_pt_lon": -84.052484053706, + "shape_pt_sequence": 39, + "shape_dist_traveled": 0.569 + } + }, + { + "model": "feed.shape", + "pk": 41, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93581118236608, + "shape_pt_lon": -84.0525276661302, + "shape_pt_sequence": 40, + "shape_dist_traveled": 0.591 + } + }, + { + "model": "feed.shape", + "pk": 42, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93571876163712, + "shape_pt_lon": -84.0525355663096, + "shape_pt_sequence": 41, + "shape_dist_traveled": 0.601 + } + }, + { + "model": "feed.shape", + "pk": 43, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93563153840537, + "shape_pt_lon": -84.0525177541372, + "shape_pt_sequence": 42, + "shape_dist_traveled": 0.611 + } + }, + { + "model": "feed.shape", + "pk": 44, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93553310902874, + "shape_pt_lon": -84.0524334735888, + "shape_pt_sequence": 43, + "shape_dist_traveled": 0.626 + } + }, + { + "model": "feed.shape", + "pk": 45, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93545970504671, + "shape_pt_lon": -84.0523512340121, + "shape_pt_sequence": 44, + "shape_dist_traveled": 0.638 + } + }, + { + "model": "feed.shape", + "pk": 46, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93542065199216, + "shape_pt_lon": -84.0522451765253, + "shape_pt_sequence": 45, + "shape_dist_traveled": 0.65 + } + }, + { + "model": "feed.shape", + "pk": 47, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93541674668641, + "shape_pt_lon": -84.0521014537632, + "shape_pt_sequence": 46, + "shape_dist_traveled": 0.666 + } + }, + { + "model": "feed.shape", + "pk": 48, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93537769362758, + "shape_pt_lon": -84.0518556382803, + "shape_pt_sequence": 47, + "shape_dist_traveled": 0.693 + } + }, + { + "model": "feed.shape", + "pk": 49, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93533766423581, + "shape_pt_lon": -84.0515960083744, + "shape_pt_sequence": 48, + "shape_dist_traveled": 0.722 + } + }, + { + "model": "feed.shape", + "pk": 50, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93531364398533, + "shape_pt_lon": -84.0515277691646, + "shape_pt_sequence": 49, + "shape_dist_traveled": 0.73 + } + }, + { + "model": "feed.shape", + "pk": 51, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93528103728449, + "shape_pt_lon": -84.0514612063353, + "shape_pt_sequence": 50, + "shape_dist_traveled": 0.738 + } + }, + { + "model": "feed.shape", + "pk": 52, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93537964636139, + "shape_pt_lon": -84.0510449054667, + "shape_pt_sequence": 51, + "shape_dist_traveled": 0.785 + } + }, + { + "model": "feed.shape", + "pk": 53, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93549228868242, + "shape_pt_lon": -84.0506385823758, + "shape_pt_sequence": 52, + "shape_dist_traveled": 0.831 + } + }, + { + "model": "feed.shape", + "pk": 54, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93560853450969, + "shape_pt_lon": -84.0501428263958, + "shape_pt_sequence": 53, + "shape_dist_traveled": 0.887 + } + }, + { + "model": "feed.shape", + "pk": 55, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93564523227799, + "shape_pt_lon": -84.0499153784661, + "shape_pt_sequence": 54, + "shape_dist_traveled": 0.912 + } + }, + { + "model": "feed.shape", + "pk": 56, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.9355593156005, + "shape_pt_lon": -84.0495436816674, + "shape_pt_sequence": 55, + "shape_dist_traveled": 0.954 + } + }, + { + "model": "feed.shape", + "pk": 57, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93549425099087, + "shape_pt_lon": -84.049203385401, + "shape_pt_sequence": 56, + "shape_dist_traveled": 0.992 + } + }, + { + "model": "feed.shape", + "pk": 58, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93539252590615, + "shape_pt_lon": -84.0487850070695, + "shape_pt_sequence": 57, + "shape_dist_traveled": 1.039 + } + }, + { + "model": "feed.shape", + "pk": 59, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93537592835444, + "shape_pt_lon": -84.0486462402645, + "shape_pt_sequence": 58, + "shape_dist_traveled": 1.055 + } + }, + { + "model": "feed.shape", + "pk": 60, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93528024833921, + "shape_pt_lon": -84.0486373195414, + "shape_pt_sequence": 59, + "shape_dist_traveled": 1.065 + } + }, + { + "model": "feed.shape", + "pk": 61, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93529755089066, + "shape_pt_lon": -84.0483824809879, + "shape_pt_sequence": 60, + "shape_dist_traveled": 1.093 + } + }, + { + "model": "feed.shape", + "pk": 62, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93524885628052, + "shape_pt_lon": -84.048123669054, + "shape_pt_sequence": 61, + "shape_dist_traveled": 1.122 + } + }, + { + "model": "feed.shape", + "pk": 63, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.9351256875275, + "shape_pt_lon": -84.0477514451489, + "shape_pt_sequence": 62, + "shape_dist_traveled": 1.165 + } + }, + { + "model": "feed.shape", + "pk": 64, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93500538311991, + "shape_pt_lon": -84.0473850372423, + "shape_pt_sequence": 63, + "shape_dist_traveled": 1.208 + } + }, + { + "model": "feed.shape", + "pk": 65, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93492412702167, + "shape_pt_lon": -84.0470954278149, + "shape_pt_sequence": 64, + "shape_dist_traveled": 1.241 + } + }, + { + "model": "feed.shape", + "pk": 66, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93480668693231, + "shape_pt_lon": -84.046441127981, + "shape_pt_sequence": 65, + "shape_dist_traveled": 1.314 + } + }, + { + "model": "feed.shape", + "pk": 67, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93468020166955, + "shape_pt_lon": -84.0458485099908, + "shape_pt_sequence": 66, + "shape_dist_traveled": 1.38 + } + }, + { + "model": "feed.shape", + "pk": 68, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93461570602311, + "shape_pt_lon": -84.0456145784198, + "shape_pt_sequence": 67, + "shape_dist_traveled": 1.407 + } + }, + { + "model": "feed.shape", + "pk": 69, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93495613335646, + "shape_pt_lon": -84.0456080574792, + "shape_pt_sequence": 68, + "shape_dist_traveled": 1.444 + } + }, + { + "model": "feed.shape", + "pk": 70, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93502533870439, + "shape_pt_lon": -84.0455873014759, + "shape_pt_sequence": 69, + "shape_dist_traveled": 1.452 + } + }, + { + "model": "feed.shape", + "pk": 71, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93533638426393, + "shape_pt_lon": -84.045580669786, + "shape_pt_sequence": 70, + "shape_dist_traveled": 1.487 + } + }, + { + "model": "feed.shape", + "pk": 72, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93558174876489, + "shape_pt_lon": -84.045528502083, + "shape_pt_sequence": 71, + "shape_dist_traveled": 1.514 + } + }, + { + "model": "feed.shape", + "pk": 73, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.9356639649666, + "shape_pt_lon": -84.0454554675517, + "shape_pt_sequence": 72, + "shape_dist_traveled": 1.527 + } + }, + { + "model": "feed.shape", + "pk": 74, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93591239555134, + "shape_pt_lon": -84.0454118867064, + "shape_pt_sequence": 73, + "shape_dist_traveled": 1.554 + } + }, + { + "model": "feed.shape", + "pk": 75, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93618345188633, + "shape_pt_lon": -84.0453571107868, + "shape_pt_sequence": 74, + "shape_dist_traveled": 1.585 + } + }, + { + "model": "feed.shape", + "pk": 76, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93630292207917, + "shape_pt_lon": -84.0453649359146, + "shape_pt_sequence": 75, + "shape_dist_traveled": 1.598 + } + }, + { + "model": "feed.shape", + "pk": 77, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93644423085287, + "shape_pt_lon": -84.0454366662581, + "shape_pt_sequence": 76, + "shape_dist_traveled": 1.616 + } + }, + { + "model": "feed.shape", + "pk": 78, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93668331840604, + "shape_pt_lon": -84.045567569655, + "shape_pt_sequence": 77, + "shape_dist_traveled": 1.646 + } + }, + { + "model": "feed.shape", + "pk": 79, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93677195745002, + "shape_pt_lon": -84.045592349228, + "shape_pt_sequence": 78, + "shape_dist_traveled": 1.656 + } + }, + { + "model": "feed.shape", + "pk": 80, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.9368528887295, + "shape_pt_lon": -84.0455871324757, + "shape_pt_sequence": 79, + "shape_dist_traveled": 1.665 + } + }, + { + "model": "feed.shape", + "pk": 81, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93694152772752, + "shape_pt_lon": -84.0455467026459, + "shape_pt_sequence": 80, + "shape_dist_traveled": 1.676 + } + }, + { + "model": "feed.shape", + "pk": 82, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93708540528038, + "shape_pt_lon": -84.0454423673758, + "shape_pt_sequence": 81, + "shape_dist_traveled": 1.695 + } + }, + { + "model": "feed.shape", + "pk": 83, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.9372459343465, + "shape_pt_lon": -84.0452787163273, + "shape_pt_sequence": 82, + "shape_dist_traveled": 1.721 + } + }, + { + "model": "feed.shape", + "pk": 84, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93733842710149, + "shape_pt_lon": -84.0451378640166, + "shape_pt_sequence": 83, + "shape_dist_traveled": 1.739 + } + }, + { + "model": "feed.shape", + "pk": 85, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93756026309952, + "shape_pt_lon": -84.044752821983, + "shape_pt_sequence": 84, + "shape_dist_traveled": 1.788 + } + }, + { + "model": "feed.shape", + "pk": 86, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93777652816203, + "shape_pt_lon": -84.0443585013794, + "shape_pt_sequence": 85, + "shape_dist_traveled": 1.837 + } + }, + { + "model": "feed.shape", + "pk": 87, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.9381041049962, + "shape_pt_lon": -84.0438016139119, + "shape_pt_sequence": 86, + "shape_dist_traveled": 1.908 + } + }, + { + "model": "feed.shape", + "pk": 88, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93796476738381, + "shape_pt_lon": -84.0436166501913, + "shape_pt_sequence": 87, + "shape_dist_traveled": 1.934 + } + }, + { + "model": "feed.shape", + "pk": 89, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93791473560688, + "shape_pt_lon": -84.0434457982085, + "shape_pt_sequence": 88, + "shape_dist_traveled": 1.953 + } + }, + { + "model": "feed.shape", + "pk": 90, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93789047771889, + "shape_pt_lon": -84.0432203034589, + "shape_pt_sequence": 89, + "shape_dist_traveled": 1.978 + } + }, + { + "model": "feed.shape", + "pk": 91, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93791970638376, + "shape_pt_lon": -84.0429894627193, + "shape_pt_sequence": 90, + "shape_dist_traveled": 2.004 + } + }, + { + "model": "feed.shape", + "pk": 92, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93798008366965, + "shape_pt_lon": -84.0426008139046, + "shape_pt_sequence": 91, + "shape_dist_traveled": 2.047 + } + }, + { + "model": "feed.shape", + "pk": 93, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93800449142722, + "shape_pt_lon": -84.0424795244151, + "shape_pt_sequence": 92, + "shape_dist_traveled": 2.06 + } + }, + { + "model": "feed.shape", + "pk": 94, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.9381380917555, + "shape_pt_lon": -84.0421782569734, + "shape_pt_sequence": 93, + "shape_dist_traveled": 2.097 + } + }, + { + "model": "feed.shape", + "pk": 95, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93816473253672, + "shape_pt_lon": -84.0419964534982, + "shape_pt_sequence": 94, + "shape_dist_traveled": 2.117 + } + }, + { + "model": "feed.shape", + "pk": 96, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93815830944601, + "shape_pt_lon": -84.0418503844357, + "shape_pt_sequence": 95, + "shape_dist_traveled": 2.133 + } + }, + { + "model": "feed.shape", + "pk": 97, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93812876322556, + "shape_pt_lon": -84.0417251823817, + "shape_pt_sequence": 96, + "shape_dist_traveled": 2.147 + } + }, + { + "model": "feed.shape", + "pk": 98, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93807176432108, + "shape_pt_lon": -84.0416449024973, + "shape_pt_sequence": 97, + "shape_dist_traveled": 2.158 + } + }, + { + "model": "feed.shape", + "pk": 99, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.9380170014129, + "shape_pt_lon": -84.0416364975937, + "shape_pt_sequence": 98, + "shape_dist_traveled": 2.164 + } + }, + { + "model": "feed.shape", + "pk": 100, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.9379218878614, + "shape_pt_lon": -84.0416378013257, + "shape_pt_sequence": 99, + "shape_dist_traveled": 2.174 + } + }, + { + "model": "feed.shape", + "pk": 101, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93790138516287, + "shape_pt_lon": -84.0411362584451, + "shape_pt_sequence": 100, + "shape_dist_traveled": 2.229 + } + }, + { + "model": "feed.shape", + "pk": 102, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93789650346394, + "shape_pt_lon": -84.041068473332, + "shape_pt_sequence": 101, + "shape_dist_traveled": 2.237 + } + }, + { + "model": "feed.shape", + "pk": 103, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93846399292934, + "shape_pt_lon": -84.0409289658467, + "shape_pt_sequence": 102, + "shape_dist_traveled": 2.301 + } + }, + { + "model": "feed.shape", + "pk": 104, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93868999787477, + "shape_pt_lon": -84.0409645503437, + "shape_pt_sequence": 103, + "shape_dist_traveled": 2.327 + } + }, + { + "model": "feed.shape", + "pk": 105, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93885220465146, + "shape_pt_lon": -84.0411343350368, + "shape_pt_sequence": 104, + "shape_dist_traveled": 2.353 + } + }, + { + "model": "feed.shape", + "pk": 106, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93915775668989, + "shape_pt_lon": -84.0416551779252, + "shape_pt_sequence": 105, + "shape_dist_traveled": 2.419 + } + }, + { + "model": "feed.shape", + "pk": 107, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93928866239001, + "shape_pt_lon": -84.0417942257713, + "shape_pt_sequence": 106, + "shape_dist_traveled": 2.44 + } + }, + { + "model": "feed.shape", + "pk": 108, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.9394332650851, + "shape_pt_lon": -84.0418835860126, + "shape_pt_sequence": 107, + "shape_dist_traveled": 2.459 + } + }, + { + "model": "feed.shape", + "pk": 109, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93950294569722, + "shape_pt_lon": -84.0419072239736, + "shape_pt_sequence": 108, + "shape_dist_traveled": 2.467 + } + }, + { + "model": "feed.shape", + "pk": 110, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93950393195614, + "shape_pt_lon": -84.0422269282472, + "shape_pt_sequence": 109, + "shape_dist_traveled": 2.502 + } + }, + { + "model": "feed.shape", + "pk": 111, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93949212322203, + "shape_pt_lon": -84.0425117128132, + "shape_pt_sequence": 110, + "shape_dist_traveled": 2.533 + } + }, + { + "model": "feed.shape", + "pk": 112, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93945684385667, + "shape_pt_lon": -84.0429181490899, + "shape_pt_sequence": 111, + "shape_dist_traveled": 2.578 + } + }, + { + "model": "feed.shape", + "pk": 113, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93942503205056, + "shape_pt_lon": -84.0433331349077, + "shape_pt_sequence": 112, + "shape_dist_traveled": 2.624 + } + }, + { + "model": "feed.shape", + "pk": 114, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93972770605043, + "shape_pt_lon": -84.0432631191506, + "shape_pt_sequence": 113, + "shape_dist_traveled": 2.658 + } + }, + { + "model": "feed.shape", + "pk": 115, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93979024582779, + "shape_pt_lon": -84.0432957235711, + "shape_pt_sequence": 114, + "shape_dist_traveled": 2.666 + } + }, + { + "model": "feed.shape", + "pk": 116, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93981898031695, + "shape_pt_lon": -84.0433729445674, + "shape_pt_sequence": 115, + "shape_dist_traveled": 2.675 + } + }, + { + "model": "feed.shape", + "pk": 117, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.94007108411656, + "shape_pt_lon": -84.0443132968873, + "shape_pt_sequence": 116, + "shape_dist_traveled": 2.782 + } + }, + { + "model": "feed.shape", + "pk": 118, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.94016605495639, + "shape_pt_lon": -84.0446693302114, + "shape_pt_sequence": 117, + "shape_dist_traveled": 2.822 + } + }, + { + "model": "feed.shape", + "pk": 119, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.94027244564152, + "shape_pt_lon": -84.0448273689979, + "shape_pt_sequence": 118, + "shape_dist_traveled": 2.843 + } + }, + { + "model": "feed.shape", + "pk": 120, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.94046211098755, + "shape_pt_lon": -84.0455400945559, + "shape_pt_sequence": 119, + "shape_dist_traveled": 2.924 + } + }, + { + "model": "feed.shape", + "pk": 121, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.94049056601295, + "shape_pt_lon": -84.0456302713637, + "shape_pt_sequence": 120, + "shape_dist_traveled": 2.934 + } + }, + { + "model": "feed.shape", + "pk": 122, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.94063822457009, + "shape_pt_lon": -84.0455978789472, + "shape_pt_sequence": 121, + "shape_dist_traveled": 2.951 + } + }, + { + "model": "feed.shape", + "pk": 123, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.94079717180704, + "shape_pt_lon": -84.0450688663703, + "shape_pt_sequence": 122, + "shape_dist_traveled": 3.012 + } + }, + { + "model": "feed.shape", + "pk": 124, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.94095438717349, + "shape_pt_lon": -84.04474671421, + "shape_pt_sequence": 123, + "shape_dist_traveled": 3.051 + } + }, + { + "model": "feed.shape", + "pk": 125, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.94105262250509, + "shape_pt_lon": -84.0446527254796, + "shape_pt_sequence": 124, + "shape_dist_traveled": 3.066 + } + }, + { + "model": "feed.shape", + "pk": 126, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.9414150973303, + "shape_pt_lon": -84.0446772759114, + "shape_pt_sequence": 125, + "shape_dist_traveled": 3.106 + } + }, + { + "model": "feed.shape", + "pk": 127, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.94222783326419, + "shape_pt_lon": -84.0447316948875, + "shape_pt_sequence": 126, + "shape_dist_traveled": 3.196 + } + }, + { + "model": "feed.shape", + "pk": 128, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.94282430588245, + "shape_pt_lon": -84.0447692666912, + "shape_pt_sequence": 127, + "shape_dist_traveled": 3.262 + } + }, + { + "model": "feed.shape", + "pk": 129, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.9430072194504, + "shape_pt_lon": -84.0447361152365, + "shape_pt_sequence": 128, + "shape_dist_traveled": 3.283 + } + }, + { + "model": "feed.shape", + "pk": 130, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.94325327852743, + "shape_pt_lon": -84.0446536543918, + "shape_pt_sequence": 129, + "shape_dist_traveled": 3.311 + } + }, + { + "model": "feed.shape", + "pk": 131, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.94367377439675, + "shape_pt_lon": -84.0444658512058, + "shape_pt_sequence": 130, + "shape_dist_traveled": 3.362 + } + }, + { + "model": "feed.shape", + "pk": 132, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.94380472710699, + "shape_pt_lon": -84.0447574980966, + "shape_pt_sequence": 131, + "shape_dist_traveled": 3.397 + } + }, + { + "model": "feed.shape", + "pk": 133, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.94388103477618, + "shape_pt_lon": -84.044883947833, + "shape_pt_sequence": 132, + "shape_dist_traveled": 3.414 + } + }, + { + "model": "feed.shape", + "pk": 134, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.94396870046222, + "shape_pt_lon": -84.044952212081, + "shape_pt_sequence": 133, + "shape_dist_traveled": 3.426 + } + }, + { + "model": "feed.shape", + "pk": 135, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.94440018674929, + "shape_pt_lon": -84.0449991890221, + "shape_pt_sequence": 134, + "shape_dist_traveled": 3.474 + } + }, + { + "model": "feed.shape", + "pk": 136, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.94457575401998, + "shape_pt_lon": -84.045011078064, + "shape_pt_sequence": 135, + "shape_dist_traveled": 3.493 + } + }, + { + "model": "feed.shape", + "pk": 137, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.94495341180596, + "shape_pt_lon": -84.045007224609, + "shape_pt_sequence": 136, + "shape_dist_traveled": 3.535 + } + }, + { + "model": "feed.shape", + "pk": 138, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.94503790634203, + "shape_pt_lon": -84.0450804402532, + "shape_pt_sequence": 137, + "shape_dist_traveled": 3.547 + } + }, + { + "model": "feed.shape", + "pk": 139, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.94507262278836, + "shape_pt_lon": -84.0454078875236, + "shape_pt_sequence": 138, + "shape_dist_traveled": 3.584 + } + }, + { + "model": "feed.shape", + "pk": 140, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.94509663743075, + "shape_pt_lon": -84.0455018337476, + "shape_pt_sequence": 139, + "shape_dist_traveled": 3.594 + } + }, + { + "model": "feed.shape", + "pk": 141, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.94516495042239, + "shape_pt_lon": -84.0455370798079, + "shape_pt_sequence": 140, + "shape_dist_traveled": 3.603 + } + }, + { + "model": "feed.shape", + "pk": 142, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.94535421093323, + "shape_pt_lon": -84.0455279840503, + "shape_pt_sequence": 141, + "shape_dist_traveled": 3.624 + } + }, + { + "model": "feed.shape", + "pk": 143, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.94569609354827, + "shape_pt_lon": -84.0455006967812, + "shape_pt_sequence": 142, + "shape_dist_traveled": 3.662 + } + }, + { + "model": "feed.shape", + "pk": 144, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.94576019859063, + "shape_pt_lon": -84.0454636202844, + "shape_pt_sequence": 143, + "shape_dist_traveled": 3.67 + } + }, + { + "model": "feed.shape", + "pk": 145, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.9458090133638, + "shape_pt_lon": -84.0453783778183, + "shape_pt_sequence": 144, + "shape_dist_traveled": 3.681 + } + }, + { + "model": "feed.shape", + "pk": 146, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.94587051996754, + "shape_pt_lon": -84.0452505141197, + "shape_pt_sequence": 145, + "shape_dist_traveled": 3.696 + } + }, + { + "model": "feed.shape", + "pk": 147, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.94594579827001, + "shape_pt_lon": -84.0451768005758, + "shape_pt_sequence": 146, + "shape_dist_traveled": 3.708 + } + }, + { + "model": "feed.shape", + "pk": 148, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.9462925242644, + "shape_pt_lon": -84.0451498689492, + "shape_pt_sequence": 147, + "shape_dist_traveled": 3.746 + } + }, + { + "model": "feed.shape", + "pk": 149, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.9463897709987, + "shape_pt_lon": -84.0451620803092, + "shape_pt_sequence": 148, + "shape_dist_traveled": 3.757 + } + }, + { + "model": "feed.shape", + "pk": 150, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.94645002673405, + "shape_pt_lon": -84.0452016714679, + "shape_pt_sequence": 149, + "shape_dist_traveled": 3.765 + } + }, + { + "model": "feed.shape", + "pk": 151, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.94648404073633, + "shape_pt_lon": -84.0452387476835, + "shape_pt_sequence": 150, + "shape_dist_traveled": 3.771 + } + }, + { + "model": "feed.shape", + "pk": 152, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93554615993122, + "shape_pt_lon": -84.0491114962244, + "shape_pt_sequence": 0, + "shape_dist_traveled": 0.0 + } + }, + { + "model": "feed.shape", + "pk": 153, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93557253860416, + "shape_pt_lon": -84.0492324408382, + "shape_pt_sequence": 1, + "shape_dist_traveled": 0.014 + } + }, + { + "model": "feed.shape", + "pk": 154, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93559719650295, + "shape_pt_lon": -84.0493243902202, + "shape_pt_sequence": 2, + "shape_dist_traveled": 0.024 + } + }, + { + "model": "feed.shape", + "pk": 155, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93566832503712, + "shape_pt_lon": -84.0495039565472, + "shape_pt_sequence": 3, + "shape_dist_traveled": 0.045 + } + }, + { + "model": "feed.shape", + "pk": 156, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93570246673155, + "shape_pt_lon": -84.0495983130441, + "shape_pt_sequence": 4, + "shape_dist_traveled": 0.056 + } + }, + { + "model": "feed.shape", + "pk": 157, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93570957958473, + "shape_pt_lon": -84.0496907438365, + "shape_pt_sequence": 5, + "shape_dist_traveled": 0.066 + } + }, + { + "model": "feed.shape", + "pk": 158, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93571147624034, + "shape_pt_lon": -84.0498491281346, + "shape_pt_sequence": 6, + "shape_dist_traveled": 0.084 + } + }, + { + "model": "feed.shape", + "pk": 159, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93570246663722, + "shape_pt_lon": -84.0500893518124, + "shape_pt_sequence": 7, + "shape_dist_traveled": 0.11 + } + }, + { + "model": "feed.shape", + "pk": 160, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93566785089355, + "shape_pt_lon": -84.0503237982121, + "shape_pt_sequence": 8, + "shape_dist_traveled": 0.136 + } + }, + { + "model": "feed.shape", + "pk": 161, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93562801871054, + "shape_pt_lon": -84.0505362327233, + "shape_pt_sequence": 9, + "shape_dist_traveled": 0.16 + } + }, + { + "model": "feed.shape", + "pk": 162, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93558581568109, + "shape_pt_lon": -84.0507591258626, + "shape_pt_sequence": 10, + "shape_dist_traveled": 0.185 + } + }, + { + "model": "feed.shape", + "pk": 163, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93553934502577, + "shape_pt_lon": -84.0510354553896, + "shape_pt_sequence": 11, + "shape_dist_traveled": 0.215 + } + }, + { + "model": "feed.shape", + "pk": 164, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93548718391971, + "shape_pt_lon": -84.0513535074206, + "shape_pt_sequence": 12, + "shape_dist_traveled": 0.251 + } + }, + { + "model": "feed.shape", + "pk": 165, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93544590778002, + "shape_pt_lon": -84.0516944413929, + "shape_pt_sequence": 13, + "shape_dist_traveled": 0.288 + } + }, + { + "model": "feed.shape", + "pk": 166, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93544406437546, + "shape_pt_lon": -84.0517683691601, + "shape_pt_sequence": 14, + "shape_dist_traveled": 0.297 + } + }, + { + "model": "feed.shape", + "pk": 167, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93549752617786, + "shape_pt_lon": -84.0521913460308, + "shape_pt_sequence": 15, + "shape_dist_traveled": 0.343 + } + }, + { + "model": "feed.shape", + "pk": 168, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93552149197739, + "shape_pt_lon": -84.0522746314152, + "shape_pt_sequence": 16, + "shape_dist_traveled": 0.353 + } + }, + { + "model": "feed.shape", + "pk": 169, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93554545760814, + "shape_pt_lon": -84.0523420082619, + "shape_pt_sequence": 17, + "shape_dist_traveled": 0.361 + } + }, + { + "model": "feed.shape", + "pk": 170, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93560168465873, + "shape_pt_lon": -84.0523981556341, + "shape_pt_sequence": 18, + "shape_dist_traveled": 0.369 + } + }, + { + "model": "feed.shape", + "pk": 171, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93565791169966, + "shape_pt_lon": -84.0524318440576, + "shape_pt_sequence": 19, + "shape_dist_traveled": 0.377 + } + }, + { + "model": "feed.shape", + "pk": 172, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.935720591012, + "shape_pt_lon": -84.0524430735317, + "shape_pt_sequence": 20, + "shape_dist_traveled": 0.384 + } + }, + { + "model": "feed.shape", + "pk": 173, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93583857529975, + "shape_pt_lon": -84.0524187427515, + "shape_pt_sequence": 21, + "shape_dist_traveled": 0.397 + } + }, + { + "model": "feed.shape", + "pk": 174, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93605505885652, + "shape_pt_lon": -84.0523466867771, + "shape_pt_sequence": 22, + "shape_dist_traveled": 0.422 + } + }, + { + "model": "feed.shape", + "pk": 175, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93627443620344, + "shape_pt_lon": -84.0522802455722, + "shape_pt_sequence": 23, + "shape_dist_traveled": 0.448 + } + }, + { + "model": "feed.shape", + "pk": 176, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93639436894143, + "shape_pt_lon": -84.052243749702, + "shape_pt_sequence": 24, + "shape_dist_traveled": 0.461 + } + }, + { + "model": "feed.shape", + "pk": 177, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93653263180367, + "shape_pt_lon": -84.0522390707544, + "shape_pt_sequence": 25, + "shape_dist_traveled": 0.477 + } + }, + { + "model": "feed.shape", + "pk": 178, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93679802054417, + "shape_pt_lon": -84.0523349506756, + "shape_pt_sequence": 26, + "shape_dist_traveled": 0.508 + } + }, + { + "model": "feed.shape", + "pk": 179, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93706910208629, + "shape_pt_lon": -84.0524313369778, + "shape_pt_sequence": 27, + "shape_dist_traveled": 0.54 + } + }, + { + "model": "feed.shape", + "pk": 180, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93735023603007, + "shape_pt_lon": -84.0525380169441, + "shape_pt_sequence": 28, + "shape_dist_traveled": 0.573 + } + }, + { + "model": "feed.shape", + "pk": 181, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.9375714563375, + "shape_pt_lon": -84.0526437612861, + "shape_pt_sequence": 29, + "shape_dist_traveled": 0.6 + } + }, + { + "model": "feed.shape", + "pk": 182, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93774105816322, + "shape_pt_lon": -84.0527027160271, + "shape_pt_sequence": 30, + "shape_dist_traveled": 0.62 + } + }, + { + "model": "feed.shape", + "pk": 183, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93778978041929, + "shape_pt_lon": -84.0527151488461, + "shape_pt_sequence": 31, + "shape_dist_traveled": 0.625 + } + }, + { + "model": "feed.shape", + "pk": 184, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93794647765702, + "shape_pt_lon": -84.0527273141104, + "shape_pt_sequence": 32, + "shape_dist_traveled": 0.643 + } + }, + { + "model": "feed.shape", + "pk": 185, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93809150988507, + "shape_pt_lon": -84.0527076622996, + "shape_pt_sequence": 33, + "shape_dist_traveled": 0.659 + } + }, + { + "model": "feed.shape", + "pk": 186, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93815511047925, + "shape_pt_lon": -84.052635606505, + "shape_pt_sequence": 34, + "shape_dist_traveled": 0.67 + } + }, + { + "model": "feed.shape", + "pk": 187, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93840121696546, + "shape_pt_lon": -84.0521246655647, + "shape_pt_sequence": 35, + "shape_dist_traveled": 0.732 + } + }, + { + "model": "feed.shape", + "pk": 188, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93857142751338, + "shape_pt_lon": -84.051894479649, + "shape_pt_sequence": 36, + "shape_dist_traveled": 0.763 + } + }, + { + "model": "feed.shape", + "pk": 189, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93879176765612, + "shape_pt_lon": -84.0516156036497, + "shape_pt_sequence": 37, + "shape_dist_traveled": 0.802 + } + }, + { + "model": "feed.shape", + "pk": 190, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93890106345436, + "shape_pt_lon": -84.0514555284908, + "shape_pt_sequence": 38, + "shape_dist_traveled": 0.824 + } + }, + { + "model": "feed.shape", + "pk": 191, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93897507515302, + "shape_pt_lon": -84.0513020294891, + "shape_pt_sequence": 39, + "shape_dist_traveled": 0.842 + } + }, + { + "model": "feed.shape", + "pk": 192, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.9390141956147, + "shape_pt_lon": -84.0511345760324, + "shape_pt_sequence": 40, + "shape_dist_traveled": 0.861 + } + }, + { + "model": "feed.shape", + "pk": 193, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93905117558812, + "shape_pt_lon": -84.0509224405605, + "shape_pt_sequence": 41, + "shape_dist_traveled": 0.885 + } + }, + { + "model": "feed.shape", + "pk": 194, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93906597792292, + "shape_pt_lon": -84.0506014881021, + "shape_pt_sequence": 42, + "shape_dist_traveled": 0.92 + } + }, + { + "model": "feed.shape", + "pk": 195, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93909856537408, + "shape_pt_lon": -84.0501243834524, + "shape_pt_sequence": 43, + "shape_dist_traveled": 0.973 + } + }, + { + "model": "feed.shape", + "pk": 196, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93910318560055, + "shape_pt_lon": -84.0497656390733, + "shape_pt_sequence": 44, + "shape_dist_traveled": 1.012 + } + }, + { + "model": "feed.shape", + "pk": 197, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93906512245888, + "shape_pt_lon": -84.049652930016, + "shape_pt_sequence": 45, + "shape_dist_traveled": 1.025 + } + }, + { + "model": "feed.shape", + "pk": 198, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.9389773657529, + "shape_pt_lon": -84.0495133854688, + "shape_pt_sequence": 46, + "shape_dist_traveled": 1.043 + } + }, + { + "model": "feed.shape", + "pk": 199, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93881453893313, + "shape_pt_lon": -84.0493115816303, + "shape_pt_sequence": 47, + "shape_dist_traveled": 1.072 + } + }, + { + "model": "feed.shape", + "pk": 200, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93860413409909, + "shape_pt_lon": -84.0490281988577, + "shape_pt_sequence": 48, + "shape_dist_traveled": 1.11 + } + }, + { + "model": "feed.shape", + "pk": 201, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93847607358095, + "shape_pt_lon": -84.0488647834885, + "shape_pt_sequence": 49, + "shape_dist_traveled": 1.133 + } + }, + { + "model": "feed.shape", + "pk": 202, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93830796101282, + "shape_pt_lon": -84.0486425856324, + "shape_pt_sequence": 50, + "shape_dist_traveled": 1.164 + } + }, + { + "model": "feed.shape", + "pk": 203, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93812775111203, + "shape_pt_lon": -84.0484368995492, + "shape_pt_sequence": 51, + "shape_dist_traveled": 1.194 + } + }, + { + "model": "feed.shape", + "pk": 204, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93798100124938, + "shape_pt_lon": -84.0482768335369, + "shape_pt_sequence": 52, + "shape_dist_traveled": 1.218 + } + }, + { + "model": "feed.shape", + "pk": 205, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93768022319365, + "shape_pt_lon": -84.0479566982914, + "shape_pt_sequence": 53, + "shape_dist_traveled": 1.266 + } + }, + { + "model": "feed.shape", + "pk": 206, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93763286635998, + "shape_pt_lon": -84.0479111252314, + "shape_pt_sequence": 54, + "shape_dist_traveled": 1.274 + } + }, + { + "model": "feed.shape", + "pk": 207, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93758319780721, + "shape_pt_lon": -84.0478722576937, + "shape_pt_sequence": 55, + "shape_dist_traveled": 1.28 + } + }, + { + "model": "feed.shape", + "pk": 208, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93753870216281, + "shape_pt_lon": -84.0478404135935, + "shape_pt_sequence": 56, + "shape_dist_traveled": 1.287 + } + }, + { + "model": "feed.shape", + "pk": 209, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.9374942065184, + "shape_pt_lon": -84.0478139339113, + "shape_pt_sequence": 57, + "shape_dist_traveled": 1.292 + } + }, + { + "model": "feed.shape", + "pk": 210, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93745024180206, + "shape_pt_lon": -84.0477923420699, + "shape_pt_sequence": 58, + "shape_dist_traveled": 1.298 + } + }, + { + "model": "feed.shape", + "pk": 211, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93735938216936, + "shape_pt_lon": -84.0477606919451, + "shape_pt_sequence": 59, + "shape_dist_traveled": 1.308 + } + }, + { + "model": "feed.shape", + "pk": 212, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93724916693389, + "shape_pt_lon": -84.0477606931305, + "shape_pt_sequence": 60, + "shape_dist_traveled": 1.32 + } + }, + { + "model": "feed.shape", + "pk": 213, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93715177760806, + "shape_pt_lon": -84.0477784341865, + "shape_pt_sequence": 61, + "shape_dist_traveled": 1.331 + } + }, + { + "model": "feed.shape", + "pk": 214, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93705710158646, + "shape_pt_lon": -84.0477987581936, + "shape_pt_sequence": 62, + "shape_dist_traveled": 1.342 + } + }, + { + "model": "feed.shape", + "pk": 215, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93672866697375, + "shape_pt_lon": -84.0479001602699, + "shape_pt_sequence": 63, + "shape_dist_traveled": 1.38 + } + }, + { + "model": "feed.shape", + "pk": 216, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93643873625598, + "shape_pt_lon": -84.0479940310818, + "shape_pt_sequence": 64, + "shape_dist_traveled": 1.414 + } + }, + { + "model": "feed.shape", + "pk": 217, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93605459371357, + "shape_pt_lon": -84.0481209106209, + "shape_pt_sequence": 65, + "shape_dist_traveled": 1.458 + } + }, + { + "model": "feed.shape", + "pk": 218, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93594785009141, + "shape_pt_lon": -84.0481497577059, + "shape_pt_sequence": 66, + "shape_dist_traveled": 1.471 + } + }, + { + "model": "feed.shape", + "pk": 219, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93584672067646, + "shape_pt_lon": -84.0481926863882, + "shape_pt_sequence": 67, + "shape_dist_traveled": 1.483 + } + }, + { + "model": "feed.shape", + "pk": 220, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93562414968525, + "shape_pt_lon": -84.0482902977589, + "shape_pt_sequence": 68, + "shape_dist_traveled": 1.51 + } + }, + { + "model": "feed.shape", + "pk": 221, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93555563302149, + "shape_pt_lon": -84.0483541402688, + "shape_pt_sequence": 69, + "shape_dist_traveled": 1.52 + } + }, + { + "model": "feed.shape", + "pk": 222, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93552377293763, + "shape_pt_lon": -84.048395536302, + "shape_pt_sequence": 70, + "shape_dist_traveled": 1.526 + } + }, + { + "model": "feed.shape", + "pk": 223, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93549323384328, + "shape_pt_lon": -84.0484359265072, + "shape_pt_sequence": 71, + "shape_dist_traveled": 1.531 + } + }, + { + "model": "feed.shape", + "pk": 224, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93545924101029, + "shape_pt_lon": -84.0485562630898, + "shape_pt_sequence": 72, + "shape_dist_traveled": 1.545 + } + }, + { + "model": "feed.shape", + "pk": 225, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93545410965148, + "shape_pt_lon": -84.0486084574091, + "shape_pt_sequence": 73, + "shape_dist_traveled": 1.551 + } + }, + { + "model": "feed.shape", + "pk": 226, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93545261101962, + "shape_pt_lon": -84.0486583047952, + "shape_pt_sequence": 74, + "shape_dist_traveled": 1.556 + } + }, + { + "model": "feed.shape", + "pk": 227, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93527714539185, + "shape_pt_lon": -84.0486381383254, + "shape_pt_sequence": 75, + "shape_dist_traveled": 1.576 + } + }, + { + "model": "feed.shape", + "pk": 228, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93529369875646, + "shape_pt_lon": -84.0483849370953, + "shape_pt_sequence": 76, + "shape_dist_traveled": 1.604 + } + }, + { + "model": "feed.shape", + "pk": 229, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93524845287248, + "shape_pt_lon": -84.0481250138729, + "shape_pt_sequence": 77, + "shape_dist_traveled": 1.633 + } + }, + { + "model": "feed.shape", + "pk": 230, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93510490695821, + "shape_pt_lon": -84.0476876510322, + "shape_pt_sequence": 78, + "shape_dist_traveled": 1.683 + } + }, + { + "model": "feed.shape", + "pk": 231, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93492309622952, + "shape_pt_lon": -84.0471049676225, + "shape_pt_sequence": 79, + "shape_dist_traveled": 1.75 + } + }, + { + "model": "feed.shape", + "pk": 232, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93478795156821, + "shape_pt_lon": -84.0463710454434, + "shape_pt_sequence": 80, + "shape_dist_traveled": 1.832 + } + }, + { + "model": "feed.shape", + "pk": 233, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93468712924438, + "shape_pt_lon": -84.0458810362687, + "shape_pt_sequence": 81, + "shape_dist_traveled": 1.887 + } + }, + { + "model": "feed.shape", + "pk": 234, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93461716476174, + "shape_pt_lon": -84.0456150110652, + "shape_pt_sequence": 82, + "shape_dist_traveled": 1.917 + } + }, + { + "model": "feed.shape", + "pk": 235, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93466453460568, + "shape_pt_lon": -84.045615726073, + "shape_pt_sequence": 83, + "shape_dist_traveled": 1.922 + } + }, + { + "model": "feed.shape", + "pk": 236, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93495411611772, + "shape_pt_lon": -84.0456098658075, + "shape_pt_sequence": 84, + "shape_dist_traveled": 1.954 + } + }, + { + "model": "feed.shape", + "pk": 237, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93501867239507, + "shape_pt_lon": -84.0455893287031, + "shape_pt_sequence": 85, + "shape_dist_traveled": 1.962 + } + }, + { + "model": "feed.shape", + "pk": 238, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93533255656777, + "shape_pt_lon": -84.0455828491321, + "shape_pt_sequence": 86, + "shape_dist_traveled": 1.996 + } + }, + { + "model": "feed.shape", + "pk": 239, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93558174215077, + "shape_pt_lon": -84.0455310895244, + "shape_pt_sequence": 87, + "shape_dist_traveled": 2.025 + } + }, + { + "model": "feed.shape", + "pk": 240, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93565354440517, + "shape_pt_lon": -84.0454587191306, + "shape_pt_sequence": 88, + "shape_dist_traveled": 2.036 + } + }, + { + "model": "feed.shape", + "pk": 241, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93601427775509, + "shape_pt_lon": -84.0453935565556, + "shape_pt_sequence": 89, + "shape_dist_traveled": 2.076 + } + }, + { + "model": "feed.shape", + "pk": 242, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93618250695711, + "shape_pt_lon": -84.0453574183472, + "shape_pt_sequence": 90, + "shape_dist_traveled": 2.095 + } + }, + { + "model": "feed.shape", + "pk": 243, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93624056084127, + "shape_pt_lon": -84.0453568135217, + "shape_pt_sequence": 91, + "shape_dist_traveled": 2.102 + } + }, + { + "model": "feed.shape", + "pk": 244, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93629795423082, + "shape_pt_lon": -84.0453642553238, + "shape_pt_sequence": 92, + "shape_dist_traveled": 2.108 + } + }, + { + "model": "feed.shape", + "pk": 245, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93659318251401, + "shape_pt_lon": -84.0455215059456, + "shape_pt_sequence": 93, + "shape_dist_traveled": 2.145 + } + }, + { + "model": "feed.shape", + "pk": 246, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93667976807258, + "shape_pt_lon": -84.0455703414396, + "shape_pt_sequence": 94, + "shape_dist_traveled": 2.156 + } + }, + { + "model": "feed.shape", + "pk": 247, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.9367692395777, + "shape_pt_lon": -84.0455957359235, + "shape_pt_sequence": 95, + "shape_dist_traveled": 2.166 + } + }, + { + "model": "feed.shape", + "pk": 248, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93685293870503, + "shape_pt_lon": -84.0455879222361, + "shape_pt_sequence": 96, + "shape_dist_traveled": 2.176 + } + }, + { + "model": "feed.shape", + "pk": 249, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93694173624727, + "shape_pt_lon": -84.0455491295231, + "shape_pt_sequence": 97, + "shape_dist_traveled": 2.186 + } + }, + { + "model": "feed.shape", + "pk": 250, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93708123470739, + "shape_pt_lon": -84.0454446214555, + "shape_pt_sequence": 98, + "shape_dist_traveled": 2.206 + } + }, + { + "model": "feed.shape", + "pk": 251, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93724313131711, + "shape_pt_lon": -84.0452817159445, + "shape_pt_sequence": 99, + "shape_dist_traveled": 2.231 + } + }, + { + "model": "feed.shape", + "pk": 252, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93734607124923, + "shape_pt_lon": -84.0451254422096, + "shape_pt_sequence": 100, + "shape_dist_traveled": 2.251 + } + }, + { + "model": "feed.shape", + "pk": 253, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93748749351063, + "shape_pt_lon": -84.0448724740612, + "shape_pt_sequence": 101, + "shape_dist_traveled": 2.283 + } + }, + { + "model": "feed.shape", + "pk": 254, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93761860756564, + "shape_pt_lon": -84.0446484093239, + "shape_pt_sequence": 102, + "shape_dist_traveled": 2.312 + } + }, + { + "model": "feed.shape", + "pk": 255, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93781098243242, + "shape_pt_lon": -84.0443002302728, + "shape_pt_sequence": 103, + "shape_dist_traveled": 2.355 + } + }, + { + "model": "feed.shape", + "pk": 256, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93799146315684, + "shape_pt_lon": -84.0439934603325, + "shape_pt_sequence": 104, + "shape_dist_traveled": 2.395 + } + }, + { + "model": "feed.shape", + "pk": 257, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93810165004318, + "shape_pt_lon": -84.0438034580265, + "shape_pt_sequence": 105, + "shape_dist_traveled": 2.419 + } + }, + { + "model": "feed.shape", + "pk": 258, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93796407612903, + "shape_pt_lon": -84.0436169062427, + "shape_pt_sequence": 106, + "shape_dist_traveled": 2.444 + } + }, + { + "model": "feed.shape", + "pk": 259, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93791116339785, + "shape_pt_lon": -84.043444027742, + "shape_pt_sequence": 107, + "shape_dist_traveled": 2.464 + } + }, + { + "model": "feed.shape", + "pk": 260, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93788614994896, + "shape_pt_lon": -84.0432193842326, + "shape_pt_sequence": 108, + "shape_dist_traveled": 2.489 + } + }, + { + "model": "feed.shape", + "pk": 261, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93792655633902, + "shape_pt_lon": -84.0429361376045, + "shape_pt_sequence": 109, + "shape_dist_traveled": 2.52 + } + }, + { + "model": "feed.shape", + "pk": 262, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93800099196738, + "shape_pt_lon": -84.0424812505301, + "shape_pt_sequence": 110, + "shape_dist_traveled": 2.571 + } + }, + { + "model": "feed.shape", + "pk": 263, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93813818359375, + "shape_pt_lon": -84.0421772565051, + "shape_pt_sequence": 111, + "shape_dist_traveled": 2.607 + } + }, + { + "model": "feed.shape", + "pk": 264, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93816415907815, + "shape_pt_lon": -84.0419985184082, + "shape_pt_sequence": 112, + "shape_dist_traveled": 2.627 + } + }, + { + "model": "feed.shape", + "pk": 265, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.9381545385288, + "shape_pt_lon": -84.0418510350607, + "shape_pt_sequence": 113, + "shape_dist_traveled": 2.643 + } + }, + { + "model": "feed.shape", + "pk": 266, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93812567687818, + "shape_pt_lon": -84.0417260160641, + "shape_pt_sequence": 114, + "shape_dist_traveled": 2.657 + } + }, + { + "model": "feed.shape", + "pk": 267, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93807564954973, + "shape_pt_lon": -84.0416527622632, + "shape_pt_sequence": 115, + "shape_dist_traveled": 2.667 + } + }, + { + "model": "feed.shape", + "pk": 268, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93804289664845, + "shape_pt_lon": -84.0416384252501, + "shape_pt_sequence": 116, + "shape_dist_traveled": 2.671 + } + }, + { + "model": "feed.shape", + "pk": 269, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93801311595451, + "shape_pt_lon": -84.0416361581774, + "shape_pt_sequence": 117, + "shape_dist_traveled": 2.675 + } + }, + { + "model": "feed.shape", + "pk": 270, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93792172067878, + "shape_pt_lon": -84.0416381115992, + "shape_pt_sequence": 118, + "shape_dist_traveled": 2.685 + } + }, + { + "model": "feed.shape", + "pk": 271, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93790247956499, + "shape_pt_lon": -84.0412122658535, + "shape_pt_sequence": 119, + "shape_dist_traveled": 2.731 + } + }, + { + "model": "feed.shape", + "pk": 272, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93789478311904, + "shape_pt_lon": -84.0410686893496, + "shape_pt_sequence": 120, + "shape_dist_traveled": 2.747 + } + }, + { + "model": "feed.shape", + "pk": 273, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93830046896954, + "shape_pt_lon": -84.040969095546, + "shape_pt_sequence": 121, + "shape_dist_traveled": 2.793 + } + }, + { + "model": "feed.shape", + "pk": 274, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93846168564775, + "shape_pt_lon": -84.0409298363785, + "shape_pt_sequence": 122, + "shape_dist_traveled": 2.812 + } + }, + { + "model": "feed.shape", + "pk": 275, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93868873033166, + "shape_pt_lon": -84.040967928104, + "shape_pt_sequence": 123, + "shape_dist_traveled": 2.837 + } + }, + { + "model": "feed.shape", + "pk": 276, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93884815398905, + "shape_pt_lon": -84.0411370173071, + "shape_pt_sequence": 124, + "shape_dist_traveled": 2.863 + } + }, + { + "model": "feed.shape", + "pk": 277, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93915383599336, + "shape_pt_lon": -84.0416568644267, + "shape_pt_sequence": 125, + "shape_dist_traveled": 2.929 + } + }, + { + "model": "feed.shape", + "pk": 278, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93928521203319, + "shape_pt_lon": -84.0417935755105, + "shape_pt_sequence": 126, + "shape_dist_traveled": 2.95 + } + }, + { + "model": "feed.shape", + "pk": 279, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93942977628924, + "shape_pt_lon": -84.0418876857024, + "shape_pt_sequence": 127, + "shape_dist_traveled": 2.969 + } + }, + { + "model": "feed.shape", + "pk": 280, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93950150662073, + "shape_pt_lon": -84.0419089725314, + "shape_pt_sequence": 128, + "shape_dist_traveled": 2.977 + } + }, + { + "model": "feed.shape", + "pk": 281, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93950371370814, + "shape_pt_lon": -84.0422428396408, + "shape_pt_sequence": 129, + "shape_dist_traveled": 3.014 + } + }, + { + "model": "feed.shape", + "pk": 282, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93948613333313, + "shape_pt_lon": -84.0425204684191, + "shape_pt_sequence": 130, + "shape_dist_traveled": 3.044 + } + }, + { + "model": "feed.shape", + "pk": 283, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93944529338017, + "shape_pt_lon": -84.0430246306461, + "shape_pt_sequence": 131, + "shape_dist_traveled": 3.1 + } + }, + { + "model": "feed.shape", + "pk": 284, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93942327481619, + "shape_pt_lon": -84.0433356324423, + "shape_pt_sequence": 132, + "shape_dist_traveled": 3.134 + } + }, + { + "model": "feed.shape", + "pk": 285, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93972442200525, + "shape_pt_lon": -84.0432655607324, + "shape_pt_sequence": 133, + "shape_dist_traveled": 3.168 + } + }, + { + "model": "feed.shape", + "pk": 286, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93978732393233, + "shape_pt_lon": -84.043299171515, + "shape_pt_sequence": 134, + "shape_dist_traveled": 3.176 + } + }, + { + "model": "feed.shape", + "pk": 287, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93981711902594, + "shape_pt_lon": -84.0433809579747, + "shape_pt_sequence": 135, + "shape_dist_traveled": 3.186 + } + }, + { + "model": "feed.shape", + "pk": 288, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93991974845217, + "shape_pt_lon": -84.0437596394605, + "shape_pt_sequence": 136, + "shape_dist_traveled": 3.229 + } + }, + { + "model": "feed.shape", + "pk": 289, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.94007043205839, + "shape_pt_lon": -84.0443170698121, + "shape_pt_sequence": 137, + "shape_dist_traveled": 3.292 + } + }, + { + "model": "feed.shape", + "pk": 290, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.94016533658292, + "shape_pt_lon": -84.0446744654815, + "shape_pt_sequence": 138, + "shape_dist_traveled": 3.332 + } + }, + { + "model": "feed.shape", + "pk": 291, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.94027017298111, + "shape_pt_lon": -84.0448268343636, + "shape_pt_sequence": 139, + "shape_dist_traveled": 3.353 + } + }, + { + "model": "feed.shape", + "pk": 292, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.94038169599758, + "shape_pt_lon": -84.045244089757, + "shape_pt_sequence": 140, + "shape_dist_traveled": 3.4 + } + }, + { + "model": "feed.shape", + "pk": 293, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.94048873914792, + "shape_pt_lon": -84.045632855511, + "shape_pt_sequence": 141, + "shape_dist_traveled": 3.444 + } + }, + { + "model": "feed.shape", + "pk": 294, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.94063882056966, + "shape_pt_lon": -84.045599244728, + "shape_pt_sequence": 142, + "shape_dist_traveled": 3.461 + } + }, + { + "model": "feed.shape", + "pk": 295, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.94079662666821, + "shape_pt_lon": -84.0450681942005, + "shape_pt_sequence": 143, + "shape_dist_traveled": 3.522 + } + }, + { + "model": "feed.shape", + "pk": 296, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.94095071185347, + "shape_pt_lon": -84.044750328054, + "shape_pt_sequence": 144, + "shape_dist_traveled": 3.561 + } + }, + { + "model": "feed.shape", + "pk": 297, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.9410528605391, + "shape_pt_lon": -84.0446554341072, + "shape_pt_sequence": 145, + "shape_dist_traveled": 3.576 + } + }, + { + "model": "feed.shape", + "pk": 298, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.94157411286451, + "shape_pt_lon": -84.04469185811, + "shape_pt_sequence": 146, + "shape_dist_traveled": 3.634 + } + }, + { + "model": "feed.shape", + "pk": 299, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.94242227255298, + "shape_pt_lon": -84.0447474726987, + "shape_pt_sequence": 147, + "shape_dist_traveled": 3.728 + } + }, + { + "model": "feed.shape", + "pk": 300, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.94283107241787, + "shape_pt_lon": -84.0447699014639, + "shape_pt_sequence": 148, + "shape_dist_traveled": 3.773 + } + }, + { + "model": "feed.shape", + "pk": 301, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.94300697065598, + "shape_pt_lon": -84.0447350564938, + "shape_pt_sequence": 149, + "shape_dist_traveled": 3.793 + } + }, + { + "model": "feed.shape", + "pk": 302, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.94326009234421, + "shape_pt_lon": -84.0446544775012, + "shape_pt_sequence": 150, + "shape_dist_traveled": 3.823 + } + }, + { + "model": "feed.shape", + "pk": 303, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.94351468777105, + "shape_pt_lon": -84.0445407320727, + "shape_pt_sequence": 151, + "shape_dist_traveled": 3.853 + } + }, + { + "model": "feed.shape", + "pk": 304, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.94366913468646, + "shape_pt_lon": -84.0444710421328, + "shape_pt_sequence": 152, + "shape_dist_traveled": 3.872 + } + }, + { + "model": "feed.shape", + "pk": 305, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.9437999854876, + "shape_pt_lon": -84.0447541575134, + "shape_pt_sequence": 153, + "shape_dist_traveled": 3.906 + } + }, + { + "model": "feed.shape", + "pk": 306, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.94388149907578, + "shape_pt_lon": -84.0448848261506, + "shape_pt_sequence": 154, + "shape_dist_traveled": 3.923 + } + }, + { + "model": "feed.shape", + "pk": 307, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.94396600743452, + "shape_pt_lon": -84.0449552037605, + "shape_pt_sequence": 155, + "shape_dist_traveled": 3.935 + } + }, + { + "model": "feed.shape", + "pk": 308, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.94433419150155, + "shape_pt_lon": -84.0449932717292, + "shape_pt_sequence": 156, + "shape_dist_traveled": 3.976 + } + }, + { + "model": "feed.shape", + "pk": 309, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.94457398813642, + "shape_pt_lon": -84.0450138149367, + "shape_pt_sequence": 157, + "shape_dist_traveled": 4.003 + } + }, + { + "model": "feed.shape", + "pk": 310, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.94495221337372, + "shape_pt_lon": -84.045010504636, + "shape_pt_sequence": 158, + "shape_dist_traveled": 4.045 + } + }, + { + "model": "feed.shape", + "pk": 311, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.94503698779598, + "shape_pt_lon": -84.0450833311997, + "shape_pt_sequence": 159, + "shape_dist_traveled": 4.057 + } + }, + { + "model": "feed.shape", + "pk": 312, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.94506796311185, + "shape_pt_lon": -84.045389534011, + "shape_pt_sequence": 160, + "shape_dist_traveled": 4.091 + } + }, + { + "model": "feed.shape", + "pk": 313, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.94509404758507, + "shape_pt_lon": -84.0455020842335, + "shape_pt_sequence": 161, + "shape_dist_traveled": 4.104 + } + }, + { + "model": "feed.shape", + "pk": 314, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.94516741015652, + "shape_pt_lon": -84.0455418078417, + "shape_pt_sequence": 162, + "shape_dist_traveled": 4.113 + } + }, + { + "model": "feed.shape", + "pk": 315, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.94569411437748, + "shape_pt_lon": -84.0455036631251, + "shape_pt_sequence": 163, + "shape_dist_traveled": 4.171 + } + }, + { + "model": "feed.shape", + "pk": 316, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.94576235686358, + "shape_pt_lon": -84.0454645549726, + "shape_pt_sequence": 164, + "shape_dist_traveled": 4.18 + } + }, + { + "model": "feed.shape", + "pk": 317, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.94586939851089, + "shape_pt_lon": -84.0452550477597, + "shape_pt_sequence": 165, + "shape_dist_traveled": 4.206 + } + }, + { + "model": "feed.shape", + "pk": 318, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.94594554151604, + "shape_pt_lon": -84.0451777429595, + "shape_pt_sequence": 166, + "shape_dist_traveled": 4.218 + } + }, + { + "model": "feed.shape", + "pk": 319, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.94629085058927, + "shape_pt_lon": -84.0451530949856, + "shape_pt_sequence": 167, + "shape_dist_traveled": 4.256 + } + }, + { + "model": "feed.shape", + "pk": 320, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.94638848955421, + "shape_pt_lon": -84.0451636656039, + "shape_pt_sequence": 168, + "shape_dist_traveled": 4.267 + } + }, + { + "model": "feed.shape", + "pk": 321, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.94644918315917, + "shape_pt_lon": -84.0452028781838, + "shape_pt_sequence": 169, + "shape_dist_traveled": 4.275 + } + }, + { + "model": "feed.shape", + "pk": 322, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.94648865740507, + "shape_pt_lon": -84.0452462913844, + "shape_pt_sequence": 170, + "shape_dist_traveled": 4.281 + } + }, + { + "model": "feed.shape", + "pk": 323, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93551240308205, + "shape_pt_lon": -84.052232462037, + "shape_pt_sequence": 0, + "shape_dist_traveled": 0.0 + } + }, + { + "model": "feed.shape", + "pk": 324, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93553038682294, + "shape_pt_lon": -84.0523024805564, + "shape_pt_sequence": 1, + "shape_dist_traveled": 0.008 + } + }, + { + "model": "feed.shape", + "pk": 325, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93554317941351, + "shape_pt_lon": -84.0523354193901, + "shape_pt_sequence": 2, + "shape_dist_traveled": 0.012 + } + }, + { + "model": "feed.shape", + "pk": 326, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93560006968185, + "shape_pt_lon": -84.0523952582046, + "shape_pt_sequence": 3, + "shape_dist_traveled": 0.021 + } + }, + { + "model": "feed.shape", + "pk": 327, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93565298376728, + "shape_pt_lon": -84.0524284133704, + "shape_pt_sequence": 4, + "shape_dist_traveled": 0.028 + } + }, + { + "model": "feed.shape", + "pk": 328, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93571914349433, + "shape_pt_lon": -84.0524404498132, + "shape_pt_sequence": 5, + "shape_dist_traveled": 0.035 + } + }, + { + "model": "feed.shape", + "pk": 329, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93583719162457, + "shape_pt_lon": -84.0524171180445, + "shape_pt_sequence": 6, + "shape_dist_traveled": 0.049 + } + }, + { + "model": "feed.shape", + "pk": 330, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93594643029256, + "shape_pt_lon": -84.0523801266021, + "shape_pt_sequence": 7, + "shape_dist_traveled": 0.061 + } + }, + { + "model": "feed.shape", + "pk": 331, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93608834513962, + "shape_pt_lon": -84.0523343631691, + "shape_pt_sequence": 8, + "shape_dist_traveled": 0.078 + } + }, + { + "model": "feed.shape", + "pk": 332, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93620422239772, + "shape_pt_lon": -84.0522977078958, + "shape_pt_sequence": 9, + "shape_dist_traveled": 0.091 + } + }, + { + "model": "feed.shape", + "pk": 333, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.936293049843, + "shape_pt_lon": -84.0522711599884, + "shape_pt_sequence": 10, + "shape_dist_traveled": 0.101 + } + }, + { + "model": "feed.shape", + "pk": 334, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93639226353531, + "shape_pt_lon": -84.0522405229359, + "shape_pt_sequence": 11, + "shape_dist_traveled": 0.113 + } + }, + { + "model": "feed.shape", + "pk": 335, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93653093553953, + "shape_pt_lon": -84.0522367457551, + "shape_pt_sequence": 12, + "shape_dist_traveled": 0.128 + } + }, + { + "model": "feed.shape", + "pk": 336, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93659589447438, + "shape_pt_lon": -84.0522590055211, + "shape_pt_sequence": 13, + "shape_dist_traveled": 0.136 + } + }, + { + "model": "feed.shape", + "pk": 337, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93661615058734, + "shape_pt_lon": -84.0523412639074, + "shape_pt_sequence": 14, + "shape_dist_traveled": 0.145 + } + }, + { + "model": "feed.shape", + "pk": 338, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.9365876265418, + "shape_pt_lon": -84.0524260404882, + "shape_pt_sequence": 15, + "shape_dist_traveled": 0.155 + } + }, + { + "model": "feed.shape", + "pk": 339, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.9365355393877, + "shape_pt_lon": -84.0524499625703, + "shape_pt_sequence": 16, + "shape_dist_traveled": 0.161 + } + }, + { + "model": "feed.shape", + "pk": 340, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93644867420793, + "shape_pt_lon": -84.0524473462339, + "shape_pt_sequence": 17, + "shape_dist_traveled": 0.171 + } + }, + { + "model": "feed.shape", + "pk": 341, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93635813864212, + "shape_pt_lon": -84.0524384481957, + "shape_pt_sequence": 18, + "shape_dist_traveled": 0.181 + } + }, + { + "model": "feed.shape", + "pk": 342, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93632957313295, + "shape_pt_lon": -84.052426075736, + "shape_pt_sequence": 19, + "shape_dist_traveled": 0.184 + } + }, + { + "model": "feed.shape", + "pk": 343, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93630067737655, + "shape_pt_lon": -84.0524254379402, + "shape_pt_sequence": 20, + "shape_dist_traveled": 0.188 + } + }, + { + "model": "feed.shape", + "pk": 344, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.9361767385198, + "shape_pt_lon": -84.0524455386407, + "shape_pt_sequence": 21, + "shape_dist_traveled": 0.201 + } + }, + { + "model": "feed.shape", + "pk": 345, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93606938255121, + "shape_pt_lon": -84.0524692189919, + "shape_pt_sequence": 22, + "shape_dist_traveled": 0.214 + } + }, + { + "model": "feed.shape", + "pk": 346, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.9358662876061, + "shape_pt_lon": -84.0525134237392, + "shape_pt_sequence": 23, + "shape_dist_traveled": 0.237 + } + }, + { + "model": "feed.shape", + "pk": 347, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93580530982546, + "shape_pt_lon": -84.0525277028597, + "shape_pt_sequence": 24, + "shape_dist_traveled": 0.244 + } + }, + { + "model": "feed.shape", + "pk": 348, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93571720324209, + "shape_pt_lon": -84.0525351455981, + "shape_pt_sequence": 25, + "shape_dist_traveled": 0.253 + } + }, + { + "model": "feed.shape", + "pk": 349, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93562932790421, + "shape_pt_lon": -84.0525170973821, + "shape_pt_sequence": 26, + "shape_dist_traveled": 0.263 + } + }, + { + "model": "feed.shape", + "pk": 350, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93552958615174, + "shape_pt_lon": -84.0524334827489, + "shape_pt_sequence": 27, + "shape_dist_traveled": 0.278 + } + }, + { + "model": "feed.shape", + "pk": 351, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93545575661828, + "shape_pt_lon": -84.052350672979, + "shape_pt_sequence": 28, + "shape_dist_traveled": 0.29 + } + }, + { + "model": "feed.shape", + "pk": 352, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93541638163459, + "shape_pt_lon": -84.0522446182099, + "shape_pt_sequence": 29, + "shape_dist_traveled": 0.302 + } + }, + { + "model": "feed.shape", + "pk": 353, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93541236377893, + "shape_pt_lon": -84.0520977731443, + "shape_pt_sequence": 30, + "shape_dist_traveled": 0.318 + } + }, + { + "model": "feed.shape", + "pk": 354, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.9353609350822, + "shape_pt_lon": -84.0517673714683, + "shape_pt_sequence": 31, + "shape_dist_traveled": 0.355 + } + }, + { + "model": "feed.shape", + "pk": 355, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93533537431955, + "shape_pt_lon": -84.0515957473315, + "shape_pt_sequence": 32, + "shape_dist_traveled": 0.374 + } + }, + { + "model": "feed.shape", + "pk": 356, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93527832074849, + "shape_pt_lon": -84.0514578761312, + "shape_pt_sequence": 33, + "shape_dist_traveled": 0.39 + } + }, + { + "model": "feed.shape", + "pk": 357, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93537394568805, + "shape_pt_lon": -84.051051560594, + "shape_pt_sequence": 34, + "shape_dist_traveled": 0.436 + } + }, + { + "model": "feed.shape", + "pk": 358, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93548509593826, + "shape_pt_lon": -84.0506488451042, + "shape_pt_sequence": 35, + "shape_dist_traveled": 0.482 + } + }, + { + "model": "feed.shape", + "pk": 359, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93555656904013, + "shape_pt_lon": -84.0503446866737, + "shape_pt_sequence": 36, + "shape_dist_traveled": 0.516 + } + }, + { + "model": "feed.shape", + "pk": 360, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93560639042598, + "shape_pt_lon": -84.0501407351937, + "shape_pt_sequence": 37, + "shape_dist_traveled": 0.539 + } + }, + { + "model": "feed.shape", + "pk": 361, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93564014039442, + "shape_pt_lon": -84.0499188359838, + "shape_pt_sequence": 38, + "shape_dist_traveled": 0.564 + } + }, + { + "model": "feed.shape", + "pk": 362, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93555237106771, + "shape_pt_lon": -84.0495240741516, + "shape_pt_sequence": 39, + "shape_dist_traveled": 0.608 + } + }, + { + "model": "feed.shape", + "pk": 363, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.9355127171103, + "shape_pt_lon": -84.0493169635181, + "shape_pt_sequence": 40, + "shape_dist_traveled": 0.631 + } + }, + { + "model": "feed.shape", + "pk": 364, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93544759669272, + "shape_pt_lon": -84.0490255135247, + "shape_pt_sequence": 41, + "shape_dist_traveled": 0.664 + } + }, + { + "model": "feed.shape", + "pk": 365, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93538988817417, + "shape_pt_lon": -84.0487899823799, + "shape_pt_sequence": 42, + "shape_dist_traveled": 0.691 + } + }, + { + "model": "feed.shape", + "pk": 366, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93537301317815, + "shape_pt_lon": -84.0486447689264, + "shape_pt_sequence": 43, + "shape_dist_traveled": 0.707 + } + }, + { + "model": "feed.shape", + "pk": 367, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93527658461171, + "shape_pt_lon": -84.0486366108669, + "shape_pt_sequence": 44, + "shape_dist_traveled": 0.718 + } + }, + { + "model": "feed.shape", + "pk": 368, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93529274995559, + "shape_pt_lon": -84.0483784246656, + "shape_pt_sequence": 45, + "shape_dist_traveled": 0.746 + } + }, + { + "model": "feed.shape", + "pk": 369, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93524694618673, + "shape_pt_lon": -84.0481238929513, + "shape_pt_sequence": 46, + "shape_dist_traveled": 0.774 + } + }, + { + "model": "feed.shape", + "pk": 370, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93514165787212, + "shape_pt_lon": -84.0478057230236, + "shape_pt_sequence": 47, + "shape_dist_traveled": 0.811 + } + }, + { + "model": "feed.shape", + "pk": 371, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93500316815773, + "shape_pt_lon": -84.0473807827294, + "shape_pt_sequence": 48, + "shape_dist_traveled": 0.86 + } + }, + { + "model": "feed.shape", + "pk": 372, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93492049042863, + "shape_pt_lon": -84.0470859236543, + "shape_pt_sequence": 49, + "shape_dist_traveled": 0.894 + } + }, + { + "model": "feed.shape", + "pk": 373, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93479657132182, + "shape_pt_lon": -84.0464195689003, + "shape_pt_sequence": 50, + "shape_dist_traveled": 0.968 + } + }, + { + "model": "feed.shape", + "pk": 374, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93468604728109, + "shape_pt_lon": -84.0458857020311, + "shape_pt_sequence": 51, + "shape_dist_traveled": 1.028 + } + }, + { + "model": "feed.shape", + "pk": 375, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.9346124699569, + "shape_pt_lon": -84.0456137031377, + "shape_pt_sequence": 52, + "shape_dist_traveled": 1.059 + } + }, + { + "model": "feed.shape", + "pk": 376, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93481022852054, + "shape_pt_lon": -84.0456081393267, + "shape_pt_sequence": 53, + "shape_dist_traveled": 1.081 + } + }, + { + "model": "feed.shape", + "pk": 377, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93495379560579, + "shape_pt_lon": -84.0456083692307, + "shape_pt_sequence": 54, + "shape_dist_traveled": 1.096 + } + }, + { + "model": "feed.shape", + "pk": 378, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93502122053513, + "shape_pt_lon": -84.0455873976348, + "shape_pt_sequence": 55, + "shape_dist_traveled": 1.104 + } + }, + { + "model": "feed.shape", + "pk": 379, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93525069991888, + "shape_pt_lon": -84.0455815527507, + "shape_pt_sequence": 56, + "shape_dist_traveled": 1.13 + } + }, + { + "model": "feed.shape", + "pk": 380, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93533621207088, + "shape_pt_lon": -84.0455791055204, + "shape_pt_sequence": 57, + "shape_dist_traveled": 1.139 + } + }, + { + "model": "feed.shape", + "pk": 381, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.9355796939962, + "shape_pt_lon": -84.0455277100451, + "shape_pt_sequence": 58, + "shape_dist_traveled": 1.167 + } + }, + { + "model": "feed.shape", + "pk": 382, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93566141737569, + "shape_pt_lon": -84.0454545424224, + "shape_pt_sequence": 59, + "shape_dist_traveled": 1.179 + } + }, + { + "model": "feed.shape", + "pk": 383, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93593880374486, + "shape_pt_lon": -84.0454033749615, + "shape_pt_sequence": 60, + "shape_dist_traveled": 1.21 + } + }, + { + "model": "feed.shape", + "pk": 384, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93617987563359, + "shape_pt_lon": -84.0453561940705, + "shape_pt_sequence": 61, + "shape_dist_traveled": 1.237 + } + }, + { + "model": "feed.shape", + "pk": 385, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93629878421235, + "shape_pt_lon": -84.0453622217276, + "shape_pt_sequence": 62, + "shape_dist_traveled": 1.25 + } + }, + { + "model": "feed.shape", + "pk": 386, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93647074793075, + "shape_pt_lon": -84.0454544077961, + "shape_pt_sequence": 63, + "shape_dist_traveled": 1.272 + } + }, + { + "model": "feed.shape", + "pk": 387, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.9366470154013, + "shape_pt_lon": -84.0455491574187, + "shape_pt_sequence": 64, + "shape_dist_traveled": 1.294 + } + }, + { + "model": "feed.shape", + "pk": 388, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93667996169247, + "shape_pt_lon": -84.0455671051487, + "shape_pt_sequence": 65, + "shape_dist_traveled": 1.298 + } + }, + { + "model": "feed.shape", + "pk": 389, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93677076487081, + "shape_pt_lon": -84.0455923951325, + "shape_pt_sequence": 66, + "shape_dist_traveled": 1.308 + } + }, + { + "model": "feed.shape", + "pk": 390, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93685019478803, + "shape_pt_lon": -84.0455875957907, + "shape_pt_sequence": 67, + "shape_dist_traveled": 1.317 + } + }, + { + "model": "feed.shape", + "pk": 391, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93693939078323, + "shape_pt_lon": -84.0455459896891, + "shape_pt_sequence": 68, + "shape_dist_traveled": 1.328 + } + }, + { + "model": "feed.shape", + "pk": 392, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93708216879507, + "shape_pt_lon": -84.0454405657035, + "shape_pt_sequence": 69, + "shape_dist_traveled": 1.348 + } + }, + { + "model": "feed.shape", + "pk": 393, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.9372417505605, + "shape_pt_lon": -84.0452791956738, + "shape_pt_sequence": 70, + "shape_dist_traveled": 1.373 + } + }, + { + "model": "feed.shape", + "pk": 394, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93733175001592, + "shape_pt_lon": -84.0451437718914, + "shape_pt_sequence": 71, + "shape_dist_traveled": 1.391 + } + }, + { + "model": "feed.shape", + "pk": 395, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93747880276838, + "shape_pt_lon": -84.0448843455207, + "shape_pt_sequence": 72, + "shape_dist_traveled": 1.423 + } + }, + { + "model": "feed.shape", + "pk": 396, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93759383837854, + "shape_pt_lon": -84.0446848467803, + "shape_pt_sequence": 73, + "shape_dist_traveled": 1.449 + } + }, + { + "model": "feed.shape", + "pk": 397, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93775722150572, + "shape_pt_lon": -84.0443877220931, + "shape_pt_sequence": 74, + "shape_dist_traveled": 1.486 + } + }, + { + "model": "feed.shape", + "pk": 398, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93792650160209, + "shape_pt_lon": -84.0440980878075, + "shape_pt_sequence": 75, + "shape_dist_traveled": 1.523 + } + }, + { + "model": "feed.shape", + "pk": 399, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93809919166979, + "shape_pt_lon": -84.0437999865192, + "shape_pt_sequence": 76, + "shape_dist_traveled": 1.561 + } + }, + { + "model": "feed.shape", + "pk": 400, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93796097853527, + "shape_pt_lon": -84.0436147985756, + "shape_pt_sequence": 77, + "shape_dist_traveled": 1.586 + } + }, + { + "model": "feed.shape", + "pk": 401, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93791115773413, + "shape_pt_lon": -84.0434434787742, + "shape_pt_sequence": 78, + "shape_dist_traveled": 1.606 + } + }, + { + "model": "feed.shape", + "pk": 402, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.9378853721441, + "shape_pt_lon": -84.0432188653814, + "shape_pt_sequence": 79, + "shape_dist_traveled": 1.63 + } + }, + { + "model": "feed.shape", + "pk": 403, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93792474683056, + "shape_pt_lon": -84.0429382281456, + "shape_pt_sequence": 80, + "shape_dist_traveled": 1.661 + } + }, + { + "model": "feed.shape", + "pk": 404, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93798421082772, + "shape_pt_lon": -84.0425692976739, + "shape_pt_sequence": 81, + "shape_dist_traveled": 1.702 + } + }, + { + "model": "feed.shape", + "pk": 405, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93799717971221, + "shape_pt_lon": -84.0424760119919, + "shape_pt_sequence": 82, + "shape_dist_traveled": 1.713 + } + }, + { + "model": "feed.shape", + "pk": 406, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93813619639644, + "shape_pt_lon": -84.0421774270254, + "shape_pt_sequence": 83, + "shape_dist_traveled": 1.749 + } + }, + { + "model": "feed.shape", + "pk": 407, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93816151133474, + "shape_pt_lon": -84.0419972282554, + "shape_pt_sequence": 84, + "shape_dist_traveled": 1.769 + } + }, + { + "model": "feed.shape", + "pk": 408, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93815347569085, + "shape_pt_lon": -84.0418487515775, + "shape_pt_sequence": 85, + "shape_dist_traveled": 1.785 + } + }, + { + "model": "feed.shape", + "pk": 409, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93812695789198, + "shape_pt_lon": -84.0417223014224, + "shape_pt_sequence": 86, + "shape_dist_traveled": 1.799 + } + }, + { + "model": "feed.shape", + "pk": 410, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93807552975984, + "shape_pt_lon": -84.041649694696, + "shape_pt_sequence": 87, + "shape_dist_traveled": 1.809 + } + }, + { + "model": "feed.shape", + "pk": 411, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93801445884308, + "shape_pt_lon": -84.0416317469654, + "shape_pt_sequence": 88, + "shape_dist_traveled": 1.816 + } + }, + { + "model": "feed.shape", + "pk": 412, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93791897942971, + "shape_pt_lon": -84.0416350505556, + "shape_pt_sequence": 89, + "shape_dist_traveled": 1.827 + } + }, + { + "model": "feed.shape", + "pk": 413, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93789540463778, + "shape_pt_lon": -84.0410687729965, + "shape_pt_sequence": 90, + "shape_dist_traveled": 1.889 + } + }, + { + "model": "feed.shape", + "pk": 414, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93846102257875, + "shape_pt_lon": -84.0409278059346, + "shape_pt_sequence": 91, + "shape_dist_traveled": 1.953 + } + }, + { + "model": "feed.shape", + "pk": 415, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93868770509072, + "shape_pt_lon": -84.0409636843222, + "shape_pt_sequence": 92, + "shape_dist_traveled": 1.979 + } + }, + { + "model": "feed.shape", + "pk": 416, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93884702967763, + "shape_pt_lon": -84.0411317795776, + "shape_pt_sequence": 93, + "shape_dist_traveled": 2.004 + } + }, + { + "model": "feed.shape", + "pk": 417, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93915009329333, + "shape_pt_lon": -84.0416545090707, + "shape_pt_sequence": 94, + "shape_dist_traveled": 2.071 + } + }, + { + "model": "feed.shape", + "pk": 418, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93928437269097, + "shape_pt_lon": -84.0417940169538, + "shape_pt_sequence": 95, + "shape_dist_traveled": 2.092 + } + }, + { + "model": "feed.shape", + "pk": 419, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93942339095397, + "shape_pt_lon": -84.0418844077991, + "shape_pt_sequence": 96, + "shape_dist_traveled": 2.11 + } + }, + { + "model": "feed.shape", + "pk": 420, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93949992907343, + "shape_pt_lon": -84.0419066090587, + "shape_pt_sequence": 97, + "shape_dist_traveled": 2.119 + } + }, + { + "model": "feed.shape", + "pk": 421, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93949992907343, + "shape_pt_lon": -84.0422475569833, + "shape_pt_sequence": 98, + "shape_dist_traveled": 2.156 + } + }, + { + "model": "feed.shape", + "pk": 422, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.939437, + "shape_pt_lon": -84.043074, + "shape_pt_sequence": 99, + "shape_dist_traveled": 2.187 + } + }, + { + "model": "feed.shape", + "pk": 423, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.9394249524573, + "shape_pt_lon": -84.0433290766316, + "shape_pt_sequence": 100, + "shape_dist_traveled": 2.275 + } + }, + { + "model": "feed.shape", + "pk": 424, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93972312001197, + "shape_pt_lon": -84.0432616940963, + "shape_pt_sequence": 101, + "shape_dist_traveled": 2.309 + } + }, + { + "model": "feed.shape", + "pk": 425, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.9397847344284, + "shape_pt_lon": -84.0432938739159, + "shape_pt_sequence": 102, + "shape_dist_traveled": 2.317 + } + }, + { + "model": "feed.shape", + "pk": 426, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.9398186343525, + "shape_pt_lon": -84.0433818049407, + "shape_pt_sequence": 103, + "shape_dist_traveled": 2.327 + } + }, + { + "model": "feed.shape", + "pk": 427, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93998824672434, + "shape_pt_lon": -84.0440308770623, + "shape_pt_sequence": 104, + "shape_dist_traveled": 2.401 + } + }, + { + "model": "feed.shape", + "pk": 428, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94015974971341, + "shape_pt_lon": -84.0446658158992, + "shape_pt_sequence": 105, + "shape_dist_traveled": 2.473 + } + }, + { + "model": "feed.shape", + "pk": 429, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94026910203425, + "shape_pt_lon": -84.0448245474961, + "shape_pt_sequence": 106, + "shape_dist_traveled": 2.494 + } + }, + { + "model": "feed.shape", + "pk": 430, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94036490303632, + "shape_pt_lon": -84.0451873514683, + "shape_pt_sequence": 107, + "shape_dist_traveled": 2.535 + } + }, + { + "model": "feed.shape", + "pk": 431, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94048769323097, + "shape_pt_lon": -84.0456290389484, + "shape_pt_sequence": 108, + "shape_dist_traveled": 2.586 + } + }, + { + "model": "feed.shape", + "pk": 432, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94063635155576, + "shape_pt_lon": -84.0455931434884, + "shape_pt_sequence": 109, + "shape_dist_traveled": 2.602 + } + }, + { + "model": "feed.shape", + "pk": 433, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94079234514589, + "shape_pt_lon": -84.0450690355552, + "shape_pt_sequence": 110, + "shape_dist_traveled": 2.662 + } + }, + { + "model": "feed.shape", + "pk": 434, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94094918383372, + "shape_pt_lon": -84.0447505513004, + "shape_pt_sequence": 111, + "shape_dist_traveled": 2.701 + } + }, + { + "model": "feed.shape", + "pk": 435, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94104532842372, + "shape_pt_lon": -84.0446520351469, + "shape_pt_sequence": 112, + "shape_dist_traveled": 2.717 + } + }, + { + "model": "feed.shape", + "pk": 436, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94113081479986, + "shape_pt_lon": -84.0446571934664, + "shape_pt_sequence": 113, + "shape_dist_traveled": 2.726 + } + }, + { + "model": "feed.shape", + "pk": 437, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94144321527622, + "shape_pt_lon": -84.0446770863329, + "shape_pt_sequence": 114, + "shape_dist_traveled": 2.761 + } + }, + { + "model": "feed.shape", + "pk": 438, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94195499816524, + "shape_pt_lon": -84.0447142198439, + "shape_pt_sequence": 115, + "shape_dist_traveled": 2.817 + } + }, + { + "model": "feed.shape", + "pk": 439, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94233948335795, + "shape_pt_lon": -84.0447371192727, + "shape_pt_sequence": 116, + "shape_dist_traveled": 2.86 + } + }, + { + "model": "feed.shape", + "pk": 440, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94270561942093, + "shape_pt_lon": -84.0447624203313, + "shape_pt_sequence": 117, + "shape_dist_traveled": 2.901 + } + }, + { + "model": "feed.shape", + "pk": 441, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94282741926446, + "shape_pt_lon": -84.0447662997461, + "shape_pt_sequence": 118, + "shape_dist_traveled": 2.914 + } + }, + { + "model": "feed.shape", + "pk": 442, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94300876520552, + "shape_pt_lon": -84.0447342405736, + "shape_pt_sequence": 119, + "shape_dist_traveled": 2.934 + } + }, + { + "model": "feed.shape", + "pk": 443, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94322619282253, + "shape_pt_lon": -84.044661630678, + "shape_pt_sequence": 120, + "shape_dist_traveled": 2.96 + } + }, + { + "model": "feed.shape", + "pk": 444, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94336188947768, + "shape_pt_lon": -84.0446070756693, + "shape_pt_sequence": 121, + "shape_dist_traveled": 2.976 + } + }, + { + "model": "feed.shape", + "pk": 445, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94366938860733, + "shape_pt_lon": -84.0444664621215, + "shape_pt_sequence": 122, + "shape_dist_traveled": 3.013 + } + }, + { + "model": "feed.shape", + "pk": 446, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94379763572232, + "shape_pt_lon": -84.0447499441632, + "shape_pt_sequence": 123, + "shape_dist_traveled": 3.047 + } + }, + { + "model": "feed.shape", + "pk": 447, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94387703073651, + "shape_pt_lon": -84.0448781808515, + "shape_pt_sequence": 124, + "shape_dist_traveled": 3.064 + } + }, + { + "model": "feed.shape", + "pk": 448, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94396544788927, + "shape_pt_lon": -84.0449496270056, + "shape_pt_sequence": 125, + "shape_dist_traveled": 3.077 + } + }, + { + "model": "feed.shape", + "pk": 449, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94454435151914, + "shape_pt_lon": -84.0450074182673, + "shape_pt_sequence": 126, + "shape_dist_traveled": 3.141 + } + }, + { + "model": "feed.shape", + "pk": 450, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94494922686726, + "shape_pt_lon": -84.0450098494603, + "shape_pt_sequence": 127, + "shape_dist_traveled": 3.186 + } + }, + { + "model": "feed.shape", + "pk": 451, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94503488859595, + "shape_pt_lon": -84.0450726102459, + "shape_pt_sequence": 128, + "shape_dist_traveled": 3.197 + } + }, + { + "model": "feed.shape", + "pk": 452, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94506635931216, + "shape_pt_lon": -84.0453994971357, + "shape_pt_sequence": 129, + "shape_dist_traveled": 3.233 + } + }, + { + "model": "feed.shape", + "pk": 453, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94509373573383, + "shape_pt_lon": -84.0454999143925, + "shape_pt_sequence": 130, + "shape_dist_traveled": 3.245 + } + }, + { + "model": "feed.shape", + "pk": 454, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94516587977827, + "shape_pt_lon": -84.0455384857143, + "shape_pt_sequence": 131, + "shape_dist_traveled": 3.254 + } + }, + { + "model": "feed.shape", + "pk": 455, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94569334489241, + "shape_pt_lon": -84.045501640108, + "shape_pt_sequence": 132, + "shape_dist_traveled": 3.312 + } + }, + { + "model": "feed.shape", + "pk": 456, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94576818120904, + "shape_pt_lon": -84.0454572011088, + "shape_pt_sequence": 133, + "shape_dist_traveled": 3.322 + } + }, + { + "model": "feed.shape", + "pk": 457, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94581918999885, + "shape_pt_lon": -84.0453571624431, + "shape_pt_sequence": 134, + "shape_dist_traveled": 3.334 + } + }, + { + "model": "feed.shape", + "pk": 458, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94586821736523, + "shape_pt_lon": -84.0452494124261, + "shape_pt_sequence": 135, + "shape_dist_traveled": 3.347 + } + }, + { + "model": "feed.shape", + "pk": 459, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94594549545337, + "shape_pt_lon": -84.0451749917014, + "shape_pt_sequence": 136, + "shape_dist_traveled": 3.359 + } + }, + { + "model": "feed.shape", + "pk": 460, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94628917517751, + "shape_pt_lon": -84.045149887399, + "shape_pt_sequence": 137, + "shape_dist_traveled": 3.397 + } + }, + { + "model": "feed.shape", + "pk": 461, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.946387887887, + "shape_pt_lon": -84.0451617577946, + "shape_pt_sequence": 138, + "shape_dist_traveled": 3.408 + } + }, + { + "model": "feed.shape", + "pk": 462, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94644528982524, + "shape_pt_lon": -84.0451994142665, + "shape_pt_sequence": 139, + "shape_dist_traveled": 3.416 + } + }, + { + "model": "feed.shape", + "pk": 463, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94649012442296, + "shape_pt_lon": -84.0452511227568, + "shape_pt_sequence": 140, + "shape_dist_traveled": 3.423 + } + }, + { + "model": "feed.shape", + "pk": 464, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93551129613598, + "shape_pt_lon": -84.0522203008732, + "shape_pt_sequence": 0, + "shape_dist_traveled": 0.0 + } + }, + { + "model": "feed.shape", + "pk": 465, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.9355310767404, + "shape_pt_lon": -84.0522927059177, + "shape_pt_sequence": 1, + "shape_dist_traveled": 0.008 + } + }, + { + "model": "feed.shape", + "pk": 466, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93554722789095, + "shape_pt_lon": -84.0523347118824, + "shape_pt_sequence": 2, + "shape_dist_traveled": 0.013 + } + }, + { + "model": "feed.shape", + "pk": 467, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93559998927965, + "shape_pt_lon": -84.0523891977038, + "shape_pt_sequence": 3, + "shape_dist_traveled": 0.022 + } + }, + { + "model": "feed.shape", + "pk": 468, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93565665681396, + "shape_pt_lon": -84.0524266115309, + "shape_pt_sequence": 4, + "shape_dist_traveled": 0.029 + } + }, + { + "model": "feed.shape", + "pk": 469, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93572400544303, + "shape_pt_lon": -84.0524387877407, + "shape_pt_sequence": 5, + "shape_dist_traveled": 0.037 + } + }, + { + "model": "feed.shape", + "pk": 470, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93583791088976, + "shape_pt_lon": -84.0524163085106, + "shape_pt_sequence": 6, + "shape_dist_traveled": 0.049 + } + }, + { + "model": "feed.shape", + "pk": 471, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93589348533485, + "shape_pt_lon": -84.0524004247557, + "shape_pt_sequence": 7, + "shape_dist_traveled": 0.056 + } + }, + { + "model": "feed.shape", + "pk": 472, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93594773879152, + "shape_pt_lon": -84.0523801824105, + "shape_pt_sequence": 8, + "shape_dist_traveled": 0.062 + } + }, + { + "model": "feed.shape", + "pk": 473, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93618639604332, + "shape_pt_lon": -84.052302832233, + "shape_pt_sequence": 9, + "shape_dist_traveled": 0.09 + } + }, + { + "model": "feed.shape", + "pk": 474, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93639684624757, + "shape_pt_lon": -84.0522406782275, + "shape_pt_sequence": 10, + "shape_dist_traveled": 0.114 + } + }, + { + "model": "feed.shape", + "pk": 475, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93653551980098, + "shape_pt_lon": -84.0522361299255, + "shape_pt_sequence": 11, + "shape_dist_traveled": 0.13 + } + }, + { + "model": "feed.shape", + "pk": 476, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93673682209909, + "shape_pt_lon": -84.0523076585187, + "shape_pt_sequence": 12, + "shape_dist_traveled": 0.153 + } + }, + { + "model": "feed.shape", + "pk": 477, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93708559662569, + "shape_pt_lon": -84.05243186663, + "shape_pt_sequence": 13, + "shape_dist_traveled": 0.194 + } + }, + { + "model": "feed.shape", + "pk": 478, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93733577696727, + "shape_pt_lon": -84.0525288520072, + "shape_pt_sequence": 14, + "shape_dist_traveled": 0.224 + } + }, + { + "model": "feed.shape", + "pk": 479, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93757969853555, + "shape_pt_lon": -84.0526438746271, + "shape_pt_sequence": 15, + "shape_dist_traveled": 0.253 + } + }, + { + "model": "feed.shape", + "pk": 480, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.9377485826659, + "shape_pt_lon": -84.0527043524954, + "shape_pt_sequence": 16, + "shape_dist_traveled": 0.273 + } + }, + { + "model": "feed.shape", + "pk": 481, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93779188190045, + "shape_pt_lon": -84.0527107981436, + "shape_pt_sequence": 17, + "shape_dist_traveled": 0.278 + } + }, + { + "model": "feed.shape", + "pk": 482, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93787132360124, + "shape_pt_lon": -84.0527199326082, + "shape_pt_sequence": 18, + "shape_dist_traveled": 0.287 + } + }, + { + "model": "feed.shape", + "pk": 483, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93795076530203, + "shape_pt_lon": -84.0527243732062, + "shape_pt_sequence": 19, + "shape_dist_traveled": 0.296 + } + }, + { + "model": "feed.shape", + "pk": 484, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93802242474458, + "shape_pt_lon": -84.0527168419396, + "shape_pt_sequence": 20, + "shape_dist_traveled": 0.304 + } + }, + { + "model": "feed.shape", + "pk": 485, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93809408418712, + "shape_pt_lon": -84.0527036109785, + "shape_pt_sequence": 21, + "shape_dist_traveled": 0.312 + } + }, + { + "model": "feed.shape", + "pk": 486, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93815622170643, + "shape_pt_lon": -84.0526341385986, + "shape_pt_sequence": 22, + "shape_dist_traveled": 0.322 + } + }, + { + "model": "feed.shape", + "pk": 487, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93824866125399, + "shape_pt_lon": -84.0524441849862, + "shape_pt_sequence": 23, + "shape_dist_traveled": 0.345 + } + }, + { + "model": "feed.shape", + "pk": 488, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93840212874288, + "shape_pt_lon": -84.0521210493447, + "shape_pt_sequence": 24, + "shape_dist_traveled": 0.385 + } + }, + { + "model": "feed.shape", + "pk": 489, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93859022704029, + "shape_pt_lon": -84.0518711468269, + "shape_pt_sequence": 25, + "shape_dist_traveled": 0.419 + } + }, + { + "model": "feed.shape", + "pk": 490, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.9387164365478, + "shape_pt_lon": -84.0517146035903, + "shape_pt_sequence": 26, + "shape_dist_traveled": 0.441 + } + }, + { + "model": "feed.shape", + "pk": 491, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93883769238516, + "shape_pt_lon": -84.0515516901066, + "shape_pt_sequence": 27, + "shape_dist_traveled": 0.463 + } + }, + { + "model": "feed.shape", + "pk": 492, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93890538473733, + "shape_pt_lon": -84.0514467461262, + "shape_pt_sequence": 28, + "shape_dist_traveled": 0.477 + } + }, + { + "model": "feed.shape", + "pk": 493, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93897774723731, + "shape_pt_lon": -84.051298218969, + "shape_pt_sequence": 29, + "shape_dist_traveled": 0.495 + } + }, + { + "model": "feed.shape", + "pk": 494, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93901864778466, + "shape_pt_lon": -84.0511281313016, + "shape_pt_sequence": 30, + "shape_dist_traveled": 0.514 + } + }, + { + "model": "feed.shape", + "pk": 495, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93905404247567, + "shape_pt_lon": -84.0509181170952, + "shape_pt_sequence": 31, + "shape_dist_traveled": 0.538 + } + }, + { + "model": "feed.shape", + "pk": 496, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93908393146568, + "shape_pt_lon": -84.0503591447661, + "shape_pt_sequence": 32, + "shape_dist_traveled": 0.599 + } + }, + { + "model": "feed.shape", + "pk": 497, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93910272348104, + "shape_pt_lon": -84.0501183551865, + "shape_pt_sequence": 33, + "shape_dist_traveled": 0.626 + } + }, + { + "model": "feed.shape", + "pk": 498, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93910706388403, + "shape_pt_lon": -84.0499402779348, + "shape_pt_sequence": 34, + "shape_dist_traveled": 0.645 + } + }, + { + "model": "feed.shape", + "pk": 499, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93910711111161, + "shape_pt_lon": -84.0497648828928, + "shape_pt_sequence": 35, + "shape_dist_traveled": 0.664 + } + }, + { + "model": "feed.shape", + "pk": 500, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93906715286185, + "shape_pt_lon": -84.0496439745831, + "shape_pt_sequence": 36, + "shape_dist_traveled": 0.678 + } + }, + { + "model": "feed.shape", + "pk": 501, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93897699483947, + "shape_pt_lon": -84.0494999920866, + "shape_pt_sequence": 37, + "shape_dist_traveled": 0.697 + } + }, + { + "model": "feed.shape", + "pk": 502, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93879865248422, + "shape_pt_lon": -84.0492839130465, + "shape_pt_sequence": 38, + "shape_dist_traveled": 0.728 + } + }, + { + "model": "feed.shape", + "pk": 503, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93852631535243, + "shape_pt_lon": -84.0489259634067, + "shape_pt_sequence": 39, + "shape_dist_traveled": 0.777 + } + }, + { + "model": "feed.shape", + "pk": 504, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.9383125595628, + "shape_pt_lon": -84.0486415140485, + "shape_pt_sequence": 40, + "shape_dist_traveled": 0.817 + } + }, + { + "model": "feed.shape", + "pk": 505, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93816149920894, + "shape_pt_lon": -84.0484645585026, + "shape_pt_sequence": 41, + "shape_dist_traveled": 0.842 + } + }, + { + "model": "feed.shape", + "pk": 506, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93801276292967, + "shape_pt_lon": -84.0483041187788, + "shape_pt_sequence": 42, + "shape_dist_traveled": 0.866 + } + }, + { + "model": "feed.shape", + "pk": 507, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93767314890347, + "shape_pt_lon": -84.0479456361923, + "shape_pt_sequence": 43, + "shape_dist_traveled": 0.921 + } + }, + { + "model": "feed.shape", + "pk": 508, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93762896738312, + "shape_pt_lon": -84.0479035036496, + "shape_pt_sequence": 44, + "shape_dist_traveled": 0.927 + } + }, + { + "model": "feed.shape", + "pk": 509, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.9375818136517, + "shape_pt_lon": -84.0478664002497, + "shape_pt_sequence": 45, + "shape_dist_traveled": 0.934 + } + }, + { + "model": "feed.shape", + "pk": 510, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.9375407094932, + "shape_pt_lon": -84.0478370279249, + "shape_pt_sequence": 46, + "shape_dist_traveled": 0.94 + } + }, + { + "model": "feed.shape", + "pk": 511, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93749795410686, + "shape_pt_lon": -84.0478110083611, + "shape_pt_sequence": 47, + "shape_dist_traveled": 0.945 + } + }, + { + "model": "feed.shape", + "pk": 512, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93745496587906, + "shape_pt_lon": -84.0477901145765, + "shape_pt_sequence": 48, + "shape_dist_traveled": 0.95 + } + }, + { + "model": "feed.shape", + "pk": 513, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93736508273494, + "shape_pt_lon": -84.0477598330601, + "shape_pt_sequence": 49, + "shape_dist_traveled": 0.961 + } + }, + { + "model": "feed.shape", + "pk": 514, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93726069019733, + "shape_pt_lon": -84.047759267964, + "shape_pt_sequence": 50, + "shape_dist_traveled": 0.972 + } + }, + { + "model": "feed.shape", + "pk": 515, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93707479279145, + "shape_pt_lon": -84.047793713066, + "shape_pt_sequence": 51, + "shape_dist_traveled": 0.993 + } + }, + { + "model": "feed.shape", + "pk": 516, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93681544721791, + "shape_pt_lon": -84.0478715216077, + "shape_pt_sequence": 52, + "shape_dist_traveled": 1.023 + } + }, + { + "model": "feed.shape", + "pk": 517, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93657305173134, + "shape_pt_lon": -84.0479476285628, + "shape_pt_sequence": 53, + "shape_dist_traveled": 1.051 + } + }, + { + "model": "feed.shape", + "pk": 518, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93622234344519, + "shape_pt_lon": -84.0480642553351, + "shape_pt_sequence": 54, + "shape_dist_traveled": 1.092 + } + }, + { + "model": "feed.shape", + "pk": 519, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93602464016541, + "shape_pt_lon": -84.0481251956082, + "shape_pt_sequence": 55, + "shape_dist_traveled": 1.115 + } + }, + { + "model": "feed.shape", + "pk": 520, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93585590049247, + "shape_pt_lon": -84.0481829479595, + "shape_pt_sequence": 56, + "shape_dist_traveled": 1.135 + } + }, + { + "model": "feed.shape", + "pk": 521, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.9357089398831, + "shape_pt_lon": -84.0482522936584, + "shape_pt_sequence": 57, + "shape_dist_traveled": 1.153 + } + }, + { + "model": "feed.shape", + "pk": 522, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93563189742607, + "shape_pt_lon": -84.0482869664637, + "shape_pt_sequence": 58, + "shape_dist_traveled": 1.162 + } + }, + { + "model": "feed.shape", + "pk": 523, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93556048694849, + "shape_pt_lon": -84.0483531600847, + "shape_pt_sequence": 59, + "shape_dist_traveled": 1.173 + } + }, + { + "model": "feed.shape", + "pk": 524, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93549839086817, + "shape_pt_lon": -84.048435114092, + "shape_pt_sequence": 60, + "shape_dist_traveled": 1.184 + } + }, + { + "model": "feed.shape", + "pk": 525, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93546527295384, + "shape_pt_lon": -84.0485569944104, + "shape_pt_sequence": 61, + "shape_dist_traveled": 1.198 + } + }, + { + "model": "feed.shape", + "pk": 526, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.9354549236054, + "shape_pt_lon": -84.0486547088036, + "shape_pt_sequence": 62, + "shape_dist_traveled": 1.209 + } + }, + { + "model": "feed.shape", + "pk": 527, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93528001900853, + "shape_pt_lon": -84.048634745016, + "shape_pt_sequence": 63, + "shape_dist_traveled": 1.228 + } + }, + { + "model": "feed.shape", + "pk": 528, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93529761291067, + "shape_pt_lon": -84.0483794267626, + "shape_pt_sequence": 64, + "shape_dist_traveled": 1.256 + } + }, + { + "model": "feed.shape", + "pk": 529, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.9352527346308, + "shape_pt_lon": -84.0481286733116, + "shape_pt_sequence": 65, + "shape_dist_traveled": 1.284 + } + }, + { + "model": "feed.shape", + "pk": 530, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93512765815873, + "shape_pt_lon": -84.0477461762194, + "shape_pt_sequence": 66, + "shape_dist_traveled": 1.328 + } + }, + { + "model": "feed.shape", + "pk": 531, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93492703280895, + "shape_pt_lon": -84.0471055797031, + "shape_pt_sequence": 67, + "shape_dist_traveled": 1.402 + } + }, + { + "model": "feed.shape", + "pk": 532, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93478949058113, + "shape_pt_lon": -84.046354626689, + "shape_pt_sequence": 68, + "shape_dist_traveled": 1.486 + } + }, + { + "model": "feed.shape", + "pk": 533, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93469070939338, + "shape_pt_lon": -84.0458746565008, + "shape_pt_sequence": 69, + "shape_dist_traveled": 1.539 + } + }, + { + "model": "feed.shape", + "pk": 534, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93462060674132, + "shape_pt_lon": -84.0456143293, + "shape_pt_sequence": 70, + "shape_dist_traveled": 1.569 + } + }, + { + "model": "feed.shape", + "pk": 535, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93489289845325, + "shape_pt_lon": -84.0456070252698, + "shape_pt_sequence": 71, + "shape_dist_traveled": 1.599 + } + }, + { + "model": "feed.shape", + "pk": 536, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93495950947043, + "shape_pt_lon": -84.045606154414, + "shape_pt_sequence": 72, + "shape_dist_traveled": 1.606 + } + }, + { + "model": "feed.shape", + "pk": 537, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93502573261312, + "shape_pt_lon": -84.0455877894747, + "shape_pt_sequence": 73, + "shape_dist_traveled": 1.614 + } + }, + { + "model": "feed.shape", + "pk": 538, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93533984703067, + "shape_pt_lon": -84.0455793808645, + "shape_pt_sequence": 74, + "shape_dist_traveled": 1.649 + } + }, + { + "model": "feed.shape", + "pk": 539, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93553106245252, + "shape_pt_lon": -84.0455366983597, + "shape_pt_sequence": 75, + "shape_dist_traveled": 1.67 + } + }, + { + "model": "feed.shape", + "pk": 540, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93558489672501, + "shape_pt_lon": -84.0455256779408, + "shape_pt_sequence": 76, + "shape_dist_traveled": 1.677 + } + }, + { + "model": "feed.shape", + "pk": 541, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93566584972937, + "shape_pt_lon": -84.0454519050346, + "shape_pt_sequence": 77, + "shape_dist_traveled": 1.689 + } + }, + { + "model": "feed.shape", + "pk": 542, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93603020143902, + "shape_pt_lon": -84.0453870153627, + "shape_pt_sequence": 78, + "shape_dist_traveled": 1.73 + } + }, + { + "model": "feed.shape", + "pk": 543, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93619941008339, + "shape_pt_lon": -84.0453504149565, + "shape_pt_sequence": 79, + "shape_dist_traveled": 1.749 + } + }, + { + "model": "feed.shape", + "pk": 544, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93630011253566, + "shape_pt_lon": -84.0453617663184, + "shape_pt_sequence": 80, + "shape_dist_traveled": 1.76 + } + }, + { + "model": "feed.shape", + "pk": 545, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93651948121636, + "shape_pt_lon": -84.0454755016038, + "shape_pt_sequence": 81, + "shape_dist_traveled": 1.787 + } + }, + { + "model": "feed.shape", + "pk": 546, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93668368683727, + "shape_pt_lon": -84.0455653411938, + "shape_pt_sequence": 82, + "shape_dist_traveled": 1.808 + } + }, + { + "model": "feed.shape", + "pk": 547, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93677258981834, + "shape_pt_lon": -84.045589182648, + "shape_pt_sequence": 83, + "shape_dist_traveled": 1.818 + } + }, + { + "model": "feed.shape", + "pk": 548, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93685310570445, + "shape_pt_lon": -84.0455874796866, + "shape_pt_sequence": 84, + "shape_dist_traveled": 1.827 + } + }, + { + "model": "feed.shape", + "pk": 549, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93694508327091, + "shape_pt_lon": -84.0455437249918, + "shape_pt_sequence": 85, + "shape_dist_traveled": 1.838 + } + }, + { + "model": "feed.shape", + "pk": 550, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93708383542657, + "shape_pt_lon": -84.0454400845081, + "shape_pt_sequence": 86, + "shape_dist_traveled": 1.857 + } + }, + { + "model": "feed.shape", + "pk": 551, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93721635101928, + "shape_pt_lon": -84.045309807991, + "shape_pt_sequence": 87, + "shape_dist_traveled": 1.878 + } + }, + { + "model": "feed.shape", + "pk": 552, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93724819645461, + "shape_pt_lon": -84.0452761874456, + "shape_pt_sequence": 88, + "shape_dist_traveled": 1.883 + } + }, + { + "model": "feed.shape", + "pk": 553, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93734716375109, + "shape_pt_lon": -84.0451229209554, + "shape_pt_sequence": 89, + "shape_dist_traveled": 1.903 + } + }, + { + "model": "feed.shape", + "pk": 554, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93752119585777, + "shape_pt_lon": -84.0448187291416, + "shape_pt_sequence": 90, + "shape_dist_traveled": 1.941 + } + }, + { + "model": "feed.shape", + "pk": 555, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93767426097248, + "shape_pt_lon": -84.0445416760749, + "shape_pt_sequence": 91, + "shape_dist_traveled": 1.976 + } + }, + { + "model": "feed.shape", + "pk": 556, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93785833808635, + "shape_pt_lon": -84.0442186256065, + "shape_pt_sequence": 92, + "shape_dist_traveled": 2.017 + } + }, + { + "model": "feed.shape", + "pk": 557, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93810435753431, + "shape_pt_lon": -84.0437983732383, + "shape_pt_sequence": 93, + "shape_dist_traveled": 2.07 + } + }, + { + "model": "feed.shape", + "pk": 558, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93796632120651, + "shape_pt_lon": -84.0436125738981, + "shape_pt_sequence": 94, + "shape_dist_traveled": 2.096 + } + }, + { + "model": "feed.shape", + "pk": 559, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93791432144543, + "shape_pt_lon": -84.0434414999464, + "shape_pt_sequence": 95, + "shape_dist_traveled": 2.116 + } + }, + { + "model": "feed.shape", + "pk": 560, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93788832161072, + "shape_pt_lon": -84.0432184120559, + "shape_pt_sequence": 96, + "shape_dist_traveled": 2.14 + } + }, + { + "model": "feed.shape", + "pk": 561, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93792789506808, + "shape_pt_lon": -84.042939145496, + "shape_pt_sequence": 97, + "shape_dist_traveled": 2.171 + } + }, + { + "model": "feed.shape", + "pk": 562, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93799597108977, + "shape_pt_lon": -84.0425252959219, + "shape_pt_sequence": 98, + "shape_dist_traveled": 2.217 + } + }, + { + "model": "feed.shape", + "pk": 563, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93800488549925, + "shape_pt_lon": -84.0424724302894, + "shape_pt_sequence": 99, + "shape_dist_traveled": 2.223 + } + }, + { + "model": "feed.shape", + "pk": 564, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.9381395635656, + "shape_pt_lon": -84.0421750587842, + "shape_pt_sequence": 100, + "shape_dist_traveled": 2.259 + } + }, + { + "model": "feed.shape", + "pk": 565, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93816556338036, + "shape_pt_lon": -84.0419988023209, + "shape_pt_sequence": 101, + "shape_dist_traveled": 2.278 + } + }, + { + "model": "feed.shape", + "pk": 566, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93815877702913, + "shape_pt_lon": -84.0418468568672, + "shape_pt_sequence": 102, + "shape_dist_traveled": 2.295 + } + }, + { + "model": "feed.shape", + "pk": 567, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93812774499086, + "shape_pt_lon": -84.0417208377531, + "shape_pt_sequence": 103, + "shape_dist_traveled": 2.309 + } + }, + { + "model": "feed.shape", + "pk": 568, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93810465445374, + "shape_pt_lon": -84.0416827286396, + "shape_pt_sequence": 104, + "shape_dist_traveled": 2.314 + } + }, + { + "model": "feed.shape", + "pk": 569, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93807826146448, + "shape_pt_lon": -84.0416493133915, + "shape_pt_sequence": 105, + "shape_dist_traveled": 2.319 + } + }, + { + "model": "feed.shape", + "pk": 570, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93804738144964, + "shape_pt_lon": -84.0416349312544, + "shape_pt_sequence": 106, + "shape_dist_traveled": 2.323 + } + }, + { + "model": "feed.shape", + "pk": 571, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93801451996184, + "shape_pt_lon": -84.0416322837814, + "shape_pt_sequence": 107, + "shape_dist_traveled": 2.326 + } + }, + { + "model": "feed.shape", + "pk": 572, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93792436774485, + "shape_pt_lon": -84.0416346601389, + "shape_pt_sequence": 108, + "shape_dist_traveled": 2.336 + } + }, + { + "model": "feed.shape", + "pk": 573, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93790082410227, + "shape_pt_lon": -84.041067340985, + "shape_pt_sequence": 109, + "shape_dist_traveled": 2.399 + } + }, + { + "model": "feed.shape", + "pk": 574, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93846425290711, + "shape_pt_lon": -84.0409284047187, + "shape_pt_sequence": 110, + "shape_dist_traveled": 2.463 + } + }, + { + "model": "feed.shape", + "pk": 575, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93868651413261, + "shape_pt_lon": -84.0409624274215, + "shape_pt_sequence": 111, + "shape_dist_traveled": 2.488 + } + }, + { + "model": "feed.shape", + "pk": 576, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93885247660523, + "shape_pt_lon": -84.0411341586918, + "shape_pt_sequence": 112, + "shape_dist_traveled": 2.514 + } + }, + { + "model": "feed.shape", + "pk": 577, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93915539473273, + "shape_pt_lon": -84.0416474460876, + "shape_pt_sequence": 113, + "shape_dist_traveled": 2.579 + } + }, + { + "model": "feed.shape", + "pk": 578, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93928861127028, + "shape_pt_lon": -84.0417889786806, + "shape_pt_sequence": 114, + "shape_dist_traveled": 2.601 + } + }, + { + "model": "feed.shape", + "pk": 579, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.9394354239606, + "shape_pt_lon": -84.0418813247414, + "shape_pt_sequence": 115, + "shape_dist_traveled": 2.62 + } + }, + { + "model": "feed.shape", + "pk": 580, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93950244712471, + "shape_pt_lon": -84.0419056263361, + "shape_pt_sequence": 116, + "shape_dist_traveled": 2.628 + } + }, + { + "model": "feed.shape", + "pk": 581, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93950244613303, + "shape_pt_lon": -84.042239368576, + "shape_pt_sequence": 117, + "shape_dist_traveled": 2.664 + } + }, + { + "model": "feed.shape", + "pk": 582, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93949446718606, + "shape_pt_lon": -84.0425196469705, + "shape_pt_sequence": 118, + "shape_dist_traveled": 2.695 + } + }, + { + "model": "feed.shape", + "pk": 583, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93945457168453, + "shape_pt_lon": -84.0429991991022, + "shape_pt_sequence": 119, + "shape_dist_traveled": 2.748 + } + }, + { + "model": "feed.shape", + "pk": 584, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93942712460796, + "shape_pt_lon": -84.043331873611, + "shape_pt_sequence": 120, + "shape_dist_traveled": 2.784 + } + }, + { + "model": "feed.shape", + "pk": 585, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93972789866721, + "shape_pt_lon": -84.0432605742965, + "shape_pt_sequence": 121, + "shape_dist_traveled": 2.819 + } + }, + { + "model": "feed.shape", + "pk": 586, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93979051078508, + "shape_pt_lon": -84.0432941313524, + "shape_pt_sequence": 122, + "shape_dist_traveled": 2.826 + } + }, + { + "model": "feed.shape", + "pk": 587, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93982252793726, + "shape_pt_lon": -84.0433753940134, + "shape_pt_sequence": 123, + "shape_dist_traveled": 2.836 + } + }, + { + "model": "feed.shape", + "pk": 588, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93991292983544, + "shape_pt_lon": -84.0437147893588, + "shape_pt_sequence": 124, + "shape_dist_traveled": 2.875 + } + }, + { + "model": "feed.shape", + "pk": 589, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.94002028140903, + "shape_pt_lon": -84.0441287509128, + "shape_pt_sequence": 125, + "shape_dist_traveled": 2.922 + } + }, + { + "model": "feed.shape", + "pk": 590, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.94016644833328, + "shape_pt_lon": -84.0446669802431, + "shape_pt_sequence": 126, + "shape_dist_traveled": 2.983 + } + }, + { + "model": "feed.shape", + "pk": 591, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.94027078687104, + "shape_pt_lon": -84.044823754755, + "shape_pt_sequence": 127, + "shape_dist_traveled": 3.003 + } + }, + { + "model": "feed.shape", + "pk": 592, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.94048864067421, + "shape_pt_lon": -84.0456295904777, + "shape_pt_sequence": 128, + "shape_dist_traveled": 3.095 + } + }, + { + "model": "feed.shape", + "pk": 593, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.9406416703034, + "shape_pt_lon": -84.045594280927, + "shape_pt_sequence": 129, + "shape_dist_traveled": 3.112 + } + }, + { + "model": "feed.shape", + "pk": 594, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.94079771456593, + "shape_pt_lon": -84.0450692602221, + "shape_pt_sequence": 130, + "shape_dist_traveled": 3.172 + } + }, + { + "model": "feed.shape", + "pk": 595, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.9409503711104, + "shape_pt_lon": -84.0447481499267, + "shape_pt_sequence": 131, + "shape_dist_traveled": 3.212 + } + }, + { + "model": "feed.shape", + "pk": 596, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.94105192700053, + "shape_pt_lon": -84.0446521079484, + "shape_pt_sequence": 132, + "shape_dist_traveled": 3.227 + } + }, + { + "model": "feed.shape", + "pk": 597, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.94171142158802, + "shape_pt_lon": -84.0446962954808, + "shape_pt_sequence": 133, + "shape_dist_traveled": 3.3 + } + }, + { + "model": "feed.shape", + "pk": 598, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.94281915936154, + "shape_pt_lon": -84.0447683576565, + "shape_pt_sequence": 134, + "shape_dist_traveled": 3.423 + } + }, + { + "model": "feed.shape", + "pk": 599, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.94301266464211, + "shape_pt_lon": -84.0447317924328, + "shape_pt_sequence": 135, + "shape_dist_traveled": 3.445 + } + }, + { + "model": "feed.shape", + "pk": 600, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.94326484610015, + "shape_pt_lon": -84.0446461368594, + "shape_pt_sequence": 136, + "shape_dist_traveled": 3.474 + } + }, + { + "model": "feed.shape", + "pk": 601, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.94367235170777, + "shape_pt_lon": -84.0444664659679, + "shape_pt_sequence": 137, + "shape_dist_traveled": 3.523 + } + }, + { + "model": "feed.shape", + "pk": 602, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.94380140312083, + "shape_pt_lon": -84.044752272012, + "shape_pt_sequence": 138, + "shape_dist_traveled": 3.558 + } + }, + { + "model": "feed.shape", + "pk": 603, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.9438796367465, + "shape_pt_lon": -84.0448814333755, + "shape_pt_sequence": 139, + "shape_dist_traveled": 3.574 + } + }, + { + "model": "feed.shape", + "pk": 604, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.94396952509255, + "shape_pt_lon": -84.0449503878825, + "shape_pt_sequence": 140, + "shape_dist_traveled": 3.587 + } + }, + { + "model": "feed.shape", + "pk": 605, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.94433433418409, + "shape_pt_lon": -84.044987908675, + "shape_pt_sequence": 141, + "shape_dist_traveled": 3.627 + } + }, + { + "model": "feed.shape", + "pk": 606, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.94457411376674, + "shape_pt_lon": -84.0450080280451, + "shape_pt_sequence": 142, + "shape_dist_traveled": 3.654 + } + }, + { + "model": "feed.shape", + "pk": 607, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.94495390060397, + "shape_pt_lon": -84.0450080280451, + "shape_pt_sequence": 143, + "shape_dist_traveled": 3.696 + } + }, + { + "model": "feed.shape", + "pk": 608, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.94504571713547, + "shape_pt_lon": -84.0450786471473, + "shape_pt_sequence": 144, + "shape_dist_traveled": 3.709 + } + }, + { + "model": "feed.shape", + "pk": 609, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.94507075688808, + "shape_pt_lon": -84.0453964329445, + "shape_pt_sequence": 145, + "shape_dist_traveled": 3.744 + } + }, + { + "model": "feed.shape", + "pk": 610, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.94509858007239, + "shape_pt_lon": -84.0454995368328, + "shape_pt_sequence": 146, + "shape_dist_traveled": 3.755 + } + }, + { + "model": "feed.shape", + "pk": 611, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.94517301639726, + "shape_pt_lon": -84.0455360879379, + "shape_pt_sequence": 147, + "shape_dist_traveled": 3.764 + } + }, + { + "model": "feed.shape", + "pk": 612, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.94569599438186, + "shape_pt_lon": -84.0455012141288, + "shape_pt_sequence": 148, + "shape_dist_traveled": 3.822 + } + }, + { + "model": "feed.shape", + "pk": 613, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.94576731883437, + "shape_pt_lon": -84.0454579354822, + "shape_pt_sequence": 149, + "shape_dist_traveled": 3.832 + } + }, + { + "model": "feed.shape", + "pk": 614, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.94587443785238, + "shape_pt_lon": -84.0452474905592, + "shape_pt_sequence": 150, + "shape_dist_traveled": 3.858 + } + }, + { + "model": "feed.shape", + "pk": 615, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.94594677794762, + "shape_pt_lon": -84.0451754590753, + "shape_pt_sequence": 151, + "shape_dist_traveled": 3.869 + } + }, + { + "model": "feed.shape", + "pk": 616, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.94629204599402, + "shape_pt_lon": -84.0451469719024, + "shape_pt_sequence": 152, + "shape_dist_traveled": 3.907 + } + }, + { + "model": "feed.shape", + "pk": 617, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.9463908179176, + "shape_pt_lon": -84.0451610957222, + "shape_pt_sequence": 153, + "shape_dist_traveled": 3.918 + } + }, + { + "model": "feed.shape", + "pk": 618, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.94645063751956, + "shape_pt_lon": -84.0451992300371, + "shape_pt_sequence": 154, + "shape_dist_traveled": 3.926 + } + }, + { + "model": "feed.shape", + "pk": 619, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.94649738913102, + "shape_pt_lon": -84.0452562192863, + "shape_pt_sequence": 155, + "shape_dist_traveled": 3.934 + } + }, + { + "model": "feed.shape", + "pk": 620, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94651450274987, + "shape_pt_lon": -84.0452709224469, + "shape_pt_sequence": 0, + "shape_dist_traveled": 0.0 + } + }, + { + "model": "feed.shape", + "pk": 621, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.9465713930344, + "shape_pt_lon": -84.0453586296957, + "shape_pt_sequence": 1, + "shape_dist_traveled": 0.011 + } + }, + { + "model": "feed.shape", + "pk": 622, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94670523135418, + "shape_pt_lon": -84.0455321860811, + "shape_pt_sequence": 2, + "shape_dist_traveled": 0.036 + } + }, + { + "model": "feed.shape", + "pk": 623, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94685977487793, + "shape_pt_lon": -84.0457428830683, + "shape_pt_sequence": 3, + "shape_dist_traveled": 0.064 + } + }, + { + "model": "feed.shape", + "pk": 624, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94692114024093, + "shape_pt_lon": -84.0458252584096, + "shape_pt_sequence": 4, + "shape_dist_traveled": 0.076 + } + }, + { + "model": "feed.shape", + "pk": 625, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94699848130395, + "shape_pt_lon": -84.045874911642, + "shape_pt_sequence": 5, + "shape_dist_traveled": 0.086 + } + }, + { + "model": "feed.shape", + "pk": 626, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94709174550324, + "shape_pt_lon": -84.0458702927366, + "shape_pt_sequence": 6, + "shape_dist_traveled": 0.096 + } + }, + { + "model": "feed.shape", + "pk": 627, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94733286724273, + "shape_pt_lon": -84.0456762984049, + "shape_pt_sequence": 7, + "shape_dist_traveled": 0.13 + } + }, + { + "model": "feed.shape", + "pk": 628, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94734992775087, + "shape_pt_lon": -84.0455816108455, + "shape_pt_sequence": 8, + "shape_dist_traveled": 0.141 + } + }, + { + "model": "feed.shape", + "pk": 629, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94731694409985, + "shape_pt_lon": -84.0454811496546, + "shape_pt_sequence": 9, + "shape_dist_traveled": 0.152 + } + }, + { + "model": "feed.shape", + "pk": 630, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94706331033958, + "shape_pt_lon": -84.0451520526366, + "shape_pt_sequence": 10, + "shape_dist_traveled": 0.198 + } + }, + { + "model": "feed.shape", + "pk": 631, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94695639770921, + "shape_pt_lon": -84.044934964086, + "shape_pt_sequence": 11, + "shape_dist_traveled": 0.225 + } + }, + { + "model": "feed.shape", + "pk": 632, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94685739750313, + "shape_pt_lon": -84.0447940381815, + "shape_pt_sequence": 12, + "shape_dist_traveled": 0.244 + } + }, + { + "model": "feed.shape", + "pk": 633, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94674934743632, + "shape_pt_lon": -84.0447120526121, + "shape_pt_sequence": 13, + "shape_dist_traveled": 0.259 + } + }, + { + "model": "feed.shape", + "pk": 634, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94663902259388, + "shape_pt_lon": -84.0446901128118, + "shape_pt_sequence": 14, + "shape_dist_traveled": 0.271 + } + }, + { + "model": "feed.shape", + "pk": 635, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94658480665502, + "shape_pt_lon": -84.0447036688627, + "shape_pt_sequence": 15, + "shape_dist_traveled": 0.277 + } + }, + { + "model": "feed.shape", + "pk": 636, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94652566341521, + "shape_pt_lon": -84.0447440842844, + "shape_pt_sequence": 16, + "shape_dist_traveled": 0.285 + } + }, + { + "model": "feed.shape", + "pk": 637, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94631063663281, + "shape_pt_lon": -84.0447956225084, + "shape_pt_sequence": 17, + "shape_dist_traveled": 0.31 + } + }, + { + "model": "feed.shape", + "pk": 638, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94607861289951, + "shape_pt_lon": -84.0448175623087, + "shape_pt_sequence": 18, + "shape_dist_traveled": 0.335 + } + }, + { + "model": "feed.shape", + "pk": 639, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94606268969643, + "shape_pt_lon": -84.0448198717614, + "shape_pt_sequence": 19, + "shape_dist_traveled": 0.337 + } + }, + { + "model": "feed.shape", + "pk": 640, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94607633849742, + "shape_pt_lon": -84.0451616705072, + "shape_pt_sequence": 20, + "shape_dist_traveled": 0.375 + } + }, + { + "model": "feed.shape", + "pk": 641, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94594816328299, + "shape_pt_lon": -84.0451794721398, + "shape_pt_sequence": 21, + "shape_dist_traveled": 0.389 + } + }, + { + "model": "feed.shape", + "pk": 642, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94587650883204, + "shape_pt_lon": -84.0452499104458, + "shape_pt_sequence": 22, + "shape_dist_traveled": 0.4 + } + }, + { + "model": "feed.shape", + "pk": 643, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94577755742257, + "shape_pt_lon": -84.0454566064596, + "shape_pt_sequence": 23, + "shape_dist_traveled": 0.425 + } + }, + { + "model": "feed.shape", + "pk": 644, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94570040854178, + "shape_pt_lon": -84.0455092507792, + "shape_pt_sequence": 24, + "shape_dist_traveled": 0.435 + } + }, + { + "model": "feed.shape", + "pk": 645, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94516698035057, + "shape_pt_lon": -84.0455392738468, + "shape_pt_sequence": 25, + "shape_dist_traveled": 0.494 + } + }, + { + "model": "feed.shape", + "pk": 646, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94508917283893, + "shape_pt_lon": -84.0455023654374, + "shape_pt_sequence": 26, + "shape_dist_traveled": 0.504 + } + }, + { + "model": "feed.shape", + "pk": 647, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94505732633557, + "shape_pt_lon": -84.045382273899, + "shape_pt_sequence": 27, + "shape_dist_traveled": 0.518 + } + }, + { + "model": "feed.shape", + "pk": 648, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94502889195332, + "shape_pt_lon": -84.0450808903258, + "shape_pt_sequence": 28, + "shape_dist_traveled": 0.551 + } + }, + { + "model": "feed.shape", + "pk": 649, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94495155042415, + "shape_pt_lon": -84.0450173803773, + "shape_pt_sequence": 29, + "shape_dist_traveled": 0.562 + } + }, + { + "model": "feed.shape", + "pk": 650, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94472000465252, + "shape_pt_lon": -84.045015769873, + "shape_pt_sequence": 30, + "shape_dist_traveled": 0.587 + } + }, + { + "model": "feed.shape", + "pk": 651, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94425679788889, + "shape_pt_lon": -84.0449868892884, + "shape_pt_sequence": 31, + "shape_dist_traveled": 0.639 + } + }, + { + "model": "feed.shape", + "pk": 652, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94389594579139, + "shape_pt_lon": -84.0449568041774, + "shape_pt_sequence": 32, + "shape_dist_traveled": 0.679 + } + }, + { + "model": "feed.shape", + "pk": 653, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.9433847319748, + "shape_pt_lon": -84.0449197895004, + "shape_pt_sequence": 33, + "shape_dist_traveled": 0.736 + } + }, + { + "model": "feed.shape", + "pk": 654, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94261500079999, + "shape_pt_lon": -84.0448773383005, + "shape_pt_sequence": 34, + "shape_dist_traveled": 0.821 + } + }, + { + "model": "feed.shape", + "pk": 655, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94204155986042, + "shape_pt_lon": -84.0448390343892, + "shape_pt_sequence": 35, + "shape_dist_traveled": 0.884 + } + }, + { + "model": "feed.shape", + "pk": 656, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94137698645447, + "shape_pt_lon": -84.0448024388483, + "shape_pt_sequence": 36, + "shape_dist_traveled": 0.958 + } + }, + { + "model": "feed.shape", + "pk": 657, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94096102380372, + "shape_pt_lon": -84.0447771566035, + "shape_pt_sequence": 37, + "shape_dist_traveled": 1.004 + } + }, + { + "model": "feed.shape", + "pk": 658, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94082181962447, + "shape_pt_lon": -84.0450446175143, + "shape_pt_sequence": 38, + "shape_dist_traveled": 1.037 + } + }, + { + "model": "feed.shape", + "pk": 659, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94065523781238, + "shape_pt_lon": -84.0456053336701, + "shape_pt_sequence": 39, + "shape_dist_traveled": 1.101 + } + }, + { + "model": "feed.shape", + "pk": 660, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94048314593914, + "shape_pt_lon": -84.045634999557, + "shape_pt_sequence": 40, + "shape_dist_traveled": 1.121 + } + }, + { + "model": "feed.shape", + "pk": 661, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.9403780406827, + "shape_pt_lon": -84.0452283043053, + "shape_pt_sequence": 41, + "shape_dist_traveled": 1.167 + } + }, + { + "model": "feed.shape", + "pk": 662, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.9402703855621, + "shape_pt_lon": -84.04482278961, + "shape_pt_sequence": 42, + "shape_dist_traveled": 1.213 + } + }, + { + "model": "feed.shape", + "pk": 663, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94016328794055, + "shape_pt_lon": -84.0446641785108, + "shape_pt_sequence": 43, + "shape_dist_traveled": 1.234 + } + }, + { + "model": "feed.shape", + "pk": 664, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94010181117775, + "shape_pt_lon": -84.0444165990228, + "shape_pt_sequence": 44, + "shape_dist_traveled": 1.262 + } + }, + { + "model": "feed.shape", + "pk": 665, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93971666992378, + "shape_pt_lon": -84.0445263287881, + "shape_pt_sequence": 45, + "shape_dist_traveled": 1.306 + } + }, + { + "model": "feed.shape", + "pk": 666, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93932936015097, + "shape_pt_lon": -84.0446221116145, + "shape_pt_sequence": 46, + "shape_dist_traveled": 1.35 + } + }, + { + "model": "feed.shape", + "pk": 667, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93920408915902, + "shape_pt_lon": -84.0446545394456, + "shape_pt_sequence": 47, + "shape_dist_traveled": 1.364 + } + }, + { + "model": "feed.shape", + "pk": 668, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.9391568243881, + "shape_pt_lon": -84.0446456512568, + "shape_pt_sequence": 48, + "shape_dist_traveled": 1.37 + } + }, + { + "model": "feed.shape", + "pk": 669, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93912509354336, + "shape_pt_lon": -84.0446159514984, + "shape_pt_sequence": 49, + "shape_dist_traveled": 1.375 + } + }, + { + "model": "feed.shape", + "pk": 670, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93911021843789, + "shape_pt_lon": -84.0445637722231, + "shape_pt_sequence": 50, + "shape_dist_traveled": 1.381 + } + }, + { + "model": "feed.shape", + "pk": 671, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93919615665697, + "shape_pt_lon": -84.0443354246074, + "shape_pt_sequence": 51, + "shape_dist_traveled": 1.407 + } + }, + { + "model": "feed.shape", + "pk": 672, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.939024, + "shape_pt_lon": -84.043697, + "shape_pt_sequence": 52, + "shape_dist_traveled": 1.459 + } + }, + { + "model": "feed.shape", + "pk": 673, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.9389589108528, + "shape_pt_lon": -84.0434647440871, + "shape_pt_sequence": 53, + "shape_dist_traveled": 1.506 + } + }, + { + "model": "feed.shape", + "pk": 674, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93927926961302, + "shape_pt_lon": -84.0433689657322, + "shape_pt_sequence": 54, + "shape_dist_traveled": 1.543 + } + }, + { + "model": "feed.shape", + "pk": 675, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.9394214266361, + "shape_pt_lon": -84.0433251613281, + "shape_pt_sequence": 55, + "shape_dist_traveled": 1.56 + } + }, + { + "model": "feed.shape", + "pk": 676, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.939438, + "shape_pt_lon": -84.043078, + "shape_pt_sequence": 56, + "shape_dist_traveled": 1.597 + } + }, + { + "model": "feed.shape", + "pk": 677, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93949676004582, + "shape_pt_lon": -84.0424704121516, + "shape_pt_sequence": 57, + "shape_dist_traveled": 1.654 + } + }, + { + "model": "feed.shape", + "pk": 678, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93950197815545, + "shape_pt_lon": -84.0423387592283, + "shape_pt_sequence": 58, + "shape_dist_traveled": 1.668 + } + }, + { + "model": "feed.shape", + "pk": 679, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93950471943605, + "shape_pt_lon": -84.042195874555, + "shape_pt_sequence": 59, + "shape_dist_traveled": 1.684 + } + }, + { + "model": "feed.shape", + "pk": 680, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93950937287681, + "shape_pt_lon": -84.0420595652431, + "shape_pt_sequence": 60, + "shape_dist_traveled": 1.699 + } + }, + { + "model": "feed.shape", + "pk": 681, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93950560510053, + "shape_pt_lon": -84.0419237588459, + "shape_pt_sequence": 61, + "shape_dist_traveled": 1.714 + } + }, + { + "model": "feed.shape", + "pk": 682, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93932694656827, + "shape_pt_lon": -84.0418526043861, + "shape_pt_sequence": 62, + "shape_dist_traveled": 1.735 + } + }, + { + "model": "feed.shape", + "pk": 683, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93916441674404, + "shape_pt_lon": -84.0416871226965, + "shape_pt_sequence": 63, + "shape_dist_traveled": 1.761 + } + }, + { + "model": "feed.shape", + "pk": 684, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93904364750639, + "shape_pt_lon": -84.0415030389796, + "shape_pt_sequence": 64, + "shape_dist_traveled": 1.785 + } + }, + { + "model": "feed.shape", + "pk": 685, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93882652989536, + "shape_pt_lon": -84.0411360631089, + "shape_pt_sequence": 65, + "shape_dist_traveled": 1.832 + } + }, + { + "model": "feed.shape", + "pk": 686, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93877761093714, + "shape_pt_lon": -84.0410711382821, + "shape_pt_sequence": 66, + "shape_dist_traveled": 1.841 + } + }, + { + "model": "feed.shape", + "pk": 687, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93872439879922, + "shape_pt_lon": -84.0410192892248, + "shape_pt_sequence": 67, + "shape_dist_traveled": 1.849 + } + }, + { + "model": "feed.shape", + "pk": 688, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93860739420377, + "shape_pt_lon": -84.0409548622543, + "shape_pt_sequence": 68, + "shape_dist_traveled": 1.863 + } + }, + { + "model": "feed.shape", + "pk": 689, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93847712489684, + "shape_pt_lon": -84.0409464827492, + "shape_pt_sequence": 69, + "shape_dist_traveled": 1.878 + } + }, + { + "model": "feed.shape", + "pk": 690, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93831748290179, + "shape_pt_lon": -84.0409847362632, + "shape_pt_sequence": 70, + "shape_dist_traveled": 1.896 + } + }, + { + "model": "feed.shape", + "pk": 691, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93790526804534, + "shape_pt_lon": -84.0410975311932, + "shape_pt_sequence": 71, + "shape_dist_traveled": 1.943 + } + }, + { + "model": "feed.shape", + "pk": 692, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93791543483811, + "shape_pt_lon": -84.0413721007657, + "shape_pt_sequence": 72, + "shape_dist_traveled": 1.973 + } + }, + { + "model": "feed.shape", + "pk": 693, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93792971313351, + "shape_pt_lon": -84.0416234000621, + "shape_pt_sequence": 73, + "shape_dist_traveled": 2.001 + } + }, + { + "model": "feed.shape", + "pk": 694, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93801943406157, + "shape_pt_lon": -84.0416214268987, + "shape_pt_sequence": 74, + "shape_dist_traveled": 2.011 + } + }, + { + "model": "feed.shape", + "pk": 695, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93808013647371, + "shape_pt_lon": -84.0416385167757, + "shape_pt_sequence": 75, + "shape_dist_traveled": 2.018 + } + }, + { + "model": "feed.shape", + "pk": 696, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.9381333560273, + "shape_pt_lon": -84.0417143841426, + "shape_pt_sequence": 76, + "shape_dist_traveled": 2.028 + } + }, + { + "model": "feed.shape", + "pk": 697, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.9381491692212, + "shape_pt_lon": -84.0417661717713, + "shape_pt_sequence": 77, + "shape_dist_traveled": 2.034 + } + }, + { + "model": "feed.shape", + "pk": 698, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93816498245021, + "shape_pt_lon": -84.0418402279053, + "shape_pt_sequence": 78, + "shape_dist_traveled": 2.042 + } + }, + { + "model": "feed.shape", + "pk": 699, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93817110369939, + "shape_pt_lon": -84.041955196169, + "shape_pt_sequence": 79, + "shape_dist_traveled": 2.055 + } + }, + { + "model": "feed.shape", + "pk": 700, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93816447211196, + "shape_pt_lon": -84.0420620743374, + "shape_pt_sequence": 80, + "shape_dist_traveled": 2.067 + } + }, + { + "model": "feed.shape", + "pk": 701, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93814558312971, + "shape_pt_lon": -84.042172549653, + "shape_pt_sequence": 81, + "shape_dist_traveled": 2.079 + } + }, + { + "model": "feed.shape", + "pk": 702, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93806546361139, + "shape_pt_lon": -84.0423590295751, + "shape_pt_sequence": 82, + "shape_dist_traveled": 2.101 + } + }, + { + "model": "feed.shape", + "pk": 703, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93800868895506, + "shape_pt_lon": -84.0424754995415, + "shape_pt_sequence": 83, + "shape_dist_traveled": 2.116 + } + }, + { + "model": "feed.shape", + "pk": 704, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93798455282835, + "shape_pt_lon": -84.0426277550985, + "shape_pt_sequence": 84, + "shape_dist_traveled": 2.132 + } + }, + { + "model": "feed.shape", + "pk": 705, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93793303246509, + "shape_pt_lon": -84.0429680898401, + "shape_pt_sequence": 85, + "shape_dist_traveled": 2.17 + } + }, + { + "model": "feed.shape", + "pk": 706, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93789255913571, + "shape_pt_lon": -84.0431865014681, + "shape_pt_sequence": 86, + "shape_dist_traveled": 2.195 + } + }, + { + "model": "feed.shape", + "pk": 707, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93792278510311, + "shape_pt_lon": -84.0434262188335, + "shape_pt_sequence": 87, + "shape_dist_traveled": 2.221 + } + }, + { + "model": "feed.shape", + "pk": 708, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93793612530689, + "shape_pt_lon": -84.0435140997635, + "shape_pt_sequence": 88, + "shape_dist_traveled": 2.231 + } + }, + { + "model": "feed.shape", + "pk": 709, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93796843588535, + "shape_pt_lon": -84.0436045719397, + "shape_pt_sequence": 89, + "shape_dist_traveled": 2.241 + } + }, + { + "model": "feed.shape", + "pk": 710, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93811029202329, + "shape_pt_lon": -84.0437946545471, + "shape_pt_sequence": 90, + "shape_dist_traveled": 2.267 + } + }, + { + "model": "feed.shape", + "pk": 711, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93796317506452, + "shape_pt_lon": -84.044044224914, + "shape_pt_sequence": 91, + "shape_dist_traveled": 2.299 + } + }, + { + "model": "feed.shape", + "pk": 712, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93778888741941, + "shape_pt_lon": -84.0443497474269, + "shape_pt_sequence": 92, + "shape_dist_traveled": 2.338 + } + }, + { + "model": "feed.shape", + "pk": 713, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93759056212761, + "shape_pt_lon": -84.0447040111923, + "shape_pt_sequence": 93, + "shape_dist_traveled": 2.383 + } + }, + { + "model": "feed.shape", + "pk": 714, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93743889754011, + "shape_pt_lon": -84.0449773758339, + "shape_pt_sequence": 94, + "shape_dist_traveled": 2.417 + } + }, + { + "model": "feed.shape", + "pk": 715, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93734106177819, + "shape_pt_lon": -84.0451442319336, + "shape_pt_sequence": 95, + "shape_dist_traveled": 2.438 + } + }, + { + "model": "feed.shape", + "pk": 716, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93725220134541, + "shape_pt_lon": -84.0452700748287, + "shape_pt_sequence": 96, + "shape_dist_traveled": 2.455 + } + }, + { + "model": "feed.shape", + "pk": 717, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93710383236486, + "shape_pt_lon": -84.0454232410009, + "shape_pt_sequence": 97, + "shape_dist_traveled": 2.479 + } + }, + { + "model": "feed.shape", + "pk": 718, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93703302156643, + "shape_pt_lon": -84.045480287002, + "shape_pt_sequence": 98, + "shape_dist_traveled": 2.489 + } + }, + { + "model": "feed.shape", + "pk": 719, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93692669580576, + "shape_pt_lon": -84.0455559204937, + "shape_pt_sequence": 99, + "shape_dist_traveled": 2.503 + } + }, + { + "model": "feed.shape", + "pk": 720, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93685320196694, + "shape_pt_lon": -84.0455868138288, + "shape_pt_sequence": 100, + "shape_dist_traveled": 2.512 + } + }, + { + "model": "feed.shape", + "pk": 721, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93677214106483, + "shape_pt_lon": -84.045591032246, + "shape_pt_sequence": 101, + "shape_dist_traveled": 2.521 + } + }, + { + "model": "feed.shape", + "pk": 722, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93667892839703, + "shape_pt_lon": -84.0455673986725, + "shape_pt_sequence": 102, + "shape_dist_traveled": 2.531 + } + }, + { + "model": "feed.shape", + "pk": 723, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93652937757293, + "shape_pt_lon": -84.0454873867401, + "shape_pt_sequence": 103, + "shape_dist_traveled": 2.55 + } + }, + { + "model": "feed.shape", + "pk": 724, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93646683969579, + "shape_pt_lon": -84.0454491600057, + "shape_pt_sequence": 104, + "shape_dist_traveled": 2.558 + } + }, + { + "model": "feed.shape", + "pk": 725, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93640033885562, + "shape_pt_lon": -84.0454129449283, + "shape_pt_sequence": 105, + "shape_dist_traveled": 2.567 + } + }, + { + "model": "feed.shape", + "pk": 726, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93634297166293, + "shape_pt_lon": -84.0453776127618, + "shape_pt_sequence": 106, + "shape_dist_traveled": 2.574 + } + }, + { + "model": "feed.shape", + "pk": 727, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93629576054226, + "shape_pt_lon": -84.0453623778292, + "shape_pt_sequence": 107, + "shape_dist_traveled": 2.579 + } + }, + { + "model": "feed.shape", + "pk": 728, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93624363287526, + "shape_pt_lon": -84.0453512637102, + "shape_pt_sequence": 108, + "shape_dist_traveled": 2.585 + } + }, + { + "model": "feed.shape", + "pk": 729, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.9361862212533, + "shape_pt_lon": -84.0453538959122, + "shape_pt_sequence": 109, + "shape_dist_traveled": 2.592 + } + }, + { + "model": "feed.shape", + "pk": 730, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93603883510741, + "shape_pt_lon": -84.0453890269646, + "shape_pt_sequence": 110, + "shape_dist_traveled": 2.608 + } + }, + { + "model": "feed.shape", + "pk": 731, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93580414505913, + "shape_pt_lon": -84.0454308854351, + "shape_pt_sequence": 111, + "shape_dist_traveled": 2.635 + } + }, + { + "model": "feed.shape", + "pk": 732, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93565385732093, + "shape_pt_lon": -84.0454587046985, + "shape_pt_sequence": 112, + "shape_dist_traveled": 2.652 + } + }, + { + "model": "feed.shape", + "pk": 733, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93558390036268, + "shape_pt_lon": -84.0455252542674, + "shape_pt_sequence": 113, + "shape_dist_traveled": 2.662 + } + }, + { + "model": "feed.shape", + "pk": 734, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93547184500151, + "shape_pt_lon": -84.0455798539966, + "shape_pt_sequence": 114, + "shape_dist_traveled": 2.676 + } + }, + { + "model": "feed.shape", + "pk": 735, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93533906172064, + "shape_pt_lon": -84.0456377473207, + "shape_pt_sequence": 115, + "shape_dist_traveled": 2.692 + } + }, + { + "model": "feed.shape", + "pk": 736, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93501118853525, + "shape_pt_lon": -84.0456383288227, + "shape_pt_sequence": 116, + "shape_dist_traveled": 2.728 + } + }, + { + "model": "feed.shape", + "pk": 737, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93495718975151, + "shape_pt_lon": -84.0456086223286, + "shape_pt_sequence": 117, + "shape_dist_traveled": 2.735 + } + }, + { + "model": "feed.shape", + "pk": 738, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93465006354252, + "shape_pt_lon": -84.0456168978697, + "shape_pt_sequence": 118, + "shape_dist_traveled": 2.769 + } + }, + { + "model": "feed.shape", + "pk": 739, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93477095640989, + "shape_pt_lon": -84.0461340991613, + "shape_pt_sequence": 119, + "shape_dist_traveled": 2.827 + } + }, + { + "model": "feed.shape", + "pk": 740, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93490403346722, + "shape_pt_lon": -84.0468176973466, + "shape_pt_sequence": 120, + "shape_dist_traveled": 2.904 + } + }, + { + "model": "feed.shape", + "pk": 741, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93495932029753, + "shape_pt_lon": -84.0471113963055, + "shape_pt_sequence": 121, + "shape_dist_traveled": 2.937 + } + }, + { + "model": "feed.shape", + "pk": 742, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93505827498137, + "shape_pt_lon": -84.0474601236579, + "shape_pt_sequence": 122, + "shape_dist_traveled": 2.976 + } + }, + { + "model": "feed.shape", + "pk": 743, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93519897363926, + "shape_pt_lon": -84.0478899692808, + "shape_pt_sequence": 123, + "shape_dist_traveled": 3.026 + } + }, + { + "model": "feed.shape", + "pk": 744, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93527449143981, + "shape_pt_lon": -84.0481284685146, + "shape_pt_sequence": 124, + "shape_dist_traveled": 3.053 + } + }, + { + "model": "feed.shape", + "pk": 745, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93531543817006, + "shape_pt_lon": -84.0483778894022, + "shape_pt_sequence": 125, + "shape_dist_traveled": 3.081 + } + }, + { + "model": "feed.shape", + "pk": 746, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93529755715117, + "shape_pt_lon": -84.0486249437023, + "shape_pt_sequence": 126, + "shape_dist_traveled": 3.108 + } + }, + { + "model": "feed.shape", + "pk": 747, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93545425079317, + "shape_pt_lon": -84.0486430566726, + "shape_pt_sequence": 127, + "shape_dist_traveled": 3.126 + } + }, + { + "model": "feed.shape", + "pk": 748, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.9354703595261, + "shape_pt_lon": -84.0488000764969, + "shape_pt_sequence": 128, + "shape_dist_traveled": 3.143 + } + }, + { + "model": "feed.shape", + "pk": 749, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.9355323422866, + "shape_pt_lon": -84.0490437766179, + "shape_pt_sequence": 129, + "shape_dist_traveled": 3.171 + } + }, + { + "model": "feed.shape", + "pk": 750, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94651439468106, + "shape_pt_lon": -84.0452793145875, + "shape_pt_sequence": 0, + "shape_dist_traveled": 0.0 + } + }, + { + "model": "feed.shape", + "pk": 751, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94656979269062, + "shape_pt_lon": -84.0453635889366, + "shape_pt_sequence": 1, + "shape_dist_traveled": 0.011 + } + }, + { + "model": "feed.shape", + "pk": 752, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94668819013391, + "shape_pt_lon": -84.0455133598416, + "shape_pt_sequence": 2, + "shape_dist_traveled": 0.032 + } + }, + { + "model": "feed.shape", + "pk": 753, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94677813595565, + "shape_pt_lon": -84.0456333624982, + "shape_pt_sequence": 3, + "shape_dist_traveled": 0.049 + } + }, + { + "model": "feed.shape", + "pk": 754, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94692110409536, + "shape_pt_lon": -84.0458288226395, + "shape_pt_sequence": 4, + "shape_dist_traveled": 0.075 + } + }, + { + "model": "feed.shape", + "pk": 755, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94699667079666, + "shape_pt_lon": -84.0458784281265, + "shape_pt_sequence": 5, + "shape_dist_traveled": 0.085 + } + }, + { + "model": "feed.shape", + "pk": 756, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94709290535486, + "shape_pt_lon": -84.0458729567443, + "shape_pt_sequence": 6, + "shape_dist_traveled": 0.096 + } + }, + { + "model": "feed.shape", + "pk": 757, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94722193423012, + "shape_pt_lon": -84.0457747817661, + "shape_pt_sequence": 7, + "shape_dist_traveled": 0.114 + } + }, + { + "model": "feed.shape", + "pk": 758, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94733469552996, + "shape_pt_lon": -84.0456766067879, + "shape_pt_sequence": 8, + "shape_dist_traveled": 0.13 + } + }, + { + "model": "feed.shape", + "pk": 759, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94735240267321, + "shape_pt_lon": -84.0455812484176, + "shape_pt_sequence": 9, + "shape_dist_traveled": 0.141 + } + }, + { + "model": "feed.shape", + "pk": 760, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94731698838683, + "shape_pt_lon": -84.0454835451677, + "shape_pt_sequence": 10, + "shape_dist_traveled": 0.152 + } + }, + { + "model": "feed.shape", + "pk": 761, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94706401578786, + "shape_pt_lon": -84.045155482603, + "shape_pt_sequence": 11, + "shape_dist_traveled": 0.198 + } + }, + { + "model": "feed.shape", + "pk": 762, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94695753981341, + "shape_pt_lon": -84.0449388905875, + "shape_pt_sequence": 12, + "shape_dist_traveled": 0.224 + } + }, + { + "model": "feed.shape", + "pk": 763, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94685591607748, + "shape_pt_lon": -84.0447927265256, + "shape_pt_sequence": 13, + "shape_dist_traveled": 0.244 + } + }, + { + "model": "feed.shape", + "pk": 764, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94674691466528, + "shape_pt_lon": -84.0447132911805, + "shape_pt_sequence": 14, + "shape_dist_traveled": 0.259 + } + }, + { + "model": "feed.shape", + "pk": 765, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94663836196663, + "shape_pt_lon": -84.0446929689046, + "shape_pt_sequence": 15, + "shape_dist_traveled": 0.271 + } + }, + { + "model": "feed.shape", + "pk": 766, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.9465853910728, + "shape_pt_lon": -84.0447054750041, + "shape_pt_sequence": 16, + "shape_dist_traveled": 0.277 + } + }, + { + "model": "feed.shape", + "pk": 767, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94652457073993, + "shape_pt_lon": -84.0447469011822, + "shape_pt_sequence": 17, + "shape_dist_traveled": 0.285 + } + }, + { + "model": "feed.shape", + "pk": 768, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94630948675802, + "shape_pt_lon": -84.0447977068717, + "shape_pt_sequence": 18, + "shape_dist_traveled": 0.31 + } + }, + { + "model": "feed.shape", + "pk": 769, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94606507414992, + "shape_pt_lon": -84.0448235005163, + "shape_pt_sequence": 19, + "shape_dist_traveled": 0.337 + } + }, + { + "model": "feed.shape", + "pk": 770, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94607893196729, + "shape_pt_lon": -84.0451642894519, + "shape_pt_sequence": 20, + "shape_dist_traveled": 0.374 + } + }, + { + "model": "feed.shape", + "pk": 771, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94594726623906, + "shape_pt_lon": -84.0451842895768, + "shape_pt_sequence": 21, + "shape_dist_traveled": 0.389 + } + }, + { + "model": "feed.shape", + "pk": 772, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94587566747948, + "shape_pt_lon": -84.0452538542911, + "shape_pt_sequence": 22, + "shape_dist_traveled": 0.4 + } + }, + { + "model": "feed.shape", + "pk": 773, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94577795917383, + "shape_pt_lon": -84.0454601695233, + "shape_pt_sequence": 23, + "shape_dist_traveled": 0.425 + } + }, + { + "model": "feed.shape", + "pk": 774, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94569943146, + "shape_pt_lon": -84.0455125384658, + "shape_pt_sequence": 24, + "shape_dist_traveled": 0.435 + } + }, + { + "model": "feed.shape", + "pk": 775, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94545154684154, + "shape_pt_lon": -84.0455252458136, + "shape_pt_sequence": 25, + "shape_dist_traveled": 0.463 + } + }, + { + "model": "feed.shape", + "pk": 776, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94516751299271, + "shape_pt_lon": -84.0455414357082, + "shape_pt_sequence": 26, + "shape_dist_traveled": 0.494 + } + }, + { + "model": "feed.shape", + "pk": 777, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94508849180003, + "shape_pt_lon": -84.0455037479672, + "shape_pt_sequence": 27, + "shape_dist_traveled": 0.504 + } + }, + { + "model": "feed.shape", + "pk": 778, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94505511036374, + "shape_pt_lon": -84.0453835472561, + "shape_pt_sequence": 28, + "shape_dist_traveled": 0.518 + } + }, + { + "model": "feed.shape", + "pk": 779, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94502739484005, + "shape_pt_lon": -84.045084965639, + "shape_pt_sequence": 29, + "shape_dist_traveled": 0.55 + } + }, + { + "model": "feed.shape", + "pk": 780, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94499479036127, + "shape_pt_lon": -84.0450504044021, + "shape_pt_sequence": 30, + "shape_dist_traveled": 0.556 + } + }, + { + "model": "feed.shape", + "pk": 781, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94494963682908, + "shape_pt_lon": -84.0450208723069, + "shape_pt_sequence": 31, + "shape_dist_traveled": 0.562 + } + }, + { + "model": "feed.shape", + "pk": 782, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94467428591231, + "shape_pt_lon": -84.0450154011338, + "shape_pt_sequence": 32, + "shape_dist_traveled": 0.592 + } + }, + { + "model": "feed.shape", + "pk": 783, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94435778151253, + "shape_pt_lon": -84.0450041637077, + "shape_pt_sequence": 33, + "shape_dist_traveled": 0.627 + } + }, + { + "model": "feed.shape", + "pk": 784, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94347268380579, + "shape_pt_lon": -84.0449287137552, + "shape_pt_sequence": 34, + "shape_dist_traveled": 0.725 + } + }, + { + "model": "feed.shape", + "pk": 785, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94295817880508, + "shape_pt_lon": -84.0448982678798, + "shape_pt_sequence": 35, + "shape_dist_traveled": 0.782 + } + }, + { + "model": "feed.shape", + "pk": 786, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94230048632557, + "shape_pt_lon": -84.0448587644203, + "shape_pt_sequence": 36, + "shape_dist_traveled": 0.855 + } + }, + { + "model": "feed.shape", + "pk": 787, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94171228683352, + "shape_pt_lon": -84.0448222996627, + "shape_pt_sequence": 37, + "shape_dist_traveled": 0.92 + } + }, + { + "model": "feed.shape", + "pk": 788, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94096530647596, + "shape_pt_lon": -84.0447760219723, + "shape_pt_sequence": 38, + "shape_dist_traveled": 1.003 + } + }, + { + "model": "feed.shape", + "pk": 789, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94090663320268, + "shape_pt_lon": -84.0448740739734, + "shape_pt_sequence": 39, + "shape_dist_traveled": 1.016 + } + }, + { + "model": "feed.shape", + "pk": 790, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94084406020503, + "shape_pt_lon": -84.0449871934796, + "shape_pt_sequence": 40, + "shape_dist_traveled": 1.03 + } + }, + { + "model": "feed.shape", + "pk": 791, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94077751897418, + "shape_pt_lon": -84.0452171289551, + "shape_pt_sequence": 41, + "shape_dist_traveled": 1.056 + } + }, + { + "model": "feed.shape", + "pk": 792, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94072156165138, + "shape_pt_lon": -84.0453974813657, + "shape_pt_sequence": 42, + "shape_dist_traveled": 1.077 + } + }, + { + "model": "feed.shape", + "pk": 793, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94066022328121, + "shape_pt_lon": -84.0456042948351, + "shape_pt_sequence": 43, + "shape_dist_traveled": 1.101 + } + }, + { + "model": "feed.shape", + "pk": 794, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94049309734092, + "shape_pt_lon": -84.0456331735173, + "shape_pt_sequence": 44, + "shape_dist_traveled": 1.119 + } + }, + { + "model": "feed.shape", + "pk": 795, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94043960234258, + "shape_pt_lon": -84.0454384499972, + "shape_pt_sequence": 45, + "shape_dist_traveled": 1.142 + } + }, + { + "model": "feed.shape", + "pk": 796, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94037244769911, + "shape_pt_lon": -84.0451953028132, + "shape_pt_sequence": 46, + "shape_dist_traveled": 1.169 + } + }, + { + "model": "feed.shape", + "pk": 797, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94027492444419, + "shape_pt_lon": -84.0448203307503, + "shape_pt_sequence": 47, + "shape_dist_traveled": 1.212 + } + }, + { + "model": "feed.shape", + "pk": 798, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94022435173391, + "shape_pt_lon": -84.0447437519701, + "shape_pt_sequence": 48, + "shape_dist_traveled": 1.222 + } + }, + { + "model": "feed.shape", + "pk": 799, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94016681408322, + "shape_pt_lon": -84.0446621944019, + "shape_pt_sequence": 49, + "shape_dist_traveled": 1.233 + } + }, + { + "model": "feed.shape", + "pk": 800, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94010200702146, + "shape_pt_lon": -84.044417503094, + "shape_pt_sequence": 50, + "shape_dist_traveled": 1.261 + } + }, + { + "model": "feed.shape", + "pk": 801, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93987745974345, + "shape_pt_lon": -84.0444809655781, + "shape_pt_sequence": 51, + "shape_dist_traveled": 1.286 + } + }, + { + "model": "feed.shape", + "pk": 802, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93971459423953, + "shape_pt_lon": -84.0445245874922, + "shape_pt_sequence": 52, + "shape_dist_traveled": 1.305 + } + }, + { + "model": "feed.shape", + "pk": 803, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93927560616025, + "shape_pt_lon": -84.0446392902696, + "shape_pt_sequence": 53, + "shape_dist_traveled": 1.355 + } + }, + { + "model": "feed.shape", + "pk": 804, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93920545121652, + "shape_pt_lon": -84.0446560771702, + "shape_pt_sequence": 54, + "shape_dist_traveled": 1.363 + } + }, + { + "model": "feed.shape", + "pk": 805, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93916110643307, + "shape_pt_lon": -84.0446448875091, + "shape_pt_sequence": 55, + "shape_dist_traveled": 1.368 + } + }, + { + "model": "feed.shape", + "pk": 806, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93912385292449, + "shape_pt_lon": -84.0446191813258, + "shape_pt_sequence": 56, + "shape_dist_traveled": 1.373 + } + }, + { + "model": "feed.shape", + "pk": 807, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93911625815432, + "shape_pt_lon": -84.0445525134932, + "shape_pt_sequence": 57, + "shape_dist_traveled": 1.38 + } + }, + { + "model": "feed.shape", + "pk": 808, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93919941590806, + "shape_pt_lon": -84.0443337547524, + "shape_pt_sequence": 58, + "shape_dist_traveled": 1.406 + } + }, + { + "model": "feed.shape", + "pk": 809, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93911055274011, + "shape_pt_lon": -84.044006444136, + "shape_pt_sequence": 59, + "shape_dist_traveled": 1.443 + } + }, + { + "model": "feed.shape", + "pk": 810, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.9390190082839, + "shape_pt_lon": -84.0436747724812, + "shape_pt_sequence": 60, + "shape_dist_traveled": 1.481 + } + }, + { + "model": "feed.shape", + "pk": 811, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93895911426052, + "shape_pt_lon": -84.0434673567427, + "shape_pt_sequence": 61, + "shape_dist_traveled": 1.505 + } + }, + { + "model": "feed.shape", + "pk": 812, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.9392879865273, + "shape_pt_lon": -84.0433689432454, + "shape_pt_sequence": 62, + "shape_dist_traveled": 1.543 + } + }, + { + "model": "feed.shape", + "pk": 813, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93942115014918, + "shape_pt_lon": -84.0433274860744, + "shape_pt_sequence": 63, + "shape_dist_traveled": 1.558 + } + }, + { + "model": "feed.shape", + "pk": 814, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93944755512195, + "shape_pt_lon": -84.0429942406062, + "shape_pt_sequence": 64, + "shape_dist_traveled": 1.595 + } + }, + { + "model": "feed.shape", + "pk": 815, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93946810072644, + "shape_pt_lon": -84.0427365454686, + "shape_pt_sequence": 65, + "shape_dist_traveled": 1.623 + } + }, + { + "model": "feed.shape", + "pk": 816, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93949017843466, + "shape_pt_lon": -84.0424561880641, + "shape_pt_sequence": 66, + "shape_dist_traveled": 1.654 + } + }, + { + "model": "feed.shape", + "pk": 817, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93949896641922, + "shape_pt_lon": -84.0421337910545, + "shape_pt_sequence": 67, + "shape_dist_traveled": 1.689 + } + }, + { + "model": "feed.shape", + "pk": 818, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93950631475532, + "shape_pt_lon": -84.0419274245262, + "shape_pt_sequence": 68, + "shape_dist_traveled": 1.712 + } + }, + { + "model": "feed.shape", + "pk": 819, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93932958005353, + "shape_pt_lon": -84.0418524186819, + "shape_pt_sequence": 69, + "shape_dist_traveled": 1.733 + } + }, + { + "model": "feed.shape", + "pk": 820, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93916814008368, + "shape_pt_lon": -84.041691039804, + "shape_pt_sequence": 70, + "shape_dist_traveled": 1.758 + } + }, + { + "model": "feed.shape", + "pk": 821, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93900519121203, + "shape_pt_lon": -84.0414413521148, + "shape_pt_sequence": 71, + "shape_dist_traveled": 1.791 + } + }, + { + "model": "feed.shape", + "pk": 822, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93882565486029, + "shape_pt_lon": -84.0411391429389, + "shape_pt_sequence": 72, + "shape_dist_traveled": 1.83 + } + }, + { + "model": "feed.shape", + "pk": 823, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93878072700935, + "shape_pt_lon": -84.0410728454411, + "shape_pt_sequence": 73, + "shape_dist_traveled": 1.839 + } + }, + { + "model": "feed.shape", + "pk": 824, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93872490109004, + "shape_pt_lon": -84.0410213000932, + "shape_pt_sequence": 74, + "shape_dist_traveled": 1.847 + } + }, + { + "model": "feed.shape", + "pk": 825, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93861004710345, + "shape_pt_lon": -84.0409544792739, + "shape_pt_sequence": 75, + "shape_dist_traveled": 1.862 + } + }, + { + "model": "feed.shape", + "pk": 826, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93847396797512, + "shape_pt_lon": -84.0409494403816, + "shape_pt_sequence": 76, + "shape_dist_traveled": 1.877 + } + }, + { + "model": "feed.shape", + "pk": 827, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93814652860348, + "shape_pt_lon": -84.0410341635524, + "shape_pt_sequence": 77, + "shape_dist_traveled": 1.914 + } + }, + { + "model": "feed.shape", + "pk": 828, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93790671250708, + "shape_pt_lon": -84.0411014405278, + "shape_pt_sequence": 78, + "shape_dist_traveled": 1.942 + } + }, + { + "model": "feed.shape", + "pk": 829, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93791663555238, + "shape_pt_lon": -84.0413834314017, + "shape_pt_sequence": 79, + "shape_dist_traveled": 1.973 + } + }, + { + "model": "feed.shape", + "pk": 830, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93793079347671, + "shape_pt_lon": -84.0416285810649, + "shape_pt_sequence": 80, + "shape_dist_traveled": 1.999 + } + }, + { + "model": "feed.shape", + "pk": 831, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93801967154644, + "shape_pt_lon": -84.0416254546011, + "shape_pt_sequence": 81, + "shape_dist_traveled": 2.009 + } + }, + { + "model": "feed.shape", + "pk": 832, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93807996226397, + "shape_pt_lon": -84.0416431189912, + "shape_pt_sequence": 82, + "shape_dist_traveled": 2.016 + } + }, + { + "model": "feed.shape", + "pk": 833, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93810791480517, + "shape_pt_lon": -84.0416788253891, + "shape_pt_sequence": 83, + "shape_dist_traveled": 2.021 + } + }, + { + "model": "feed.shape", + "pk": 834, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93813256489417, + "shape_pt_lon": -84.0417178845482, + "shape_pt_sequence": 84, + "shape_dist_traveled": 2.026 + } + }, + { + "model": "feed.shape", + "pk": 835, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.9381630635316, + "shape_pt_lon": -84.0418440755105, + "shape_pt_sequence": 85, + "shape_dist_traveled": 2.041 + } + }, + { + "model": "feed.shape", + "pk": 836, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93816840355805, + "shape_pt_lon": -84.0419580950124, + "shape_pt_sequence": 86, + "shape_dist_traveled": 2.053 + } + }, + { + "model": "feed.shape", + "pk": 837, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93816233402513, + "shape_pt_lon": -84.0420632597521, + "shape_pt_sequence": 87, + "shape_dist_traveled": 2.065 + } + }, + { + "model": "feed.shape", + "pk": 838, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93814321123235, + "shape_pt_lon": -84.0421742120474, + "shape_pt_sequence": 88, + "shape_dist_traveled": 2.077 + } + }, + { + "model": "feed.shape", + "pk": 839, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93803086770445, + "shape_pt_lon": -84.042431585693, + "shape_pt_sequence": 89, + "shape_dist_traveled": 2.108 + } + }, + { + "model": "feed.shape", + "pk": 840, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93800811636062, + "shape_pt_lon": -84.0424780922361, + "shape_pt_sequence": 90, + "shape_dist_traveled": 2.113 + } + }, + { + "model": "feed.shape", + "pk": 841, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93798034157711, + "shape_pt_lon": -84.0426586032431, + "shape_pt_sequence": 91, + "shape_dist_traveled": 2.134 + } + }, + { + "model": "feed.shape", + "pk": 842, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93791715763552, + "shape_pt_lon": -84.0430584128099, + "shape_pt_sequence": 92, + "shape_dist_traveled": 2.178 + } + }, + { + "model": "feed.shape", + "pk": 843, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93789378213828, + "shape_pt_lon": -84.0431955755255, + "shape_pt_sequence": 93, + "shape_dist_traveled": 2.193 + } + }, + { + "model": "feed.shape", + "pk": 844, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.9379228858361, + "shape_pt_lon": -84.0434355505527, + "shape_pt_sequence": 94, + "shape_dist_traveled": 2.22 + } + }, + { + "model": "feed.shape", + "pk": 845, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93793324365073, + "shape_pt_lon": -84.0435100147268, + "shape_pt_sequence": 95, + "shape_dist_traveled": 2.228 + } + }, + { + "model": "feed.shape", + "pk": 846, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93796925623814, + "shape_pt_lon": -84.0436073742708, + "shape_pt_sequence": 96, + "shape_dist_traveled": 2.239 + } + }, + { + "model": "feed.shape", + "pk": 847, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93811129632628, + "shape_pt_lon": -84.0437957690067, + "shape_pt_sequence": 97, + "shape_dist_traveled": 2.265 + } + }, + { + "model": "feed.shape", + "pk": 848, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93796149488666, + "shape_pt_lon": -84.0440534496211, + "shape_pt_sequence": 98, + "shape_dist_traveled": 2.298 + } + }, + { + "model": "feed.shape", + "pk": 849, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93777133769974, + "shape_pt_lon": -84.0443836171542, + "shape_pt_sequence": 99, + "shape_dist_traveled": 2.34 + } + }, + { + "model": "feed.shape", + "pk": 850, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.9375818272445, + "shape_pt_lon": -84.0447196978834, + "shape_pt_sequence": 100, + "shape_dist_traveled": 2.382 + } + }, + { + "model": "feed.shape", + "pk": 851, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93745018852863, + "shape_pt_lon": -84.0449635706007, + "shape_pt_sequence": 101, + "shape_dist_traveled": 2.413 + } + }, + { + "model": "feed.shape", + "pk": 852, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93734180767617, + "shape_pt_lon": -84.0451463546949, + "shape_pt_sequence": 102, + "shape_dist_traveled": 2.436 + } + }, + { + "model": "feed.shape", + "pk": 853, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93725372200282, + "shape_pt_lon": -84.0452714142582, + "shape_pt_sequence": 103, + "shape_dist_traveled": 2.453 + } + }, + { + "model": "feed.shape", + "pk": 854, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.937108322267, + "shape_pt_lon": -84.0454262175884, + "shape_pt_sequence": 104, + "shape_dist_traveled": 2.476 + } + }, + { + "model": "feed.shape", + "pk": 855, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93692719931924, + "shape_pt_lon": -84.0455586526682, + "shape_pt_sequence": 105, + "shape_dist_traveled": 2.501 + } + }, + { + "model": "feed.shape", + "pk": 856, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93685401442958, + "shape_pt_lon": -84.0455873611916, + "shape_pt_sequence": 106, + "shape_dist_traveled": 2.51 + } + }, + { + "model": "feed.shape", + "pk": 857, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93677373653686, + "shape_pt_lon": -84.0455923110153, + "shape_pt_sequence": 107, + "shape_dist_traveled": 2.519 + } + }, + { + "model": "feed.shape", + "pk": 858, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93668019604487, + "shape_pt_lon": -84.0455680674162, + "shape_pt_sequence": 108, + "shape_dist_traveled": 2.529 + } + }, + { + "model": "feed.shape", + "pk": 859, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93646480148586, + "shape_pt_lon": -84.0454482787829, + "shape_pt_sequence": 109, + "shape_dist_traveled": 2.556 + } + }, + { + "model": "feed.shape", + "pk": 860, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93636588688585, + "shape_pt_lon": -84.0453892763726, + "shape_pt_sequence": 110, + "shape_dist_traveled": 2.569 + } + }, + { + "model": "feed.shape", + "pk": 861, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93632308831075, + "shape_pt_lon": -84.0453697036442, + "shape_pt_sequence": 111, + "shape_dist_traveled": 2.574 + } + }, + { + "model": "feed.shape", + "pk": 862, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93629762770389, + "shape_pt_lon": -84.0453615303045, + "shape_pt_sequence": 112, + "shape_dist_traveled": 2.577 + } + }, + { + "model": "feed.shape", + "pk": 863, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93624652235345, + "shape_pt_lon": -84.0453532765511, + "shape_pt_sequence": 113, + "shape_dist_traveled": 2.583 + } + }, + { + "model": "feed.shape", + "pk": 864, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93618732594838, + "shape_pt_lon": -84.0453570927397, + "shape_pt_sequence": 114, + "shape_dist_traveled": 2.59 + } + }, + { + "model": "feed.shape", + "pk": 865, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93603538344972, + "shape_pt_lon": -84.0453927689936, + "shape_pt_sequence": 115, + "shape_dist_traveled": 2.607 + } + }, + { + "model": "feed.shape", + "pk": 866, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93577991764324, + "shape_pt_lon": -84.045437957483, + "shape_pt_sequence": 116, + "shape_dist_traveled": 2.636 + } + }, + { + "model": "feed.shape", + "pk": 867, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93565154581259, + "shape_pt_lon": -84.0454621421002, + "shape_pt_sequence": 117, + "shape_dist_traveled": 2.65 + } + }, + { + "model": "feed.shape", + "pk": 868, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93558482499322, + "shape_pt_lon": -84.0455294509499, + "shape_pt_sequence": 118, + "shape_dist_traveled": 2.66 + } + }, + { + "model": "feed.shape", + "pk": 869, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93533787082614, + "shape_pt_lon": -84.0456405554627, + "shape_pt_sequence": 119, + "shape_dist_traveled": 2.69 + } + }, + { + "model": "feed.shape", + "pk": 870, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.9350109333037, + "shape_pt_lon": -84.0456410811815, + "shape_pt_sequence": 120, + "shape_dist_traveled": 2.727 + } + }, + { + "model": "feed.shape", + "pk": 871, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93495968412818, + "shape_pt_lon": -84.0456087998837, + "shape_pt_sequence": 121, + "shape_dist_traveled": 2.733 + } + }, + { + "model": "feed.shape", + "pk": 872, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93464858697721, + "shape_pt_lon": -84.0456196757956, + "shape_pt_sequence": 122, + "shape_dist_traveled": 2.768 + } + }, + { + "model": "feed.shape", + "pk": 873, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93480225304748, + "shape_pt_lon": -84.046294734079, + "shape_pt_sequence": 123, + "shape_dist_traveled": 2.844 + } + }, + { + "model": "feed.shape", + "pk": 874, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93495610721508, + "shape_pt_lon": -84.0470992295944, + "shape_pt_sequence": 124, + "shape_dist_traveled": 2.933 + } + }, + { + "model": "feed.shape", + "pk": 875, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93514466639919, + "shape_pt_lon": -84.047738281775, + "shape_pt_sequence": 125, + "shape_dist_traveled": 3.007 + } + }, + { + "model": "feed.shape", + "pk": 876, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93527584609242, + "shape_pt_lon": -84.048128961463, + "shape_pt_sequence": 126, + "shape_dist_traveled": 3.052 + } + }, + { + "model": "feed.shape", + "pk": 877, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93531583349863, + "shape_pt_lon": -84.0483847176419, + "shape_pt_sequence": 127, + "shape_dist_traveled": 3.08 + } + }, + { + "model": "feed.shape", + "pk": 878, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93529983825585, + "shape_pt_lon": -84.0486296483808, + "shape_pt_sequence": 128, + "shape_dist_traveled": 3.107 + } + }, + { + "model": "feed.shape", + "pk": 879, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93545520267059, + "shape_pt_lon": -84.0486491888617, + "shape_pt_sequence": 129, + "shape_dist_traveled": 3.124 + } + }, + { + "model": "feed.shape", + "pk": 880, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.9354703980085, + "shape_pt_lon": -84.0488055127148, + "shape_pt_sequence": 130, + "shape_dist_traveled": 3.142 + } + }, + { + "model": "feed.shape", + "pk": 881, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93553667972237, + "shape_pt_lon": -84.0490832368349, + "shape_pt_sequence": 131, + "shape_dist_traveled": 3.173 + } + }, + { + "model": "feed.shape", + "pk": 882, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.9355977604479, + "shape_pt_lon": -84.0493162487417, + "shape_pt_sequence": 132, + "shape_dist_traveled": 3.199 + } + }, + { + "model": "feed.shape", + "pk": 883, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93570243695239, + "shape_pt_lon": -84.0495918083302, + "shape_pt_sequence": 133, + "shape_dist_traveled": 3.232 + } + }, + { + "model": "feed.shape", + "pk": 884, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93571038517426, + "shape_pt_lon": -84.0496787768477, + "shape_pt_sequence": 134, + "shape_dist_traveled": 3.241 + } + }, + { + "model": "feed.shape", + "pk": 885, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93571038484225, + "shape_pt_lon": -84.0499696558076, + "shape_pt_sequence": 135, + "shape_dist_traveled": 3.273 + } + }, + { + "model": "feed.shape", + "pk": 886, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93570321714193, + "shape_pt_lon": -84.0500954158227, + "shape_pt_sequence": 136, + "shape_dist_traveled": 3.287 + } + }, + { + "model": "feed.shape", + "pk": 887, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93566700857604, + "shape_pt_lon": -84.0503419760518, + "shape_pt_sequence": 137, + "shape_dist_traveled": 3.314 + } + }, + { + "model": "feed.shape", + "pk": 888, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93560674646944, + "shape_pt_lon": -84.0506470296121, + "shape_pt_sequence": 138, + "shape_dist_traveled": 3.348 + } + }, + { + "model": "feed.shape", + "pk": 889, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93553343216217, + "shape_pt_lon": -84.0510737676674, + "shape_pt_sequence": 139, + "shape_dist_traveled": 3.396 + } + }, + { + "model": "feed.shape", + "pk": 890, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93549263100849, + "shape_pt_lon": -84.0513075140395, + "shape_pt_sequence": 140, + "shape_dist_traveled": 3.422 + } + }, + { + "model": "feed.shape", + "pk": 891, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93546272803463, + "shape_pt_lon": -84.0515459542782, + "shape_pt_sequence": 141, + "shape_dist_traveled": 3.448 + } + }, + { + "model": "feed.shape", + "pk": 892, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93544955548966, + "shape_pt_lon": -84.0516525931019, + "shape_pt_sequence": 142, + "shape_dist_traveled": 3.46 + } + }, + { + "model": "feed.shape", + "pk": 893, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93544794162221, + "shape_pt_lon": -84.0517605730299, + "shape_pt_sequence": 143, + "shape_dist_traveled": 3.472 + } + }, + { + "model": "feed.shape", + "pk": 894, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93547169143514, + "shape_pt_lon": -84.0519830595855, + "shape_pt_sequence": 144, + "shape_dist_traveled": 3.496 + } + }, + { + "model": "feed.shape", + "pk": 895, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93548892832953, + "shape_pt_lon": -84.0521081889526, + "shape_pt_sequence": 145, + "shape_dist_traveled": 3.51 + } + }, + { + "model": "feed.shape", + "pk": 896, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93550175796293, + "shape_pt_lon": -84.0521827017793, + "shape_pt_sequence": 146, + "shape_dist_traveled": 3.519 + } + }, + { + "model": "feed.geoshape", + "pk": 1, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "geometry": "SRID=4326;LINESTRING (-84.0491138975951 9.93554944029271, -84.0491582627979 9.9355589010814, -84.0492241246225 9.93557354275506, -84.049324861376 9.9356000651633, -84.049416778843 9.93563773463719, -84.0495368755472 9.93568399531643, -84.0495945755631 9.93570316048327, -84.0496871639603 9.93571109089738, -84.0498464474787 9.93571292483817, -84.0500877222699 9.93570393244304, -84.050351168656 9.93566539329337, -84.0505937476355 9.93561786205413, -84.050878060609 9.93556519227529, -84.051108901895 9.93552922267821, -84.0513932152566 9.93548169125642, -84.0516410109878 9.93545342942273, -84.0516943904767 9.93544741074256, -84.051754475488 9.93544700627605, -84.0519579288248 9.93546627570862, -84.052131385837 9.93548939902537, -84.0522239834817 9.93550517435119, -84.0523340057342 9.93554618004823, -84.0523914948391 9.93559987797587, -84.0524281689233 9.93565552854654, -84.0524410544122 9.93572094236273, -84.0524182569563 9.93583614886311, -84.0523528383197 9.93603336648931, -84.0522832947174 9.93625691629266, -84.0522431941422 9.93639307154715, -84.0522372469934 9.93653561474882, -84.0522600443969 9.93660005206628, -84.0523423132888 9.93661957852377, -84.0524275557544 9.93659126516027, -84.0524503531584 9.93653854371827, -84.0524483707755 9.93645360359939, -84.052439450052 9.93636085286962, -84.0524268046992 9.93633386047036, -84.0524265645631 9.93630422609543, -84.0524473794854 9.93618120917912, -84.052484053706 9.93600742368285, -84.0525276661302 9.93581118236608, -84.0525355663096 9.93571876163712, -84.0525177541372 9.93563153840537, -84.0524334735888 9.93553310902874, -84.0523512340121 9.93545970504671, -84.0522451765253 9.93542065199216, -84.0521014537632 9.93541674668641, -84.0518556382803 9.93537769362758, -84.0515960083744 9.93533766423581, -84.0515277691646 9.93531364398533, -84.0514612063353 9.93528103728449, -84.0510449054667 9.93537964636139, -84.0506385823758 9.93549228868242, -84.0501428263958 9.93560853450969, -84.0499153784661 9.93564523227799, -84.0495436816674 9.9355593156005, -84.049203385401 9.93549425099087, -84.0487850070695 9.93539252590615, -84.0486462402645 9.93537592835444, -84.0486373195414 9.93528024833921, -84.0483824809879 9.93529755089066, -84.048123669054 9.93524885628052, -84.0477514451489 9.9351256875275, -84.0473850372423 9.93500538311991, -84.0470954278149 9.93492412702167, -84.046441127981 9.93480668693231, -84.0458485099908 9.93468020166955, -84.0456145784198 9.93461570602311, -84.0456080574792 9.93495613335646, -84.0455873014759 9.93502533870439, -84.045580669786 9.93533638426393, -84.045528502083 9.93558174876489, -84.0454554675517 9.9356639649666, -84.0454118867064 9.93591239555134, -84.0453571107868 9.93618345188633, -84.0453649359146 9.93630292207917, -84.0454366662581 9.93644423085287, -84.045567569655 9.93668331840604, -84.045592349228 9.93677195745002, -84.0455871324757 9.9368528887295, -84.0455467026459 9.93694152772752, -84.0454423673758 9.93708540528038, -84.0452787163273 9.9372459343465, -84.0451378640166 9.93733842710149, -84.044752821983 9.93756026309952, -84.0443585013794 9.93777652816203, -84.0438016139119 9.9381041049962, -84.0436166501913 9.93796476738381, -84.0434457982085 9.93791473560688, -84.0432203034589 9.93789047771889, -84.0429894627193 9.93791970638376, -84.0426008139046 9.93798008366965, -84.0424795244151 9.93800449142722, -84.0421782569734 9.9381380917555, -84.0419964534982 9.93816473253672, -84.0418503844357 9.93815830944601, -84.0417251823817 9.93812876322556, -84.0416449024973 9.93807176432108, -84.0416364975937 9.9380170014129, -84.0416378013257 9.9379218878614, -84.0411362584451 9.93790138516287, -84.041068473332 9.93789650346394, -84.0409289658467 9.93846399292934, -84.0409645503437 9.93868999787477, -84.0411343350368 9.93885220465146, -84.0416551779252 9.93915775668989, -84.0417942257713 9.93928866239001, -84.0418835860126 9.9394332650851, -84.0419072239736 9.93950294569722, -84.0422269282472 9.93950393195614, -84.0425117128132 9.93949212322203, -84.0429181490899 9.93945684385667, -84.0433331349077 9.93942503205056, -84.0432631191506 9.93972770605043, -84.0432957235711 9.93979024582779, -84.0433729445674 9.93981898031695, -84.0443132968873 9.94007108411656, -84.0446693302114 9.94016605495639, -84.0448273689979 9.94027244564152, -84.0455400945559 9.94046211098755, -84.0456302713637 9.94049056601295, -84.0455978789472 9.94063822457009, -84.0450688663703 9.94079717180704, -84.04474671421 9.94095438717349, -84.0446527254796 9.94105262250509, -84.0446772759114 9.9414150973303, -84.0447316948875 9.94222783326419, -84.0447692666912 9.94282430588245, -84.0447361152365 9.9430072194504, -84.0446536543918 9.94325327852743, -84.0444658512058 9.94367377439675, -84.0447574980966 9.94380472710699, -84.044883947833 9.94388103477618, -84.044952212081 9.94396870046222, -84.0449991890221 9.94440018674929, -84.045011078064 9.94457575401998, -84.045007224609 9.94495341180596, -84.0450804402532 9.94503790634203, -84.0454078875236 9.94507262278836, -84.0455018337476 9.94509663743075, -84.0455370798079 9.94516495042239, -84.0455279840503 9.94535421093323, -84.0455006967812 9.94569609354827, -84.0454636202844 9.94576019859063, -84.0453783778183 9.9458090133638, -84.0452505141197 9.94587051996754, -84.0451768005758 9.94594579827001, -84.0451498689492 9.9462925242644, -84.0451620803092 9.9463897709987, -84.0452016714679 9.94645002673405, -84.0452387476835 9.94648404073633)", + "has_altitude": false + } + }, + { + "model": "feed.geoshape", + "pk": 2, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "geometry": "SRID=4326;LINESTRING (-84.0491114962244 9.93554615993122, -84.0492324408382 9.93557253860416, -84.0493243902202 9.93559719650295, -84.0495039565472 9.93566832503712, -84.0495983130441 9.93570246673155, -84.0496907438365 9.93570957958473, -84.0498491281346 9.93571147624034, -84.0500893518124 9.93570246663722, -84.0503237982121 9.93566785089355, -84.0505362327233 9.93562801871054, -84.0507591258626 9.93558581568109, -84.0510354553896 9.93553934502577, -84.0513535074206 9.93548718391971, -84.0516944413929 9.93544590778002, -84.0517683691601 9.93544406437546, -84.0521913460308 9.93549752617786, -84.0522746314152 9.93552149197739, -84.0523420082619 9.93554545760814, -84.0523981556341 9.93560168465873, -84.0524318440576 9.93565791169966, -84.0524430735317 9.935720591012, -84.0524187427515 9.93583857529975, -84.0523466867771 9.93605505885652, -84.0522802455722 9.93627443620344, -84.052243749702 9.93639436894143, -84.0522390707544 9.93653263180367, -84.0523349506756 9.93679802054417, -84.0524313369778 9.93706910208629, -84.0525380169441 9.93735023603007, -84.0526437612861 9.9375714563375, -84.0527027160271 9.93774105816322, -84.0527151488461 9.93778978041929, -84.0527273141104 9.93794647765702, -84.0527076622996 9.93809150988507, -84.052635606505 9.93815511047925, -84.0521246655647 9.93840121696546, -84.051894479649 9.93857142751338, -84.0516156036497 9.93879176765612, -84.0514555284908 9.93890106345436, -84.0513020294891 9.93897507515302, -84.0511345760324 9.9390141956147, -84.0509224405605 9.93905117558812, -84.0506014881021 9.93906597792292, -84.0501243834524 9.93909856537408, -84.0497656390733 9.93910318560055, -84.049652930016 9.93906512245888, -84.0495133854688 9.9389773657529, -84.0493115816303 9.93881453893313, -84.0490281988577 9.93860413409909, -84.0488647834885 9.93847607358095, -84.0486425856324 9.93830796101282, -84.0484368995492 9.93812775111203, -84.0482768335369 9.93798100124938, -84.0479566982914 9.93768022319365, -84.0479111252314 9.93763286635998, -84.0478722576937 9.93758319780721, -84.0478404135935 9.93753870216281, -84.0478139339113 9.9374942065184, -84.0477923420699 9.93745024180206, -84.0477606919451 9.93735938216936, -84.0477606931305 9.93724916693389, -84.0477784341865 9.93715177760806, -84.0477987581936 9.93705710158646, -84.0479001602699 9.93672866697375, -84.0479940310818 9.93643873625598, -84.0481209106209 9.93605459371357, -84.0481497577059 9.93594785009141, -84.0481926863882 9.93584672067646, -84.0482902977589 9.93562414968525, -84.0483541402688 9.93555563302149, -84.048395536302 9.93552377293763, -84.0484359265072 9.93549323384328, -84.0485562630898 9.93545924101029, -84.0486084574091 9.93545410965148, -84.0486583047952 9.93545261101962, -84.0486381383254 9.93527714539185, -84.0483849370953 9.93529369875646, -84.0481250138729 9.93524845287248, -84.0476876510322 9.93510490695821, -84.0471049676225 9.93492309622952, -84.0463710454434 9.93478795156821, -84.0458810362687 9.93468712924438, -84.0456150110652 9.93461716476174, -84.045615726073 9.93466453460568, -84.0456098658075 9.93495411611772, -84.0455893287031 9.93501867239507, -84.0455828491321 9.93533255656777, -84.0455310895244 9.93558174215077, -84.0454587191306 9.93565354440517, -84.0453935565556 9.93601427775509, -84.0453574183472 9.93618250695711, -84.0453568135217 9.93624056084127, -84.0453642553238 9.93629795423082, -84.0455215059456 9.93659318251401, -84.0455703414396 9.93667976807258, -84.0455957359235 9.9367692395777, -84.0455879222361 9.93685293870503, -84.0455491295231 9.93694173624727, -84.0454446214555 9.93708123470739, -84.0452817159445 9.93724313131711, -84.0451254422096 9.93734607124923, -84.0448724740612 9.93748749351063, -84.0446484093239 9.93761860756564, -84.0443002302728 9.93781098243242, -84.0439934603325 9.93799146315684, -84.0438034580265 9.93810165004318, -84.0436169062427 9.93796407612903, -84.043444027742 9.93791116339785, -84.0432193842326 9.93788614994896, -84.0429361376045 9.93792655633902, -84.0424812505301 9.93800099196738, -84.0421772565051 9.93813818359375, -84.0419985184082 9.93816415907815, -84.0418510350607 9.9381545385288, -84.0417260160641 9.93812567687818, -84.0416527622632 9.93807564954973, -84.0416384252501 9.93804289664845, -84.0416361581774 9.93801311595451, -84.0416381115992 9.93792172067878, -84.0412122658535 9.93790247956499, -84.0410686893496 9.93789478311904, -84.040969095546 9.93830046896954, -84.0409298363785 9.93846168564775, -84.040967928104 9.93868873033166, -84.0411370173071 9.93884815398905, -84.0416568644267 9.93915383599336, -84.0417935755105 9.93928521203319, -84.0418876857024 9.93942977628924, -84.0419089725314 9.93950150662073, -84.0422428396408 9.93950371370814, -84.0425204684191 9.93948613333313, -84.0430246306461 9.93944529338017, -84.0433356324423 9.93942327481619, -84.0432655607324 9.93972442200525, -84.043299171515 9.93978732393233, -84.0433809579747 9.93981711902594, -84.0437596394605 9.93991974845217, -84.0443170698121 9.94007043205839, -84.0446744654815 9.94016533658292, -84.0448268343636 9.94027017298111, -84.045244089757 9.94038169599758, -84.045632855511 9.94048873914792, -84.045599244728 9.94063882056966, -84.0450681942005 9.94079662666821, -84.044750328054 9.94095071185347, -84.0446554341072 9.9410528605391, -84.04469185811 9.94157411286451, -84.0447474726987 9.94242227255298, -84.0447699014639 9.94283107241787, -84.0447350564938 9.94300697065598, -84.0446544775012 9.94326009234421, -84.0445407320727 9.94351468777105, -84.0444710421328 9.94366913468646, -84.0447541575134 9.9437999854876, -84.0448848261506 9.94388149907578, -84.0449552037605 9.94396600743452, -84.0449932717292 9.94433419150155, -84.0450138149367 9.94457398813642, -84.045010504636 9.94495221337372, -84.0450833311997 9.94503698779598, -84.045389534011 9.94506796311185, -84.0455020842335 9.94509404758507, -84.0455418078417 9.94516741015652, -84.0455036631251 9.94569411437748, -84.0454645549726 9.94576235686358, -84.0452550477597 9.94586939851089, -84.0451777429595 9.94594554151604, -84.0451530949856 9.94629085058927, -84.0451636656039 9.94638848955421, -84.0452028781838 9.94644918315917, -84.0452462913844 9.94648865740507)", + "has_altitude": false + } + }, + { + "model": "feed.geoshape", + "pk": 3, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "geometry": "SRID=4326;LINESTRING (-84.052232462037 9.93551240308205, -84.0523024805564 9.93553038682294, -84.0523354193901 9.93554317941351, -84.0523952582046 9.93560006968185, -84.0524284133704 9.93565298376728, -84.0524404498132 9.93571914349433, -84.0524171180445 9.93583719162457, -84.0523801266021 9.93594643029256, -84.0523343631691 9.93608834513962, -84.0522977078958 9.93620422239772, -84.0522711599884 9.936293049843, -84.0522405229359 9.93639226353531, -84.0522367457551 9.93653093553953, -84.0522590055211 9.93659589447438, -84.0523412639074 9.93661615058734, -84.0524260404882 9.9365876265418, -84.0524499625703 9.9365355393877, -84.0524473462339 9.93644867420793, -84.0524384481957 9.93635813864212, -84.052426075736 9.93632957313295, -84.0524254379402 9.93630067737655, -84.0524455386407 9.9361767385198, -84.0524692189919 9.93606938255121, -84.0525134237392 9.9358662876061, -84.0525277028597 9.93580530982546, -84.0525351455981 9.93571720324209, -84.0525170973821 9.93562932790421, -84.0524334827489 9.93552958615174, -84.052350672979 9.93545575661828, -84.0522446182099 9.93541638163459, -84.0520977731443 9.93541236377893, -84.0517673714683 9.9353609350822, -84.0515957473315 9.93533537431955, -84.0514578761312 9.93527832074849, -84.051051560594 9.93537394568805, -84.0506488451042 9.93548509593826, -84.0503446866737 9.93555656904013, -84.0501407351937 9.93560639042598, -84.0499188359838 9.93564014039442, -84.0495240741516 9.93555237106771, -84.0493169635181 9.9355127171103, -84.0490255135247 9.93544759669272, -84.0487899823799 9.93538988817417, -84.0486447689264 9.93537301317815, -84.0486366108669 9.93527658461171, -84.0483784246656 9.93529274995559, -84.0481238929513 9.93524694618673, -84.0478057230236 9.93514165787212, -84.0473807827294 9.93500316815773, -84.0470859236543 9.93492049042863, -84.0464195689003 9.93479657132182, -84.0458857020311 9.93468604728109, -84.0456137031377 9.9346124699569, -84.0456081393267 9.93481022852054, -84.0456083692307 9.93495379560579, -84.0455873976348 9.93502122053513, -84.0455815527507 9.93525069991888, -84.0455791055204 9.93533621207088, -84.0455277100451 9.9355796939962, -84.0454545424224 9.93566141737569, -84.0454033749615 9.93593880374486, -84.0453561940705 9.93617987563359, -84.0453622217276 9.93629878421235, -84.0454544077961 9.93647074793075, -84.0455491574187 9.9366470154013, -84.0455671051487 9.93667996169247, -84.0455923951325 9.93677076487081, -84.0455875957907 9.93685019478803, -84.0455459896891 9.93693939078323, -84.0454405657035 9.93708216879507, -84.0452791956738 9.9372417505605, -84.0451437718914 9.93733175001592, -84.0448843455207 9.93747880276838, -84.0446848467803 9.93759383837854, -84.0443877220931 9.93775722150572, -84.0440980878075 9.93792650160209, -84.0437999865192 9.93809919166979, -84.0436147985756 9.93796097853527, -84.0434434787742 9.93791115773413, -84.0432188653814 9.9378853721441, -84.0429382281456 9.93792474683056, -84.0425692976739 9.93798421082772, -84.0424760119919 9.93799717971221, -84.0421774270254 9.93813619639644, -84.0419972282554 9.93816151133474, -84.0418487515775 9.93815347569085, -84.0417223014224 9.93812695789198, -84.041649694696 9.93807552975984, -84.0416317469654 9.93801445884308, -84.0416350505556 9.93791897942971, -84.0410687729965 9.93789540463778, -84.0409278059346 9.93846102257875, -84.0409636843222 9.93868770509072, -84.0411317795776 9.93884702967763, -84.0416545090707 9.93915009329333, -84.0417940169538 9.93928437269097, -84.0418844077991 9.93942339095397, -84.0419066090587 9.93949992907343, -84.0422475569833 9.93949992907343, -84.043074 9.939437, -84.0433290766316 9.9394249524573, -84.0432616940963 9.93972312001197, -84.0432938739159 9.9397847344284, -84.0433818049407 9.9398186343525, -84.0440308770623 9.93998824672434, -84.0446658158992 9.94015974971341, -84.0448245474961 9.94026910203425, -84.0451873514683 9.94036490303632, -84.0456290389484 9.94048769323097, -84.0455931434884 9.94063635155576, -84.0450690355552 9.94079234514589, -84.0447505513004 9.94094918383372, -84.0446520351469 9.94104532842372, -84.0446571934664 9.94113081479986, -84.0446770863329 9.94144321527622, -84.0447142198439 9.94195499816524, -84.0447371192727 9.94233948335795, -84.0447624203313 9.94270561942093, -84.0447662997461 9.94282741926446, -84.0447342405736 9.94300876520552, -84.044661630678 9.94322619282253, -84.0446070756693 9.94336188947768, -84.0444664621215 9.94366938860733, -84.0447499441632 9.94379763572232, -84.0448781808515 9.94387703073651, -84.0449496270056 9.94396544788927, -84.0450074182673 9.94454435151914, -84.0450098494603 9.94494922686726, -84.0450726102459 9.94503488859595, -84.0453994971357 9.94506635931216, -84.0454999143925 9.94509373573383, -84.0455384857143 9.94516587977827, -84.045501640108 9.94569334489241, -84.0454572011088 9.94576818120904, -84.0453571624431 9.94581918999885, -84.0452494124261 9.94586821736523, -84.0451749917014 9.94594549545337, -84.045149887399 9.94628917517751, -84.0451617577946 9.946387887887, -84.0451994142665 9.94644528982524, -84.0452511227568 9.94649012442296)", + "has_altitude": false + } + }, + { + "model": "feed.geoshape", + "pk": 4, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "geometry": "SRID=4326;LINESTRING (-84.0522203008732 9.93551129613598, -84.0522927059177 9.9355310767404, -84.0523347118824 9.93554722789095, -84.0523891977038 9.93559998927965, -84.0524266115309 9.93565665681396, -84.0524387877407 9.93572400544303, -84.0524163085106 9.93583791088976, -84.0524004247557 9.93589348533485, -84.0523801824105 9.93594773879152, -84.052302832233 9.93618639604332, -84.0522406782275 9.93639684624757, -84.0522361299255 9.93653551980098, -84.0523076585187 9.93673682209909, -84.05243186663 9.93708559662569, -84.0525288520072 9.93733577696727, -84.0526438746271 9.93757969853555, -84.0527043524954 9.9377485826659, -84.0527107981436 9.93779188190045, -84.0527199326082 9.93787132360124, -84.0527243732062 9.93795076530203, -84.0527168419396 9.93802242474458, -84.0527036109785 9.93809408418712, -84.0526341385986 9.93815622170643, -84.0524441849862 9.93824866125399, -84.0521210493447 9.93840212874288, -84.0518711468269 9.93859022704029, -84.0517146035903 9.9387164365478, -84.0515516901066 9.93883769238516, -84.0514467461262 9.93890538473733, -84.051298218969 9.93897774723731, -84.0511281313016 9.93901864778466, -84.0509181170952 9.93905404247567, -84.0503591447661 9.93908393146568, -84.0501183551865 9.93910272348104, -84.0499402779348 9.93910706388403, -84.0497648828928 9.93910711111161, -84.0496439745831 9.93906715286185, -84.0494999920866 9.93897699483947, -84.0492839130465 9.93879865248422, -84.0489259634067 9.93852631535243, -84.0486415140485 9.9383125595628, -84.0484645585026 9.93816149920894, -84.0483041187788 9.93801276292967, -84.0479456361923 9.93767314890347, -84.0479035036496 9.93762896738312, -84.0478664002497 9.9375818136517, -84.0478370279249 9.9375407094932, -84.0478110083611 9.93749795410686, -84.0477901145765 9.93745496587906, -84.0477598330601 9.93736508273494, -84.047759267964 9.93726069019733, -84.047793713066 9.93707479279145, -84.0478715216077 9.93681544721791, -84.0479476285628 9.93657305173134, -84.0480642553351 9.93622234344519, -84.0481251956082 9.93602464016541, -84.0481829479595 9.93585590049247, -84.0482522936584 9.9357089398831, -84.0482869664637 9.93563189742607, -84.0483531600847 9.93556048694849, -84.048435114092 9.93549839086817, -84.0485569944104 9.93546527295384, -84.0486547088036 9.9354549236054, -84.048634745016 9.93528001900853, -84.0483794267626 9.93529761291067, -84.0481286733116 9.9352527346308, -84.0477461762194 9.93512765815873, -84.0471055797031 9.93492703280895, -84.046354626689 9.93478949058113, -84.0458746565008 9.93469070939338, -84.0456143293 9.93462060674132, -84.0456070252698 9.93489289845325, -84.045606154414 9.93495950947043, -84.0455877894747 9.93502573261312, -84.0455793808645 9.93533984703067, -84.0455366983597 9.93553106245252, -84.0455256779408 9.93558489672501, -84.0454519050346 9.93566584972937, -84.0453870153627 9.93603020143902, -84.0453504149565 9.93619941008339, -84.0453617663184 9.93630011253566, -84.0454755016038 9.93651948121636, -84.0455653411938 9.93668368683727, -84.045589182648 9.93677258981834, -84.0455874796866 9.93685310570445, -84.0455437249918 9.93694508327091, -84.0454400845081 9.93708383542657, -84.045309807991 9.93721635101928, -84.0452761874456 9.93724819645461, -84.0451229209554 9.93734716375109, -84.0448187291416 9.93752119585777, -84.0445416760749 9.93767426097248, -84.0442186256065 9.93785833808635, -84.0437983732383 9.93810435753431, -84.0436125738981 9.93796632120651, -84.0434414999464 9.93791432144543, -84.0432184120559 9.93788832161072, -84.042939145496 9.93792789506808, -84.0425252959219 9.93799597108977, -84.0424724302894 9.93800488549925, -84.0421750587842 9.9381395635656, -84.0419988023209 9.93816556338036, -84.0418468568672 9.93815877702913, -84.0417208377531 9.93812774499086, -84.0416827286396 9.93810465445374, -84.0416493133915 9.93807826146448, -84.0416349312544 9.93804738144964, -84.0416322837814 9.93801451996184, -84.0416346601389 9.93792436774485, -84.041067340985 9.93790082410227, -84.0409284047187 9.93846425290711, -84.0409624274215 9.93868651413261, -84.0411341586918 9.93885247660523, -84.0416474460876 9.93915539473273, -84.0417889786806 9.93928861127028, -84.0418813247414 9.9394354239606, -84.0419056263361 9.93950244712471, -84.042239368576 9.93950244613303, -84.0425196469705 9.93949446718606, -84.0429991991022 9.93945457168453, -84.043331873611 9.93942712460796, -84.0432605742965 9.93972789866721, -84.0432941313524 9.93979051078508, -84.0433753940134 9.93982252793726, -84.0437147893588 9.93991292983544, -84.0441287509128 9.94002028140903, -84.0446669802431 9.94016644833328, -84.044823754755 9.94027078687104, -84.0456295904777 9.94048864067421, -84.045594280927 9.9406416703034, -84.0450692602221 9.94079771456593, -84.0447481499267 9.9409503711104, -84.0446521079484 9.94105192700053, -84.0446962954808 9.94171142158802, -84.0447683576565 9.94281915936154, -84.0447317924328 9.94301266464211, -84.0446461368594 9.94326484610015, -84.0444664659679 9.94367235170777, -84.044752272012 9.94380140312083, -84.0448814333755 9.9438796367465, -84.0449503878825 9.94396952509255, -84.044987908675 9.94433433418409, -84.0450080280451 9.94457411376674, -84.0450080280451 9.94495390060397, -84.0450786471473 9.94504571713547, -84.0453964329445 9.94507075688808, -84.0454995368328 9.94509858007239, -84.0455360879379 9.94517301639726, -84.0455012141288 9.94569599438186, -84.0454579354822 9.94576731883437, -84.0452474905592 9.94587443785238, -84.0451754590753 9.94594677794762, -84.0451469719024 9.94629204599402, -84.0451610957222 9.9463908179176, -84.0451992300371 9.94645063751956, -84.0452562192863 9.94649738913102)", + "has_altitude": false + } + }, + { + "model": "feed.geoshape", + "pk": 5, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "geometry": "SRID=4326;LINESTRING (-84.0452793145875 9.94651439468106, -84.0453635889366 9.94656979269062, -84.0455133598416 9.94668819013391, -84.0456333624982 9.94677813595565, -84.0458288226395 9.94692110409536, -84.0458784281265 9.94699667079666, -84.0458729567443 9.94709290535486, -84.0457747817661 9.94722193423012, -84.0456766067879 9.94733469552996, -84.0455812484176 9.94735240267321, -84.0454835451677 9.94731698838683, -84.045155482603 9.94706401578786, -84.0449388905875 9.94695753981341, -84.0447927265256 9.94685591607748, -84.0447132911805 9.94674691466528, -84.0446929689046 9.94663836196663, -84.0447054750041 9.9465853910728, -84.0447469011822 9.94652457073993, -84.0447977068717 9.94630948675802, -84.0448235005163 9.94606507414992, -84.0451642894519 9.94607893196729, -84.0451842895768 9.94594726623906, -84.0452538542911 9.94587566747948, -84.0454601695233 9.94577795917383, -84.0455125384658 9.94569943146, -84.0455252458136 9.94545154684154, -84.0455414357082 9.94516751299271, -84.0455037479672 9.94508849180003, -84.0453835472561 9.94505511036374, -84.045084965639 9.94502739484005, -84.0450504044021 9.94499479036127, -84.0450208723069 9.94494963682908, -84.0450154011338 9.94467428591231, -84.0450041637077 9.94435778151253, -84.0449287137552 9.94347268380579, -84.0448982678798 9.94295817880508, -84.0448587644203 9.94230048632557, -84.0448222996627 9.94171228683352, -84.0447760219723 9.94096530647596, -84.0448740739734 9.94090663320268, -84.0449871934796 9.94084406020503, -84.0452171289551 9.94077751897418, -84.0453974813657 9.94072156165138, -84.0456042948351 9.94066022328121, -84.0456331735173 9.94049309734092, -84.0454384499972 9.94043960234258, -84.0451953028132 9.94037244769911, -84.0448203307503 9.94027492444419, -84.0447437519701 9.94022435173391, -84.0446621944019 9.94016681408322, -84.044417503094 9.94010200702146, -84.0444809655781 9.93987745974345, -84.0445245874922 9.93971459423953, -84.0446392902696 9.93927560616025, -84.0446560771702 9.93920545121652, -84.0446448875091 9.93916110643307, -84.0446191813258 9.93912385292449, -84.0445525134932 9.93911625815432, -84.0443337547524 9.93919941590806, -84.044006444136 9.93911055274011, -84.0436747724812 9.9390190082839, -84.0434673567427 9.93895911426052, -84.0433689432454 9.9392879865273, -84.0433274860744 9.93942115014918, -84.0429942406062 9.93944755512195, -84.0427365454686 9.93946810072644, -84.0424561880641 9.93949017843466, -84.0421337910545 9.93949896641922, -84.0419274245262 9.93950631475532, -84.0418524186819 9.93932958005353, -84.041691039804 9.93916814008368, -84.0414413521148 9.93900519121203, -84.0411391429389 9.93882565486029, -84.0410728454411 9.93878072700935, -84.0410213000932 9.93872490109004, -84.0409544792739 9.93861004710345, -84.0409494403816 9.93847396797512, -84.0410341635524 9.93814652860348, -84.0411014405278 9.93790671250708, -84.0413834314017 9.93791663555238, -84.0416285810649 9.93793079347671, -84.0416254546011 9.93801967154644, -84.0416431189912 9.93807996226397, -84.0416788253891 9.93810791480517, -84.0417178845482 9.93813256489417, -84.0418440755105 9.9381630635316, -84.0419580950124 9.93816840355805, -84.0420632597521 9.93816233402513, -84.0421742120474 9.93814321123235, -84.042431585693 9.93803086770445, -84.0424780922361 9.93800811636062, -84.0426586032431 9.93798034157711, -84.0430584128099 9.93791715763552, -84.0431955755255 9.93789378213828, -84.0434355505527 9.9379228858361, -84.0435100147268 9.93793324365073, -84.0436073742708 9.93796925623814, -84.0437957690067 9.93811129632628, -84.0440534496211 9.93796149488666, -84.0443836171542 9.93777133769974, -84.0447196978834 9.9375818272445, -84.0449635706007 9.93745018852863, -84.0451463546949 9.93734180767617, -84.0452714142582 9.93725372200282, -84.0454262175884 9.937108322267, -84.0455586526682 9.93692719931924, -84.0455873611916 9.93685401442958, -84.0455923110153 9.93677373653686, -84.0455680674162 9.93668019604487, -84.0454482787829 9.93646480148586, -84.0453892763726 9.93636588688585, -84.0453697036442 9.93632308831075, -84.0453615303045 9.93629762770389, -84.0453532765511 9.93624652235345, -84.0453570927397 9.93618732594838, -84.0453927689936 9.93603538344972, -84.045437957483 9.93577991764324, -84.0454621421002 9.93565154581259, -84.0455294509499 9.93558482499322, -84.0456405554627 9.93533787082614, -84.0456410811815 9.9350109333037, -84.0456087998837 9.93495968412818, -84.0456196757956 9.93464858697721, -84.046294734079 9.93480225304748, -84.0470992295944 9.93495610721508, -84.047738281775 9.93514466639919, -84.048128961463 9.93527584609242, -84.0483847176419 9.93531583349863, -84.0486296483808 9.93529983825585, -84.0486491888617 9.93545520267059, -84.0488055127148 9.9354703980085, -84.0490832368349 9.93553667972237, -84.0493162487417 9.9355977604479, -84.0495918083302 9.93570243695239, -84.0496787768477 9.93571038517426, -84.0499696558076 9.93571038484225, -84.0500954158227 9.93570321714193, -84.0503419760518 9.93566700857604, -84.0506470296121 9.93560674646944, -84.0510737676674 9.93553343216217, -84.0513075140395 9.93549263100849, -84.0515459542782 9.93546272803463, -84.0516525931019 9.93544955548966, -84.0517605730299 9.93544794162221, -84.0519830595855 9.93547169143514, -84.0521081889526 9.93548892832953, -84.0521827017793 9.93550175796293)", + "has_altitude": false + } + }, + { + "model": "feed.geoshape", + "pk": 6, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "geometry": "SRID=4326;LINESTRING (-84.0452709224469 9.94651450274987, -84.0453586296957 9.9465713930344, -84.0455321860811 9.94670523135418, -84.0457428830683 9.94685977487793, -84.0458252584096 9.94692114024093, -84.045874911642 9.94699848130395, -84.0458702927366 9.94709174550324, -84.0456762984049 9.94733286724273, -84.0455816108455 9.94734992775087, -84.0454811496546 9.94731694409985, -84.0451520526366 9.94706331033958, -84.044934964086 9.94695639770921, -84.0447940381815 9.94685739750313, -84.0447120526121 9.94674934743632, -84.0446901128118 9.94663902259388, -84.0447036688627 9.94658480665502, -84.0447440842844 9.94652566341521, -84.0447956225084 9.94631063663281, -84.0448175623087 9.94607861289951, -84.0448198717614 9.94606268969643, -84.0451616705072 9.94607633849742, -84.0451794721398 9.94594816328299, -84.0452499104458 9.94587650883204, -84.0454566064596 9.94577755742257, -84.0455092507792 9.94570040854178, -84.0455392738468 9.94516698035057, -84.0455023654374 9.94508917283893, -84.045382273899 9.94505732633557, -84.0450808903258 9.94502889195332, -84.0450173803773 9.94495155042415, -84.045015769873 9.94472000465252, -84.0449868892884 9.94425679788889, -84.0449568041774 9.94389594579139, -84.0449197895004 9.9433847319748, -84.0448773383005 9.94261500079999, -84.0448390343892 9.94204155986042, -84.0448024388483 9.94137698645447, -84.0447771566035 9.94096102380372, -84.0450446175143 9.94082181962447, -84.0456053336701 9.94065523781238, -84.045634999557 9.94048314593914, -84.0452283043053 9.9403780406827, -84.04482278961 9.9402703855621, -84.0446641785108 9.94016328794055, -84.0444165990228 9.94010181117775, -84.0445263287881 9.93971666992378, -84.0446221116145 9.93932936015097, -84.0446545394456 9.93920408915902, -84.0446456512568 9.9391568243881, -84.0446159514984 9.93912509354336, -84.0445637722231 9.93911021843789, -84.0443354246074 9.93919615665697, -84.043697 9.939024, -84.0434647440871 9.9389589108528, -84.0433689657322 9.93927926961302, -84.0433251613281 9.9394214266361, -84.043078 9.939438, -84.0424704121516 9.93949676004582, -84.0423387592283 9.93950197815545, -84.042195874555 9.93950471943605, -84.0420595652431 9.93950937287681, -84.0419237588459 9.93950560510053, -84.0418526043861 9.93932694656827, -84.0416871226965 9.93916441674404, -84.0415030389796 9.93904364750639, -84.0411360631089 9.93882652989536, -84.0410711382821 9.93877761093714, -84.0410192892248 9.93872439879922, -84.0409548622543 9.93860739420377, -84.0409464827492 9.93847712489684, -84.0409847362632 9.93831748290179, -84.0410975311932 9.93790526804534, -84.0413721007657 9.93791543483811, -84.0416234000621 9.93792971313351, -84.0416214268987 9.93801943406157, -84.0416385167757 9.93808013647371, -84.0417143841426 9.9381333560273, -84.0417661717713 9.9381491692212, -84.0418402279053 9.93816498245021, -84.041955196169 9.93817110369939, -84.0420620743374 9.93816447211196, -84.042172549653 9.93814558312971, -84.0423590295751 9.93806546361139, -84.0424754995415 9.93800868895506, -84.0426277550985 9.93798455282835, -84.0429680898401 9.93793303246509, -84.0431865014681 9.93789255913571, -84.0434262188335 9.93792278510311, -84.0435140997635 9.93793612530689, -84.0436045719397 9.93796843588535, -84.0437946545471 9.93811029202329, -84.044044224914 9.93796317506452, -84.0443497474269 9.93778888741941, -84.0447040111923 9.93759056212761, -84.0449773758339 9.93743889754011, -84.0451442319336 9.93734106177819, -84.0452700748287 9.93725220134541, -84.0454232410009 9.93710383236486, -84.045480287002 9.93703302156643, -84.0455559204937 9.93692669580576, -84.0455868138288 9.93685320196694, -84.045591032246 9.93677214106483, -84.0455673986725 9.93667892839703, -84.0454873867401 9.93652937757293, -84.0454491600057 9.93646683969579, -84.0454129449283 9.93640033885562, -84.0453776127618 9.93634297166293, -84.0453623778292 9.93629576054226, -84.0453512637102 9.93624363287526, -84.0453538959122 9.9361862212533, -84.0453890269646 9.93603883510741, -84.0454308854351 9.93580414505913, -84.0454587046985 9.93565385732093, -84.0455252542674 9.93558390036268, -84.0455798539966 9.93547184500151, -84.0456377473207 9.93533906172064, -84.0456383288227 9.93501118853525, -84.0456086223286 9.93495718975151, -84.0456168978697 9.93465006354252, -84.0461340991613 9.93477095640989, -84.0468176973466 9.93490403346722, -84.0471113963055 9.93495932029753, -84.0474601236579 9.93505827498137, -84.0478899692808 9.93519897363926, -84.0481284685146 9.93527449143981, -84.0483778894022 9.93531543817006, -84.0486249437023 9.93529755715117, -84.0486430566726 9.93545425079317, -84.0488000764969 9.9354703595261, -84.0490437766179 9.9355323422866)", + "has_altitude": false + } + }, + { + "model": "feed.gtfsprovider", + "pk": 1, + "fields": { + "code": "bUCR", + "name": "bUCR", + "description": "Bus de la UCR", + "website": "https://bucr.digital", + "schedule_url": null, + "trip_updates_url": null, + "vehicle_positions_url": null, + "service_alerts_url": null, + "timezone": "America/costa_rica", + "is_active": true + } + }, + { + "model": "feed.feedinfo", + "pk": 1, + "fields": { + "feed": 1, + "feed_publisher_name": "TCU Tropicalización de la Tecnología", + "feed_publisher_url": "https://tropicalizacion.eie.ucr.ac.cr/", + "feed_lang": "es", + "feed_start_date": "2024-10-01", + "feed_end_date": "2024-12-21", + "feed_version": "v2024.2.1", + "feed_contact_email": "fabian.abarca@ucr.ac.cr" + } + }, + { + "model": "feed.feed", + "pk": 1, + "fields": { + "feed_publisher": 1, + "http_etag": null, + "http_last_modified": "2024-07-11T00:00:00Z", + "is_current": true, + "retrieved_at": "2024-07-11T04:28:41.332Z" + } + } +] diff --git a/backend/feed/fixtures/gtfs_old.json b/backend/feed/fixtures/gtfs_old.json index a67b93c..eb169b6 100644 --- a/backend/feed/fixtures/gtfs_old.json +++ b/backend/feed/fixtures/gtfs_old.json @@ -1,32735 +1,32735 @@ [ - { - "model": "gtfs.agency", - "pk": 1, - "fields": { - "feed": "1", - "agency_id": "bUCR", - "agency_name": "Buses de la Universidad de Costa Rica", - "agency_url": "https://bus.ucr.ac.cr/", - "agency_timezone": "America/Costa_Rica", - "agency_lang": "es", - "agency_phone": "25112919", - "agency_fare_url": "https://bus.ucr.ac.cr/#tarifas", - "agency_email": "bus@ucr.ac.cr" - } - }, - { - "model": "gtfs.route", - "pk": 1, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "agency_id": "bUCR", - "route_short_name": "bUCR L1", - "route_long_name": "Bus interno UCR sin milla", - "route_desc": "Esta ruta conecta las tres fincas del Campus Universitario Rodrigo Facio en San Pedro de Montes de Oca, y no incluye la vuelta por la milla universitaria.", - "route_type": 3, - "route_url": "https://bus.ucr.ac.cr/#L1", - "route_color": "00C0F3", - "route_text_color": "FFFFFF", - "route_sort_order": null - } - }, - { - "model": "gtfs.route", - "pk": 2, - "fields": { - "feed": "1", - "route_id": "bUCR_L2", - "agency_id": "bUCR", - "route_short_name": "bUCR L2", - "route_long_name": "Bus interno UCR con milla", - "route_desc": "Esta ruta conecta las tres fincas del Campus Universitario Rodrigo Facio en San Pedro de Montes de Oca, e incluye la vuelta por la milla universitaria.", - "route_type": 3, - "route_url": "https://bus.ucr.ac.cr/#L2", - "route_color": "005DA4", - "route_text_color": "FFFFFF", - "route_sort_order": null - } - }, - { - "model": "gtfs.stop", - "pk": 1, - "fields": { - "feed": "1", - "stop_id": "bUCR_0_01", - "stop_code": "", - "stop_name": "Facultad de Educación", - "stop_desc": "Frente al jardín de la Facultad de Educación (FE)", - "stop_lat": 9.935610136323218, - "stop_lon": -84.04899295728595, - "stop_point": "SRID=4326;POINT (-84.04899295728595 9.935610136323218)", - "zone_id": "bUCR_0", - "stop_url": "", - "location_type": 0, - "parent_station": "", - "stop_timezone": "", - "wheelchair_boarding": 1, - "platform_code": "" - } - }, - { - "model": "gtfs.stop", - "pk": 2, - "fields": { - "feed": "1", - "stop_id": "bUCR_0_02", - "stop_code": "", - "stop_name": "Escuela de Artes Plásticas", - "stop_desc": "Nuevo edificio de la Escuela de Artes Plásticas (EAP)", - "stop_lat": 9.935501598287884, - "stop_lon": -84.05217559901489, - "stop_point": "SRID=4326;POINT (-84.05217559901489 9.935501598287884)", - "zone_id": "bUCR_0", - "stop_url": "", - "location_type": 0, - "parent_station": "", - "stop_timezone": "", - "wheelchair_boarding": 1, - "platform_code": "" - } - }, - { - "model": "gtfs.stop", - "pk": 3, - "fields": { - "feed": "1", - "stop_id": "bUCR_0_03", - "stop_code": "", - "stop_name": "Biblioteca de Ciencias de la Salud", - "stop_desc": "Frente al antiguo edificio de la Facultad de Odontología (FOd), diagonal al parqueo de la Biblioteca de Ciencias de la Salud", - "stop_lat": 9.93860832346218, - "stop_lon": -84.0517499001992, - "stop_point": "SRID=4326;POINT (-84.0517499001992 9.93860832346218)", - "zone_id": "bUCR_0", - "stop_url": "", - "location_type": 0, - "parent_station": "", - "stop_timezone": "", - "wheelchair_boarding": 1, - "platform_code": "" - } - }, - { - "model": "gtfs.stop", - "pk": 4, - "fields": { - "feed": "1", - "stop_id": "bUCR_0_04", - "stop_code": "", - "stop_name": "Facultad de Microbiología", - "stop_desc": "Esquina noreste del parqueo de las Escuelas de Artes Musicales (EAM), Química (EQ) y Biología (EB) y la Facultad de Microbiología (FMic)", - "stop_lat": 9.93832361909286, - "stop_lon": -84.04876049840074, - "stop_point": "SRID=4326;POINT (-84.04876049840074 9.93832361909286 )", - "zone_id": "bUCR_0", - "stop_url": "", - "location_type": 0, - "parent_station": "", - "stop_timezone": "", - "wheelchair_boarding": 1, - "platform_code": "" - } - }, - { - "model": "gtfs.stop", - "pk": 5, - "fields": { - "feed": "1", - "stop_id": "bUCR_0_05", - "stop_code": "", - "stop_name": "Laboratorio Nacional de Materiales y Modelos Estructurales (LanammeUCR)", - "stop_desc": "Junto al parqueo del Centro de Transferencia Tecnológica (CTT), diagonal al Laboratorio Nacional de Materiales y Modelos Estructurales (LANAMME)", - "stop_lat": 9.935903915437937, - "stop_lon": -84.04537504744147, - "stop_point": "SRID=4326;POINT (-84.04537504744147 9.935903915437937)", - "zone_id": "bUCR_0", - "stop_url": "", - "location_type": 0, - "parent_station": "bUCR_LA", - "stop_timezone": "", - "wheelchair_boarding": 2, - "platform_code": "" - } - }, - { - "model": "gtfs.stop", - "pk": 6, - "fields": { - "feed": "1", - "stop_id": "bUCR_0_06", - "stop_code": "", - "stop_name": "Facultad de Ingeniería", - "stop_desc": "Costado norte del nuevo edificio de la Facultad de Ingeniería (FI)", - "stop_lat": 9.937467311441509, - "stop_lon": -84.04467644300775, - "stop_point": "SRID=4326;POINT (-84.04467644300775 9.937467311441507)", - "zone_id": "bUCR_0", - "stop_url": "", - "location_type": 0, - "parent_station": "bUCR_FI", - "stop_timezone": "", - "wheelchair_boarding": 2, - "platform_code": "" - } - }, - { - "model": "gtfs.stop", - "pk": 7, - "fields": { - "feed": "1", - "stop_id": "bUCR_0_07", - "stop_code": "", - "stop_name": "Facultad de Ciencias Sociales", - "stop_desc": "Entre la Facultad de Ciencias Sociales (FCS) y el edificio de parqueos", - "stop_lat": 9.938029607676915, - "stop_lon": -84.04237892478906, - "stop_point": "SRID=4326;POINT (-84.04237892478906 9.938029607676915)", - "zone_id": "bUCR_0", - "stop_url": "", - "location_type": 0, - "parent_station": "bUCR_CS", - "stop_timezone": "", - "wheelchair_boarding": 2, - "platform_code": "" - } - }, - { - "model": "gtfs.stop", - "pk": 8, - "fields": { - "feed": "1", - "stop_id": "bUCR_0_08", - "stop_code": "", - "stop_name": "Instituto de Investigación en Educación (INIE)", - "stop_desc": "Costado sur del edificio del Instituto de Investigación en Educación (INIE)", - "stop_lat": 9.939451647823136, - "stop_lon": -84.04307776266035, - "stop_point": "SRID=4326;POINT (-84.04307776266035 9.939451647823137)", - "zone_id": "bUCR_0", - "stop_url": "", - "location_type": 0, - "parent_station": "", - "stop_timezone": "", - "wheelchair_boarding": 2, - "platform_code": "" - } - }, - { - "model": "gtfs.stop", - "pk": 9, - "fields": { - "feed": "1", - "stop_id": "bUCR_0_09", - "stop_code": "", - "stop_name": "Centro de Investigación en Cirugía y Cáncer (CICICA)", - "stop_desc": "Costado sur del edificio del Centro de Investigación en Cirugía y Cáncer (CICICA)", - "stop_lat": 9.940155168862551, - "stop_lon": -84.04450675690296, - "stop_point": "SRID=4326;POINT (-84.04450675690296 9.940155168862551)", - "zone_id": "bUCR_0", - "stop_url": "", - "location_type": 0, - "parent_station": "", - "stop_timezone": "", - "wheelchair_boarding": 2, - "platform_code": "" - } - }, - { - "model": "gtfs.stop", - "pk": 10, - "fields": { - "feed": "1", - "stop_id": "bUCR_0_10", - "stop_code": "", - "stop_name": "Oficina de Bienestar y Salud (OBS)", - "stop_desc": "Entre el nuevo edificio de la Oficina de Bienestar y Salud (OBS) y el Estadio Ecológico", - "stop_lat": 9.943761220391433, - "stop_lon": -84.04468346245407, - "stop_point": "SRID=4326;POINT (-84.04468346245408 9.943761220391434)", - "zone_id": "bUCR_0", - "stop_url": "", - "location_type": 0, - "parent_station": "", - "stop_timezone": "", - "wheelchair_boarding": 2, - "platform_code": "" - } - }, - { - "model": "gtfs.stop", - "pk": 11, - "fields": { - "feed": "1", - "stop_id": "bUCR_0_11", - "stop_code": "", - "stop_name": "Facultad de Odontología", - "stop_desc": "En el nuevo edificio de la Facultad de Odontología (FOd) en la Finca 3", - "stop_lat": 9.946441050827923, - "stop_lon": -84.0451915613564, - "stop_point": "SRID=4326;POINT (-84.0451915613564 9.946441050827925)", - "zone_id": "bUCR_0", - "stop_url": "", - "location_type": 0, - "parent_station": "", - "stop_timezone": "", - "wheelchair_boarding": 2, - "platform_code": "" - } - }, - { - "model": "gtfs.stop", - "pk": 12, - "fields": { - "feed": "1", - "stop_id": "bUCR_1_01", - "stop_code": "", - "stop_name": "Facultad de Odontología", - "stop_desc": "En el nuevo edificio de la Facultad de Odontología (FOd) en la Finca 3", - "stop_lat": 9.946529500847424, - "stop_lon": -84.04535458313804, - "stop_point": "SRID=4326;POINT (-84.04535458313804 9.946529500847424)", - "zone_id": "bUCR_1", - "stop_url": "", - "location_type": 0, - "parent_station": "", - "stop_timezone": "", - "wheelchair_boarding": 2, - "platform_code": "" - } - }, - { - "model": "gtfs.stop", - "pk": 13, - "fields": { - "feed": "1", - "stop_id": "bUCR_1_02", - "stop_code": "", - "stop_name": "Escuela de Educación Física y Deportes (EDUFI)", - "stop_desc": "Costado este de las canchas multiuso y de la Escuela de Educación Física y Deportes (EDUFI)", - "stop_lat": 9.943381444081362, - "stop_lon": -84.04495180739714, - "stop_point": "SRID=4326;POINT (-84.04495180739714 9.943381444081362)", - "zone_id": "bUCR_1", - "stop_url": "", - "location_type": 0, - "parent_station": "", - "stop_timezone": "", - "wheelchair_boarding": 2, - "platform_code": "" - } - }, - { - "model": "gtfs.stop", - "pk": 14, - "fields": { - "feed": "1", - "stop_id": "bUCR_1_03", - "stop_code": "", - "stop_name": "Escuela de Nutrición", - "stop_desc": "Esquina noreste del edificio de la Escuela de Nutrición (ENu)", - "stop_lat": 9.939134591559856, - "stop_lon": -84.04468654565294, - "stop_point": "SRID=4326;POINT (-84.04468654565294 9.939134591559855)", - "zone_id": "bUCR_1", - "stop_url": "", - "location_type": 0, - "parent_station": "", - "stop_timezone": "", - "wheelchair_boarding": 2, - "platform_code": "" - } - }, - { - "model": "gtfs.stop", - "pk": 15, - "fields": { - "feed": "1", - "stop_id": "bUCR_1_04", - "stop_code": "", - "stop_name": "Centro de Investigación en Ciencias del Mar y Limnología (CIMAR)", - "stop_desc": "Entre el edificio de parqueos y el Centro de Investigación en Ciencias del Mar y Limnología (CIMAR)", - "stop_lat": 9.938980381389706, - "stop_lon": -84.0436758508172, - "stop_point": "SRID=4326;POINT (-84.0436758508172 9.938980381389706)", - "zone_id": "bUCR_1", - "stop_url": "", - "location_type": 0, - "parent_station": "", - "stop_timezone": "", - "wheelchair_boarding": 1, - "platform_code": "" - } - }, - { - "model": "gtfs.stop", - "pk": 16, - "fields": { - "feed": "1", - "stop_id": "bUCR_1_05", - "stop_code": "", - "stop_name": "Centro de Investigación en Matemática Pura y Aplicada (CIMPA)", - "stop_desc": "Frente al edificio del Centro de Investigación en Matemática Pura y Aplicada (CIMPA)", - "stop_lat": 9.939472792042086, - "stop_lon": -84.042189216776, - "stop_point": "SRID=4326;POINT (-84.042189216776 9.939472792042086)", - "zone_id": "bUCR_1", - "stop_url": "", - "location_type": 0, - "parent_station": "", - "stop_timezone": "", - "wheelchair_boarding": 2, - "platform_code": "" - } - }, - { - "model": "gtfs.stop", - "pk": 17, - "fields": { - "feed": "1", - "stop_id": "bUCR_1_06", - "stop_code": "", - "stop_name": "Facultad de Ciencias Sociales", - "stop_desc": "Entre la Facultad de Ciencias Sociales (FCS) y el edificio de parqueos", - "stop_lat": 9.93813052902614, - "stop_lon": -84.04229551510366, - "stop_point": "SRID=4326;POINT (-84.04229551510366 9.938130529026141)", - "zone_id": "bUCR_1", - "stop_url": "", - "location_type": 0, - "parent_station": "bUCR_CS", - "stop_timezone": "", - "wheelchair_boarding": 1, - "platform_code": "" - } - }, - { - "model": "gtfs.stop", - "pk": 18, - "fields": { - "feed": "1", - "stop_id": "bUCR_1_07", - "stop_code": "", - "stop_name": "Facultad de Ingeniería", - "stop_desc": "Costado norte del nuevo edificio de la Facultad de Ingeniería (FI), al otro lado de la calle", - "stop_lat": 9.937468669419962, - "stop_lon": -84.04501822768842, - "stop_point": "SRID=4326;POINT (-84.04501822768842 9.937468669419962)", - "zone_id": "bUCR_1", - "stop_url": "", - "location_type": 0, - "parent_station": "bUCR_FI", - "stop_timezone": "", - "wheelchair_boarding": 1, - "platform_code": "" - } - }, - { - "model": "gtfs.stop", - "pk": 19, - "fields": { - "feed": "1", - "stop_id": "bUCR_1_08", - "stop_code": "", - "stop_name": "Laboratorio Nacional de Materiales y Modelos Estructurales (LanammeUCR)", - "stop_desc": "Junto al parqueo del Centro de Transferencia Tecnológica (CTT), diagonal al Laboratorio Nacional de Materiales y Modelos Estructurales (LANAMME), al otro lado de la calle", - "stop_lat": 9.93589305371453, - "stop_lon": -84.04546950911886, - "stop_point": "SRID=4326;POINT (-84.04546950911886 9.93589305371453)", - "zone_id": "bUCR_1", - "stop_url": "", - "location_type": 0, - "parent_station": "bUCR_LA", - "stop_timezone": "", - "wheelchair_boarding": 2, - "platform_code": "" - } - }, - { - "model": "gtfs.stop", - "pk": 20, - "fields": { - "feed": "1", - "stop_id": "bUCR_FI", - "stop_code": "", - "stop_name": "Facultad de Ingeniería", - "stop_desc": "En las inmediaciones del edificio de la Facultad de Ingeniería", - "stop_lat": 9.937467311441509, - "stop_lon": -84.04467644300775, - "stop_point": "SRID=4326;POINT (-84.04467644300775 9.937467311441507)", - "zone_id": "", - "stop_url": "", - "location_type": 1, - "parent_station": "", - "stop_timezone": "", - "wheelchair_boarding": 1, - "platform_code": "" - } - }, - { - "model": "gtfs.stop", - "pk": 21, - "fields": { - "feed": "1", - "stop_id": "bUCR_CS", - "stop_code": "", - "stop_name": "Facultad de Ciencias Sociales", - "stop_desc": "En las inmediaciones del edificio de la Facultad de Ciencias Sociales", - "stop_lat": 9.93813052902614, - "stop_lon": -84.04229551510366, - "stop_point": "SRID=4326;POINT (-84.04229551510366 9.938130529026141)", - "zone_id": "", - "stop_url": "", - "location_type": 1, - "parent_station": "", - "stop_timezone": "", - "wheelchair_boarding": 1, - "platform_code": "" - } - }, - { - "model": "gtfs.stop", - "pk": 22, - "fields": { - "feed": "1", - "stop_id": "bUCR_LA", - "stop_code": "", - "stop_name": "Laboratorio Nacional de Materiales y Modelos Estructurales (LanammeUCR)", - "stop_desc": "En las inmediaciones del Laboratorio Nacional de Materiales y Modelos Estructurales (LanammeUCR)", - "stop_lat": 9.935785141707278, - "stop_lon": -84.04544067497328, - "stop_point": "SRID=4326;POINT (-84.04544067497328 9.935785141707278)", - "zone_id": "", - "stop_url": "", - "location_type": 1, - "parent_station": "", - "stop_timezone": "", - "wheelchair_boarding": 1, - "platform_code": "" - } - }, - { - "model": "gtfs.trip", - "pk": 1, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_educacion_sin_milla_entresemana_06:10", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_sin_milla", - "geoshape": 1, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 2, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_educacion_sin_milla_entresemana_06:30", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_sin_milla", - "geoshape": 1, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 3, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_educacion_sin_milla_entresemana_07:00", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_sin_milla", - "geoshape": 1, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 4, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_educacion_sin_milla_entresemana_07:20", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_sin_milla", - "geoshape": 1, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 5, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_educacion_sin_milla_entresemana_07:50", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_sin_milla", - "geoshape": 1, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 6, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_educacion_sin_milla_entresemana_08:10", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_sin_milla", - "geoshape": 1, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 7, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_educacion_sin_milla_entresemana_08:55", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_sin_milla", - "geoshape": 1, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 8, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_educacion_sin_milla_entresemana_09:15", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_sin_milla", - "geoshape": 1, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 9, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_educacion_sin_milla_entresemana_09:45", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_sin_milla", - "geoshape": 1, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 10, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_educacion_sin_milla_entresemana_10:05", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_sin_milla", - "geoshape": 1, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 11, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_educacion_sin_milla_entresemana_10:35", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_sin_milla", - "geoshape": 1, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 12, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_educacion_sin_milla_entresemana_10:55", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_sin_milla", - "geoshape": 1, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 13, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_educacion_sin_milla_entresemana_11:15", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_sin_milla", - "geoshape": 1, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 14, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_educacion_sin_milla_entresemana_11:25", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_sin_milla", - "geoshape": 1, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 15, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_educacion_sin_milla_entresemana_11:40", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_sin_milla", - "geoshape": 1, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 16, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_educacion_sin_milla_entresemana_12:00", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_sin_milla", - "geoshape": 1, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 17, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_educacion_sin_milla_entresemana_12:25", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_sin_milla", - "geoshape": 1, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 18, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_educacion_sin_milla_entresemana_12:35", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_sin_milla", - "geoshape": 1, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 19, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_educacion_sin_milla_entresemana_13:10", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_sin_milla", - "geoshape": 1, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 20, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_educacion_sin_milla_entresemana_13:45", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_sin_milla", - "geoshape": 1, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 21, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_educacion_sin_milla_entresemana_14:10", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_sin_milla", - "geoshape": 1, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 22, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_educacion_sin_milla_entresemana_14:30", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_sin_milla", - "geoshape": 1, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 23, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_educacion_sin_milla_entresemana_14:55", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_sin_milla", - "geoshape": 1, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 24, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_educacion_sin_milla_entresemana_15:15", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_sin_milla", - "geoshape": 1, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 25, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_educacion_sin_milla_entresemana_15:55", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_sin_milla", - "geoshape": 1, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 26, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_educacion_sin_milla_entresemana_16:30", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_sin_milla", - "geoshape": 1, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 27, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_educacion_sin_milla_entresemana_16:55", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_sin_milla", - "geoshape": 1, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 28, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_educacion_sin_milla_entresemana_17:30", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_sin_milla", - "geoshape": 1, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 29, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_educacion_sin_milla_entresemana_17:55", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_sin_milla", - "geoshape": 1, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 30, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_educacion_sin_milla_entresemana_18:25", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_sin_milla", - "geoshape": 1, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 31, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_educacion_sin_milla_entresemana_18:50", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_sin_milla", - "geoshape": 1, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 32, - "fields": { - "feed": "1", - "route_id": "bUCR_L2", - "service_id": "entresemana", - "trip_id": "desde_educacion_con_milla_entresemana_19:15", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_con_milla", - "geoshape": 2, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 33, - "fields": { - "feed": "1", - "route_id": "bUCR_L2", - "service_id": "entresemana", - "trip_id": "desde_educacion_con_milla_entresemana_20:10", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_con_milla", - "geoshape": 2, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 34, - "fields": { - "feed": "1", - "route_id": "bUCR_L2", - "service_id": "entresemana", - "trip_id": "desde_educacion_con_milla_entresemana_20:50", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_con_milla", - "geoshape": 2, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 35, - "fields": { - "feed": "1", - "route_id": "bUCR_L2", - "service_id": "entresemana", - "trip_id": "desde_educacion_con_milla_entresemana_21:00", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_con_milla", - "geoshape": 2, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 36, - "fields": { - "feed": "1", - "route_id": "bUCR_L2", - "service_id": "entresemana", - "trip_id": "desde_educacion_con_milla_entresemana_21:35", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_educacion_con_milla", - "geoshape": 2, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 37, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_artes_sin_milla_entresemana_06:20", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_artes_sin_milla", - "geoshape": 3, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 38, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_artes_sin_milla_entresemana_06:40", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_artes_sin_milla", - "geoshape": 3, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 39, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_artes_sin_milla_entresemana_07:10", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_artes_sin_milla", - "geoshape": 3, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 40, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_artes_sin_milla_entresemana_07:30", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_artes_sin_milla", - "geoshape": 3, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 41, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_artes_sin_milla_entresemana_08:00", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_artes_sin_milla", - "geoshape": 3, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 42, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_artes_sin_milla_entresemana_08:35", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_artes_sin_milla", - "geoshape": 3, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 43, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_artes_sin_milla_entresemana_09:05", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_artes_sin_milla", - "geoshape": 3, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 44, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_artes_sin_milla_entresemana_09:25", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_artes_sin_milla", - "geoshape": 3, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 45, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_artes_sin_milla_entresemana_09:55", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_artes_sin_milla", - "geoshape": 3, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 46, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_artes_sin_milla_entresemana_10:15", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_artes_sin_milla", - "geoshape": 3, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 47, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_artes_sin_milla_entresemana_10:45", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_artes_sin_milla", - "geoshape": 3, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 48, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_artes_sin_milla_entresemana_11:05", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_artes_sin_milla", - "geoshape": 3, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 49, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_artes_sin_milla_entresemana_11:35", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_artes_sin_milla", - "geoshape": 3, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 50, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_artes_sin_milla_entresemana_11:50", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_artes_sin_milla", - "geoshape": 3, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 51, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_artes_sin_milla_entresemana_12:10", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_artes_sin_milla", - "geoshape": 3, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 52, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_artes_sin_milla_entresemana_12:30", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_artes_sin_milla", - "geoshape": 3, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 53, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_artes_sin_milla_entresemana_12:45", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_artes_sin_milla", - "geoshape": 3, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 54, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_artes_sin_milla_entresemana_13:20", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_artes_sin_milla", - "geoshape": 3, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 55, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_artes_sin_milla_entresemana_14:00", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_artes_sin_milla", - "geoshape": 3, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 56, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_artes_sin_milla_entresemana_14:20", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_artes_sin_milla", - "geoshape": 3, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 57, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_artes_sin_milla_entresemana_14:45", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_artes_sin_milla", - "geoshape": 3, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 58, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_artes_sin_milla_entresemana_15:05", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_artes_sin_milla", - "geoshape": 3, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 59, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_artes_sin_milla_entresemana_15:30", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_artes_sin_milla", - "geoshape": 3, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 60, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_artes_sin_milla_entresemana_16:05", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_artes_sin_milla", - "geoshape": 3, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 61, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_artes_sin_milla_entresemana_16:40", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_artes_sin_milla", - "geoshape": 3, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 62, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_artes_sin_milla_entresemana_17:05", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_artes_sin_milla", - "geoshape": 3, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 63, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_artes_sin_milla_entresemana_17:40", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_artes_sin_milla", - "geoshape": 3, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 64, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_artes_sin_milla_entresemana_18:05", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_artes_sin_milla", - "geoshape": 3, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 65, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "desde_artes_sin_milla_entresemana_18:35", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_artes_sin_milla", - "geoshape": 3, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 66, - "fields": { - "feed": "1", - "route_id": "bUCR_L2", - "service_id": "entresemana", - "trip_id": "desde_artes_con_milla_entresemana_19:00", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_artes_con_milla", - "geoshape": 4, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 67, - "fields": { - "feed": "1", - "route_id": "bUCR_L2", - "service_id": "entresemana", - "trip_id": "desde_artes_con_milla_entresemana_19:35", - "trip_headsign": "Deportivas", - "trip_short_name": "", - "direction_id": 0, - "block_id": "", - "shape_id": "desde_artes_con_milla", - "geoshape": 4, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 68, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_artes_entresemana_06:20", - "trip_headsign": "Artes Plásticas", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_artes", - "geoshape": 5, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 69, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_educacion_entresemana_06:40", - "trip_headsign": "Educación", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_educacion", - "geoshape": 6, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 70, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_artes_entresemana_06:50", - "trip_headsign": "Artes Plásticas", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_artes", - "geoshape": 5, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 71, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_educacion_entresemana_07:00", - "trip_headsign": "Educación", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_educacion", - "geoshape": 6, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 72, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_artes_entresemana_07:10", - "trip_headsign": "Artes Plásticas", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_artes", - "geoshape": 5, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 73, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_educacion_entresemana_07:30", - "trip_headsign": "Educación", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_educacion", - "geoshape": 6, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 74, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_artes_entresemana_07:40", - "trip_headsign": "Artes Plásticas", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_artes", - "geoshape": 5, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 75, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_educacion_entresemana_07:50", - "trip_headsign": "Educación", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_educacion", - "geoshape": 6, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 76, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_artes_entresemana_08:00", - "trip_headsign": "Artes Plásticas", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_artes", - "geoshape": 5, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 77, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_educacion_entresemana_08:35", - "trip_headsign": "Educación", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_educacion", - "geoshape": 6, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 78, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_artes_entresemana_08:45", - "trip_headsign": "Artes Plásticas", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_artes", - "geoshape": 5, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 79, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_educacion_entresemana_08:55", - "trip_headsign": "Educación", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_educacion", - "geoshape": 6, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 80, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_artes_entresemana_09:05", - "trip_headsign": "Artes Plásticas", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_artes", - "geoshape": 5, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 81, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_educacion_entresemana_09:25", - "trip_headsign": "Educación", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_educacion", - "geoshape": 6, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 82, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_artes_entresemana_09:35", - "trip_headsign": "Artes Plásticas", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_artes", - "geoshape": 5, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 83, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_educacion_entresemana_09:45", - "trip_headsign": "Educación", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_educacion", - "geoshape": 6, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 84, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_artes_entresemana_09:55", - "trip_headsign": "Artes Plásticas", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_artes", - "geoshape": 5, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 85, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_educacion_entresemana_10:15", - "trip_headsign": "Educación", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_educacion", - "geoshape": 6, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 86, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_artes_entresemana_10:25", - "trip_headsign": "Artes Plásticas", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_artes", - "geoshape": 5, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 87, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_educacion_entresemana_10:35", - "trip_headsign": "Educación", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_educacion", - "geoshape": 6, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 88, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_artes_entresemana_10:45", - "trip_headsign": "Artes Plásticas", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_artes", - "geoshape": 5, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 89, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_educacion_entresemana_11:05", - "trip_headsign": "Educación", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_educacion", - "geoshape": 6, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 90, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_artes_entresemana_11:15", - "trip_headsign": "Artes Plásticas", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_artes", - "geoshape": 5, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 91, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_educacion_entresemana_11:20", - "trip_headsign": "Educación", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_educacion", - "geoshape": 6, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 92, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_artes_entresemana_11:30", - "trip_headsign": "Artes Plásticas", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_artes", - "geoshape": 5, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 93, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_educacion_entresemana_11:40", - "trip_headsign": "Educación", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_educacion", - "geoshape": 6, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 94, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_artes_entresemana_11:50", - "trip_headsign": "Artes Plásticas", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_artes", - "geoshape": 5, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 95, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_educacion_entresemana_12:05", - "trip_headsign": "Educación", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_educacion", - "geoshape": 6, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 96, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_artes_entresemana_12:10", - "trip_headsign": "Artes Plásticas", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_artes", - "geoshape": 5, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 97, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_educacion_entresemana_12:15", - "trip_headsign": "Educación", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_educacion", - "geoshape": 6, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 98, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_artes_entresemana_12:25", - "trip_headsign": "Artes Plásticas", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_artes", - "geoshape": 5, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 99, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_educacion_entresemana_12:50", - "trip_headsign": "Educación", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_educacion", - "geoshape": 6, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 100, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_artes_entresemana_13:00", - "trip_headsign": "Artes Plásticas", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_artes", - "geoshape": 5, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 101, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_educacion_entresemana_13:25", - "trip_headsign": "Educación", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_educacion", - "geoshape": 6, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 102, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_artes_entresemana_13:40", - "trip_headsign": "Artes Plásticas", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_artes", - "geoshape": 5, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 103, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_educacion_entresemana_13:50", - "trip_headsign": "Educación", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_educacion", - "geoshape": 6, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 104, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_artes_entresemana_14:00", - "trip_headsign": "Artes Plásticas", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_artes", - "geoshape": 5, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 105, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_educacion_entresemana_14:10", - "trip_headsign": "Educación", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_educacion", - "geoshape": 6, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 106, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_artes_entresemana_14:25", - "trip_headsign": "Artes Plásticas", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_artes", - "geoshape": 5, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 107, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_educacion_entresemana_14:35", - "trip_headsign": "Educación", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_educacion", - "geoshape": 6, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 108, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_artes_entresemana_14:45", - "trip_headsign": "Artes Plásticas", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_artes", - "geoshape": 5, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 109, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_educacion_entresemana_14:55", - "trip_headsign": "Educación", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_educacion", - "geoshape": 6, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 110, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_artes_entresemana_15:10", - "trip_headsign": "Artes Plásticas", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_artes", - "geoshape": 5, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 111, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_educacion_entresemana_15:20", - "trip_headsign": "Educación", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_educacion", - "geoshape": 6, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 112, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_artes_entresemana_15:30", - "trip_headsign": "Artes Plásticas", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_artes", - "geoshape": 5, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 113, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_educacion_entresemana_16:05", - "trip_headsign": "Educación", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_educacion", - "geoshape": 6, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 114, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_artes_entresemana_16:15", - "trip_headsign": "Artes Plásticas", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_artes", - "geoshape": 5, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 115, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_educacion_entresemana_16:30", - "trip_headsign": "Educación", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_educacion", - "geoshape": 6, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 116, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_artes_entresemana_16:40", - "trip_headsign": "Artes Plásticas", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_artes", - "geoshape": 5, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 117, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_educacion_entresemana_17:05", - "trip_headsign": "Educación", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_educacion", - "geoshape": 6, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 118, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_artes_entresemana_17:15", - "trip_headsign": "Artes Plásticas", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_artes", - "geoshape": 5, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 119, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_educacion_entresemana_17:30", - "trip_headsign": "Educación", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_educacion", - "geoshape": 6, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 120, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_artes_entresemana_17:40", - "trip_headsign": "Artes Plásticas", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_artes", - "geoshape": 5, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 121, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_educacion_entresemana_18:05", - "trip_headsign": "Educación", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_educacion", - "geoshape": 6, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 122, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_artes_entresemana_18:15", - "trip_headsign": "Artes Plásticas", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_artes", - "geoshape": 5, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 123, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_educacion_entresemana_18:30", - "trip_headsign": "Educación", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_educacion", - "geoshape": 6, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 124, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_artes_entresemana_18:40", - "trip_headsign": "Artes Plásticas", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_artes", - "geoshape": 5, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 125, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_educacion_entresemana_18:55", - "trip_headsign": "Educación", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_educacion", - "geoshape": 6, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 126, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_educacion_entresemana_19:15", - "trip_headsign": "Educación", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_educacion", - "geoshape": 6, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 127, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_artes_entresemana_19:50", - "trip_headsign": "Artes Plásticas", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_artes", - "geoshape": 5, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 128, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_educacion_entresemana_20:30", - "trip_headsign": "Educación", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_educacion", - "geoshape": 6, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 129, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_educacion_entresemana_20:40", - "trip_headsign": "Educación", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_educacion", - "geoshape": 6, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.trip", - "pk": 130, - "fields": { - "feed": "1", - "route_id": "bUCR_L1", - "service_id": "entresemana", - "trip_id": "hacia_educacion_entresemana_21:15", - "trip_headsign": "Educación", - "trip_short_name": "", - "direction_id": 1, - "block_id": "", - "shape_id": "hacia_educacion", - "geoshape": 6, - "wheelchair_accessible": 0, - "bikes_allowed": 2 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_06:10", - "arrival_time": "06:10:00", - "departure_time": "06:10:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 2, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_06:10", - "arrival_time": "06:18:28.582000", - "departure_time": "06:18:28.582000", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.554, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 3, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_06:10", - "arrival_time": "06:19:45.164000", - "departure_time": "06:19:45.164000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.788, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 4, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_06:10", - "arrival_time": "06:21:14.182000", - "departure_time": "06:21:14.182000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.06, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 5, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_06:10", - "arrival_time": "06:24:18.764000", - "departure_time": "06:24:18.764000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.624, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 6, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_06:10", - "arrival_time": "06:25:23.564000", - "departure_time": "06:25:23.564000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.822, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 7, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_06:10", - "arrival_time": "06:28:20.291000", - "departure_time": "06:28:20.291000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.362, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 8, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_06:10", - "arrival_time": "06:30:34.145000", - "departure_time": "06:30:34.145000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.771, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 9, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_06:30", - "arrival_time": "06:30:00", - "departure_time": "06:30:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 10, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_06:30", - "arrival_time": "06:38:28.582000", - "departure_time": "06:38:28.582000", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.554, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 11, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_06:30", - "arrival_time": "06:39:45.164000", - "departure_time": "06:39:45.164000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.788, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 12, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_06:30", - "arrival_time": "06:41:14.182000", - "departure_time": "06:41:14.182000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.06, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 13, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_06:30", - "arrival_time": "06:44:18.764000", - "departure_time": "06:44:18.764000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.624, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 14, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_06:30", - "arrival_time": "06:45:23.564000", - "departure_time": "06:45:23.564000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.822, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 15, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_06:30", - "arrival_time": "06:48:20.291000", - "departure_time": "06:48:20.291000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.362, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 16, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_06:30", - "arrival_time": "06:50:34.145000", - "departure_time": "06:50:34.145000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.771, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 17, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_07:00", - "arrival_time": "07:00:00", - "departure_time": "07:00:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 18, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_07:00", - "arrival_time": "07:08:28.582000", - "departure_time": "07:08:28.582000", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.554, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 19, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_07:00", - "arrival_time": "07:09:45.164000", - "departure_time": "07:09:45.164000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.788, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 20, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_07:00", - "arrival_time": "07:11:14.182000", - "departure_time": "07:11:14.182000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.06, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 21, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_07:00", - "arrival_time": "07:14:18.764000", - "departure_time": "07:14:18.764000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.624, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 22, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_07:00", - "arrival_time": "07:15:23.564000", - "departure_time": "07:15:23.564000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.822, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 23, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_07:00", - "arrival_time": "07:18:20.291000", - "departure_time": "07:18:20.291000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.362, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 24, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_07:00", - "arrival_time": "07:20:34.145000", - "departure_time": "07:20:34.145000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.771, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 25, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_07:20", - "arrival_time": "07:20:00", - "departure_time": "07:20:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 26, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_07:20", - "arrival_time": "07:28:28.582000", - "departure_time": "07:28:28.582000", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.554, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 27, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_07:20", - "arrival_time": "07:29:45.164000", - "departure_time": "07:29:45.164000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.788, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 28, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_07:20", - "arrival_time": "07:31:14.182000", - "departure_time": "07:31:14.182000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.06, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 29, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_07:20", - "arrival_time": "07:34:18.764000", - "departure_time": "07:34:18.764000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.624, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 30, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_07:20", - "arrival_time": "07:35:23.564000", - "departure_time": "07:35:23.564000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.822, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 31, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_07:20", - "arrival_time": "07:38:20.291000", - "departure_time": "07:38:20.291000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.362, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 32, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_07:20", - "arrival_time": "07:40:34.145000", - "departure_time": "07:40:34.145000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.771, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 33, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_07:50", - "arrival_time": "07:50:00", - "departure_time": "07:50:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 34, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_07:50", - "arrival_time": "07:58:28.582000", - "departure_time": "07:58:28.582000", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.554, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 35, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_07:50", - "arrival_time": "07:59:45.164000", - "departure_time": "07:59:45.164000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.788, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 36, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_07:50", - "arrival_time": "08:01:14.182000", - "departure_time": "08:01:14.182000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.06, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 37, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_07:50", - "arrival_time": "08:04:18.764000", - "departure_time": "08:04:18.764000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.624, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 38, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_07:50", - "arrival_time": "08:05:23.564000", - "departure_time": "08:05:23.564000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.822, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 39, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_07:50", - "arrival_time": "08:08:20.291000", - "departure_time": "08:08:20.291000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.362, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 40, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_07:50", - "arrival_time": "08:10:34.145000", - "departure_time": "08:10:34.145000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.771, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 41, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_08:10", - "arrival_time": "08:10:00", - "departure_time": "08:10:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 42, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_08:10", - "arrival_time": "08:18:28.582000", - "departure_time": "08:18:28.582000", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.554, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 43, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_08:10", - "arrival_time": "08:19:45.164000", - "departure_time": "08:19:45.164000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.788, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 44, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_08:10", - "arrival_time": "08:21:14.182000", - "departure_time": "08:21:14.182000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.06, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 45, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_08:10", - "arrival_time": "08:24:18.764000", - "departure_time": "08:24:18.764000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.624, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 46, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_08:10", - "arrival_time": "08:25:23.564000", - "departure_time": "08:25:23.564000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.822, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 47, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_08:10", - "arrival_time": "08:28:20.291000", - "departure_time": "08:28:20.291000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.362, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 48, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_08:10", - "arrival_time": "08:30:34.145000", - "departure_time": "08:30:34.145000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.771, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 49, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_08:55", - "arrival_time": "08:55:00", - "departure_time": "08:55:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 50, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_08:55", - "arrival_time": "09:03:28.582000", - "departure_time": "09:03:28.582000", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.554, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 51, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_08:55", - "arrival_time": "09:04:45.164000", - "departure_time": "09:04:45.164000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.788, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 52, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_08:55", - "arrival_time": "09:06:14.182000", - "departure_time": "09:06:14.182000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.06, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 53, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_08:55", - "arrival_time": "09:09:18.764000", - "departure_time": "09:09:18.764000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.624, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 54, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_08:55", - "arrival_time": "09:10:23.564000", - "departure_time": "09:10:23.564000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.822, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 55, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_08:55", - "arrival_time": "09:13:20.291000", - "departure_time": "09:13:20.291000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.362, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 56, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_08:55", - "arrival_time": "09:15:34.145000", - "departure_time": "09:15:34.145000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.771, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 57, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_09:15", - "arrival_time": "09:15:00", - "departure_time": "09:15:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 58, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_09:15", - "arrival_time": "09:23:28.582000", - "departure_time": "09:23:28.582000", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.554, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 59, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_09:15", - "arrival_time": "09:24:45.164000", - "departure_time": "09:24:45.164000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.788, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 60, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_09:15", - "arrival_time": "09:26:14.182000", - "departure_time": "09:26:14.182000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.06, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 61, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_09:15", - "arrival_time": "09:29:18.764000", - "departure_time": "09:29:18.764000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.624, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 62, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_09:15", - "arrival_time": "09:30:23.564000", - "departure_time": "09:30:23.564000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.822, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 63, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_09:15", - "arrival_time": "09:33:20.291000", - "departure_time": "09:33:20.291000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.362, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 64, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_09:15", - "arrival_time": "09:35:34.145000", - "departure_time": "09:35:34.145000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.771, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 65, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_09:45", - "arrival_time": "09:45:00", - "departure_time": "09:45:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 66, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_09:45", - "arrival_time": "09:53:28.582000", - "departure_time": "09:53:28.582000", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.554, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 67, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_09:45", - "arrival_time": "09:54:45.164000", - "departure_time": "09:54:45.164000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.788, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 68, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_09:45", - "arrival_time": "09:56:14.182000", - "departure_time": "09:56:14.182000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.06, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 69, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_09:45", - "arrival_time": "09:59:18.764000", - "departure_time": "09:59:18.764000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.624, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 70, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_09:45", - "arrival_time": "10:00:23.564000", - "departure_time": "10:00:23.564000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.822, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 71, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_09:45", - "arrival_time": "10:03:20.291000", - "departure_time": "10:03:20.291000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.362, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 72, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_09:45", - "arrival_time": "10:05:34.145000", - "departure_time": "10:05:34.145000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.771, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 73, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_10:05", - "arrival_time": "10:05:00", - "departure_time": "10:05:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 74, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_10:05", - "arrival_time": "10:13:28.582000", - "departure_time": "10:13:28.582000", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.554, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 75, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_10:05", - "arrival_time": "10:14:45.164000", - "departure_time": "10:14:45.164000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.788, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 76, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_10:05", - "arrival_time": "10:16:14.182000", - "departure_time": "10:16:14.182000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.06, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 77, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_10:05", - "arrival_time": "10:19:18.764000", - "departure_time": "10:19:18.764000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.624, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 78, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_10:05", - "arrival_time": "10:20:23.564000", - "departure_time": "10:20:23.564000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.822, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 79, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_10:05", - "arrival_time": "10:23:20.291000", - "departure_time": "10:23:20.291000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.362, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 80, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_10:05", - "arrival_time": "10:25:34.145000", - "departure_time": "10:25:34.145000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.771, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 81, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_10:35", - "arrival_time": "10:35:00", - "departure_time": "10:35:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 82, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_10:35", - "arrival_time": "10:43:28.582000", - "departure_time": "10:43:28.582000", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.554, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 83, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_10:35", - "arrival_time": "10:44:45.164000", - "departure_time": "10:44:45.164000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.788, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 84, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_10:35", - "arrival_time": "10:46:14.182000", - "departure_time": "10:46:14.182000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.06, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 85, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_10:35", - "arrival_time": "10:49:18.764000", - "departure_time": "10:49:18.764000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.624, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 86, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_10:35", - "arrival_time": "10:50:23.564000", - "departure_time": "10:50:23.564000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.822, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 87, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_10:35", - "arrival_time": "10:53:20.291000", - "departure_time": "10:53:20.291000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.362, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 88, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_10:35", - "arrival_time": "10:55:34.145000", - "departure_time": "10:55:34.145000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.771, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 89, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_10:55", - "arrival_time": "10:55:00", - "departure_time": "10:55:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 90, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_10:55", - "arrival_time": "11:03:28.582000", - "departure_time": "11:03:28.582000", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.554, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 91, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_10:55", - "arrival_time": "11:04:45.164000", - "departure_time": "11:04:45.164000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.788, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 92, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_10:55", - "arrival_time": "11:06:14.182000", - "departure_time": "11:06:14.182000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.06, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 93, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_10:55", - "arrival_time": "11:09:18.764000", - "departure_time": "11:09:18.764000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.624, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 94, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_10:55", - "arrival_time": "11:10:23.564000", - "departure_time": "11:10:23.564000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.822, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 95, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_10:55", - "arrival_time": "11:13:20.291000", - "departure_time": "11:13:20.291000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.362, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 96, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_10:55", - "arrival_time": "11:15:34.145000", - "departure_time": "11:15:34.145000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.771, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 97, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_11:15", - "arrival_time": "11:15:00", - "departure_time": "11:15:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 98, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_11:15", - "arrival_time": "11:23:28.582000", - "departure_time": "11:23:28.582000", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.554, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 99, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_11:15", - "arrival_time": "11:24:45.164000", - "departure_time": "11:24:45.164000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.788, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 100, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_11:15", - "arrival_time": "11:26:14.182000", - "departure_time": "11:26:14.182000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.06, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 101, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_11:15", - "arrival_time": "11:29:18.764000", - "departure_time": "11:29:18.764000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.624, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 102, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_11:15", - "arrival_time": "11:30:23.564000", - "departure_time": "11:30:23.564000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.822, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 103, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_11:15", - "arrival_time": "11:33:20.291000", - "departure_time": "11:33:20.291000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.362, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 104, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_11:15", - "arrival_time": "11:35:34.145000", - "departure_time": "11:35:34.145000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.771, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 105, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_11:25", - "arrival_time": "11:25:00", - "departure_time": "11:25:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 106, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_11:25", - "arrival_time": "11:33:28.582000", - "departure_time": "11:33:28.582000", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.554, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 107, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_11:25", - "arrival_time": "11:34:45.164000", - "departure_time": "11:34:45.164000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.788, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 108, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_11:25", - "arrival_time": "11:36:14.182000", - "departure_time": "11:36:14.182000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.06, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 109, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_11:25", - "arrival_time": "11:39:18.764000", - "departure_time": "11:39:18.764000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.624, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 110, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_11:25", - "arrival_time": "11:40:23.564000", - "departure_time": "11:40:23.564000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.822, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 111, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_11:25", - "arrival_time": "11:43:20.291000", - "departure_time": "11:43:20.291000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.362, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 112, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_11:25", - "arrival_time": "11:45:34.145000", - "departure_time": "11:45:34.145000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.771, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 113, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_11:40", - "arrival_time": "11:40:00", - "departure_time": "11:40:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 114, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_11:40", - "arrival_time": "11:48:28.582000", - "departure_time": "11:48:28.582000", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.554, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 115, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_11:40", - "arrival_time": "11:49:45.164000", - "departure_time": "11:49:45.164000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.788, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 116, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_11:40", - "arrival_time": "11:51:14.182000", - "departure_time": "11:51:14.182000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.06, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 117, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_11:40", - "arrival_time": "11:54:18.764000", - "departure_time": "11:54:18.764000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.624, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 118, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_11:40", - "arrival_time": "11:55:23.564000", - "departure_time": "11:55:23.564000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.822, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 119, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_11:40", - "arrival_time": "11:58:20.291000", - "departure_time": "11:58:20.291000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.362, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 120, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_11:40", - "arrival_time": "12:00:34.145000", - "departure_time": "12:00:34.145000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.771, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 121, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_12:00", - "arrival_time": "12:00:00", - "departure_time": "12:00:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 122, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_12:00", - "arrival_time": "12:08:28.582000", - "departure_time": "12:08:28.582000", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.554, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 123, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_12:00", - "arrival_time": "12:09:45.164000", - "departure_time": "12:09:45.164000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.788, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 124, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_12:00", - "arrival_time": "12:11:14.182000", - "departure_time": "12:11:14.182000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.06, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 125, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_12:00", - "arrival_time": "12:14:18.764000", - "departure_time": "12:14:18.764000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.624, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 126, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_12:00", - "arrival_time": "12:15:23.564000", - "departure_time": "12:15:23.564000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.822, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 127, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_12:00", - "arrival_time": "12:18:20.291000", - "departure_time": "12:18:20.291000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.362, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 128, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_12:00", - "arrival_time": "12:20:34.145000", - "departure_time": "12:20:34.145000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.771, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 129, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_12:25", - "arrival_time": "12:25:00", - "departure_time": "12:25:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 130, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_12:25", - "arrival_time": "12:33:28.582000", - "departure_time": "12:33:28.582000", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.554, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 131, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_12:25", - "arrival_time": "12:34:45.164000", - "departure_time": "12:34:45.164000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.788, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 132, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_12:25", - "arrival_time": "12:36:14.182000", - "departure_time": "12:36:14.182000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.06, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 133, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_12:25", - "arrival_time": "12:39:18.764000", - "departure_time": "12:39:18.764000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.624, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 134, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_12:25", - "arrival_time": "12:40:23.564000", - "departure_time": "12:40:23.564000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.822, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 135, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_12:25", - "arrival_time": "12:43:20.291000", - "departure_time": "12:43:20.291000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.362, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 136, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_12:25", - "arrival_time": "12:45:34.145000", - "departure_time": "12:45:34.145000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.771, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 137, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_12:35", - "arrival_time": "12:35:00", - "departure_time": "12:35:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 138, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_12:35", - "arrival_time": "12:43:28.582000", - "departure_time": "12:43:28.582000", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.554, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 139, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_12:35", - "arrival_time": "12:44:45.164000", - "departure_time": "12:44:45.164000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.788, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 140, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_12:35", - "arrival_time": "12:46:14.182000", - "departure_time": "12:46:14.182000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.06, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 141, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_12:35", - "arrival_time": "12:49:18.764000", - "departure_time": "12:49:18.764000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.624, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 142, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_12:35", - "arrival_time": "12:50:23.564000", - "departure_time": "12:50:23.564000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.822, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 143, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_12:35", - "arrival_time": "12:53:20.291000", - "departure_time": "12:53:20.291000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.362, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 144, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_12:35", - "arrival_time": "12:55:34.145000", - "departure_time": "12:55:34.145000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.771, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 145, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_13:10", - "arrival_time": "13:10:00", - "departure_time": "13:10:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 146, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_13:10", - "arrival_time": "13:18:28.582000", - "departure_time": "13:18:28.582000", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.554, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 147, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_13:10", - "arrival_time": "13:19:45.164000", - "departure_time": "13:19:45.164000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.788, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 148, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_13:10", - "arrival_time": "13:21:14.182000", - "departure_time": "13:21:14.182000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.06, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 149, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_13:10", - "arrival_time": "13:24:18.764000", - "departure_time": "13:24:18.764000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.624, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 150, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_13:10", - "arrival_time": "13:25:23.564000", - "departure_time": "13:25:23.564000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.822, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 151, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_13:10", - "arrival_time": "13:28:20.291000", - "departure_time": "13:28:20.291000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.362, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 152, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_13:10", - "arrival_time": "13:30:34.145000", - "departure_time": "13:30:34.145000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.771, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 153, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_13:45", - "arrival_time": "13:45:00", - "departure_time": "13:45:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 154, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_13:45", - "arrival_time": "13:53:28.582000", - "departure_time": "13:53:28.582000", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.554, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 155, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_13:45", - "arrival_time": "13:54:45.164000", - "departure_time": "13:54:45.164000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.788, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 156, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_13:45", - "arrival_time": "13:56:14.182000", - "departure_time": "13:56:14.182000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.06, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 157, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_13:45", - "arrival_time": "13:59:18.764000", - "departure_time": "13:59:18.764000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.624, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 158, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_13:45", - "arrival_time": "14:00:23.564000", - "departure_time": "14:00:23.564000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.822, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 159, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_13:45", - "arrival_time": "14:03:20.291000", - "departure_time": "14:03:20.291000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.362, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 160, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_13:45", - "arrival_time": "14:05:34.145000", - "departure_time": "14:05:34.145000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.771, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 161, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_14:10", - "arrival_time": "14:10:00", - "departure_time": "14:10:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 162, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_14:10", - "arrival_time": "14:18:28.582000", - "departure_time": "14:18:28.582000", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.554, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 163, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_14:10", - "arrival_time": "14:19:45.164000", - "departure_time": "14:19:45.164000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.788, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 164, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_14:10", - "arrival_time": "14:21:14.182000", - "departure_time": "14:21:14.182000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.06, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 165, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_14:10", - "arrival_time": "14:24:18.764000", - "departure_time": "14:24:18.764000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.624, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 166, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_14:10", - "arrival_time": "14:25:23.564000", - "departure_time": "14:25:23.564000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.822, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 167, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_14:10", - "arrival_time": "14:28:20.291000", - "departure_time": "14:28:20.291000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.362, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 168, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_14:10", - "arrival_time": "14:30:34.145000", - "departure_time": "14:30:34.145000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.771, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 169, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_14:30", - "arrival_time": "14:30:00", - "departure_time": "14:30:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 170, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_14:30", - "arrival_time": "14:38:28.582000", - "departure_time": "14:38:28.582000", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.554, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 171, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_14:30", - "arrival_time": "14:39:45.164000", - "departure_time": "14:39:45.164000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.788, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 172, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_14:30", - "arrival_time": "14:41:14.182000", - "departure_time": "14:41:14.182000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.06, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 173, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_14:30", - "arrival_time": "14:44:18.764000", - "departure_time": "14:44:18.764000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.624, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 174, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_14:30", - "arrival_time": "14:45:23.564000", - "departure_time": "14:45:23.564000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.822, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 175, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_14:30", - "arrival_time": "14:48:20.291000", - "departure_time": "14:48:20.291000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.362, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 176, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_14:30", - "arrival_time": "14:50:34.145000", - "departure_time": "14:50:34.145000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.771, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 177, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_14:55", - "arrival_time": "14:55:00", - "departure_time": "14:55:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 178, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_14:55", - "arrival_time": "15:03:28.582000", - "departure_time": "15:03:28.582000", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.554, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 179, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_14:55", - "arrival_time": "15:04:45.164000", - "departure_time": "15:04:45.164000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.788, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 180, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_14:55", - "arrival_time": "15:06:14.182000", - "departure_time": "15:06:14.182000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.06, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 181, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_14:55", - "arrival_time": "15:09:18.764000", - "departure_time": "15:09:18.764000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.624, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 182, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_14:55", - "arrival_time": "15:10:23.564000", - "departure_time": "15:10:23.564000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.822, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 183, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_14:55", - "arrival_time": "15:13:20.291000", - "departure_time": "15:13:20.291000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.362, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 184, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_14:55", - "arrival_time": "15:15:34.145000", - "departure_time": "15:15:34.145000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.771, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 185, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_15:15", - "arrival_time": "15:15:00", - "departure_time": "15:15:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 186, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_15:15", - "arrival_time": "15:23:28.582000", - "departure_time": "15:23:28.582000", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.554, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 187, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_15:15", - "arrival_time": "15:24:45.164000", - "departure_time": "15:24:45.164000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.788, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 188, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_15:15", - "arrival_time": "15:26:14.182000", - "departure_time": "15:26:14.182000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.06, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 189, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_15:15", - "arrival_time": "15:29:18.764000", - "departure_time": "15:29:18.764000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.624, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 190, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_15:15", - "arrival_time": "15:30:23.564000", - "departure_time": "15:30:23.564000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.822, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 191, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_15:15", - "arrival_time": "15:33:20.291000", - "departure_time": "15:33:20.291000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.362, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 192, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_15:15", - "arrival_time": "15:35:34.145000", - "departure_time": "15:35:34.145000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.771, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 193, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_15:55", - "arrival_time": "15:55:00", - "departure_time": "15:55:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 194, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_15:55", - "arrival_time": "16:03:28.582000", - "departure_time": "16:03:28.582000", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.554, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 195, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_15:55", - "arrival_time": "16:04:45.164000", - "departure_time": "16:04:45.164000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.788, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 196, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_15:55", - "arrival_time": "16:06:14.182000", - "departure_time": "16:06:14.182000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.06, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 197, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_15:55", - "arrival_time": "16:09:18.764000", - "departure_time": "16:09:18.764000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.624, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 198, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_15:55", - "arrival_time": "16:10:23.564000", - "departure_time": "16:10:23.564000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.822, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 199, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_15:55", - "arrival_time": "16:13:20.291000", - "departure_time": "16:13:20.291000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.362, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 200, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_15:55", - "arrival_time": "16:15:34.145000", - "departure_time": "16:15:34.145000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.771, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 201, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_16:30", - "arrival_time": "16:30:00", - "departure_time": "16:30:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 202, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_16:30", - "arrival_time": "16:38:28.582000", - "departure_time": "16:38:28.582000", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.554, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 203, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_16:30", - "arrival_time": "16:39:45.164000", - "departure_time": "16:39:45.164000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.788, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 204, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_16:30", - "arrival_time": "16:41:14.182000", - "departure_time": "16:41:14.182000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.06, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 205, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_16:30", - "arrival_time": "16:44:18.764000", - "departure_time": "16:44:18.764000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.624, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 206, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_16:30", - "arrival_time": "16:45:23.564000", - "departure_time": "16:45:23.564000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.822, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 207, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_16:30", - "arrival_time": "16:48:20.291000", - "departure_time": "16:48:20.291000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.362, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 208, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_16:30", - "arrival_time": "16:50:34.145000", - "departure_time": "16:50:34.145000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.771, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 209, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_16:55", - "arrival_time": "16:55:00", - "departure_time": "16:55:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 210, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_16:55", - "arrival_time": "17:03:28.582000", - "departure_time": "17:03:28.582000", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.554, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 211, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_16:55", - "arrival_time": "17:04:45.164000", - "departure_time": "17:04:45.164000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.788, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 212, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_16:55", - "arrival_time": "17:06:14.182000", - "departure_time": "17:06:14.182000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.06, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 213, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_16:55", - "arrival_time": "17:09:18.764000", - "departure_time": "17:09:18.764000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.624, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 214, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_16:55", - "arrival_time": "17:10:23.564000", - "departure_time": "17:10:23.564000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.822, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 215, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_16:55", - "arrival_time": "17:13:20.291000", - "departure_time": "17:13:20.291000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.362, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 216, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_16:55", - "arrival_time": "17:15:34.145000", - "departure_time": "17:15:34.145000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.771, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 217, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_17:30", - "arrival_time": "17:30:00", - "departure_time": "17:30:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 218, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_17:30", - "arrival_time": "17:38:28.582000", - "departure_time": "17:38:28.582000", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.554, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 219, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_17:30", - "arrival_time": "17:39:45.164000", - "departure_time": "17:39:45.164000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.788, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 220, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_17:30", - "arrival_time": "17:41:14.182000", - "departure_time": "17:41:14.182000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.06, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 221, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_17:30", - "arrival_time": "17:44:18.764000", - "departure_time": "17:44:18.764000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.624, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 222, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_17:30", - "arrival_time": "17:45:23.564000", - "departure_time": "17:45:23.564000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.822, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 223, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_17:30", - "arrival_time": "17:48:20.291000", - "departure_time": "17:48:20.291000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.362, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 224, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_17:30", - "arrival_time": "17:50:34.145000", - "departure_time": "17:50:34.145000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.771, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 225, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_17:55", - "arrival_time": "17:55:00", - "departure_time": "17:55:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 226, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_17:55", - "arrival_time": "18:03:28.582000", - "departure_time": "18:03:28.582000", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.554, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 227, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_17:55", - "arrival_time": "18:04:45.164000", - "departure_time": "18:04:45.164000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.788, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 228, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_17:55", - "arrival_time": "18:06:14.182000", - "departure_time": "18:06:14.182000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.06, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 229, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_17:55", - "arrival_time": "18:09:18.764000", - "departure_time": "18:09:18.764000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.624, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 230, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_17:55", - "arrival_time": "18:10:23.564000", - "departure_time": "18:10:23.564000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.822, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 231, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_17:55", - "arrival_time": "18:13:20.291000", - "departure_time": "18:13:20.291000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.362, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 232, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_17:55", - "arrival_time": "18:15:34.145000", - "departure_time": "18:15:34.145000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.771, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 233, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_18:25", - "arrival_time": "18:25:00", - "departure_time": "18:25:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 234, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_18:25", - "arrival_time": "18:33:28.582000", - "departure_time": "18:33:28.582000", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.554, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 235, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_18:25", - "arrival_time": "18:34:45.164000", - "departure_time": "18:34:45.164000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.788, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 236, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_18:25", - "arrival_time": "18:36:14.182000", - "departure_time": "18:36:14.182000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.06, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 237, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_18:25", - "arrival_time": "18:39:18.764000", - "departure_time": "18:39:18.764000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.624, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 238, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_18:25", - "arrival_time": "18:40:23.564000", - "departure_time": "18:40:23.564000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.822, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 239, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_18:25", - "arrival_time": "18:43:20.291000", - "departure_time": "18:43:20.291000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.362, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 240, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_18:25", - "arrival_time": "18:45:34.145000", - "departure_time": "18:45:34.145000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.771, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 241, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_18:50", - "arrival_time": "18:50:00", - "departure_time": "18:50:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 242, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_18:50", - "arrival_time": "18:58:28.582000", - "departure_time": "18:58:28.582000", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.554, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 243, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_18:50", - "arrival_time": "18:59:45.164000", - "departure_time": "18:59:45.164000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.788, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 244, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_18:50", - "arrival_time": "19:01:14.182000", - "departure_time": "19:01:14.182000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.06, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 245, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_18:50", - "arrival_time": "19:04:18.764000", - "departure_time": "19:04:18.764000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.624, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 246, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_18:50", - "arrival_time": "19:05:23.564000", - "departure_time": "19:05:23.564000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.822, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 247, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_18:50", - "arrival_time": "19:08:20.291000", - "departure_time": "19:08:20.291000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.362, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 248, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_sin_milla_entresemana_18:50", - "arrival_time": "19:10:34.145000", - "departure_time": "19:10:34.145000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.771, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 249, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_19:15", - "arrival_time": "19:15:00", - "departure_time": "19:15:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 250, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_19:15", - "arrival_time": "19:19:22.473000", - "departure_time": "19:19:22.473000", - "stop_id": "bUCR_0_03", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.802, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 251, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_19:15", - "arrival_time": "19:21:20.945000", - "departure_time": "19:21:20.945000", - "stop_id": "bUCR_0_04", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.164, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 252, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_19:15", - "arrival_time": "19:26:19.418000", - "departure_time": "19:26:19.418000", - "stop_id": "bUCR_0_05", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.076, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 253, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_19:15", - "arrival_time": "19:27:36.655000", - "departure_time": "19:27:36.655000", - "stop_id": "bUCR_0_06", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.312, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 254, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_19:15", - "arrival_time": "19:29:13.200000", - "departure_time": "19:29:13.200000", - "stop_id": "bUCR_0_07", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.607, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 255, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_19:15", - "arrival_time": "19:32:05.673000", - "departure_time": "19:32:05.673000", - "stop_id": "bUCR_0_08", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.134, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 256, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_19:15", - "arrival_time": "19:33:10.473000", - "departure_time": "19:33:10.473000", - "stop_id": "bUCR_0_09", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.332, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 257, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_19:15", - "arrival_time": "19:36:00.982000", - "departure_time": "19:36:00.982000", - "stop_id": "bUCR_0_10", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.853, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 258, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_19:15", - "arrival_time": "19:38:21.055000", - "departure_time": "19:38:21.055000", - "stop_id": "bUCR_0_11", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 4.281, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 259, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_20:10", - "arrival_time": "20:10:00", - "departure_time": "20:10:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 260, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_20:10", - "arrival_time": "20:14:22.473000", - "departure_time": "20:14:22.473000", - "stop_id": "bUCR_0_03", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.802, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 261, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_20:10", - "arrival_time": "20:16:20.945000", - "departure_time": "20:16:20.945000", - "stop_id": "bUCR_0_04", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.164, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 262, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_20:10", - "arrival_time": "20:21:19.418000", - "departure_time": "20:21:19.418000", - "stop_id": "bUCR_0_05", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.076, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 263, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_20:10", - "arrival_time": "20:22:36.655000", - "departure_time": "20:22:36.655000", - "stop_id": "bUCR_0_06", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.312, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 264, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_20:10", - "arrival_time": "20:24:13.200000", - "departure_time": "20:24:13.200000", - "stop_id": "bUCR_0_07", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.607, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 265, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_20:10", - "arrival_time": "20:27:05.673000", - "departure_time": "20:27:05.673000", - "stop_id": "bUCR_0_08", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.134, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 266, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_20:10", - "arrival_time": "20:28:10.473000", - "departure_time": "20:28:10.473000", - "stop_id": "bUCR_0_09", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.332, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 267, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_20:10", - "arrival_time": "20:31:00.982000", - "departure_time": "20:31:00.982000", - "stop_id": "bUCR_0_10", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.853, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 268, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_20:10", - "arrival_time": "20:33:21.055000", - "departure_time": "20:33:21.055000", - "stop_id": "bUCR_0_11", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 4.281, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 269, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_20:50", - "arrival_time": "20:50:00", - "departure_time": "20:50:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 270, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_20:50", - "arrival_time": "20:54:22.473000", - "departure_time": "20:54:22.473000", - "stop_id": "bUCR_0_03", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.802, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 271, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_20:50", - "arrival_time": "20:56:20.945000", - "departure_time": "20:56:20.945000", - "stop_id": "bUCR_0_04", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.164, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 272, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_20:50", - "arrival_time": "21:01:19.418000", - "departure_time": "21:01:19.418000", - "stop_id": "bUCR_0_05", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.076, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 273, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_20:50", - "arrival_time": "21:02:36.655000", - "departure_time": "21:02:36.655000", - "stop_id": "bUCR_0_06", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.312, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 274, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_20:50", - "arrival_time": "21:04:13.200000", - "departure_time": "21:04:13.200000", - "stop_id": "bUCR_0_07", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.607, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 275, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_20:50", - "arrival_time": "21:07:05.673000", - "departure_time": "21:07:05.673000", - "stop_id": "bUCR_0_08", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.134, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 276, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_20:50", - "arrival_time": "21:08:10.473000", - "departure_time": "21:08:10.473000", - "stop_id": "bUCR_0_09", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.332, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 277, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_20:50", - "arrival_time": "21:11:00.982000", - "departure_time": "21:11:00.982000", - "stop_id": "bUCR_0_10", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.853, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 278, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_20:50", - "arrival_time": "21:13:21.055000", - "departure_time": "21:13:21.055000", - "stop_id": "bUCR_0_11", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 4.281, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 279, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_21:00", - "arrival_time": "21:00:00", - "departure_time": "21:00:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 280, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_21:00", - "arrival_time": "21:04:22.473000", - "departure_time": "21:04:22.473000", - "stop_id": "bUCR_0_03", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.802, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 281, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_21:00", - "arrival_time": "21:06:20.945000", - "departure_time": "21:06:20.945000", - "stop_id": "bUCR_0_04", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.164, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 282, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_21:00", - "arrival_time": "21:11:19.418000", - "departure_time": "21:11:19.418000", - "stop_id": "bUCR_0_05", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.076, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 283, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_21:00", - "arrival_time": "21:12:36.655000", - "departure_time": "21:12:36.655000", - "stop_id": "bUCR_0_06", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.312, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 284, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_21:00", - "arrival_time": "21:14:13.200000", - "departure_time": "21:14:13.200000", - "stop_id": "bUCR_0_07", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.607, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 285, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_21:00", - "arrival_time": "21:17:05.673000", - "departure_time": "21:17:05.673000", - "stop_id": "bUCR_0_08", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.134, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 286, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_21:00", - "arrival_time": "21:18:10.473000", - "departure_time": "21:18:10.473000", - "stop_id": "bUCR_0_09", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.332, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 287, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_21:00", - "arrival_time": "21:21:00.982000", - "departure_time": "21:21:00.982000", - "stop_id": "bUCR_0_10", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.853, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 288, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_21:00", - "arrival_time": "21:23:21.055000", - "departure_time": "21:23:21.055000", - "stop_id": "bUCR_0_11", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 4.281, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 289, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_21:35", - "arrival_time": "21:35:00", - "departure_time": "21:35:00", - "stop_id": "bUCR_0_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 290, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_21:35", - "arrival_time": "21:39:22.473000", - "departure_time": "21:39:22.473000", - "stop_id": "bUCR_0_03", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.802, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 291, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_21:35", - "arrival_time": "21:41:20.945000", - "departure_time": "21:41:20.945000", - "stop_id": "bUCR_0_04", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.164, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 292, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_21:35", - "arrival_time": "21:46:19.418000", - "departure_time": "21:46:19.418000", - "stop_id": "bUCR_0_05", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.076, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 293, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_21:35", - "arrival_time": "21:47:36.655000", - "departure_time": "21:47:36.655000", - "stop_id": "bUCR_0_06", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.312, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 294, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_21:35", - "arrival_time": "21:49:13.200000", - "departure_time": "21:49:13.200000", - "stop_id": "bUCR_0_07", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.607, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 295, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_21:35", - "arrival_time": "21:52:05.673000", - "departure_time": "21:52:05.673000", - "stop_id": "bUCR_0_08", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.134, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 296, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_21:35", - "arrival_time": "21:53:10.473000", - "departure_time": "21:53:10.473000", - "stop_id": "bUCR_0_09", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.332, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 297, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_21:35", - "arrival_time": "21:56:00.982000", - "departure_time": "21:56:00.982000", - "stop_id": "bUCR_0_10", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.853, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 298, - "fields": { - "feed": "1", - "trip_id": "desde_educacion_con_milla_entresemana_21:35", - "arrival_time": "21:58:21.055000", - "departure_time": "21:58:21.055000", - "stop_id": "bUCR_0_11", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 4.281, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 299, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_06:20", - "arrival_time": "06:20:00", - "departure_time": "06:20:00", - "stop_id": "bUCR_0_02", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 300, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_06:20", - "arrival_time": "06:26:36", - "departure_time": "06:26:36", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.21, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 301, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_06:20", - "arrival_time": "06:27:54.218000", - "departure_time": "06:27:54.218000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.449, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 302, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_06:20", - "arrival_time": "06:29:32.400000", - "departure_time": "06:29:32.400000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.749, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 303, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_06:20", - "arrival_time": "06:32:24.545000", - "departure_time": "06:32:24.545000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.275, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 304, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_06:20", - "arrival_time": "06:33:29.345000", - "departure_time": "06:33:29.345000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.473, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 305, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_06:20", - "arrival_time": "06:36:13.964000", - "departure_time": "06:36:13.964000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.976, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 306, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_06:20", - "arrival_time": "06:38:40.255000", - "departure_time": "06:38:40.255000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.423, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 307, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_06:40", - "arrival_time": "06:40:00", - "departure_time": "06:40:00", - "stop_id": "bUCR_0_02", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 308, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_06:40", - "arrival_time": "06:46:36", - "departure_time": "06:46:36", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.21, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 309, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_06:40", - "arrival_time": "06:47:54.218000", - "departure_time": "06:47:54.218000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.449, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 310, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_06:40", - "arrival_time": "06:49:32.400000", - "departure_time": "06:49:32.400000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.749, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 311, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_06:40", - "arrival_time": "06:52:24.545000", - "departure_time": "06:52:24.545000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.275, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 312, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_06:40", - "arrival_time": "06:53:29.345000", - "departure_time": "06:53:29.345000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.473, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 313, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_06:40", - "arrival_time": "06:56:13.964000", - "departure_time": "06:56:13.964000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.976, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 314, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_06:40", - "arrival_time": "06:58:40.255000", - "departure_time": "06:58:40.255000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.423, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 315, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_07:10", - "arrival_time": "07:10:00", - "departure_time": "07:10:00", - "stop_id": "bUCR_0_02", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 316, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_07:10", - "arrival_time": "07:16:36", - "departure_time": "07:16:36", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.21, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 317, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_07:10", - "arrival_time": "07:17:54.218000", - "departure_time": "07:17:54.218000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.449, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 318, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_07:10", - "arrival_time": "07:19:32.400000", - "departure_time": "07:19:32.400000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.749, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 319, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_07:10", - "arrival_time": "07:22:24.545000", - "departure_time": "07:22:24.545000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.275, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 320, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_07:10", - "arrival_time": "07:23:29.345000", - "departure_time": "07:23:29.345000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.473, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 321, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_07:10", - "arrival_time": "07:26:13.964000", - "departure_time": "07:26:13.964000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.976, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 322, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_07:10", - "arrival_time": "07:28:40.255000", - "departure_time": "07:28:40.255000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.423, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 323, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_07:30", - "arrival_time": "07:30:00", - "departure_time": "07:30:00", - "stop_id": "bUCR_0_02", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 324, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_07:30", - "arrival_time": "07:36:36", - "departure_time": "07:36:36", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.21, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 325, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_07:30", - "arrival_time": "07:37:54.218000", - "departure_time": "07:37:54.218000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.449, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 326, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_07:30", - "arrival_time": "07:39:32.400000", - "departure_time": "07:39:32.400000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.749, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 327, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_07:30", - "arrival_time": "07:42:24.545000", - "departure_time": "07:42:24.545000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.275, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 328, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_07:30", - "arrival_time": "07:43:29.345000", - "departure_time": "07:43:29.345000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.473, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 329, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_07:30", - "arrival_time": "07:46:13.964000", - "departure_time": "07:46:13.964000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.976, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 330, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_07:30", - "arrival_time": "07:48:40.255000", - "departure_time": "07:48:40.255000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.423, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 331, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_08:00", - "arrival_time": "08:00:00", - "departure_time": "08:00:00", - "stop_id": "bUCR_0_02", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 332, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_08:00", - "arrival_time": "08:06:36", - "departure_time": "08:06:36", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.21, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 333, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_08:00", - "arrival_time": "08:07:54.218000", - "departure_time": "08:07:54.218000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.449, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 334, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_08:00", - "arrival_time": "08:09:32.400000", - "departure_time": "08:09:32.400000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.749, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 335, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_08:00", - "arrival_time": "08:12:24.545000", - "departure_time": "08:12:24.545000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.275, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 336, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_08:00", - "arrival_time": "08:13:29.345000", - "departure_time": "08:13:29.345000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.473, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 337, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_08:00", - "arrival_time": "08:16:13.964000", - "departure_time": "08:16:13.964000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.976, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 338, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_08:00", - "arrival_time": "08:18:40.255000", - "departure_time": "08:18:40.255000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.423, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 339, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_08:35", - "arrival_time": "08:35:00", - "departure_time": "08:35:00", - "stop_id": "bUCR_0_02", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 340, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_08:35", - "arrival_time": "08:41:36", - "departure_time": "08:41:36", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.21, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 341, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_08:35", - "arrival_time": "08:42:54.218000", - "departure_time": "08:42:54.218000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.449, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 342, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_08:35", - "arrival_time": "08:44:32.400000", - "departure_time": "08:44:32.400000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.749, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 343, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_08:35", - "arrival_time": "08:47:24.545000", - "departure_time": "08:47:24.545000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.275, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 344, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_08:35", - "arrival_time": "08:48:29.345000", - "departure_time": "08:48:29.345000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.473, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 345, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_08:35", - "arrival_time": "08:51:13.964000", - "departure_time": "08:51:13.964000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.976, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 346, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_08:35", - "arrival_time": "08:53:40.255000", - "departure_time": "08:53:40.255000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.423, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 347, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_09:05", - "arrival_time": "09:05:00", - "departure_time": "09:05:00", - "stop_id": "bUCR_0_02", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 348, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_09:05", - "arrival_time": "09:11:36", - "departure_time": "09:11:36", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.21, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 349, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_09:05", - "arrival_time": "09:12:54.218000", - "departure_time": "09:12:54.218000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.449, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 350, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_09:05", - "arrival_time": "09:14:32.400000", - "departure_time": "09:14:32.400000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.749, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 351, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_09:05", - "arrival_time": "09:17:24.545000", - "departure_time": "09:17:24.545000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.275, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 352, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_09:05", - "arrival_time": "09:18:29.345000", - "departure_time": "09:18:29.345000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.473, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 353, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_09:05", - "arrival_time": "09:21:13.964000", - "departure_time": "09:21:13.964000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.976, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 354, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_09:05", - "arrival_time": "09:23:40.255000", - "departure_time": "09:23:40.255000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.423, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 355, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_09:25", - "arrival_time": "09:25:00", - "departure_time": "09:25:00", - "stop_id": "bUCR_0_02", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 356, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_09:25", - "arrival_time": "09:31:36", - "departure_time": "09:31:36", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.21, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 357, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_09:25", - "arrival_time": "09:32:54.218000", - "departure_time": "09:32:54.218000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.449, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 358, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_09:25", - "arrival_time": "09:34:32.400000", - "departure_time": "09:34:32.400000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.749, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 359, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_09:25", - "arrival_time": "09:37:24.545000", - "departure_time": "09:37:24.545000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.275, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 360, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_09:25", - "arrival_time": "09:38:29.345000", - "departure_time": "09:38:29.345000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.473, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 361, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_09:25", - "arrival_time": "09:41:13.964000", - "departure_time": "09:41:13.964000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.976, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 362, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_09:25", - "arrival_time": "09:43:40.255000", - "departure_time": "09:43:40.255000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.423, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 363, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_09:55", - "arrival_time": "09:55:00", - "departure_time": "09:55:00", - "stop_id": "bUCR_0_02", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 364, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_09:55", - "arrival_time": "10:01:36", - "departure_time": "10:01:36", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.21, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 365, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_09:55", - "arrival_time": "10:02:54.218000", - "departure_time": "10:02:54.218000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.449, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 366, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_09:55", - "arrival_time": "10:04:32.400000", - "departure_time": "10:04:32.400000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.749, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 367, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_09:55", - "arrival_time": "10:07:24.545000", - "departure_time": "10:07:24.545000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.275, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 368, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_09:55", - "arrival_time": "10:08:29.345000", - "departure_time": "10:08:29.345000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.473, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 369, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_09:55", - "arrival_time": "10:11:13.964000", - "departure_time": "10:11:13.964000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.976, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 370, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_09:55", - "arrival_time": "10:13:40.255000", - "departure_time": "10:13:40.255000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.423, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 371, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_10:15", - "arrival_time": "10:15:00", - "departure_time": "10:15:00", - "stop_id": "bUCR_0_02", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 372, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_10:15", - "arrival_time": "10:21:36", - "departure_time": "10:21:36", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.21, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 373, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_10:15", - "arrival_time": "10:22:54.218000", - "departure_time": "10:22:54.218000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.449, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 374, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_10:15", - "arrival_time": "10:24:32.400000", - "departure_time": "10:24:32.400000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.749, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 375, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_10:15", - "arrival_time": "10:27:24.545000", - "departure_time": "10:27:24.545000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.275, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 376, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_10:15", - "arrival_time": "10:28:29.345000", - "departure_time": "10:28:29.345000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.473, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 377, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_10:15", - "arrival_time": "10:31:13.964000", - "departure_time": "10:31:13.964000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.976, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 378, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_10:15", - "arrival_time": "10:33:40.255000", - "departure_time": "10:33:40.255000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.423, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 379, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_10:45", - "arrival_time": "10:45:00", - "departure_time": "10:45:00", - "stop_id": "bUCR_0_02", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 380, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_10:45", - "arrival_time": "10:51:36", - "departure_time": "10:51:36", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.21, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 381, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_10:45", - "arrival_time": "10:52:54.218000", - "departure_time": "10:52:54.218000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.449, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 382, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_10:45", - "arrival_time": "10:54:32.400000", - "departure_time": "10:54:32.400000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.749, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 383, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_10:45", - "arrival_time": "10:57:24.545000", - "departure_time": "10:57:24.545000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.275, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 384, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_10:45", - "arrival_time": "10:58:29.345000", - "departure_time": "10:58:29.345000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.473, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 385, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_10:45", - "arrival_time": "11:01:13.964000", - "departure_time": "11:01:13.964000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.976, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 386, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_10:45", - "arrival_time": "11:03:40.255000", - "departure_time": "11:03:40.255000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.423, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 387, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_11:05", - "arrival_time": "11:05:00", - "departure_time": "11:05:00", - "stop_id": "bUCR_0_02", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 388, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_11:05", - "arrival_time": "11:11:36", - "departure_time": "11:11:36", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.21, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 389, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_11:05", - "arrival_time": "11:12:54.218000", - "departure_time": "11:12:54.218000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.449, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 390, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_11:05", - "arrival_time": "11:14:32.400000", - "departure_time": "11:14:32.400000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.749, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 391, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_11:05", - "arrival_time": "11:17:24.545000", - "departure_time": "11:17:24.545000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.275, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 392, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_11:05", - "arrival_time": "11:18:29.345000", - "departure_time": "11:18:29.345000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.473, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 393, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_11:05", - "arrival_time": "11:21:13.964000", - "departure_time": "11:21:13.964000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.976, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 394, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_11:05", - "arrival_time": "11:23:40.255000", - "departure_time": "11:23:40.255000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.423, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 395, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_11:35", - "arrival_time": "11:35:00", - "departure_time": "11:35:00", - "stop_id": "bUCR_0_02", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 396, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_11:35", - "arrival_time": "11:41:36", - "departure_time": "11:41:36", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.21, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 397, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_11:35", - "arrival_time": "11:42:54.218000", - "departure_time": "11:42:54.218000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.449, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 398, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_11:35", - "arrival_time": "11:44:32.400000", - "departure_time": "11:44:32.400000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.749, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 399, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_11:35", - "arrival_time": "11:47:24.545000", - "departure_time": "11:47:24.545000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.275, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 400, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_11:35", - "arrival_time": "11:48:29.345000", - "departure_time": "11:48:29.345000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.473, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 401, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_11:35", - "arrival_time": "11:51:13.964000", - "departure_time": "11:51:13.964000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.976, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 402, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_11:35", - "arrival_time": "11:53:40.255000", - "departure_time": "11:53:40.255000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.423, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 403, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_11:50", - "arrival_time": "11:50:00", - "departure_time": "11:50:00", - "stop_id": "bUCR_0_02", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 404, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_11:50", - "arrival_time": "11:56:36", - "departure_time": "11:56:36", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.21, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 405, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_11:50", - "arrival_time": "11:57:54.218000", - "departure_time": "11:57:54.218000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.449, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 406, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_11:50", - "arrival_time": "11:59:32.400000", - "departure_time": "11:59:32.400000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.749, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 407, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_11:50", - "arrival_time": "12:02:24.545000", - "departure_time": "12:02:24.545000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.275, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 408, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_11:50", - "arrival_time": "12:03:29.345000", - "departure_time": "12:03:29.345000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.473, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 409, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_11:50", - "arrival_time": "12:06:13.964000", - "departure_time": "12:06:13.964000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.976, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 410, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_11:50", - "arrival_time": "12:08:40.255000", - "departure_time": "12:08:40.255000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.423, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 411, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_12:10", - "arrival_time": "12:10:00", - "departure_time": "12:10:00", - "stop_id": "bUCR_0_02", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 412, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_12:10", - "arrival_time": "12:16:36", - "departure_time": "12:16:36", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.21, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 413, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_12:10", - "arrival_time": "12:17:54.218000", - "departure_time": "12:17:54.218000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.449, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 414, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_12:10", - "arrival_time": "12:19:32.400000", - "departure_time": "12:19:32.400000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.749, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 415, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_12:10", - "arrival_time": "12:22:24.545000", - "departure_time": "12:22:24.545000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.275, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 416, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_12:10", - "arrival_time": "12:23:29.345000", - "departure_time": "12:23:29.345000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.473, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 417, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_12:10", - "arrival_time": "12:26:13.964000", - "departure_time": "12:26:13.964000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.976, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 418, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_12:10", - "arrival_time": "12:28:40.255000", - "departure_time": "12:28:40.255000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.423, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 419, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_12:30", - "arrival_time": "12:30:00", - "departure_time": "12:30:00", - "stop_id": "bUCR_0_02", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 420, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_12:30", - "arrival_time": "12:36:36", - "departure_time": "12:36:36", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.21, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 421, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_12:30", - "arrival_time": "12:37:54.218000", - "departure_time": "12:37:54.218000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.449, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 422, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_12:30", - "arrival_time": "12:39:32.400000", - "departure_time": "12:39:32.400000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.749, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 423, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_12:30", - "arrival_time": "12:42:24.545000", - "departure_time": "12:42:24.545000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.275, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 424, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_12:30", - "arrival_time": "12:43:29.345000", - "departure_time": "12:43:29.345000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.473, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 425, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_12:30", - "arrival_time": "12:46:13.964000", - "departure_time": "12:46:13.964000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.976, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 426, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_12:30", - "arrival_time": "12:48:40.255000", - "departure_time": "12:48:40.255000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.423, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 427, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_12:45", - "arrival_time": "12:45:00", - "departure_time": "12:45:00", - "stop_id": "bUCR_0_02", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 428, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_12:45", - "arrival_time": "12:51:36", - "departure_time": "12:51:36", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.21, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 429, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_12:45", - "arrival_time": "12:52:54.218000", - "departure_time": "12:52:54.218000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.449, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 430, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_12:45", - "arrival_time": "12:54:32.400000", - "departure_time": "12:54:32.400000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.749, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 431, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_12:45", - "arrival_time": "12:57:24.545000", - "departure_time": "12:57:24.545000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.275, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 432, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_12:45", - "arrival_time": "12:58:29.345000", - "departure_time": "12:58:29.345000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.473, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 433, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_12:45", - "arrival_time": "13:01:13.964000", - "departure_time": "13:01:13.964000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.976, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 434, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_12:45", - "arrival_time": "13:03:40.255000", - "departure_time": "13:03:40.255000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.423, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 435, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_13:20", - "arrival_time": "13:20:00", - "departure_time": "13:20:00", - "stop_id": "bUCR_0_02", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 436, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_13:20", - "arrival_time": "13:26:36", - "departure_time": "13:26:36", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.21, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 437, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_13:20", - "arrival_time": "13:27:54.218000", - "departure_time": "13:27:54.218000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.449, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 438, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_13:20", - "arrival_time": "13:29:32.400000", - "departure_time": "13:29:32.400000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.749, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 439, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_13:20", - "arrival_time": "13:32:24.545000", - "departure_time": "13:32:24.545000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.275, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 440, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_13:20", - "arrival_time": "13:33:29.345000", - "departure_time": "13:33:29.345000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.473, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 441, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_13:20", - "arrival_time": "13:36:13.964000", - "departure_time": "13:36:13.964000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.976, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 442, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_13:20", - "arrival_time": "13:38:40.255000", - "departure_time": "13:38:40.255000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.423, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 443, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_14:00", - "arrival_time": "14:00:00", - "departure_time": "14:00:00", - "stop_id": "bUCR_0_02", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 444, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_14:00", - "arrival_time": "14:06:36", - "departure_time": "14:06:36", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.21, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 445, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_14:00", - "arrival_time": "14:07:54.218000", - "departure_time": "14:07:54.218000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.449, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 446, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_14:00", - "arrival_time": "14:09:32.400000", - "departure_time": "14:09:32.400000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.749, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 447, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_14:00", - "arrival_time": "14:12:24.545000", - "departure_time": "14:12:24.545000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.275, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 448, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_14:00", - "arrival_time": "14:13:29.345000", - "departure_time": "14:13:29.345000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.473, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 449, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_14:00", - "arrival_time": "14:16:13.964000", - "departure_time": "14:16:13.964000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.976, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 450, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_14:00", - "arrival_time": "14:18:40.255000", - "departure_time": "14:18:40.255000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.423, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 451, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_14:20", - "arrival_time": "14:20:00", - "departure_time": "14:20:00", - "stop_id": "bUCR_0_02", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 452, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_14:20", - "arrival_time": "14:26:36", - "departure_time": "14:26:36", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.21, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 453, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_14:20", - "arrival_time": "14:27:54.218000", - "departure_time": "14:27:54.218000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.449, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 454, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_14:20", - "arrival_time": "14:29:32.400000", - "departure_time": "14:29:32.400000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.749, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 455, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_14:20", - "arrival_time": "14:32:24.545000", - "departure_time": "14:32:24.545000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.275, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 456, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_14:20", - "arrival_time": "14:33:29.345000", - "departure_time": "14:33:29.345000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.473, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 457, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_14:20", - "arrival_time": "14:36:13.964000", - "departure_time": "14:36:13.964000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.976, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 458, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_14:20", - "arrival_time": "14:38:40.255000", - "departure_time": "14:38:40.255000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.423, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 459, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_14:45", - "arrival_time": "14:45:00", - "departure_time": "14:45:00", - "stop_id": "bUCR_0_02", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 460, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_14:45", - "arrival_time": "14:51:36", - "departure_time": "14:51:36", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.21, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 461, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_14:45", - "arrival_time": "14:52:54.218000", - "departure_time": "14:52:54.218000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.449, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 462, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_14:45", - "arrival_time": "14:54:32.400000", - "departure_time": "14:54:32.400000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.749, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 463, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_14:45", - "arrival_time": "14:57:24.545000", - "departure_time": "14:57:24.545000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.275, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 464, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_14:45", - "arrival_time": "14:58:29.345000", - "departure_time": "14:58:29.345000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.473, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 465, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_14:45", - "arrival_time": "15:01:13.964000", - "departure_time": "15:01:13.964000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.976, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 466, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_14:45", - "arrival_time": "15:03:40.255000", - "departure_time": "15:03:40.255000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.423, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 467, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_15:05", - "arrival_time": "15:05:00", - "departure_time": "15:05:00", - "stop_id": "bUCR_0_02", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 468, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_15:05", - "arrival_time": "15:11:36", - "departure_time": "15:11:36", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.21, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 469, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_15:05", - "arrival_time": "15:12:54.218000", - "departure_time": "15:12:54.218000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.449, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 470, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_15:05", - "arrival_time": "15:14:32.400000", - "departure_time": "15:14:32.400000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.749, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 471, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_15:05", - "arrival_time": "15:17:24.545000", - "departure_time": "15:17:24.545000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.275, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 472, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_15:05", - "arrival_time": "15:18:29.345000", - "departure_time": "15:18:29.345000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.473, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 473, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_15:05", - "arrival_time": "15:21:13.964000", - "departure_time": "15:21:13.964000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.976, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 474, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_15:05", - "arrival_time": "15:23:40.255000", - "departure_time": "15:23:40.255000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.423, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 475, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_15:30", - "arrival_time": "15:30:00", - "departure_time": "15:30:00", - "stop_id": "bUCR_0_02", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 476, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_15:30", - "arrival_time": "15:36:36", - "departure_time": "15:36:36", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.21, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 477, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_15:30", - "arrival_time": "15:37:54.218000", - "departure_time": "15:37:54.218000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.449, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 478, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_15:30", - "arrival_time": "15:39:32.400000", - "departure_time": "15:39:32.400000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.749, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 479, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_15:30", - "arrival_time": "15:42:24.545000", - "departure_time": "15:42:24.545000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.275, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 480, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_15:30", - "arrival_time": "15:43:29.345000", - "departure_time": "15:43:29.345000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.473, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 481, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_15:30", - "arrival_time": "15:46:13.964000", - "departure_time": "15:46:13.964000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.976, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 482, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_15:30", - "arrival_time": "15:48:40.255000", - "departure_time": "15:48:40.255000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.423, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 483, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_16:05", - "arrival_time": "16:05:00", - "departure_time": "16:05:00", - "stop_id": "bUCR_0_02", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 484, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_16:05", - "arrival_time": "16:11:36", - "departure_time": "16:11:36", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.21, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 485, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_16:05", - "arrival_time": "16:12:54.218000", - "departure_time": "16:12:54.218000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.449, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 486, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_16:05", - "arrival_time": "16:14:32.400000", - "departure_time": "16:14:32.400000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.749, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 487, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_16:05", - "arrival_time": "16:17:24.545000", - "departure_time": "16:17:24.545000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.275, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 488, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_16:05", - "arrival_time": "16:18:29.345000", - "departure_time": "16:18:29.345000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.473, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 489, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_16:05", - "arrival_time": "16:21:13.964000", - "departure_time": "16:21:13.964000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.976, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 490, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_16:05", - "arrival_time": "16:23:40.255000", - "departure_time": "16:23:40.255000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.423, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 491, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_16:40", - "arrival_time": "16:40:00", - "departure_time": "16:40:00", - "stop_id": "bUCR_0_02", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 492, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_16:40", - "arrival_time": "16:46:36", - "departure_time": "16:46:36", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.21, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 493, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_16:40", - "arrival_time": "16:47:54.218000", - "departure_time": "16:47:54.218000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.449, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 494, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_16:40", - "arrival_time": "16:49:32.400000", - "departure_time": "16:49:32.400000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.749, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 495, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_16:40", - "arrival_time": "16:52:24.545000", - "departure_time": "16:52:24.545000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.275, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 496, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_16:40", - "arrival_time": "16:53:29.345000", - "departure_time": "16:53:29.345000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.473, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 497, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_16:40", - "arrival_time": "16:56:13.964000", - "departure_time": "16:56:13.964000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.976, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 498, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_16:40", - "arrival_time": "16:58:40.255000", - "departure_time": "16:58:40.255000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.423, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 499, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_17:05", - "arrival_time": "17:05:00", - "departure_time": "17:05:00", - "stop_id": "bUCR_0_02", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 500, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_17:05", - "arrival_time": "17:11:36", - "departure_time": "17:11:36", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.21, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 501, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_17:05", - "arrival_time": "17:12:54.218000", - "departure_time": "17:12:54.218000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.449, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 502, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_17:05", - "arrival_time": "17:14:32.400000", - "departure_time": "17:14:32.400000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.749, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 503, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_17:05", - "arrival_time": "17:17:24.545000", - "departure_time": "17:17:24.545000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.275, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 504, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_17:05", - "arrival_time": "17:18:29.345000", - "departure_time": "17:18:29.345000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.473, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 505, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_17:05", - "arrival_time": "17:21:13.964000", - "departure_time": "17:21:13.964000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.976, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 506, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_17:05", - "arrival_time": "17:23:40.255000", - "departure_time": "17:23:40.255000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.423, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 507, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_17:40", - "arrival_time": "17:40:00", - "departure_time": "17:40:00", - "stop_id": "bUCR_0_02", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 508, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_17:40", - "arrival_time": "17:46:36", - "departure_time": "17:46:36", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.21, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 509, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_17:40", - "arrival_time": "17:47:54.218000", - "departure_time": "17:47:54.218000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.449, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 510, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_17:40", - "arrival_time": "17:49:32.400000", - "departure_time": "17:49:32.400000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.749, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 511, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_17:40", - "arrival_time": "17:52:24.545000", - "departure_time": "17:52:24.545000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.275, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 512, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_17:40", - "arrival_time": "17:53:29.345000", - "departure_time": "17:53:29.345000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.473, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 513, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_17:40", - "arrival_time": "17:56:13.964000", - "departure_time": "17:56:13.964000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.976, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 514, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_17:40", - "arrival_time": "17:58:40.255000", - "departure_time": "17:58:40.255000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.423, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 515, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_18:05", - "arrival_time": "18:05:00", - "departure_time": "18:05:00", - "stop_id": "bUCR_0_02", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 516, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_18:05", - "arrival_time": "18:11:36", - "departure_time": "18:11:36", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.21, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 517, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_18:05", - "arrival_time": "18:12:54.218000", - "departure_time": "18:12:54.218000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.449, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 518, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_18:05", - "arrival_time": "18:14:32.400000", - "departure_time": "18:14:32.400000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.749, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 519, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_18:05", - "arrival_time": "18:17:24.545000", - "departure_time": "18:17:24.545000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.275, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 520, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_18:05", - "arrival_time": "18:18:29.345000", - "departure_time": "18:18:29.345000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.473, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 521, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_18:05", - "arrival_time": "18:21:13.964000", - "departure_time": "18:21:13.964000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.976, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 522, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_18:05", - "arrival_time": "18:23:40.255000", - "departure_time": "18:23:40.255000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.423, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 523, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_18:35", - "arrival_time": "18:35:00", - "departure_time": "18:35:00", - "stop_id": "bUCR_0_02", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 524, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_18:35", - "arrival_time": "18:41:36", - "departure_time": "18:41:36", - "stop_id": "bUCR_0_05", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.21, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 525, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_18:35", - "arrival_time": "18:42:54.218000", - "departure_time": "18:42:54.218000", - "stop_id": "bUCR_0_06", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.449, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 526, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_18:35", - "arrival_time": "18:44:32.400000", - "departure_time": "18:44:32.400000", - "stop_id": "bUCR_0_07", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.749, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 527, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_18:35", - "arrival_time": "18:47:24.545000", - "departure_time": "18:47:24.545000", - "stop_id": "bUCR_0_08", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.275, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 528, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_18:35", - "arrival_time": "18:48:29.345000", - "departure_time": "18:48:29.345000", - "stop_id": "bUCR_0_09", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.473, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 529, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_18:35", - "arrival_time": "18:51:13.964000", - "departure_time": "18:51:13.964000", - "stop_id": "bUCR_0_10", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.976, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 530, - "fields": { - "feed": "1", - "trip_id": "desde_artes_sin_milla_entresemana_18:35", - "arrival_time": "18:53:40.255000", - "departure_time": "18:53:40.255000", - "stop_id": "bUCR_0_11", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.423, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 531, - "fields": { - "feed": "1", - "trip_id": "desde_artes_con_milla_entresemana_19:00", - "arrival_time": "19:00:00", - "departure_time": "19:00:00", - "stop_id": "bUCR_0_02", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 532, - "fields": { - "feed": "1", - "trip_id": "desde_artes_con_milla_entresemana_19:00", - "arrival_time": "19:02:24.327000", - "departure_time": "19:02:24.327000", - "stop_id": "bUCR_0_03", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.441, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 533, - "fields": { - "feed": "1", - "trip_id": "desde_artes_con_milla_entresemana_19:00", - "arrival_time": "19:04:27.382000", - "departure_time": "19:04:27.382000", - "stop_id": "bUCR_0_04", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.817, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 534, - "fields": { - "feed": "1", - "trip_id": "desde_artes_con_milla_entresemana_19:00", - "arrival_time": "19:09:26.182000", - "departure_time": "19:09:26.182000", - "stop_id": "bUCR_0_05", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.73, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 535, - "fields": { - "feed": "1", - "trip_id": "desde_artes_con_milla_entresemana_19:00", - "arrival_time": "19:10:46.691000", - "departure_time": "19:10:46.691000", - "stop_id": "bUCR_0_06", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.976, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 536, - "fields": { - "feed": "1", - "trip_id": "desde_artes_con_milla_entresemana_19:00", - "arrival_time": "19:12:19.309000", - "departure_time": "19:12:19.309000", - "stop_id": "bUCR_0_07", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.259, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 537, - "fields": { - "feed": "1", - "trip_id": "desde_artes_con_milla_entresemana_19:00", - "arrival_time": "19:15:11.127000", - "departure_time": "19:15:11.127000", - "stop_id": "bUCR_0_08", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.784, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 538, - "fields": { - "feed": "1", - "trip_id": "desde_artes_con_milla_entresemana_19:00", - "arrival_time": "19:16:16.255000", - "departure_time": "19:16:16.255000", - "stop_id": "bUCR_0_09", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.983, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 539, - "fields": { - "feed": "1", - "trip_id": "desde_artes_con_milla_entresemana_19:00", - "arrival_time": "19:19:12.982000", - "departure_time": "19:19:12.982000", - "stop_id": "bUCR_0_10", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.523, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 540, - "fields": { - "feed": "1", - "trip_id": "desde_artes_con_milla_entresemana_19:00", - "arrival_time": "19:21:27.491000", - "departure_time": "19:21:27.491000", - "stop_id": "bUCR_0_11", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.934, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 541, - "fields": { - "feed": "1", - "trip_id": "desde_artes_con_milla_entresemana_19:35", - "arrival_time": "19:35:00", - "departure_time": "19:35:00", - "stop_id": "bUCR_0_02", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 542, - "fields": { - "feed": "1", - "trip_id": "desde_artes_con_milla_entresemana_19:35", - "arrival_time": "19:37:24.327000", - "departure_time": "19:37:24.327000", - "stop_id": "bUCR_0_03", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.441, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 543, - "fields": { - "feed": "1", - "trip_id": "desde_artes_con_milla_entresemana_19:35", - "arrival_time": "19:39:27.382000", - "departure_time": "19:39:27.382000", - "stop_id": "bUCR_0_04", - "stop_sequence": 2, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.817, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 544, - "fields": { - "feed": "1", - "trip_id": "desde_artes_con_milla_entresemana_19:35", - "arrival_time": "19:44:26.182000", - "departure_time": "19:44:26.182000", - "stop_id": "bUCR_0_05", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.73, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 545, - "fields": { - "feed": "1", - "trip_id": "desde_artes_con_milla_entresemana_19:35", - "arrival_time": "19:45:46.691000", - "departure_time": "19:45:46.691000", - "stop_id": "bUCR_0_06", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.976, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 546, - "fields": { - "feed": "1", - "trip_id": "desde_artes_con_milla_entresemana_19:35", - "arrival_time": "19:47:19.309000", - "departure_time": "19:47:19.309000", - "stop_id": "bUCR_0_07", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.259, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 547, - "fields": { - "feed": "1", - "trip_id": "desde_artes_con_milla_entresemana_19:35", - "arrival_time": "19:50:11.127000", - "departure_time": "19:50:11.127000", - "stop_id": "bUCR_0_08", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.784, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 548, - "fields": { - "feed": "1", - "trip_id": "desde_artes_con_milla_entresemana_19:35", - "arrival_time": "19:51:16.255000", - "departure_time": "19:51:16.255000", - "stop_id": "bUCR_0_09", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.983, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 549, - "fields": { - "feed": "1", - "trip_id": "desde_artes_con_milla_entresemana_19:35", - "arrival_time": "19:54:12.982000", - "departure_time": "19:54:12.982000", - "stop_id": "bUCR_0_10", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.523, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 550, - "fields": { - "feed": "1", - "trip_id": "desde_artes_con_milla_entresemana_19:35", - "arrival_time": "19:56:27.491000", - "departure_time": "19:56:27.491000", - "stop_id": "bUCR_0_11", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.934, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 551, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_06:20", - "arrival_time": "06:20:00", - "departure_time": "06:20:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 552, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_06:20", - "arrival_time": "06:24:15.927000", - "departure_time": "06:24:15.927000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.782, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 553, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_06:20", - "arrival_time": "06:27:27.709000", - "departure_time": "06:27:27.709000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.368, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 554, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_06:20", - "arrival_time": "06:28:04.691000", - "departure_time": "06:28:04.691000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.481, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 555, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_06:20", - "arrival_time": "06:29:12.764000", - "departure_time": "06:29:12.764000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.689, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 556, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_06:20", - "arrival_time": "06:31:29.891000", - "departure_time": "06:31:29.891000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.108, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 557, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_06:20", - "arrival_time": "06:33:09.709000", - "departure_time": "06:33:09.709000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.413, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 558, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_06:20", - "arrival_time": "06:34:22.691000", - "departure_time": "06:34:22.691000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.636, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 559, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_06:20", - "arrival_time": "06:39:11.673000", - "departure_time": "06:39:11.673000", - "stop_id": "bUCR_0_02", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.519, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 560, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_06:40", - "arrival_time": "06:40:00", - "departure_time": "06:40:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 561, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_06:40", - "arrival_time": "06:44:00.873000", - "departure_time": "06:44:00.873000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.736, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 562, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_06:40", - "arrival_time": "06:47:28.364000", - "departure_time": "06:47:28.364000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.37, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 563, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_06:40", - "arrival_time": "06:48:12.873000", - "departure_time": "06:48:12.873000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.506, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 564, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_06:40", - "arrival_time": "06:49:11.127000", - "departure_time": "06:49:11.127000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.684, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 565, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_06:40", - "arrival_time": "06:51:27.600000", - "departure_time": "06:51:27.600000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.101, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 566, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_06:40", - "arrival_time": "06:53:11.018000", - "departure_time": "06:53:11.018000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.417, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 567, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_06:40", - "arrival_time": "06:54:22.364000", - "departure_time": "06:54:22.364000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.635, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 568, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_06:40", - "arrival_time": "06:57:17.782000", - "departure_time": "06:57:17.782000", - "stop_id": "bUCR_0_01", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.171, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 569, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_06:50", - "arrival_time": "06:50:00", - "departure_time": "06:50:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 570, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_06:50", - "arrival_time": "06:54:15.927000", - "departure_time": "06:54:15.927000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.782, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 571, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_06:50", - "arrival_time": "06:57:27.709000", - "departure_time": "06:57:27.709000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.368, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 572, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_06:50", - "arrival_time": "06:58:04.691000", - "departure_time": "06:58:04.691000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.481, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 573, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_06:50", - "arrival_time": "06:59:12.764000", - "departure_time": "06:59:12.764000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.689, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 574, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_06:50", - "arrival_time": "07:01:29.891000", - "departure_time": "07:01:29.891000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.108, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 575, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_06:50", - "arrival_time": "07:03:09.709000", - "departure_time": "07:03:09.709000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.413, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 576, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_06:50", - "arrival_time": "07:04:22.691000", - "departure_time": "07:04:22.691000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.636, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 577, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_06:50", - "arrival_time": "07:09:11.673000", - "departure_time": "07:09:11.673000", - "stop_id": "bUCR_0_02", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.519, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 578, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_07:00", - "arrival_time": "07:00:00", - "departure_time": "07:00:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 579, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_07:00", - "arrival_time": "07:04:00.873000", - "departure_time": "07:04:00.873000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.736, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 580, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_07:00", - "arrival_time": "07:07:28.364000", - "departure_time": "07:07:28.364000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.37, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 581, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_07:00", - "arrival_time": "07:08:12.873000", - "departure_time": "07:08:12.873000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.506, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 582, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_07:00", - "arrival_time": "07:09:11.127000", - "departure_time": "07:09:11.127000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.684, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 583, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_07:00", - "arrival_time": "07:11:27.600000", - "departure_time": "07:11:27.600000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.101, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 584, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_07:00", - "arrival_time": "07:13:11.018000", - "departure_time": "07:13:11.018000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.417, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 585, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_07:00", - "arrival_time": "07:14:22.364000", - "departure_time": "07:14:22.364000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.635, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 586, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_07:00", - "arrival_time": "07:17:17.782000", - "departure_time": "07:17:17.782000", - "stop_id": "bUCR_0_01", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.171, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 587, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_07:10", - "arrival_time": "07:10:00", - "departure_time": "07:10:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 588, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_07:10", - "arrival_time": "07:14:15.927000", - "departure_time": "07:14:15.927000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.782, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 589, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_07:10", - "arrival_time": "07:17:27.709000", - "departure_time": "07:17:27.709000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.368, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 590, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_07:10", - "arrival_time": "07:18:04.691000", - "departure_time": "07:18:04.691000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.481, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 591, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_07:10", - "arrival_time": "07:19:12.764000", - "departure_time": "07:19:12.764000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.689, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 592, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_07:10", - "arrival_time": "07:21:29.891000", - "departure_time": "07:21:29.891000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.108, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 593, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_07:10", - "arrival_time": "07:23:09.709000", - "departure_time": "07:23:09.709000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.413, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 594, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_07:10", - "arrival_time": "07:24:22.691000", - "departure_time": "07:24:22.691000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.636, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 595, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_07:10", - "arrival_time": "07:29:11.673000", - "departure_time": "07:29:11.673000", - "stop_id": "bUCR_0_02", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.519, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 596, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_07:30", - "arrival_time": "07:30:00", - "departure_time": "07:30:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 597, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_07:30", - "arrival_time": "07:34:00.873000", - "departure_time": "07:34:00.873000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.736, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 598, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_07:30", - "arrival_time": "07:37:28.364000", - "departure_time": "07:37:28.364000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.37, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 599, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_07:30", - "arrival_time": "07:38:12.873000", - "departure_time": "07:38:12.873000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.506, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 600, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_07:30", - "arrival_time": "07:39:11.127000", - "departure_time": "07:39:11.127000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.684, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 601, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_07:30", - "arrival_time": "07:41:27.600000", - "departure_time": "07:41:27.600000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.101, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 602, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_07:30", - "arrival_time": "07:43:11.018000", - "departure_time": "07:43:11.018000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.417, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 603, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_07:30", - "arrival_time": "07:44:22.364000", - "departure_time": "07:44:22.364000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.635, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 604, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_07:30", - "arrival_time": "07:47:17.782000", - "departure_time": "07:47:17.782000", - "stop_id": "bUCR_0_01", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.171, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 605, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_07:40", - "arrival_time": "07:40:00", - "departure_time": "07:40:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 606, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_07:40", - "arrival_time": "07:44:15.927000", - "departure_time": "07:44:15.927000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.782, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 607, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_07:40", - "arrival_time": "07:47:27.709000", - "departure_time": "07:47:27.709000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.368, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 608, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_07:40", - "arrival_time": "07:48:04.691000", - "departure_time": "07:48:04.691000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.481, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 609, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_07:40", - "arrival_time": "07:49:12.764000", - "departure_time": "07:49:12.764000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.689, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 610, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_07:40", - "arrival_time": "07:51:29.891000", - "departure_time": "07:51:29.891000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.108, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 611, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_07:40", - "arrival_time": "07:53:09.709000", - "departure_time": "07:53:09.709000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.413, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 612, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_07:40", - "arrival_time": "07:54:22.691000", - "departure_time": "07:54:22.691000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.636, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 613, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_07:40", - "arrival_time": "07:59:11.673000", - "departure_time": "07:59:11.673000", - "stop_id": "bUCR_0_02", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.519, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 614, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_07:50", - "arrival_time": "07:50:00", - "departure_time": "07:50:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 615, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_07:50", - "arrival_time": "07:54:00.873000", - "departure_time": "07:54:00.873000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.736, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 616, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_07:50", - "arrival_time": "07:57:28.364000", - "departure_time": "07:57:28.364000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.37, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 617, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_07:50", - "arrival_time": "07:58:12.873000", - "departure_time": "07:58:12.873000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.506, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 618, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_07:50", - "arrival_time": "07:59:11.127000", - "departure_time": "07:59:11.127000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.684, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 619, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_07:50", - "arrival_time": "08:01:27.600000", - "departure_time": "08:01:27.600000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.101, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 620, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_07:50", - "arrival_time": "08:03:11.018000", - "departure_time": "08:03:11.018000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.417, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 621, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_07:50", - "arrival_time": "08:04:22.364000", - "departure_time": "08:04:22.364000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.635, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 622, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_07:50", - "arrival_time": "08:07:17.782000", - "departure_time": "08:07:17.782000", - "stop_id": "bUCR_0_01", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.171, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 623, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_08:00", - "arrival_time": "08:00:00", - "departure_time": "08:00:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 624, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_08:00", - "arrival_time": "08:04:15.927000", - "departure_time": "08:04:15.927000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.782, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 625, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_08:00", - "arrival_time": "08:07:27.709000", - "departure_time": "08:07:27.709000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.368, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 626, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_08:00", - "arrival_time": "08:08:04.691000", - "departure_time": "08:08:04.691000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.481, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 627, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_08:00", - "arrival_time": "08:09:12.764000", - "departure_time": "08:09:12.764000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.689, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 628, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_08:00", - "arrival_time": "08:11:29.891000", - "departure_time": "08:11:29.891000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.108, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 629, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_08:00", - "arrival_time": "08:13:09.709000", - "departure_time": "08:13:09.709000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.413, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 630, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_08:00", - "arrival_time": "08:14:22.691000", - "departure_time": "08:14:22.691000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.636, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 631, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_08:00", - "arrival_time": "08:19:11.673000", - "departure_time": "08:19:11.673000", - "stop_id": "bUCR_0_02", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.519, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 632, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_08:35", - "arrival_time": "08:35:00", - "departure_time": "08:35:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 633, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_08:35", - "arrival_time": "08:39:00.873000", - "departure_time": "08:39:00.873000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.736, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 634, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_08:35", - "arrival_time": "08:42:28.364000", - "departure_time": "08:42:28.364000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.37, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 635, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_08:35", - "arrival_time": "08:43:12.873000", - "departure_time": "08:43:12.873000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.506, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 636, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_08:35", - "arrival_time": "08:44:11.127000", - "departure_time": "08:44:11.127000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.684, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 637, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_08:35", - "arrival_time": "08:46:27.600000", - "departure_time": "08:46:27.600000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.101, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 638, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_08:35", - "arrival_time": "08:48:11.018000", - "departure_time": "08:48:11.018000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.417, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 639, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_08:35", - "arrival_time": "08:49:22.364000", - "departure_time": "08:49:22.364000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.635, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 640, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_08:35", - "arrival_time": "08:52:17.782000", - "departure_time": "08:52:17.782000", - "stop_id": "bUCR_0_01", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.171, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 641, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_08:45", - "arrival_time": "08:45:00", - "departure_time": "08:45:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 642, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_08:45", - "arrival_time": "08:49:15.927000", - "departure_time": "08:49:15.927000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.782, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 643, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_08:45", - "arrival_time": "08:52:27.709000", - "departure_time": "08:52:27.709000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.368, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 644, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_08:45", - "arrival_time": "08:53:04.691000", - "departure_time": "08:53:04.691000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.481, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 645, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_08:45", - "arrival_time": "08:54:12.764000", - "departure_time": "08:54:12.764000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.689, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 646, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_08:45", - "arrival_time": "08:56:29.891000", - "departure_time": "08:56:29.891000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.108, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 647, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_08:45", - "arrival_time": "08:58:09.709000", - "departure_time": "08:58:09.709000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.413, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 648, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_08:45", - "arrival_time": "08:59:22.691000", - "departure_time": "08:59:22.691000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.636, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 649, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_08:45", - "arrival_time": "09:04:11.673000", - "departure_time": "09:04:11.673000", - "stop_id": "bUCR_0_02", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.519, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 650, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_08:55", - "arrival_time": "08:55:00", - "departure_time": "08:55:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 651, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_08:55", - "arrival_time": "08:59:00.873000", - "departure_time": "08:59:00.873000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.736, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 652, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_08:55", - "arrival_time": "09:02:28.364000", - "departure_time": "09:02:28.364000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.37, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 653, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_08:55", - "arrival_time": "09:03:12.873000", - "departure_time": "09:03:12.873000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.506, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 654, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_08:55", - "arrival_time": "09:04:11.127000", - "departure_time": "09:04:11.127000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.684, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 655, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_08:55", - "arrival_time": "09:06:27.600000", - "departure_time": "09:06:27.600000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.101, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 656, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_08:55", - "arrival_time": "09:08:11.018000", - "departure_time": "09:08:11.018000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.417, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 657, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_08:55", - "arrival_time": "09:09:22.364000", - "departure_time": "09:09:22.364000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.635, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 658, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_08:55", - "arrival_time": "09:12:17.782000", - "departure_time": "09:12:17.782000", - "stop_id": "bUCR_0_01", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.171, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 659, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_09:05", - "arrival_time": "09:05:00", - "departure_time": "09:05:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 660, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_09:05", - "arrival_time": "09:09:15.927000", - "departure_time": "09:09:15.927000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.782, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 661, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_09:05", - "arrival_time": "09:12:27.709000", - "departure_time": "09:12:27.709000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.368, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 662, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_09:05", - "arrival_time": "09:13:04.691000", - "departure_time": "09:13:04.691000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.481, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 663, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_09:05", - "arrival_time": "09:14:12.764000", - "departure_time": "09:14:12.764000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.689, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 664, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_09:05", - "arrival_time": "09:16:29.891000", - "departure_time": "09:16:29.891000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.108, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 665, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_09:05", - "arrival_time": "09:18:09.709000", - "departure_time": "09:18:09.709000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.413, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 666, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_09:05", - "arrival_time": "09:19:22.691000", - "departure_time": "09:19:22.691000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.636, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 667, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_09:05", - "arrival_time": "09:24:11.673000", - "departure_time": "09:24:11.673000", - "stop_id": "bUCR_0_02", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.519, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 668, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_09:25", - "arrival_time": "09:25:00", - "departure_time": "09:25:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 669, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_09:25", - "arrival_time": "09:29:00.873000", - "departure_time": "09:29:00.873000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.736, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 670, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_09:25", - "arrival_time": "09:32:28.364000", - "departure_time": "09:32:28.364000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.37, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 671, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_09:25", - "arrival_time": "09:33:12.873000", - "departure_time": "09:33:12.873000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.506, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 672, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_09:25", - "arrival_time": "09:34:11.127000", - "departure_time": "09:34:11.127000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.684, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 673, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_09:25", - "arrival_time": "09:36:27.600000", - "departure_time": "09:36:27.600000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.101, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 674, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_09:25", - "arrival_time": "09:38:11.018000", - "departure_time": "09:38:11.018000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.417, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 675, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_09:25", - "arrival_time": "09:39:22.364000", - "departure_time": "09:39:22.364000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.635, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 676, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_09:25", - "arrival_time": "09:42:17.782000", - "departure_time": "09:42:17.782000", - "stop_id": "bUCR_0_01", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.171, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 677, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_09:35", - "arrival_time": "09:35:00", - "departure_time": "09:35:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 678, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_09:35", - "arrival_time": "09:39:15.927000", - "departure_time": "09:39:15.927000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.782, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 679, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_09:35", - "arrival_time": "09:42:27.709000", - "departure_time": "09:42:27.709000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.368, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 680, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_09:35", - "arrival_time": "09:43:04.691000", - "departure_time": "09:43:04.691000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.481, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 681, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_09:35", - "arrival_time": "09:44:12.764000", - "departure_time": "09:44:12.764000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.689, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 682, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_09:35", - "arrival_time": "09:46:29.891000", - "departure_time": "09:46:29.891000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.108, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 683, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_09:35", - "arrival_time": "09:48:09.709000", - "departure_time": "09:48:09.709000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.413, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 684, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_09:35", - "arrival_time": "09:49:22.691000", - "departure_time": "09:49:22.691000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.636, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 685, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_09:35", - "arrival_time": "09:54:11.673000", - "departure_time": "09:54:11.673000", - "stop_id": "bUCR_0_02", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.519, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 686, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_09:45", - "arrival_time": "09:45:00", - "departure_time": "09:45:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 687, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_09:45", - "arrival_time": "09:49:00.873000", - "departure_time": "09:49:00.873000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.736, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 688, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_09:45", - "arrival_time": "09:52:28.364000", - "departure_time": "09:52:28.364000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.37, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 689, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_09:45", - "arrival_time": "09:53:12.873000", - "departure_time": "09:53:12.873000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.506, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 690, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_09:45", - "arrival_time": "09:54:11.127000", - "departure_time": "09:54:11.127000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.684, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 691, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_09:45", - "arrival_time": "09:56:27.600000", - "departure_time": "09:56:27.600000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.101, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 692, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_09:45", - "arrival_time": "09:58:11.018000", - "departure_time": "09:58:11.018000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.417, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 693, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_09:45", - "arrival_time": "09:59:22.364000", - "departure_time": "09:59:22.364000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.635, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 694, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_09:45", - "arrival_time": "10:02:17.782000", - "departure_time": "10:02:17.782000", - "stop_id": "bUCR_0_01", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.171, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 695, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_09:55", - "arrival_time": "09:55:00", - "departure_time": "09:55:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 696, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_09:55", - "arrival_time": "09:59:15.927000", - "departure_time": "09:59:15.927000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.782, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 697, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_09:55", - "arrival_time": "10:02:27.709000", - "departure_time": "10:02:27.709000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.368, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 698, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_09:55", - "arrival_time": "10:03:04.691000", - "departure_time": "10:03:04.691000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.481, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 699, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_09:55", - "arrival_time": "10:04:12.764000", - "departure_time": "10:04:12.764000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.689, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 700, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_09:55", - "arrival_time": "10:06:29.891000", - "departure_time": "10:06:29.891000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.108, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 701, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_09:55", - "arrival_time": "10:08:09.709000", - "departure_time": "10:08:09.709000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.413, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 702, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_09:55", - "arrival_time": "10:09:22.691000", - "departure_time": "10:09:22.691000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.636, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 703, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_09:55", - "arrival_time": "10:14:11.673000", - "departure_time": "10:14:11.673000", - "stop_id": "bUCR_0_02", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.519, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 704, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_10:15", - "arrival_time": "10:15:00", - "departure_time": "10:15:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 705, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_10:15", - "arrival_time": "10:19:00.873000", - "departure_time": "10:19:00.873000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.736, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 706, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_10:15", - "arrival_time": "10:22:28.364000", - "departure_time": "10:22:28.364000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.37, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 707, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_10:15", - "arrival_time": "10:23:12.873000", - "departure_time": "10:23:12.873000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.506, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 708, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_10:15", - "arrival_time": "10:24:11.127000", - "departure_time": "10:24:11.127000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.684, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 709, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_10:15", - "arrival_time": "10:26:27.600000", - "departure_time": "10:26:27.600000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.101, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 710, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_10:15", - "arrival_time": "10:28:11.018000", - "departure_time": "10:28:11.018000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.417, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 711, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_10:15", - "arrival_time": "10:29:22.364000", - "departure_time": "10:29:22.364000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.635, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 712, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_10:15", - "arrival_time": "10:32:17.782000", - "departure_time": "10:32:17.782000", - "stop_id": "bUCR_0_01", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.171, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 713, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_10:25", - "arrival_time": "10:25:00", - "departure_time": "10:25:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 714, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_10:25", - "arrival_time": "10:29:15.927000", - "departure_time": "10:29:15.927000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.782, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 715, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_10:25", - "arrival_time": "10:32:27.709000", - "departure_time": "10:32:27.709000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.368, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 716, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_10:25", - "arrival_time": "10:33:04.691000", - "departure_time": "10:33:04.691000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.481, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 717, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_10:25", - "arrival_time": "10:34:12.764000", - "departure_time": "10:34:12.764000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.689, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 718, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_10:25", - "arrival_time": "10:36:29.891000", - "departure_time": "10:36:29.891000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.108, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 719, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_10:25", - "arrival_time": "10:38:09.709000", - "departure_time": "10:38:09.709000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.413, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 720, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_10:25", - "arrival_time": "10:39:22.691000", - "departure_time": "10:39:22.691000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.636, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 721, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_10:25", - "arrival_time": "10:44:11.673000", - "departure_time": "10:44:11.673000", - "stop_id": "bUCR_0_02", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.519, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 722, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_10:35", - "arrival_time": "10:35:00", - "departure_time": "10:35:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 723, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_10:35", - "arrival_time": "10:39:00.873000", - "departure_time": "10:39:00.873000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.736, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 724, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_10:35", - "arrival_time": "10:42:28.364000", - "departure_time": "10:42:28.364000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.37, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 725, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_10:35", - "arrival_time": "10:43:12.873000", - "departure_time": "10:43:12.873000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.506, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 726, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_10:35", - "arrival_time": "10:44:11.127000", - "departure_time": "10:44:11.127000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.684, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 727, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_10:35", - "arrival_time": "10:46:27.600000", - "departure_time": "10:46:27.600000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.101, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 728, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_10:35", - "arrival_time": "10:48:11.018000", - "departure_time": "10:48:11.018000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.417, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 729, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_10:35", - "arrival_time": "10:49:22.364000", - "departure_time": "10:49:22.364000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.635, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 730, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_10:35", - "arrival_time": "10:52:17.782000", - "departure_time": "10:52:17.782000", - "stop_id": "bUCR_0_01", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.171, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 731, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_10:45", - "arrival_time": "10:45:00", - "departure_time": "10:45:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 732, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_10:45", - "arrival_time": "10:49:15.927000", - "departure_time": "10:49:15.927000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.782, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 733, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_10:45", - "arrival_time": "10:52:27.709000", - "departure_time": "10:52:27.709000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.368, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 734, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_10:45", - "arrival_time": "10:53:04.691000", - "departure_time": "10:53:04.691000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.481, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 735, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_10:45", - "arrival_time": "10:54:12.764000", - "departure_time": "10:54:12.764000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.689, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 736, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_10:45", - "arrival_time": "10:56:29.891000", - "departure_time": "10:56:29.891000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.108, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 737, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_10:45", - "arrival_time": "10:58:09.709000", - "departure_time": "10:58:09.709000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.413, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 738, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_10:45", - "arrival_time": "10:59:22.691000", - "departure_time": "10:59:22.691000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.636, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 739, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_10:45", - "arrival_time": "11:04:11.673000", - "departure_time": "11:04:11.673000", - "stop_id": "bUCR_0_02", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.519, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 740, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_11:05", - "arrival_time": "11:05:00", - "departure_time": "11:05:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 741, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_11:05", - "arrival_time": "11:09:00.873000", - "departure_time": "11:09:00.873000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.736, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 742, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_11:05", - "arrival_time": "11:12:28.364000", - "departure_time": "11:12:28.364000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.37, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 743, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_11:05", - "arrival_time": "11:13:12.873000", - "departure_time": "11:13:12.873000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.506, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 744, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_11:05", - "arrival_time": "11:14:11.127000", - "departure_time": "11:14:11.127000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.684, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 745, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_11:05", - "arrival_time": "11:16:27.600000", - "departure_time": "11:16:27.600000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.101, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 746, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_11:05", - "arrival_time": "11:18:11.018000", - "departure_time": "11:18:11.018000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.417, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 747, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_11:05", - "arrival_time": "11:19:22.364000", - "departure_time": "11:19:22.364000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.635, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 748, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_11:05", - "arrival_time": "11:22:17.782000", - "departure_time": "11:22:17.782000", - "stop_id": "bUCR_0_01", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.171, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 749, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_11:15", - "arrival_time": "11:15:00", - "departure_time": "11:15:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 750, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_11:15", - "arrival_time": "11:19:15.927000", - "departure_time": "11:19:15.927000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.782, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 751, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_11:15", - "arrival_time": "11:22:27.709000", - "departure_time": "11:22:27.709000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.368, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 752, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_11:15", - "arrival_time": "11:23:04.691000", - "departure_time": "11:23:04.691000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.481, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 753, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_11:15", - "arrival_time": "11:24:12.764000", - "departure_time": "11:24:12.764000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.689, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 754, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_11:15", - "arrival_time": "11:26:29.891000", - "departure_time": "11:26:29.891000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.108, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 755, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_11:15", - "arrival_time": "11:28:09.709000", - "departure_time": "11:28:09.709000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.413, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 756, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_11:15", - "arrival_time": "11:29:22.691000", - "departure_time": "11:29:22.691000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.636, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 757, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_11:15", - "arrival_time": "11:34:11.673000", - "departure_time": "11:34:11.673000", - "stop_id": "bUCR_0_02", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.519, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 758, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_11:20", - "arrival_time": "11:20:00", - "departure_time": "11:20:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 759, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_11:20", - "arrival_time": "11:24:00.873000", - "departure_time": "11:24:00.873000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.736, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 760, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_11:20", - "arrival_time": "11:27:28.364000", - "departure_time": "11:27:28.364000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.37, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 761, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_11:20", - "arrival_time": "11:28:12.873000", - "departure_time": "11:28:12.873000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.506, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 762, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_11:20", - "arrival_time": "11:29:11.127000", - "departure_time": "11:29:11.127000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.684, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 763, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_11:20", - "arrival_time": "11:31:27.600000", - "departure_time": "11:31:27.600000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.101, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 764, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_11:20", - "arrival_time": "11:33:11.018000", - "departure_time": "11:33:11.018000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.417, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 765, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_11:20", - "arrival_time": "11:34:22.364000", - "departure_time": "11:34:22.364000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.635, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 766, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_11:20", - "arrival_time": "11:37:17.782000", - "departure_time": "11:37:17.782000", - "stop_id": "bUCR_0_01", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.171, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 767, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_11:30", - "arrival_time": "11:30:00", - "departure_time": "11:30:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 768, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_11:30", - "arrival_time": "11:34:15.927000", - "departure_time": "11:34:15.927000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.782, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 769, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_11:30", - "arrival_time": "11:37:27.709000", - "departure_time": "11:37:27.709000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.368, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 770, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_11:30", - "arrival_time": "11:38:04.691000", - "departure_time": "11:38:04.691000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.481, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 771, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_11:30", - "arrival_time": "11:39:12.764000", - "departure_time": "11:39:12.764000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.689, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 772, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_11:30", - "arrival_time": "11:41:29.891000", - "departure_time": "11:41:29.891000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.108, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 773, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_11:30", - "arrival_time": "11:43:09.709000", - "departure_time": "11:43:09.709000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.413, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 774, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_11:30", - "arrival_time": "11:44:22.691000", - "departure_time": "11:44:22.691000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.636, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 775, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_11:30", - "arrival_time": "11:49:11.673000", - "departure_time": "11:49:11.673000", - "stop_id": "bUCR_0_02", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.519, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 776, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_11:40", - "arrival_time": "11:40:00", - "departure_time": "11:40:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 777, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_11:40", - "arrival_time": "11:44:00.873000", - "departure_time": "11:44:00.873000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.736, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 778, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_11:40", - "arrival_time": "11:47:28.364000", - "departure_time": "11:47:28.364000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.37, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 779, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_11:40", - "arrival_time": "11:48:12.873000", - "departure_time": "11:48:12.873000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.506, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 780, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_11:40", - "arrival_time": "11:49:11.127000", - "departure_time": "11:49:11.127000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.684, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 781, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_11:40", - "arrival_time": "11:51:27.600000", - "departure_time": "11:51:27.600000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.101, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 782, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_11:40", - "arrival_time": "11:53:11.018000", - "departure_time": "11:53:11.018000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.417, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 783, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_11:40", - "arrival_time": "11:54:22.364000", - "departure_time": "11:54:22.364000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.635, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 784, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_11:40", - "arrival_time": "11:57:17.782000", - "departure_time": "11:57:17.782000", - "stop_id": "bUCR_0_01", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.171, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 785, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_11:50", - "arrival_time": "11:50:00", - "departure_time": "11:50:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 786, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_11:50", - "arrival_time": "11:54:15.927000", - "departure_time": "11:54:15.927000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.782, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 787, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_11:50", - "arrival_time": "11:57:27.709000", - "departure_time": "11:57:27.709000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.368, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 788, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_11:50", - "arrival_time": "11:58:04.691000", - "departure_time": "11:58:04.691000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.481, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 789, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_11:50", - "arrival_time": "11:59:12.764000", - "departure_time": "11:59:12.764000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.689, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 790, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_11:50", - "arrival_time": "12:01:29.891000", - "departure_time": "12:01:29.891000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.108, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 791, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_11:50", - "arrival_time": "12:03:09.709000", - "departure_time": "12:03:09.709000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.413, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 792, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_11:50", - "arrival_time": "12:04:22.691000", - "departure_time": "12:04:22.691000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.636, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 793, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_11:50", - "arrival_time": "12:09:11.673000", - "departure_time": "12:09:11.673000", - "stop_id": "bUCR_0_02", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.519, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 794, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_12:05", - "arrival_time": "12:05:00", - "departure_time": "12:05:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 795, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_12:05", - "arrival_time": "12:09:00.873000", - "departure_time": "12:09:00.873000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.736, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 796, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_12:05", - "arrival_time": "12:12:28.364000", - "departure_time": "12:12:28.364000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.37, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 797, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_12:05", - "arrival_time": "12:13:12.873000", - "departure_time": "12:13:12.873000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.506, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 798, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_12:05", - "arrival_time": "12:14:11.127000", - "departure_time": "12:14:11.127000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.684, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 799, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_12:05", - "arrival_time": "12:16:27.600000", - "departure_time": "12:16:27.600000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.101, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 800, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_12:05", - "arrival_time": "12:18:11.018000", - "departure_time": "12:18:11.018000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.417, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 801, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_12:05", - "arrival_time": "12:19:22.364000", - "departure_time": "12:19:22.364000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.635, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 802, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_12:05", - "arrival_time": "12:22:17.782000", - "departure_time": "12:22:17.782000", - "stop_id": "bUCR_0_01", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.171, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 803, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_12:10", - "arrival_time": "12:10:00", - "departure_time": "12:10:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 804, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_12:10", - "arrival_time": "12:14:15.927000", - "departure_time": "12:14:15.927000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.782, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 805, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_12:10", - "arrival_time": "12:17:27.709000", - "departure_time": "12:17:27.709000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.368, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 806, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_12:10", - "arrival_time": "12:18:04.691000", - "departure_time": "12:18:04.691000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.481, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 807, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_12:10", - "arrival_time": "12:19:12.764000", - "departure_time": "12:19:12.764000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.689, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 808, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_12:10", - "arrival_time": "12:21:29.891000", - "departure_time": "12:21:29.891000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.108, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 809, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_12:10", - "arrival_time": "12:23:09.709000", - "departure_time": "12:23:09.709000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.413, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 810, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_12:10", - "arrival_time": "12:24:22.691000", - "departure_time": "12:24:22.691000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.636, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 811, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_12:10", - "arrival_time": "12:29:11.673000", - "departure_time": "12:29:11.673000", - "stop_id": "bUCR_0_02", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.519, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 812, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_12:15", - "arrival_time": "12:15:00", - "departure_time": "12:15:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 813, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_12:15", - "arrival_time": "12:19:00.873000", - "departure_time": "12:19:00.873000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.736, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 814, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_12:15", - "arrival_time": "12:22:28.364000", - "departure_time": "12:22:28.364000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.37, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 815, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_12:15", - "arrival_time": "12:23:12.873000", - "departure_time": "12:23:12.873000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.506, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 816, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_12:15", - "arrival_time": "12:24:11.127000", - "departure_time": "12:24:11.127000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.684, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 817, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_12:15", - "arrival_time": "12:26:27.600000", - "departure_time": "12:26:27.600000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.101, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 818, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_12:15", - "arrival_time": "12:28:11.018000", - "departure_time": "12:28:11.018000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.417, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 819, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_12:15", - "arrival_time": "12:29:22.364000", - "departure_time": "12:29:22.364000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.635, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 820, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_12:15", - "arrival_time": "12:32:17.782000", - "departure_time": "12:32:17.782000", - "stop_id": "bUCR_0_01", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.171, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 821, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_12:25", - "arrival_time": "12:25:00", - "departure_time": "12:25:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 822, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_12:25", - "arrival_time": "12:29:15.927000", - "departure_time": "12:29:15.927000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.782, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 823, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_12:25", - "arrival_time": "12:32:27.709000", - "departure_time": "12:32:27.709000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.368, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 824, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_12:25", - "arrival_time": "12:33:04.691000", - "departure_time": "12:33:04.691000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.481, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 825, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_12:25", - "arrival_time": "12:34:12.764000", - "departure_time": "12:34:12.764000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.689, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 826, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_12:25", - "arrival_time": "12:36:29.891000", - "departure_time": "12:36:29.891000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.108, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 827, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_12:25", - "arrival_time": "12:38:09.709000", - "departure_time": "12:38:09.709000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.413, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 828, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_12:25", - "arrival_time": "12:39:22.691000", - "departure_time": "12:39:22.691000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.636, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 829, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_12:25", - "arrival_time": "12:44:11.673000", - "departure_time": "12:44:11.673000", - "stop_id": "bUCR_0_02", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.519, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 830, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_12:50", - "arrival_time": "12:50:00", - "departure_time": "12:50:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 831, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_12:50", - "arrival_time": "12:54:00.873000", - "departure_time": "12:54:00.873000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.736, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 832, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_12:50", - "arrival_time": "12:57:28.364000", - "departure_time": "12:57:28.364000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.37, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 833, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_12:50", - "arrival_time": "12:58:12.873000", - "departure_time": "12:58:12.873000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.506, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 834, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_12:50", - "arrival_time": "12:59:11.127000", - "departure_time": "12:59:11.127000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.684, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 835, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_12:50", - "arrival_time": "13:01:27.600000", - "departure_time": "13:01:27.600000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.101, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 836, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_12:50", - "arrival_time": "13:03:11.018000", - "departure_time": "13:03:11.018000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.417, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 837, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_12:50", - "arrival_time": "13:04:22.364000", - "departure_time": "13:04:22.364000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.635, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 838, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_12:50", - "arrival_time": "13:07:17.782000", - "departure_time": "13:07:17.782000", - "stop_id": "bUCR_0_01", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.171, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 839, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_13:00", - "arrival_time": "13:00:00", - "departure_time": "13:00:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 840, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_13:00", - "arrival_time": "13:04:15.927000", - "departure_time": "13:04:15.927000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.782, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 841, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_13:00", - "arrival_time": "13:07:27.709000", - "departure_time": "13:07:27.709000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.368, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 842, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_13:00", - "arrival_time": "13:08:04.691000", - "departure_time": "13:08:04.691000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.481, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 843, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_13:00", - "arrival_time": "13:09:12.764000", - "departure_time": "13:09:12.764000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.689, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 844, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_13:00", - "arrival_time": "13:11:29.891000", - "departure_time": "13:11:29.891000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.108, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 845, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_13:00", - "arrival_time": "13:13:09.709000", - "departure_time": "13:13:09.709000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.413, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 846, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_13:00", - "arrival_time": "13:14:22.691000", - "departure_time": "13:14:22.691000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.636, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 847, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_13:00", - "arrival_time": "13:19:11.673000", - "departure_time": "13:19:11.673000", - "stop_id": "bUCR_0_02", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.519, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 848, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_13:25", - "arrival_time": "13:25:00", - "departure_time": "13:25:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 849, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_13:25", - "arrival_time": "13:29:00.873000", - "departure_time": "13:29:00.873000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.736, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 850, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_13:25", - "arrival_time": "13:32:28.364000", - "departure_time": "13:32:28.364000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.37, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 851, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_13:25", - "arrival_time": "13:33:12.873000", - "departure_time": "13:33:12.873000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.506, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 852, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_13:25", - "arrival_time": "13:34:11.127000", - "departure_time": "13:34:11.127000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.684, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 853, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_13:25", - "arrival_time": "13:36:27.600000", - "departure_time": "13:36:27.600000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.101, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 854, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_13:25", - "arrival_time": "13:38:11.018000", - "departure_time": "13:38:11.018000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.417, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 855, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_13:25", - "arrival_time": "13:39:22.364000", - "departure_time": "13:39:22.364000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.635, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 856, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_13:25", - "arrival_time": "13:42:17.782000", - "departure_time": "13:42:17.782000", - "stop_id": "bUCR_0_01", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.171, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 857, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_13:40", - "arrival_time": "13:40:00", - "departure_time": "13:40:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 858, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_13:40", - "arrival_time": "13:44:15.927000", - "departure_time": "13:44:15.927000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.782, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 859, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_13:40", - "arrival_time": "13:47:27.709000", - "departure_time": "13:47:27.709000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.368, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 860, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_13:40", - "arrival_time": "13:48:04.691000", - "departure_time": "13:48:04.691000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.481, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 861, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_13:40", - "arrival_time": "13:49:12.764000", - "departure_time": "13:49:12.764000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.689, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 862, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_13:40", - "arrival_time": "13:51:29.891000", - "departure_time": "13:51:29.891000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.108, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 863, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_13:40", - "arrival_time": "13:53:09.709000", - "departure_time": "13:53:09.709000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.413, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 864, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_13:40", - "arrival_time": "13:54:22.691000", - "departure_time": "13:54:22.691000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.636, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 865, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_13:40", - "arrival_time": "13:59:11.673000", - "departure_time": "13:59:11.673000", - "stop_id": "bUCR_0_02", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.519, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 866, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_13:50", - "arrival_time": "13:50:00", - "departure_time": "13:50:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 867, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_13:50", - "arrival_time": "13:54:00.873000", - "departure_time": "13:54:00.873000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.736, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 868, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_13:50", - "arrival_time": "13:57:28.364000", - "departure_time": "13:57:28.364000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.37, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 869, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_13:50", - "arrival_time": "13:58:12.873000", - "departure_time": "13:58:12.873000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.506, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 870, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_13:50", - "arrival_time": "13:59:11.127000", - "departure_time": "13:59:11.127000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.684, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 871, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_13:50", - "arrival_time": "14:01:27.600000", - "departure_time": "14:01:27.600000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.101, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 872, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_13:50", - "arrival_time": "14:03:11.018000", - "departure_time": "14:03:11.018000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.417, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 873, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_13:50", - "arrival_time": "14:04:22.364000", - "departure_time": "14:04:22.364000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.635, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 874, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_13:50", - "arrival_time": "14:07:17.782000", - "departure_time": "14:07:17.782000", - "stop_id": "bUCR_0_01", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.171, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 875, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_14:00", - "arrival_time": "14:00:00", - "departure_time": "14:00:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 876, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_14:00", - "arrival_time": "14:04:15.927000", - "departure_time": "14:04:15.927000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.782, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 877, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_14:00", - "arrival_time": "14:07:27.709000", - "departure_time": "14:07:27.709000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.368, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 878, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_14:00", - "arrival_time": "14:08:04.691000", - "departure_time": "14:08:04.691000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.481, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 879, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_14:00", - "arrival_time": "14:09:12.764000", - "departure_time": "14:09:12.764000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.689, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 880, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_14:00", - "arrival_time": "14:11:29.891000", - "departure_time": "14:11:29.891000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.108, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 881, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_14:00", - "arrival_time": "14:13:09.709000", - "departure_time": "14:13:09.709000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.413, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 882, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_14:00", - "arrival_time": "14:14:22.691000", - "departure_time": "14:14:22.691000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.636, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 883, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_14:00", - "arrival_time": "14:19:11.673000", - "departure_time": "14:19:11.673000", - "stop_id": "bUCR_0_02", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.519, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 884, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_14:10", - "arrival_time": "14:10:00", - "departure_time": "14:10:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 885, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_14:10", - "arrival_time": "14:14:00.873000", - "departure_time": "14:14:00.873000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.736, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 886, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_14:10", - "arrival_time": "14:17:28.364000", - "departure_time": "14:17:28.364000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.37, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 887, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_14:10", - "arrival_time": "14:18:12.873000", - "departure_time": "14:18:12.873000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.506, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 888, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_14:10", - "arrival_time": "14:19:11.127000", - "departure_time": "14:19:11.127000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.684, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 889, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_14:10", - "arrival_time": "14:21:27.600000", - "departure_time": "14:21:27.600000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.101, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 890, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_14:10", - "arrival_time": "14:23:11.018000", - "departure_time": "14:23:11.018000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.417, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 891, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_14:10", - "arrival_time": "14:24:22.364000", - "departure_time": "14:24:22.364000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.635, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 892, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_14:10", - "arrival_time": "14:27:17.782000", - "departure_time": "14:27:17.782000", - "stop_id": "bUCR_0_01", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.171, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 893, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_14:25", - "arrival_time": "14:25:00", - "departure_time": "14:25:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 894, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_14:25", - "arrival_time": "14:29:15.927000", - "departure_time": "14:29:15.927000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.782, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 895, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_14:25", - "arrival_time": "14:32:27.709000", - "departure_time": "14:32:27.709000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.368, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 896, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_14:25", - "arrival_time": "14:33:04.691000", - "departure_time": "14:33:04.691000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.481, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 897, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_14:25", - "arrival_time": "14:34:12.764000", - "departure_time": "14:34:12.764000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.689, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 898, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_14:25", - "arrival_time": "14:36:29.891000", - "departure_time": "14:36:29.891000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.108, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 899, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_14:25", - "arrival_time": "14:38:09.709000", - "departure_time": "14:38:09.709000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.413, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 900, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_14:25", - "arrival_time": "14:39:22.691000", - "departure_time": "14:39:22.691000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.636, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 901, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_14:25", - "arrival_time": "14:44:11.673000", - "departure_time": "14:44:11.673000", - "stop_id": "bUCR_0_02", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.519, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 902, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_14:35", - "arrival_time": "14:35:00", - "departure_time": "14:35:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 903, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_14:35", - "arrival_time": "14:39:00.873000", - "departure_time": "14:39:00.873000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.736, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 904, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_14:35", - "arrival_time": "14:42:28.364000", - "departure_time": "14:42:28.364000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.37, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 905, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_14:35", - "arrival_time": "14:43:12.873000", - "departure_time": "14:43:12.873000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.506, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 906, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_14:35", - "arrival_time": "14:44:11.127000", - "departure_time": "14:44:11.127000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.684, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 907, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_14:35", - "arrival_time": "14:46:27.600000", - "departure_time": "14:46:27.600000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.101, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 908, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_14:35", - "arrival_time": "14:48:11.018000", - "departure_time": "14:48:11.018000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.417, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 909, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_14:35", - "arrival_time": "14:49:22.364000", - "departure_time": "14:49:22.364000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.635, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 910, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_14:35", - "arrival_time": "14:52:17.782000", - "departure_time": "14:52:17.782000", - "stop_id": "bUCR_0_01", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.171, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 911, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_14:45", - "arrival_time": "14:45:00", - "departure_time": "14:45:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 912, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_14:45", - "arrival_time": "14:49:15.927000", - "departure_time": "14:49:15.927000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.782, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 913, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_14:45", - "arrival_time": "14:52:27.709000", - "departure_time": "14:52:27.709000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.368, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 914, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_14:45", - "arrival_time": "14:53:04.691000", - "departure_time": "14:53:04.691000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.481, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 915, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_14:45", - "arrival_time": "14:54:12.764000", - "departure_time": "14:54:12.764000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.689, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 916, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_14:45", - "arrival_time": "14:56:29.891000", - "departure_time": "14:56:29.891000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.108, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 917, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_14:45", - "arrival_time": "14:58:09.709000", - "departure_time": "14:58:09.709000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.413, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 918, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_14:45", - "arrival_time": "14:59:22.691000", - "departure_time": "14:59:22.691000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.636, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 919, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_14:45", - "arrival_time": "15:04:11.673000", - "departure_time": "15:04:11.673000", - "stop_id": "bUCR_0_02", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.519, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 920, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_14:55", - "arrival_time": "14:55:00", - "departure_time": "14:55:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 921, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_14:55", - "arrival_time": "14:59:00.873000", - "departure_time": "14:59:00.873000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.736, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 922, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_14:55", - "arrival_time": "15:02:28.364000", - "departure_time": "15:02:28.364000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.37, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 923, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_14:55", - "arrival_time": "15:03:12.873000", - "departure_time": "15:03:12.873000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.506, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 924, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_14:55", - "arrival_time": "15:04:11.127000", - "departure_time": "15:04:11.127000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.684, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 925, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_14:55", - "arrival_time": "15:06:27.600000", - "departure_time": "15:06:27.600000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.101, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 926, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_14:55", - "arrival_time": "15:08:11.018000", - "departure_time": "15:08:11.018000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.417, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 927, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_14:55", - "arrival_time": "15:09:22.364000", - "departure_time": "15:09:22.364000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.635, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 928, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_14:55", - "arrival_time": "15:12:17.782000", - "departure_time": "15:12:17.782000", - "stop_id": "bUCR_0_01", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.171, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 929, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_15:10", - "arrival_time": "15:10:00", - "departure_time": "15:10:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 930, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_15:10", - "arrival_time": "15:14:15.927000", - "departure_time": "15:14:15.927000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.782, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 931, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_15:10", - "arrival_time": "15:17:27.709000", - "departure_time": "15:17:27.709000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.368, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 932, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_15:10", - "arrival_time": "15:18:04.691000", - "departure_time": "15:18:04.691000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.481, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 933, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_15:10", - "arrival_time": "15:19:12.764000", - "departure_time": "15:19:12.764000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.689, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 934, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_15:10", - "arrival_time": "15:21:29.891000", - "departure_time": "15:21:29.891000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.108, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 935, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_15:10", - "arrival_time": "15:23:09.709000", - "departure_time": "15:23:09.709000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.413, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 936, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_15:10", - "arrival_time": "15:24:22.691000", - "departure_time": "15:24:22.691000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.636, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 937, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_15:10", - "arrival_time": "15:29:11.673000", - "departure_time": "15:29:11.673000", - "stop_id": "bUCR_0_02", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.519, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 938, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_15:20", - "arrival_time": "15:20:00", - "departure_time": "15:20:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 939, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_15:20", - "arrival_time": "15:24:00.873000", - "departure_time": "15:24:00.873000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.736, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 940, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_15:20", - "arrival_time": "15:27:28.364000", - "departure_time": "15:27:28.364000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.37, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 941, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_15:20", - "arrival_time": "15:28:12.873000", - "departure_time": "15:28:12.873000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.506, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 942, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_15:20", - "arrival_time": "15:29:11.127000", - "departure_time": "15:29:11.127000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.684, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 943, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_15:20", - "arrival_time": "15:31:27.600000", - "departure_time": "15:31:27.600000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.101, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 944, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_15:20", - "arrival_time": "15:33:11.018000", - "departure_time": "15:33:11.018000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.417, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 945, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_15:20", - "arrival_time": "15:34:22.364000", - "departure_time": "15:34:22.364000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.635, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 946, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_15:20", - "arrival_time": "15:37:17.782000", - "departure_time": "15:37:17.782000", - "stop_id": "bUCR_0_01", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.171, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 947, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_15:30", - "arrival_time": "15:30:00", - "departure_time": "15:30:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 948, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_15:30", - "arrival_time": "15:34:15.927000", - "departure_time": "15:34:15.927000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.782, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 949, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_15:30", - "arrival_time": "15:37:27.709000", - "departure_time": "15:37:27.709000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.368, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 950, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_15:30", - "arrival_time": "15:38:04.691000", - "departure_time": "15:38:04.691000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.481, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 951, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_15:30", - "arrival_time": "15:39:12.764000", - "departure_time": "15:39:12.764000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.689, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 952, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_15:30", - "arrival_time": "15:41:29.891000", - "departure_time": "15:41:29.891000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.108, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 953, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_15:30", - "arrival_time": "15:43:09.709000", - "departure_time": "15:43:09.709000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.413, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 954, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_15:30", - "arrival_time": "15:44:22.691000", - "departure_time": "15:44:22.691000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.636, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 955, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_15:30", - "arrival_time": "15:49:11.673000", - "departure_time": "15:49:11.673000", - "stop_id": "bUCR_0_02", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.519, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 956, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_16:05", - "arrival_time": "16:05:00", - "departure_time": "16:05:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 957, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_16:05", - "arrival_time": "16:09:00.873000", - "departure_time": "16:09:00.873000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.736, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 958, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_16:05", - "arrival_time": "16:12:28.364000", - "departure_time": "16:12:28.364000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.37, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 959, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_16:05", - "arrival_time": "16:13:12.873000", - "departure_time": "16:13:12.873000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.506, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 960, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_16:05", - "arrival_time": "16:14:11.127000", - "departure_time": "16:14:11.127000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.684, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 961, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_16:05", - "arrival_time": "16:16:27.600000", - "departure_time": "16:16:27.600000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.101, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 962, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_16:05", - "arrival_time": "16:18:11.018000", - "departure_time": "16:18:11.018000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.417, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 963, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_16:05", - "arrival_time": "16:19:22.364000", - "departure_time": "16:19:22.364000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.635, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 964, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_16:05", - "arrival_time": "16:22:17.782000", - "departure_time": "16:22:17.782000", - "stop_id": "bUCR_0_01", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.171, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 965, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_16:15", - "arrival_time": "16:15:00", - "departure_time": "16:15:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 966, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_16:15", - "arrival_time": "16:19:15.927000", - "departure_time": "16:19:15.927000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.782, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 967, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_16:15", - "arrival_time": "16:22:27.709000", - "departure_time": "16:22:27.709000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.368, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 968, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_16:15", - "arrival_time": "16:23:04.691000", - "departure_time": "16:23:04.691000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.481, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 969, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_16:15", - "arrival_time": "16:24:12.764000", - "departure_time": "16:24:12.764000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.689, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 970, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_16:15", - "arrival_time": "16:26:29.891000", - "departure_time": "16:26:29.891000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.108, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 971, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_16:15", - "arrival_time": "16:28:09.709000", - "departure_time": "16:28:09.709000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.413, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 972, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_16:15", - "arrival_time": "16:29:22.691000", - "departure_time": "16:29:22.691000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.636, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 973, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_16:15", - "arrival_time": "16:34:11.673000", - "departure_time": "16:34:11.673000", - "stop_id": "bUCR_0_02", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.519, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 974, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_16:30", - "arrival_time": "16:30:00", - "departure_time": "16:30:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 975, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_16:30", - "arrival_time": "16:34:00.873000", - "departure_time": "16:34:00.873000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.736, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 976, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_16:30", - "arrival_time": "16:37:28.364000", - "departure_time": "16:37:28.364000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.37, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 977, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_16:30", - "arrival_time": "16:38:12.873000", - "departure_time": "16:38:12.873000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.506, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 978, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_16:30", - "arrival_time": "16:39:11.127000", - "departure_time": "16:39:11.127000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.684, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 979, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_16:30", - "arrival_time": "16:41:27.600000", - "departure_time": "16:41:27.600000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.101, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 980, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_16:30", - "arrival_time": "16:43:11.018000", - "departure_time": "16:43:11.018000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.417, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 981, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_16:30", - "arrival_time": "16:44:22.364000", - "departure_time": "16:44:22.364000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.635, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 982, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_16:30", - "arrival_time": "16:47:17.782000", - "departure_time": "16:47:17.782000", - "stop_id": "bUCR_0_01", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.171, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 983, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_16:40", - "arrival_time": "16:40:00", - "departure_time": "16:40:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 984, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_16:40", - "arrival_time": "16:44:15.927000", - "departure_time": "16:44:15.927000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.782, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 985, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_16:40", - "arrival_time": "16:47:27.709000", - "departure_time": "16:47:27.709000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.368, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 986, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_16:40", - "arrival_time": "16:48:04.691000", - "departure_time": "16:48:04.691000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.481, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 987, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_16:40", - "arrival_time": "16:49:12.764000", - "departure_time": "16:49:12.764000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.689, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 988, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_16:40", - "arrival_time": "16:51:29.891000", - "departure_time": "16:51:29.891000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.108, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 989, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_16:40", - "arrival_time": "16:53:09.709000", - "departure_time": "16:53:09.709000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.413, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 990, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_16:40", - "arrival_time": "16:54:22.691000", - "departure_time": "16:54:22.691000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.636, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 991, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_16:40", - "arrival_time": "16:59:11.673000", - "departure_time": "16:59:11.673000", - "stop_id": "bUCR_0_02", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.519, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 992, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_17:05", - "arrival_time": "17:05:00", - "departure_time": "17:05:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 993, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_17:05", - "arrival_time": "17:09:00.873000", - "departure_time": "17:09:00.873000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.736, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 994, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_17:05", - "arrival_time": "17:12:28.364000", - "departure_time": "17:12:28.364000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.37, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 995, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_17:05", - "arrival_time": "17:13:12.873000", - "departure_time": "17:13:12.873000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.506, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 996, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_17:05", - "arrival_time": "17:14:11.127000", - "departure_time": "17:14:11.127000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.684, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 997, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_17:05", - "arrival_time": "17:16:27.600000", - "departure_time": "17:16:27.600000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.101, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 998, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_17:05", - "arrival_time": "17:18:11.018000", - "departure_time": "17:18:11.018000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.417, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 999, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_17:05", - "arrival_time": "17:19:22.364000", - "departure_time": "17:19:22.364000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.635, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1000, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_17:05", - "arrival_time": "17:22:17.782000", - "departure_time": "17:22:17.782000", - "stop_id": "bUCR_0_01", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.171, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1001, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_17:15", - "arrival_time": "17:15:00", - "departure_time": "17:15:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1002, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_17:15", - "arrival_time": "17:19:15.927000", - "departure_time": "17:19:15.927000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.782, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1003, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_17:15", - "arrival_time": "17:22:27.709000", - "departure_time": "17:22:27.709000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.368, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1004, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_17:15", - "arrival_time": "17:23:04.691000", - "departure_time": "17:23:04.691000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.481, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1005, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_17:15", - "arrival_time": "17:24:12.764000", - "departure_time": "17:24:12.764000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.689, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1006, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_17:15", - "arrival_time": "17:26:29.891000", - "departure_time": "17:26:29.891000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.108, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1007, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_17:15", - "arrival_time": "17:28:09.709000", - "departure_time": "17:28:09.709000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.413, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1008, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_17:15", - "arrival_time": "17:29:22.691000", - "departure_time": "17:29:22.691000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.636, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1009, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_17:15", - "arrival_time": "17:34:11.673000", - "departure_time": "17:34:11.673000", - "stop_id": "bUCR_0_02", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.519, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1010, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_17:30", - "arrival_time": "17:30:00", - "departure_time": "17:30:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1011, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_17:30", - "arrival_time": "17:34:00.873000", - "departure_time": "17:34:00.873000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.736, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1012, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_17:30", - "arrival_time": "17:37:28.364000", - "departure_time": "17:37:28.364000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.37, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1013, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_17:30", - "arrival_time": "17:38:12.873000", - "departure_time": "17:38:12.873000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.506, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1014, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_17:30", - "arrival_time": "17:39:11.127000", - "departure_time": "17:39:11.127000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.684, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1015, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_17:30", - "arrival_time": "17:41:27.600000", - "departure_time": "17:41:27.600000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.101, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1016, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_17:30", - "arrival_time": "17:43:11.018000", - "departure_time": "17:43:11.018000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.417, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1017, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_17:30", - "arrival_time": "17:44:22.364000", - "departure_time": "17:44:22.364000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.635, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1018, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_17:30", - "arrival_time": "17:47:17.782000", - "departure_time": "17:47:17.782000", - "stop_id": "bUCR_0_01", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.171, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1019, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_17:40", - "arrival_time": "17:40:00", - "departure_time": "17:40:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1020, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_17:40", - "arrival_time": "17:44:15.927000", - "departure_time": "17:44:15.927000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.782, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1021, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_17:40", - "arrival_time": "17:47:27.709000", - "departure_time": "17:47:27.709000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.368, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1022, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_17:40", - "arrival_time": "17:48:04.691000", - "departure_time": "17:48:04.691000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.481, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1023, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_17:40", - "arrival_time": "17:49:12.764000", - "departure_time": "17:49:12.764000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.689, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1024, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_17:40", - "arrival_time": "17:51:29.891000", - "departure_time": "17:51:29.891000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.108, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1025, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_17:40", - "arrival_time": "17:53:09.709000", - "departure_time": "17:53:09.709000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.413, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1026, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_17:40", - "arrival_time": "17:54:22.691000", - "departure_time": "17:54:22.691000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.636, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1027, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_17:40", - "arrival_time": "17:59:11.673000", - "departure_time": "17:59:11.673000", - "stop_id": "bUCR_0_02", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.519, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1028, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_18:05", - "arrival_time": "18:05:00", - "departure_time": "18:05:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1029, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_18:05", - "arrival_time": "18:09:00.873000", - "departure_time": "18:09:00.873000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.736, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1030, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_18:05", - "arrival_time": "18:12:28.364000", - "departure_time": "18:12:28.364000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.37, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1031, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_18:05", - "arrival_time": "18:13:12.873000", - "departure_time": "18:13:12.873000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.506, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1032, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_18:05", - "arrival_time": "18:14:11.127000", - "departure_time": "18:14:11.127000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.684, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1033, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_18:05", - "arrival_time": "18:16:27.600000", - "departure_time": "18:16:27.600000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.101, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1034, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_18:05", - "arrival_time": "18:18:11.018000", - "departure_time": "18:18:11.018000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.417, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1035, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_18:05", - "arrival_time": "18:19:22.364000", - "departure_time": "18:19:22.364000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.635, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1036, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_18:05", - "arrival_time": "18:22:17.782000", - "departure_time": "18:22:17.782000", - "stop_id": "bUCR_0_01", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.171, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1037, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_18:15", - "arrival_time": "18:15:00", - "departure_time": "18:15:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1038, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_18:15", - "arrival_time": "18:19:15.927000", - "departure_time": "18:19:15.927000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.782, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1039, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_18:15", - "arrival_time": "18:22:27.709000", - "departure_time": "18:22:27.709000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.368, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1040, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_18:15", - "arrival_time": "18:23:04.691000", - "departure_time": "18:23:04.691000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.481, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1041, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_18:15", - "arrival_time": "18:24:12.764000", - "departure_time": "18:24:12.764000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.689, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1042, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_18:15", - "arrival_time": "18:26:29.891000", - "departure_time": "18:26:29.891000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.108, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1043, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_18:15", - "arrival_time": "18:28:09.709000", - "departure_time": "18:28:09.709000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.413, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1044, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_18:15", - "arrival_time": "18:29:22.691000", - "departure_time": "18:29:22.691000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.636, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1045, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_18:15", - "arrival_time": "18:34:11.673000", - "departure_time": "18:34:11.673000", - "stop_id": "bUCR_0_02", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.519, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1046, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_18:30", - "arrival_time": "18:30:00", - "departure_time": "18:30:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1047, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_18:30", - "arrival_time": "18:34:00.873000", - "departure_time": "18:34:00.873000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.736, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1048, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_18:30", - "arrival_time": "18:37:28.364000", - "departure_time": "18:37:28.364000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.37, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1049, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_18:30", - "arrival_time": "18:38:12.873000", - "departure_time": "18:38:12.873000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.506, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1050, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_18:30", - "arrival_time": "18:39:11.127000", - "departure_time": "18:39:11.127000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.684, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1051, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_18:30", - "arrival_time": "18:41:27.600000", - "departure_time": "18:41:27.600000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.101, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1052, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_18:30", - "arrival_time": "18:43:11.018000", - "departure_time": "18:43:11.018000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.417, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1053, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_18:30", - "arrival_time": "18:44:22.364000", - "departure_time": "18:44:22.364000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.635, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1054, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_18:30", - "arrival_time": "18:47:17.782000", - "departure_time": "18:47:17.782000", - "stop_id": "bUCR_0_01", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.171, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1055, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_18:40", - "arrival_time": "18:40:00", - "departure_time": "18:40:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1056, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_18:40", - "arrival_time": "18:44:15.927000", - "departure_time": "18:44:15.927000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.782, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1057, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_18:40", - "arrival_time": "18:47:27.709000", - "departure_time": "18:47:27.709000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.368, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1058, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_18:40", - "arrival_time": "18:48:04.691000", - "departure_time": "18:48:04.691000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.481, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1059, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_18:40", - "arrival_time": "18:49:12.764000", - "departure_time": "18:49:12.764000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.689, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1060, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_18:40", - "arrival_time": "18:51:29.891000", - "departure_time": "18:51:29.891000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.108, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1061, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_18:40", - "arrival_time": "18:53:09.709000", - "departure_time": "18:53:09.709000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.413, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1062, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_18:40", - "arrival_time": "18:54:22.691000", - "departure_time": "18:54:22.691000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.636, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1063, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_18:40", - "arrival_time": "18:59:11.673000", - "departure_time": "18:59:11.673000", - "stop_id": "bUCR_0_02", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.519, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1064, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_18:55", - "arrival_time": "18:55:00", - "departure_time": "18:55:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1065, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_18:55", - "arrival_time": "18:59:00.873000", - "departure_time": "18:59:00.873000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.736, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1066, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_18:55", - "arrival_time": "19:02:28.364000", - "departure_time": "19:02:28.364000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.37, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1067, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_18:55", - "arrival_time": "19:03:12.873000", - "departure_time": "19:03:12.873000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.506, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1068, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_18:55", - "arrival_time": "19:04:11.127000", - "departure_time": "19:04:11.127000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.684, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1069, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_18:55", - "arrival_time": "19:06:27.600000", - "departure_time": "19:06:27.600000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.101, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1070, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_18:55", - "arrival_time": "19:08:11.018000", - "departure_time": "19:08:11.018000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.417, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1071, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_18:55", - "arrival_time": "19:09:22.364000", - "departure_time": "19:09:22.364000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.635, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1072, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_18:55", - "arrival_time": "19:12:17.782000", - "departure_time": "19:12:17.782000", - "stop_id": "bUCR_0_01", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.171, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1073, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_19:15", - "arrival_time": "19:15:00", - "departure_time": "19:15:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1074, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_19:15", - "arrival_time": "19:19:00.873000", - "departure_time": "19:19:00.873000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.736, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1075, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_19:15", - "arrival_time": "19:22:28.364000", - "departure_time": "19:22:28.364000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.37, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1076, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_19:15", - "arrival_time": "19:23:12.873000", - "departure_time": "19:23:12.873000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.506, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1077, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_19:15", - "arrival_time": "19:24:11.127000", - "departure_time": "19:24:11.127000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.684, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1078, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_19:15", - "arrival_time": "19:26:27.600000", - "departure_time": "19:26:27.600000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.101, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1079, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_19:15", - "arrival_time": "19:28:11.018000", - "departure_time": "19:28:11.018000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.417, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1080, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_19:15", - "arrival_time": "19:29:22.364000", - "departure_time": "19:29:22.364000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.635, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1081, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_19:15", - "arrival_time": "19:32:17.782000", - "departure_time": "19:32:17.782000", - "stop_id": "bUCR_0_01", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.171, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1082, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_19:50", - "arrival_time": "19:50:00", - "departure_time": "19:50:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1083, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_19:50", - "arrival_time": "19:54:15.927000", - "departure_time": "19:54:15.927000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.782, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1084, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_19:50", - "arrival_time": "19:57:27.709000", - "departure_time": "19:57:27.709000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.368, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1085, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_19:50", - "arrival_time": "19:58:04.691000", - "departure_time": "19:58:04.691000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.481, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1086, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_19:50", - "arrival_time": "19:59:12.764000", - "departure_time": "19:59:12.764000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.689, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1087, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_19:50", - "arrival_time": "20:01:29.891000", - "departure_time": "20:01:29.891000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.108, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1088, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_19:50", - "arrival_time": "20:03:09.709000", - "departure_time": "20:03:09.709000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.413, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1089, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_19:50", - "arrival_time": "20:04:22.691000", - "departure_time": "20:04:22.691000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.636, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1090, - "fields": { - "feed": "1", - "trip_id": "hacia_artes_entresemana_19:50", - "arrival_time": "20:09:11.673000", - "departure_time": "20:09:11.673000", - "stop_id": "bUCR_0_02", - "stop_sequence": 10, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.519, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1091, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_20:30", - "arrival_time": "20:30:00", - "departure_time": "20:30:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1092, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_20:30", - "arrival_time": "20:34:00.873000", - "departure_time": "20:34:00.873000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.736, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1093, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_20:30", - "arrival_time": "20:37:28.364000", - "departure_time": "20:37:28.364000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.37, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1094, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_20:30", - "arrival_time": "20:38:12.873000", - "departure_time": "20:38:12.873000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.506, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1095, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_20:30", - "arrival_time": "20:39:11.127000", - "departure_time": "20:39:11.127000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.684, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1096, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_20:30", - "arrival_time": "20:41:27.600000", - "departure_time": "20:41:27.600000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.101, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1097, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_20:30", - "arrival_time": "20:43:11.018000", - "departure_time": "20:43:11.018000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.417, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1098, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_20:30", - "arrival_time": "20:44:22.364000", - "departure_time": "20:44:22.364000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.635, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1099, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_20:30", - "arrival_time": "20:47:17.782000", - "departure_time": "20:47:17.782000", - "stop_id": "bUCR_0_01", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.171, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1100, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_20:40", - "arrival_time": "20:40:00", - "departure_time": "20:40:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1101, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_20:40", - "arrival_time": "20:44:00.873000", - "departure_time": "20:44:00.873000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.736, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1102, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_20:40", - "arrival_time": "20:47:28.364000", - "departure_time": "20:47:28.364000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.37, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1103, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_20:40", - "arrival_time": "20:48:12.873000", - "departure_time": "20:48:12.873000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.506, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1104, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_20:40", - "arrival_time": "20:49:11.127000", - "departure_time": "20:49:11.127000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.684, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1105, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_20:40", - "arrival_time": "20:51:27.600000", - "departure_time": "20:51:27.600000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.101, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1106, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_20:40", - "arrival_time": "20:53:11.018000", - "departure_time": "20:53:11.018000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.417, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1107, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_20:40", - "arrival_time": "20:54:22.364000", - "departure_time": "20:54:22.364000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.635, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1108, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_20:40", - "arrival_time": "20:57:17.782000", - "departure_time": "20:57:17.782000", - "stop_id": "bUCR_0_01", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.171, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1109, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_21:15", - "arrival_time": "21:15:00", - "departure_time": "21:15:00", - "stop_id": "bUCR_1_01", - "stop_sequence": 0, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.0, - "timepoint": 1 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1110, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_21:15", - "arrival_time": "21:19:00.873000", - "departure_time": "21:19:00.873000", - "stop_id": "bUCR_1_02", - "stop_sequence": 1, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 0.736, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1111, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_21:15", - "arrival_time": "21:22:28.364000", - "departure_time": "21:22:28.364000", - "stop_id": "bUCR_1_03", - "stop_sequence": 3, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.37, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1112, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_21:15", - "arrival_time": "21:23:12.873000", - "departure_time": "21:23:12.873000", - "stop_id": "bUCR_1_04", - "stop_sequence": 4, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.506, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1113, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_21:15", - "arrival_time": "21:24:11.127000", - "departure_time": "21:24:11.127000", - "stop_id": "bUCR_1_05", - "stop_sequence": 5, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 1.684, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1114, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_21:15", - "arrival_time": "21:26:27.600000", - "departure_time": "21:26:27.600000", - "stop_id": "bUCR_1_06", - "stop_sequence": 6, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.101, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1115, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_21:15", - "arrival_time": "21:28:11.018000", - "departure_time": "21:28:11.018000", - "stop_id": "bUCR_1_07", - "stop_sequence": 7, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.417, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1116, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_21:15", - "arrival_time": "21:29:22.364000", - "departure_time": "21:29:22.364000", - "stop_id": "bUCR_1_08", - "stop_sequence": 8, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 2.635, - "timepoint": 0 - } - }, - { - "model": "gtfs.stoptime", - "pk": 1117, - "fields": { - "feed": "1", - "trip_id": "hacia_educacion_entresemana_21:15", - "arrival_time": "21:32:17.782000", - "departure_time": "21:32:17.782000", - "stop_id": "bUCR_0_01", - "stop_sequence": 9, - "stop_headsign": "", - "pickup_type": 0, - "drop_off_type": 0, - "shape_dist_traveled": 3.171, - "timepoint": 0 - } - }, - { - "model": "gtfs.calendar", - "pk": 1, - "fields": { - "feed": "1", - "service_id": "entresemana", - "monday": 1, - "tuesday": 1, - "wednesday": 1, - "thursday": 1, - "friday": 1, - "saturday": 0, - "sunday": 0, - "start_date": "2024-01-01", - "end_date": "2024-12-31" - } - }, - { - "model": "gtfs.farerule", - "pk": 1, - "fields": { - "feed": "1", - "fare_id": "no_tarifa", - "route_id": "bUCR_L1", - "origin_id": "bUCR_0", - "destination_id": "bUCR_0", - "contains_id": "" - } - }, - { - "model": "gtfs.farerule", - "pk": 2, - "fields": { - "feed": "1", - "fare_id": "no_tarifa", - "route_id": "bUCR_L2", - "origin_id": "bUCR_1", - "destination_id": "bUCR_1", - "contains_id": "" - } - }, - { - "model": "gtfs.fareattribute", - "pk": 1, - "fields": { - "feed": "1", - "fare_id": "no_tarifa", - "price": 0, - "currency_type": "CRC", - "payment_method": 0, - "transfers": 0, - "transfer_duration": null - } - }, - { - "model": "gtfs.shape", - "pk": 1, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93554944029271, - "shape_pt_lon": -84.0491138975951, - "shape_pt_sequence": 0, - "shape_dist_traveled": 0.0 - } - }, - { - "model": "gtfs.shape", - "pk": 2, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.9355589010814, - "shape_pt_lon": -84.0491582627979, - "shape_pt_sequence": 1, - "shape_dist_traveled": 0.005 - } - }, - { - "model": "gtfs.shape", - "pk": 3, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93557354275506, - "shape_pt_lon": -84.0492241246225, - "shape_pt_sequence": 2, - "shape_dist_traveled": 0.012 - } - }, - { - "model": "gtfs.shape", - "pk": 4, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.9356000651633, - "shape_pt_lon": -84.049324861376, - "shape_pt_sequence": 3, - "shape_dist_traveled": 0.024 - } - }, - { - "model": "gtfs.shape", - "pk": 5, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93563773463719, - "shape_pt_lon": -84.049416778843, - "shape_pt_sequence": 4, - "shape_dist_traveled": 0.035 - } - }, - { - "model": "gtfs.shape", - "pk": 6, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93568399531643, - "shape_pt_lon": -84.0495368755472, - "shape_pt_sequence": 5, - "shape_dist_traveled": 0.049 - } - }, - { - "model": "gtfs.shape", - "pk": 7, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93570316048327, - "shape_pt_lon": -84.0495945755631, - "shape_pt_sequence": 6, - "shape_dist_traveled": 0.056 - } - }, - { - "model": "gtfs.shape", - "pk": 8, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93571109089738, - "shape_pt_lon": -84.0496871639603, - "shape_pt_sequence": 7, - "shape_dist_traveled": 0.066 - } - }, - { - "model": "gtfs.shape", - "pk": 9, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93571292483817, - "shape_pt_lon": -84.0498464474787, - "shape_pt_sequence": 8, - "shape_dist_traveled": 0.083 - } - }, - { - "model": "gtfs.shape", - "pk": 10, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93570393244304, - "shape_pt_lon": -84.0500877222699, - "shape_pt_sequence": 9, - "shape_dist_traveled": 0.11 - } - }, - { - "model": "gtfs.shape", - "pk": 11, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93566539329337, - "shape_pt_lon": -84.050351168656, - "shape_pt_sequence": 10, - "shape_dist_traveled": 0.139 - } - }, - { - "model": "gtfs.shape", - "pk": 12, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93561786205413, - "shape_pt_lon": -84.0505937476355, - "shape_pt_sequence": 11, - "shape_dist_traveled": 0.166 - } - }, - { - "model": "gtfs.shape", - "pk": 13, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93556519227529, - "shape_pt_lon": -84.050878060609, - "shape_pt_sequence": 12, - "shape_dist_traveled": 0.198 - } - }, - { - "model": "gtfs.shape", - "pk": 14, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93552922267821, - "shape_pt_lon": -84.051108901895, - "shape_pt_sequence": 13, - "shape_dist_traveled": 0.223 - } - }, - { - "model": "gtfs.shape", - "pk": 15, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93548169125642, - "shape_pt_lon": -84.0513932152566, - "shape_pt_sequence": 14, - "shape_dist_traveled": 0.255 - } - }, - { - "model": "gtfs.shape", - "pk": 16, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93545342942273, - "shape_pt_lon": -84.0516410109878, - "shape_pt_sequence": 15, - "shape_dist_traveled": 0.282 - } - }, - { - "model": "gtfs.shape", - "pk": 17, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93544741074256, - "shape_pt_lon": -84.0516943904767, - "shape_pt_sequence": 16, - "shape_dist_traveled": 0.288 - } - }, - { - "model": "gtfs.shape", - "pk": 18, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93544700627605, - "shape_pt_lon": -84.051754475488, - "shape_pt_sequence": 17, - "shape_dist_traveled": 0.295 - } - }, - { - "model": "gtfs.shape", - "pk": 19, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93546627570862, - "shape_pt_lon": -84.0519579288248, - "shape_pt_sequence": 18, - "shape_dist_traveled": 0.317 - } - }, - { - "model": "gtfs.shape", - "pk": 20, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93548939902537, - "shape_pt_lon": -84.052131385837, - "shape_pt_sequence": 19, - "shape_dist_traveled": 0.336 - } - }, - { - "model": "gtfs.shape", - "pk": 21, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93550517435119, - "shape_pt_lon": -84.0522239834817, - "shape_pt_sequence": 20, - "shape_dist_traveled": 0.347 - } - }, - { - "model": "gtfs.shape", - "pk": 22, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93554618004823, - "shape_pt_lon": -84.0523340057342, - "shape_pt_sequence": 21, - "shape_dist_traveled": 0.36 - } - }, - { - "model": "gtfs.shape", - "pk": 23, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93559987797587, - "shape_pt_lon": -84.0523914948391, - "shape_pt_sequence": 22, - "shape_dist_traveled": 0.368 - } - }, - { - "model": "gtfs.shape", - "pk": 24, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93565552854654, - "shape_pt_lon": -84.0524281689233, - "shape_pt_sequence": 23, - "shape_dist_traveled": 0.376 - } - }, - { - "model": "gtfs.shape", - "pk": 25, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93572094236273, - "shape_pt_lon": -84.0524410544122, - "shape_pt_sequence": 24, - "shape_dist_traveled": 0.383 - } - }, - { - "model": "gtfs.shape", - "pk": 26, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93583614886311, - "shape_pt_lon": -84.0524182569563, - "shape_pt_sequence": 25, - "shape_dist_traveled": 0.396 - } - }, - { - "model": "gtfs.shape", - "pk": 27, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93603336648931, - "shape_pt_lon": -84.0523528383197, - "shape_pt_sequence": 26, - "shape_dist_traveled": 0.419 - } - }, - { - "model": "gtfs.shape", - "pk": 28, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93625691629266, - "shape_pt_lon": -84.0522832947174, - "shape_pt_sequence": 27, - "shape_dist_traveled": 0.445 - } - }, - { - "model": "gtfs.shape", - "pk": 29, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93639307154715, - "shape_pt_lon": -84.0522431941422, - "shape_pt_sequence": 28, - "shape_dist_traveled": 0.46 - } - }, - { - "model": "gtfs.shape", - "pk": 30, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93653561474882, - "shape_pt_lon": -84.0522372469934, - "shape_pt_sequence": 29, - "shape_dist_traveled": 0.476 - } - }, - { - "model": "gtfs.shape", - "pk": 31, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93660005206628, - "shape_pt_lon": -84.0522600443969, - "shape_pt_sequence": 30, - "shape_dist_traveled": 0.484 - } - }, - { - "model": "gtfs.shape", - "pk": 32, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93661957852377, - "shape_pt_lon": -84.0523423132888, - "shape_pt_sequence": 31, - "shape_dist_traveled": 0.493 - } - }, - { - "model": "gtfs.shape", - "pk": 33, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93659126516027, - "shape_pt_lon": -84.0524275557544, - "shape_pt_sequence": 32, - "shape_dist_traveled": 0.503 - } - }, - { - "model": "gtfs.shape", - "pk": 34, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93653854371827, - "shape_pt_lon": -84.0524503531584, - "shape_pt_sequence": 33, - "shape_dist_traveled": 0.509 - } - }, - { - "model": "gtfs.shape", - "pk": 35, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93645360359939, - "shape_pt_lon": -84.0524483707755, - "shape_pt_sequence": 34, - "shape_dist_traveled": 0.519 - } - }, - { - "model": "gtfs.shape", - "pk": 36, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93636085286962, - "shape_pt_lon": -84.052439450052, - "shape_pt_sequence": 35, - "shape_dist_traveled": 0.529 - } - }, - { - "model": "gtfs.shape", - "pk": 37, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93633386047036, - "shape_pt_lon": -84.0524268046992, - "shape_pt_sequence": 36, - "shape_dist_traveled": 0.532 - } - }, - { - "model": "gtfs.shape", - "pk": 38, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93630422609543, - "shape_pt_lon": -84.0524265645631, - "shape_pt_sequence": 37, - "shape_dist_traveled": 0.535 - } - }, - { - "model": "gtfs.shape", - "pk": 39, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93618120917912, - "shape_pt_lon": -84.0524473794854, - "shape_pt_sequence": 38, - "shape_dist_traveled": 0.549 - } - }, - { - "model": "gtfs.shape", - "pk": 40, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93600742368285, - "shape_pt_lon": -84.052484053706, - "shape_pt_sequence": 39, - "shape_dist_traveled": 0.569 - } - }, - { - "model": "gtfs.shape", - "pk": 41, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93581118236608, - "shape_pt_lon": -84.0525276661302, - "shape_pt_sequence": 40, - "shape_dist_traveled": 0.591 - } - }, - { - "model": "gtfs.shape", - "pk": 42, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93571876163712, - "shape_pt_lon": -84.0525355663096, - "shape_pt_sequence": 41, - "shape_dist_traveled": 0.601 - } - }, - { - "model": "gtfs.shape", - "pk": 43, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93563153840537, - "shape_pt_lon": -84.0525177541372, - "shape_pt_sequence": 42, - "shape_dist_traveled": 0.611 - } - }, - { - "model": "gtfs.shape", - "pk": 44, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93553310902874, - "shape_pt_lon": -84.0524334735888, - "shape_pt_sequence": 43, - "shape_dist_traveled": 0.626 - } - }, - { - "model": "gtfs.shape", - "pk": 45, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93545970504671, - "shape_pt_lon": -84.0523512340121, - "shape_pt_sequence": 44, - "shape_dist_traveled": 0.638 - } - }, - { - "model": "gtfs.shape", - "pk": 46, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93542065199216, - "shape_pt_lon": -84.0522451765253, - "shape_pt_sequence": 45, - "shape_dist_traveled": 0.65 - } - }, - { - "model": "gtfs.shape", - "pk": 47, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93541674668641, - "shape_pt_lon": -84.0521014537632, - "shape_pt_sequence": 46, - "shape_dist_traveled": 0.666 - } - }, - { - "model": "gtfs.shape", - "pk": 48, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93537769362758, - "shape_pt_lon": -84.0518556382803, - "shape_pt_sequence": 47, - "shape_dist_traveled": 0.693 - } - }, - { - "model": "gtfs.shape", - "pk": 49, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93533766423581, - "shape_pt_lon": -84.0515960083744, - "shape_pt_sequence": 48, - "shape_dist_traveled": 0.722 - } - }, - { - "model": "gtfs.shape", - "pk": 50, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93531364398533, - "shape_pt_lon": -84.0515277691646, - "shape_pt_sequence": 49, - "shape_dist_traveled": 0.73 - } - }, - { - "model": "gtfs.shape", - "pk": 51, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93528103728449, - "shape_pt_lon": -84.0514612063353, - "shape_pt_sequence": 50, - "shape_dist_traveled": 0.738 - } - }, - { - "model": "gtfs.shape", - "pk": 52, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93537964636139, - "shape_pt_lon": -84.0510449054667, - "shape_pt_sequence": 51, - "shape_dist_traveled": 0.785 - } - }, - { - "model": "gtfs.shape", - "pk": 53, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93549228868242, - "shape_pt_lon": -84.0506385823758, - "shape_pt_sequence": 52, - "shape_dist_traveled": 0.831 - } - }, - { - "model": "gtfs.shape", - "pk": 54, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93560853450969, - "shape_pt_lon": -84.0501428263958, - "shape_pt_sequence": 53, - "shape_dist_traveled": 0.887 - } - }, - { - "model": "gtfs.shape", - "pk": 55, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93564523227799, - "shape_pt_lon": -84.0499153784661, - "shape_pt_sequence": 54, - "shape_dist_traveled": 0.912 - } - }, - { - "model": "gtfs.shape", - "pk": 56, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.9355593156005, - "shape_pt_lon": -84.0495436816674, - "shape_pt_sequence": 55, - "shape_dist_traveled": 0.954 - } - }, - { - "model": "gtfs.shape", - "pk": 57, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93549425099087, - "shape_pt_lon": -84.049203385401, - "shape_pt_sequence": 56, - "shape_dist_traveled": 0.992 - } - }, - { - "model": "gtfs.shape", - "pk": 58, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93539252590615, - "shape_pt_lon": -84.0487850070695, - "shape_pt_sequence": 57, - "shape_dist_traveled": 1.039 - } - }, - { - "model": "gtfs.shape", - "pk": 59, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93537592835444, - "shape_pt_lon": -84.0486462402645, - "shape_pt_sequence": 58, - "shape_dist_traveled": 1.055 - } - }, - { - "model": "gtfs.shape", - "pk": 60, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93528024833921, - "shape_pt_lon": -84.0486373195414, - "shape_pt_sequence": 59, - "shape_dist_traveled": 1.065 - } - }, - { - "model": "gtfs.shape", - "pk": 61, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93529755089066, - "shape_pt_lon": -84.0483824809879, - "shape_pt_sequence": 60, - "shape_dist_traveled": 1.093 - } - }, - { - "model": "gtfs.shape", - "pk": 62, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93524885628052, - "shape_pt_lon": -84.048123669054, - "shape_pt_sequence": 61, - "shape_dist_traveled": 1.122 - } - }, - { - "model": "gtfs.shape", - "pk": 63, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.9351256875275, - "shape_pt_lon": -84.0477514451489, - "shape_pt_sequence": 62, - "shape_dist_traveled": 1.165 - } - }, - { - "model": "gtfs.shape", - "pk": 64, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93500538311991, - "shape_pt_lon": -84.0473850372423, - "shape_pt_sequence": 63, - "shape_dist_traveled": 1.208 - } - }, - { - "model": "gtfs.shape", - "pk": 65, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93492412702167, - "shape_pt_lon": -84.0470954278149, - "shape_pt_sequence": 64, - "shape_dist_traveled": 1.241 - } - }, - { - "model": "gtfs.shape", - "pk": 66, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93480668693231, - "shape_pt_lon": -84.046441127981, - "shape_pt_sequence": 65, - "shape_dist_traveled": 1.314 - } - }, - { - "model": "gtfs.shape", - "pk": 67, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93468020166955, - "shape_pt_lon": -84.0458485099908, - "shape_pt_sequence": 66, - "shape_dist_traveled": 1.38 - } - }, - { - "model": "gtfs.shape", - "pk": 68, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93461570602311, - "shape_pt_lon": -84.0456145784198, - "shape_pt_sequence": 67, - "shape_dist_traveled": 1.407 - } - }, - { - "model": "gtfs.shape", - "pk": 69, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93495613335646, - "shape_pt_lon": -84.0456080574792, - "shape_pt_sequence": 68, - "shape_dist_traveled": 1.444 - } - }, - { - "model": "gtfs.shape", - "pk": 70, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93502533870439, - "shape_pt_lon": -84.0455873014759, - "shape_pt_sequence": 69, - "shape_dist_traveled": 1.452 - } - }, - { - "model": "gtfs.shape", - "pk": 71, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93533638426393, - "shape_pt_lon": -84.045580669786, - "shape_pt_sequence": 70, - "shape_dist_traveled": 1.487 - } - }, - { - "model": "gtfs.shape", - "pk": 72, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93558174876489, - "shape_pt_lon": -84.045528502083, - "shape_pt_sequence": 71, - "shape_dist_traveled": 1.514 - } - }, - { - "model": "gtfs.shape", - "pk": 73, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.9356639649666, - "shape_pt_lon": -84.0454554675517, - "shape_pt_sequence": 72, - "shape_dist_traveled": 1.527 - } - }, - { - "model": "gtfs.shape", - "pk": 74, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93591239555134, - "shape_pt_lon": -84.0454118867064, - "shape_pt_sequence": 73, - "shape_dist_traveled": 1.554 - } - }, - { - "model": "gtfs.shape", - "pk": 75, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93618345188633, - "shape_pt_lon": -84.0453571107868, - "shape_pt_sequence": 74, - "shape_dist_traveled": 1.585 - } - }, - { - "model": "gtfs.shape", - "pk": 76, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93630292207917, - "shape_pt_lon": -84.0453649359146, - "shape_pt_sequence": 75, - "shape_dist_traveled": 1.598 - } - }, - { - "model": "gtfs.shape", - "pk": 77, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93644423085287, - "shape_pt_lon": -84.0454366662581, - "shape_pt_sequence": 76, - "shape_dist_traveled": 1.616 - } - }, - { - "model": "gtfs.shape", - "pk": 78, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93668331840604, - "shape_pt_lon": -84.045567569655, - "shape_pt_sequence": 77, - "shape_dist_traveled": 1.646 - } - }, - { - "model": "gtfs.shape", - "pk": 79, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93677195745002, - "shape_pt_lon": -84.045592349228, - "shape_pt_sequence": 78, - "shape_dist_traveled": 1.656 - } - }, - { - "model": "gtfs.shape", - "pk": 80, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.9368528887295, - "shape_pt_lon": -84.0455871324757, - "shape_pt_sequence": 79, - "shape_dist_traveled": 1.665 - } - }, - { - "model": "gtfs.shape", - "pk": 81, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93694152772752, - "shape_pt_lon": -84.0455467026459, - "shape_pt_sequence": 80, - "shape_dist_traveled": 1.676 - } - }, - { - "model": "gtfs.shape", - "pk": 82, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93708540528038, - "shape_pt_lon": -84.0454423673758, - "shape_pt_sequence": 81, - "shape_dist_traveled": 1.695 - } - }, - { - "model": "gtfs.shape", - "pk": 83, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.9372459343465, - "shape_pt_lon": -84.0452787163273, - "shape_pt_sequence": 82, - "shape_dist_traveled": 1.721 - } - }, - { - "model": "gtfs.shape", - "pk": 84, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93733842710149, - "shape_pt_lon": -84.0451378640166, - "shape_pt_sequence": 83, - "shape_dist_traveled": 1.739 - } - }, - { - "model": "gtfs.shape", - "pk": 85, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93756026309952, - "shape_pt_lon": -84.044752821983, - "shape_pt_sequence": 84, - "shape_dist_traveled": 1.788 - } - }, - { - "model": "gtfs.shape", - "pk": 86, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93777652816203, - "shape_pt_lon": -84.0443585013794, - "shape_pt_sequence": 85, - "shape_dist_traveled": 1.837 - } - }, - { - "model": "gtfs.shape", - "pk": 87, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.9381041049962, - "shape_pt_lon": -84.0438016139119, - "shape_pt_sequence": 86, - "shape_dist_traveled": 1.908 - } - }, - { - "model": "gtfs.shape", - "pk": 88, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93796476738381, - "shape_pt_lon": -84.0436166501913, - "shape_pt_sequence": 87, - "shape_dist_traveled": 1.934 - } - }, - { - "model": "gtfs.shape", - "pk": 89, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93791473560688, - "shape_pt_lon": -84.0434457982085, - "shape_pt_sequence": 88, - "shape_dist_traveled": 1.953 - } - }, - { - "model": "gtfs.shape", - "pk": 90, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93789047771889, - "shape_pt_lon": -84.0432203034589, - "shape_pt_sequence": 89, - "shape_dist_traveled": 1.978 - } - }, - { - "model": "gtfs.shape", - "pk": 91, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93791970638376, - "shape_pt_lon": -84.0429894627193, - "shape_pt_sequence": 90, - "shape_dist_traveled": 2.004 - } - }, - { - "model": "gtfs.shape", - "pk": 92, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93798008366965, - "shape_pt_lon": -84.0426008139046, - "shape_pt_sequence": 91, - "shape_dist_traveled": 2.047 - } - }, - { - "model": "gtfs.shape", - "pk": 93, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93800449142722, - "shape_pt_lon": -84.0424795244151, - "shape_pt_sequence": 92, - "shape_dist_traveled": 2.06 - } - }, - { - "model": "gtfs.shape", - "pk": 94, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.9381380917555, - "shape_pt_lon": -84.0421782569734, - "shape_pt_sequence": 93, - "shape_dist_traveled": 2.097 - } - }, - { - "model": "gtfs.shape", - "pk": 95, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93816473253672, - "shape_pt_lon": -84.0419964534982, - "shape_pt_sequence": 94, - "shape_dist_traveled": 2.117 - } - }, - { - "model": "gtfs.shape", - "pk": 96, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93815830944601, - "shape_pt_lon": -84.0418503844357, - "shape_pt_sequence": 95, - "shape_dist_traveled": 2.133 - } - }, - { - "model": "gtfs.shape", - "pk": 97, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93812876322556, - "shape_pt_lon": -84.0417251823817, - "shape_pt_sequence": 96, - "shape_dist_traveled": 2.147 - } - }, - { - "model": "gtfs.shape", - "pk": 98, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93807176432108, - "shape_pt_lon": -84.0416449024973, - "shape_pt_sequence": 97, - "shape_dist_traveled": 2.158 - } - }, - { - "model": "gtfs.shape", - "pk": 99, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.9380170014129, - "shape_pt_lon": -84.0416364975937, - "shape_pt_sequence": 98, - "shape_dist_traveled": 2.164 - } - }, - { - "model": "gtfs.shape", - "pk": 100, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.9379218878614, - "shape_pt_lon": -84.0416378013257, - "shape_pt_sequence": 99, - "shape_dist_traveled": 2.174 - } - }, - { - "model": "gtfs.shape", - "pk": 101, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93790138516287, - "shape_pt_lon": -84.0411362584451, - "shape_pt_sequence": 100, - "shape_dist_traveled": 2.229 - } - }, - { - "model": "gtfs.shape", - "pk": 102, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93789650346394, - "shape_pt_lon": -84.041068473332, - "shape_pt_sequence": 101, - "shape_dist_traveled": 2.237 - } - }, - { - "model": "gtfs.shape", - "pk": 103, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93846399292934, - "shape_pt_lon": -84.0409289658467, - "shape_pt_sequence": 102, - "shape_dist_traveled": 2.301 - } - }, - { - "model": "gtfs.shape", - "pk": 104, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93868999787477, - "shape_pt_lon": -84.0409645503437, - "shape_pt_sequence": 103, - "shape_dist_traveled": 2.327 - } - }, - { - "model": "gtfs.shape", - "pk": 105, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93885220465146, - "shape_pt_lon": -84.0411343350368, - "shape_pt_sequence": 104, - "shape_dist_traveled": 2.353 - } - }, - { - "model": "gtfs.shape", - "pk": 106, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93915775668989, - "shape_pt_lon": -84.0416551779252, - "shape_pt_sequence": 105, - "shape_dist_traveled": 2.419 - } - }, - { - "model": "gtfs.shape", - "pk": 107, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93928866239001, - "shape_pt_lon": -84.0417942257713, - "shape_pt_sequence": 106, - "shape_dist_traveled": 2.44 - } - }, - { - "model": "gtfs.shape", - "pk": 108, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.9394332650851, - "shape_pt_lon": -84.0418835860126, - "shape_pt_sequence": 107, - "shape_dist_traveled": 2.459 - } - }, - { - "model": "gtfs.shape", - "pk": 109, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93950294569722, - "shape_pt_lon": -84.0419072239736, - "shape_pt_sequence": 108, - "shape_dist_traveled": 2.467 - } - }, - { - "model": "gtfs.shape", - "pk": 110, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93950393195614, - "shape_pt_lon": -84.0422269282472, - "shape_pt_sequence": 109, - "shape_dist_traveled": 2.502 - } - }, - { - "model": "gtfs.shape", - "pk": 111, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93949212322203, - "shape_pt_lon": -84.0425117128132, - "shape_pt_sequence": 110, - "shape_dist_traveled": 2.533 - } - }, - { - "model": "gtfs.shape", - "pk": 112, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93945684385667, - "shape_pt_lon": -84.0429181490899, - "shape_pt_sequence": 111, - "shape_dist_traveled": 2.578 - } - }, - { - "model": "gtfs.shape", - "pk": 113, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93942503205056, - "shape_pt_lon": -84.0433331349077, - "shape_pt_sequence": 112, - "shape_dist_traveled": 2.624 - } - }, - { - "model": "gtfs.shape", - "pk": 114, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93972770605043, - "shape_pt_lon": -84.0432631191506, - "shape_pt_sequence": 113, - "shape_dist_traveled": 2.658 - } - }, - { - "model": "gtfs.shape", - "pk": 115, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93979024582779, - "shape_pt_lon": -84.0432957235711, - "shape_pt_sequence": 114, - "shape_dist_traveled": 2.666 - } - }, - { - "model": "gtfs.shape", - "pk": 116, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.93981898031695, - "shape_pt_lon": -84.0433729445674, - "shape_pt_sequence": 115, - "shape_dist_traveled": 2.675 - } - }, - { - "model": "gtfs.shape", - "pk": 117, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.94007108411656, - "shape_pt_lon": -84.0443132968873, - "shape_pt_sequence": 116, - "shape_dist_traveled": 2.782 - } - }, - { - "model": "gtfs.shape", - "pk": 118, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.94016605495639, - "shape_pt_lon": -84.0446693302114, - "shape_pt_sequence": 117, - "shape_dist_traveled": 2.822 - } - }, - { - "model": "gtfs.shape", - "pk": 119, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.94027244564152, - "shape_pt_lon": -84.0448273689979, - "shape_pt_sequence": 118, - "shape_dist_traveled": 2.843 - } - }, - { - "model": "gtfs.shape", - "pk": 120, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.94046211098755, - "shape_pt_lon": -84.0455400945559, - "shape_pt_sequence": 119, - "shape_dist_traveled": 2.924 - } - }, - { - "model": "gtfs.shape", - "pk": 121, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.94049056601295, - "shape_pt_lon": -84.0456302713637, - "shape_pt_sequence": 120, - "shape_dist_traveled": 2.934 - } - }, - { - "model": "gtfs.shape", - "pk": 122, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.94063822457009, - "shape_pt_lon": -84.0455978789472, - "shape_pt_sequence": 121, - "shape_dist_traveled": 2.951 - } - }, - { - "model": "gtfs.shape", - "pk": 123, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.94079717180704, - "shape_pt_lon": -84.0450688663703, - "shape_pt_sequence": 122, - "shape_dist_traveled": 3.012 - } - }, - { - "model": "gtfs.shape", - "pk": 124, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.94095438717349, - "shape_pt_lon": -84.04474671421, - "shape_pt_sequence": 123, - "shape_dist_traveled": 3.051 - } - }, - { - "model": "gtfs.shape", - "pk": 125, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.94105262250509, - "shape_pt_lon": -84.0446527254796, - "shape_pt_sequence": 124, - "shape_dist_traveled": 3.066 - } - }, - { - "model": "gtfs.shape", - "pk": 126, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.9414150973303, - "shape_pt_lon": -84.0446772759114, - "shape_pt_sequence": 125, - "shape_dist_traveled": 3.106 - } - }, - { - "model": "gtfs.shape", - "pk": 127, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.94222783326419, - "shape_pt_lon": -84.0447316948875, - "shape_pt_sequence": 126, - "shape_dist_traveled": 3.196 - } - }, - { - "model": "gtfs.shape", - "pk": 128, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.94282430588245, - "shape_pt_lon": -84.0447692666912, - "shape_pt_sequence": 127, - "shape_dist_traveled": 3.262 - } - }, - { - "model": "gtfs.shape", - "pk": 129, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.9430072194504, - "shape_pt_lon": -84.0447361152365, - "shape_pt_sequence": 128, - "shape_dist_traveled": 3.283 - } - }, - { - "model": "gtfs.shape", - "pk": 130, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.94325327852743, - "shape_pt_lon": -84.0446536543918, - "shape_pt_sequence": 129, - "shape_dist_traveled": 3.311 - } - }, - { - "model": "gtfs.shape", - "pk": 131, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.94367377439675, - "shape_pt_lon": -84.0444658512058, - "shape_pt_sequence": 130, - "shape_dist_traveled": 3.362 - } - }, - { - "model": "gtfs.shape", - "pk": 132, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.94380472710699, - "shape_pt_lon": -84.0447574980966, - "shape_pt_sequence": 131, - "shape_dist_traveled": 3.397 - } - }, - { - "model": "gtfs.shape", - "pk": 133, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.94388103477618, - "shape_pt_lon": -84.044883947833, - "shape_pt_sequence": 132, - "shape_dist_traveled": 3.414 - } - }, - { - "model": "gtfs.shape", - "pk": 134, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.94396870046222, - "shape_pt_lon": -84.044952212081, - "shape_pt_sequence": 133, - "shape_dist_traveled": 3.426 - } - }, - { - "model": "gtfs.shape", - "pk": 135, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.94440018674929, - "shape_pt_lon": -84.0449991890221, - "shape_pt_sequence": 134, - "shape_dist_traveled": 3.474 - } - }, - { - "model": "gtfs.shape", - "pk": 136, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.94457575401998, - "shape_pt_lon": -84.045011078064, - "shape_pt_sequence": 135, - "shape_dist_traveled": 3.493 - } - }, - { - "model": "gtfs.shape", - "pk": 137, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.94495341180596, - "shape_pt_lon": -84.045007224609, - "shape_pt_sequence": 136, - "shape_dist_traveled": 3.535 - } - }, - { - "model": "gtfs.shape", - "pk": 138, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.94503790634203, - "shape_pt_lon": -84.0450804402532, - "shape_pt_sequence": 137, - "shape_dist_traveled": 3.547 - } - }, - { - "model": "gtfs.shape", - "pk": 139, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.94507262278836, - "shape_pt_lon": -84.0454078875236, - "shape_pt_sequence": 138, - "shape_dist_traveled": 3.584 - } - }, - { - "model": "gtfs.shape", - "pk": 140, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.94509663743075, - "shape_pt_lon": -84.0455018337476, - "shape_pt_sequence": 139, - "shape_dist_traveled": 3.594 - } - }, - { - "model": "gtfs.shape", - "pk": 141, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.94516495042239, - "shape_pt_lon": -84.0455370798079, - "shape_pt_sequence": 140, - "shape_dist_traveled": 3.603 - } - }, - { - "model": "gtfs.shape", - "pk": 142, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.94535421093323, - "shape_pt_lon": -84.0455279840503, - "shape_pt_sequence": 141, - "shape_dist_traveled": 3.624 - } - }, - { - "model": "gtfs.shape", - "pk": 143, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.94569609354827, - "shape_pt_lon": -84.0455006967812, - "shape_pt_sequence": 142, - "shape_dist_traveled": 3.662 - } - }, - { - "model": "gtfs.shape", - "pk": 144, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.94576019859063, - "shape_pt_lon": -84.0454636202844, - "shape_pt_sequence": 143, - "shape_dist_traveled": 3.67 - } - }, - { - "model": "gtfs.shape", - "pk": 145, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.9458090133638, - "shape_pt_lon": -84.0453783778183, - "shape_pt_sequence": 144, - "shape_dist_traveled": 3.681 - } - }, - { - "model": "gtfs.shape", - "pk": 146, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.94587051996754, - "shape_pt_lon": -84.0452505141197, - "shape_pt_sequence": 145, - "shape_dist_traveled": 3.696 - } - }, - { - "model": "gtfs.shape", - "pk": 147, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.94594579827001, - "shape_pt_lon": -84.0451768005758, - "shape_pt_sequence": 146, - "shape_dist_traveled": 3.708 - } - }, - { - "model": "gtfs.shape", - "pk": 148, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.9462925242644, - "shape_pt_lon": -84.0451498689492, - "shape_pt_sequence": 147, - "shape_dist_traveled": 3.746 - } - }, - { - "model": "gtfs.shape", - "pk": 149, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.9463897709987, - "shape_pt_lon": -84.0451620803092, - "shape_pt_sequence": 148, - "shape_dist_traveled": 3.757 - } - }, - { - "model": "gtfs.shape", - "pk": 150, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.94645002673405, - "shape_pt_lon": -84.0452016714679, - "shape_pt_sequence": 149, - "shape_dist_traveled": 3.765 - } - }, - { - "model": "gtfs.shape", - "pk": 151, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "shape_pt_lat": 9.94648404073633, - "shape_pt_lon": -84.0452387476835, - "shape_pt_sequence": 150, - "shape_dist_traveled": 3.771 - } - }, - { - "model": "gtfs.shape", - "pk": 152, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93554615993122, - "shape_pt_lon": -84.0491114962244, - "shape_pt_sequence": 0, - "shape_dist_traveled": 0.0 - } - }, - { - "model": "gtfs.shape", - "pk": 153, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93557253860416, - "shape_pt_lon": -84.0492324408382, - "shape_pt_sequence": 1, - "shape_dist_traveled": 0.014 - } - }, - { - "model": "gtfs.shape", - "pk": 154, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93559719650295, - "shape_pt_lon": -84.0493243902202, - "shape_pt_sequence": 2, - "shape_dist_traveled": 0.024 - } - }, - { - "model": "gtfs.shape", - "pk": 155, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93566832503712, - "shape_pt_lon": -84.0495039565472, - "shape_pt_sequence": 3, - "shape_dist_traveled": 0.045 - } - }, - { - "model": "gtfs.shape", - "pk": 156, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93570246673155, - "shape_pt_lon": -84.0495983130441, - "shape_pt_sequence": 4, - "shape_dist_traveled": 0.056 - } - }, - { - "model": "gtfs.shape", - "pk": 157, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93570957958473, - "shape_pt_lon": -84.0496907438365, - "shape_pt_sequence": 5, - "shape_dist_traveled": 0.066 - } - }, - { - "model": "gtfs.shape", - "pk": 158, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93571147624034, - "shape_pt_lon": -84.0498491281346, - "shape_pt_sequence": 6, - "shape_dist_traveled": 0.084 - } - }, - { - "model": "gtfs.shape", - "pk": 159, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93570246663722, - "shape_pt_lon": -84.0500893518124, - "shape_pt_sequence": 7, - "shape_dist_traveled": 0.11 - } - }, - { - "model": "gtfs.shape", - "pk": 160, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93566785089355, - "shape_pt_lon": -84.0503237982121, - "shape_pt_sequence": 8, - "shape_dist_traveled": 0.136 - } - }, - { - "model": "gtfs.shape", - "pk": 161, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93562801871054, - "shape_pt_lon": -84.0505362327233, - "shape_pt_sequence": 9, - "shape_dist_traveled": 0.16 - } - }, - { - "model": "gtfs.shape", - "pk": 162, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93558581568109, - "shape_pt_lon": -84.0507591258626, - "shape_pt_sequence": 10, - "shape_dist_traveled": 0.185 - } - }, - { - "model": "gtfs.shape", - "pk": 163, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93553934502577, - "shape_pt_lon": -84.0510354553896, - "shape_pt_sequence": 11, - "shape_dist_traveled": 0.215 - } - }, - { - "model": "gtfs.shape", - "pk": 164, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93548718391971, - "shape_pt_lon": -84.0513535074206, - "shape_pt_sequence": 12, - "shape_dist_traveled": 0.251 - } - }, - { - "model": "gtfs.shape", - "pk": 165, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93544590778002, - "shape_pt_lon": -84.0516944413929, - "shape_pt_sequence": 13, - "shape_dist_traveled": 0.288 - } - }, - { - "model": "gtfs.shape", - "pk": 166, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93544406437546, - "shape_pt_lon": -84.0517683691601, - "shape_pt_sequence": 14, - "shape_dist_traveled": 0.297 - } - }, - { - "model": "gtfs.shape", - "pk": 167, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93549752617786, - "shape_pt_lon": -84.0521913460308, - "shape_pt_sequence": 15, - "shape_dist_traveled": 0.343 - } - }, - { - "model": "gtfs.shape", - "pk": 168, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93552149197739, - "shape_pt_lon": -84.0522746314152, - "shape_pt_sequence": 16, - "shape_dist_traveled": 0.353 - } - }, - { - "model": "gtfs.shape", - "pk": 169, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93554545760814, - "shape_pt_lon": -84.0523420082619, - "shape_pt_sequence": 17, - "shape_dist_traveled": 0.361 - } - }, - { - "model": "gtfs.shape", - "pk": 170, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93560168465873, - "shape_pt_lon": -84.0523981556341, - "shape_pt_sequence": 18, - "shape_dist_traveled": 0.369 - } - }, - { - "model": "gtfs.shape", - "pk": 171, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93565791169966, - "shape_pt_lon": -84.0524318440576, - "shape_pt_sequence": 19, - "shape_dist_traveled": 0.377 - } - }, - { - "model": "gtfs.shape", - "pk": 172, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.935720591012, - "shape_pt_lon": -84.0524430735317, - "shape_pt_sequence": 20, - "shape_dist_traveled": 0.384 - } - }, - { - "model": "gtfs.shape", - "pk": 173, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93583857529975, - "shape_pt_lon": -84.0524187427515, - "shape_pt_sequence": 21, - "shape_dist_traveled": 0.397 - } - }, - { - "model": "gtfs.shape", - "pk": 174, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93605505885652, - "shape_pt_lon": -84.0523466867771, - "shape_pt_sequence": 22, - "shape_dist_traveled": 0.422 - } - }, - { - "model": "gtfs.shape", - "pk": 175, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93627443620344, - "shape_pt_lon": -84.0522802455722, - "shape_pt_sequence": 23, - "shape_dist_traveled": 0.448 - } - }, - { - "model": "gtfs.shape", - "pk": 176, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93639436894143, - "shape_pt_lon": -84.052243749702, - "shape_pt_sequence": 24, - "shape_dist_traveled": 0.461 - } - }, - { - "model": "gtfs.shape", - "pk": 177, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93653263180367, - "shape_pt_lon": -84.0522390707544, - "shape_pt_sequence": 25, - "shape_dist_traveled": 0.477 - } - }, - { - "model": "gtfs.shape", - "pk": 178, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93679802054417, - "shape_pt_lon": -84.0523349506756, - "shape_pt_sequence": 26, - "shape_dist_traveled": 0.508 - } - }, - { - "model": "gtfs.shape", - "pk": 179, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93706910208629, - "shape_pt_lon": -84.0524313369778, - "shape_pt_sequence": 27, - "shape_dist_traveled": 0.54 - } - }, - { - "model": "gtfs.shape", - "pk": 180, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93735023603007, - "shape_pt_lon": -84.0525380169441, - "shape_pt_sequence": 28, - "shape_dist_traveled": 0.573 - } - }, - { - "model": "gtfs.shape", - "pk": 181, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.9375714563375, - "shape_pt_lon": -84.0526437612861, - "shape_pt_sequence": 29, - "shape_dist_traveled": 0.6 - } - }, - { - "model": "gtfs.shape", - "pk": 182, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93774105816322, - "shape_pt_lon": -84.0527027160271, - "shape_pt_sequence": 30, - "shape_dist_traveled": 0.62 - } - }, - { - "model": "gtfs.shape", - "pk": 183, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93778978041929, - "shape_pt_lon": -84.0527151488461, - "shape_pt_sequence": 31, - "shape_dist_traveled": 0.625 - } - }, - { - "model": "gtfs.shape", - "pk": 184, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93794647765702, - "shape_pt_lon": -84.0527273141104, - "shape_pt_sequence": 32, - "shape_dist_traveled": 0.643 - } - }, - { - "model": "gtfs.shape", - "pk": 185, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93809150988507, - "shape_pt_lon": -84.0527076622996, - "shape_pt_sequence": 33, - "shape_dist_traveled": 0.659 - } - }, - { - "model": "gtfs.shape", - "pk": 186, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93815511047925, - "shape_pt_lon": -84.052635606505, - "shape_pt_sequence": 34, - "shape_dist_traveled": 0.67 - } - }, - { - "model": "gtfs.shape", - "pk": 187, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93840121696546, - "shape_pt_lon": -84.0521246655647, - "shape_pt_sequence": 35, - "shape_dist_traveled": 0.732 - } - }, - { - "model": "gtfs.shape", - "pk": 188, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93857142751338, - "shape_pt_lon": -84.051894479649, - "shape_pt_sequence": 36, - "shape_dist_traveled": 0.763 - } - }, - { - "model": "gtfs.shape", - "pk": 189, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93879176765612, - "shape_pt_lon": -84.0516156036497, - "shape_pt_sequence": 37, - "shape_dist_traveled": 0.802 - } - }, - { - "model": "gtfs.shape", - "pk": 190, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93890106345436, - "shape_pt_lon": -84.0514555284908, - "shape_pt_sequence": 38, - "shape_dist_traveled": 0.824 - } - }, - { - "model": "gtfs.shape", - "pk": 191, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93897507515302, - "shape_pt_lon": -84.0513020294891, - "shape_pt_sequence": 39, - "shape_dist_traveled": 0.842 - } - }, - { - "model": "gtfs.shape", - "pk": 192, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.9390141956147, - "shape_pt_lon": -84.0511345760324, - "shape_pt_sequence": 40, - "shape_dist_traveled": 0.861 - } - }, - { - "model": "gtfs.shape", - "pk": 193, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93905117558812, - "shape_pt_lon": -84.0509224405605, - "shape_pt_sequence": 41, - "shape_dist_traveled": 0.885 - } - }, - { - "model": "gtfs.shape", - "pk": 194, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93906597792292, - "shape_pt_lon": -84.0506014881021, - "shape_pt_sequence": 42, - "shape_dist_traveled": 0.92 - } - }, - { - "model": "gtfs.shape", - "pk": 195, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93909856537408, - "shape_pt_lon": -84.0501243834524, - "shape_pt_sequence": 43, - "shape_dist_traveled": 0.973 - } - }, - { - "model": "gtfs.shape", - "pk": 196, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93910318560055, - "shape_pt_lon": -84.0497656390733, - "shape_pt_sequence": 44, - "shape_dist_traveled": 1.012 - } - }, - { - "model": "gtfs.shape", - "pk": 197, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93906512245888, - "shape_pt_lon": -84.049652930016, - "shape_pt_sequence": 45, - "shape_dist_traveled": 1.025 - } - }, - { - "model": "gtfs.shape", - "pk": 198, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.9389773657529, - "shape_pt_lon": -84.0495133854688, - "shape_pt_sequence": 46, - "shape_dist_traveled": 1.043 - } - }, - { - "model": "gtfs.shape", - "pk": 199, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93881453893313, - "shape_pt_lon": -84.0493115816303, - "shape_pt_sequence": 47, - "shape_dist_traveled": 1.072 - } - }, - { - "model": "gtfs.shape", - "pk": 200, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93860413409909, - "shape_pt_lon": -84.0490281988577, - "shape_pt_sequence": 48, - "shape_dist_traveled": 1.11 - } - }, - { - "model": "gtfs.shape", - "pk": 201, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93847607358095, - "shape_pt_lon": -84.0488647834885, - "shape_pt_sequence": 49, - "shape_dist_traveled": 1.133 - } - }, - { - "model": "gtfs.shape", - "pk": 202, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93830796101282, - "shape_pt_lon": -84.0486425856324, - "shape_pt_sequence": 50, - "shape_dist_traveled": 1.164 - } - }, - { - "model": "gtfs.shape", - "pk": 203, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93812775111203, - "shape_pt_lon": -84.0484368995492, - "shape_pt_sequence": 51, - "shape_dist_traveled": 1.194 - } - }, - { - "model": "gtfs.shape", - "pk": 204, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93798100124938, - "shape_pt_lon": -84.0482768335369, - "shape_pt_sequence": 52, - "shape_dist_traveled": 1.218 - } - }, - { - "model": "gtfs.shape", - "pk": 205, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93768022319365, - "shape_pt_lon": -84.0479566982914, - "shape_pt_sequence": 53, - "shape_dist_traveled": 1.266 - } - }, - { - "model": "gtfs.shape", - "pk": 206, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93763286635998, - "shape_pt_lon": -84.0479111252314, - "shape_pt_sequence": 54, - "shape_dist_traveled": 1.274 - } - }, - { - "model": "gtfs.shape", - "pk": 207, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93758319780721, - "shape_pt_lon": -84.0478722576937, - "shape_pt_sequence": 55, - "shape_dist_traveled": 1.28 - } - }, - { - "model": "gtfs.shape", - "pk": 208, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93753870216281, - "shape_pt_lon": -84.0478404135935, - "shape_pt_sequence": 56, - "shape_dist_traveled": 1.287 - } - }, - { - "model": "gtfs.shape", - "pk": 209, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.9374942065184, - "shape_pt_lon": -84.0478139339113, - "shape_pt_sequence": 57, - "shape_dist_traveled": 1.292 - } - }, - { - "model": "gtfs.shape", - "pk": 210, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93745024180206, - "shape_pt_lon": -84.0477923420699, - "shape_pt_sequence": 58, - "shape_dist_traveled": 1.298 - } - }, - { - "model": "gtfs.shape", - "pk": 211, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93735938216936, - "shape_pt_lon": -84.0477606919451, - "shape_pt_sequence": 59, - "shape_dist_traveled": 1.308 - } - }, - { - "model": "gtfs.shape", - "pk": 212, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93724916693389, - "shape_pt_lon": -84.0477606931305, - "shape_pt_sequence": 60, - "shape_dist_traveled": 1.32 - } - }, - { - "model": "gtfs.shape", - "pk": 213, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93715177760806, - "shape_pt_lon": -84.0477784341865, - "shape_pt_sequence": 61, - "shape_dist_traveled": 1.331 - } - }, - { - "model": "gtfs.shape", - "pk": 214, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93705710158646, - "shape_pt_lon": -84.0477987581936, - "shape_pt_sequence": 62, - "shape_dist_traveled": 1.342 - } - }, - { - "model": "gtfs.shape", - "pk": 215, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93672866697375, - "shape_pt_lon": -84.0479001602699, - "shape_pt_sequence": 63, - "shape_dist_traveled": 1.38 - } - }, - { - "model": "gtfs.shape", - "pk": 216, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93643873625598, - "shape_pt_lon": -84.0479940310818, - "shape_pt_sequence": 64, - "shape_dist_traveled": 1.414 - } - }, - { - "model": "gtfs.shape", - "pk": 217, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93605459371357, - "shape_pt_lon": -84.0481209106209, - "shape_pt_sequence": 65, - "shape_dist_traveled": 1.458 - } - }, - { - "model": "gtfs.shape", - "pk": 218, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93594785009141, - "shape_pt_lon": -84.0481497577059, - "shape_pt_sequence": 66, - "shape_dist_traveled": 1.471 - } - }, - { - "model": "gtfs.shape", - "pk": 219, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93584672067646, - "shape_pt_lon": -84.0481926863882, - "shape_pt_sequence": 67, - "shape_dist_traveled": 1.483 - } - }, - { - "model": "gtfs.shape", - "pk": 220, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93562414968525, - "shape_pt_lon": -84.0482902977589, - "shape_pt_sequence": 68, - "shape_dist_traveled": 1.51 - } - }, - { - "model": "gtfs.shape", - "pk": 221, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93555563302149, - "shape_pt_lon": -84.0483541402688, - "shape_pt_sequence": 69, - "shape_dist_traveled": 1.52 - } - }, - { - "model": "gtfs.shape", - "pk": 222, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93552377293763, - "shape_pt_lon": -84.048395536302, - "shape_pt_sequence": 70, - "shape_dist_traveled": 1.526 - } - }, - { - "model": "gtfs.shape", - "pk": 223, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93549323384328, - "shape_pt_lon": -84.0484359265072, - "shape_pt_sequence": 71, - "shape_dist_traveled": 1.531 - } - }, - { - "model": "gtfs.shape", - "pk": 224, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93545924101029, - "shape_pt_lon": -84.0485562630898, - "shape_pt_sequence": 72, - "shape_dist_traveled": 1.545 - } - }, - { - "model": "gtfs.shape", - "pk": 225, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93545410965148, - "shape_pt_lon": -84.0486084574091, - "shape_pt_sequence": 73, - "shape_dist_traveled": 1.551 - } - }, - { - "model": "gtfs.shape", - "pk": 226, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93545261101962, - "shape_pt_lon": -84.0486583047952, - "shape_pt_sequence": 74, - "shape_dist_traveled": 1.556 - } - }, - { - "model": "gtfs.shape", - "pk": 227, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93527714539185, - "shape_pt_lon": -84.0486381383254, - "shape_pt_sequence": 75, - "shape_dist_traveled": 1.576 - } - }, - { - "model": "gtfs.shape", - "pk": 228, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93529369875646, - "shape_pt_lon": -84.0483849370953, - "shape_pt_sequence": 76, - "shape_dist_traveled": 1.604 - } - }, - { - "model": "gtfs.shape", - "pk": 229, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93524845287248, - "shape_pt_lon": -84.0481250138729, - "shape_pt_sequence": 77, - "shape_dist_traveled": 1.633 - } - }, - { - "model": "gtfs.shape", - "pk": 230, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93510490695821, - "shape_pt_lon": -84.0476876510322, - "shape_pt_sequence": 78, - "shape_dist_traveled": 1.683 - } - }, - { - "model": "gtfs.shape", - "pk": 231, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93492309622952, - "shape_pt_lon": -84.0471049676225, - "shape_pt_sequence": 79, - "shape_dist_traveled": 1.75 - } - }, - { - "model": "gtfs.shape", - "pk": 232, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93478795156821, - "shape_pt_lon": -84.0463710454434, - "shape_pt_sequence": 80, - "shape_dist_traveled": 1.832 - } - }, - { - "model": "gtfs.shape", - "pk": 233, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93468712924438, - "shape_pt_lon": -84.0458810362687, - "shape_pt_sequence": 81, - "shape_dist_traveled": 1.887 - } - }, - { - "model": "gtfs.shape", - "pk": 234, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93461716476174, - "shape_pt_lon": -84.0456150110652, - "shape_pt_sequence": 82, - "shape_dist_traveled": 1.917 - } - }, - { - "model": "gtfs.shape", - "pk": 235, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93466453460568, - "shape_pt_lon": -84.045615726073, - "shape_pt_sequence": 83, - "shape_dist_traveled": 1.922 - } - }, - { - "model": "gtfs.shape", - "pk": 236, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93495411611772, - "shape_pt_lon": -84.0456098658075, - "shape_pt_sequence": 84, - "shape_dist_traveled": 1.954 - } - }, - { - "model": "gtfs.shape", - "pk": 237, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93501867239507, - "shape_pt_lon": -84.0455893287031, - "shape_pt_sequence": 85, - "shape_dist_traveled": 1.962 - } - }, - { - "model": "gtfs.shape", - "pk": 238, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93533255656777, - "shape_pt_lon": -84.0455828491321, - "shape_pt_sequence": 86, - "shape_dist_traveled": 1.996 - } - }, - { - "model": "gtfs.shape", - "pk": 239, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93558174215077, - "shape_pt_lon": -84.0455310895244, - "shape_pt_sequence": 87, - "shape_dist_traveled": 2.025 - } - }, - { - "model": "gtfs.shape", - "pk": 240, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93565354440517, - "shape_pt_lon": -84.0454587191306, - "shape_pt_sequence": 88, - "shape_dist_traveled": 2.036 - } - }, - { - "model": "gtfs.shape", - "pk": 241, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93601427775509, - "shape_pt_lon": -84.0453935565556, - "shape_pt_sequence": 89, - "shape_dist_traveled": 2.076 - } - }, - { - "model": "gtfs.shape", - "pk": 242, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93618250695711, - "shape_pt_lon": -84.0453574183472, - "shape_pt_sequence": 90, - "shape_dist_traveled": 2.095 - } - }, - { - "model": "gtfs.shape", - "pk": 243, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93624056084127, - "shape_pt_lon": -84.0453568135217, - "shape_pt_sequence": 91, - "shape_dist_traveled": 2.102 - } - }, - { - "model": "gtfs.shape", - "pk": 244, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93629795423082, - "shape_pt_lon": -84.0453642553238, - "shape_pt_sequence": 92, - "shape_dist_traveled": 2.108 - } - }, - { - "model": "gtfs.shape", - "pk": 245, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93659318251401, - "shape_pt_lon": -84.0455215059456, - "shape_pt_sequence": 93, - "shape_dist_traveled": 2.145 - } - }, - { - "model": "gtfs.shape", - "pk": 246, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93667976807258, - "shape_pt_lon": -84.0455703414396, - "shape_pt_sequence": 94, - "shape_dist_traveled": 2.156 - } - }, - { - "model": "gtfs.shape", - "pk": 247, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.9367692395777, - "shape_pt_lon": -84.0455957359235, - "shape_pt_sequence": 95, - "shape_dist_traveled": 2.166 - } - }, - { - "model": "gtfs.shape", - "pk": 248, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93685293870503, - "shape_pt_lon": -84.0455879222361, - "shape_pt_sequence": 96, - "shape_dist_traveled": 2.176 - } - }, - { - "model": "gtfs.shape", - "pk": 249, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93694173624727, - "shape_pt_lon": -84.0455491295231, - "shape_pt_sequence": 97, - "shape_dist_traveled": 2.186 - } - }, - { - "model": "gtfs.shape", - "pk": 250, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93708123470739, - "shape_pt_lon": -84.0454446214555, - "shape_pt_sequence": 98, - "shape_dist_traveled": 2.206 - } - }, - { - "model": "gtfs.shape", - "pk": 251, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93724313131711, - "shape_pt_lon": -84.0452817159445, - "shape_pt_sequence": 99, - "shape_dist_traveled": 2.231 - } - }, - { - "model": "gtfs.shape", - "pk": 252, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93734607124923, - "shape_pt_lon": -84.0451254422096, - "shape_pt_sequence": 100, - "shape_dist_traveled": 2.251 - } - }, - { - "model": "gtfs.shape", - "pk": 253, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93748749351063, - "shape_pt_lon": -84.0448724740612, - "shape_pt_sequence": 101, - "shape_dist_traveled": 2.283 - } - }, - { - "model": "gtfs.shape", - "pk": 254, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93761860756564, - "shape_pt_lon": -84.0446484093239, - "shape_pt_sequence": 102, - "shape_dist_traveled": 2.312 - } - }, - { - "model": "gtfs.shape", - "pk": 255, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93781098243242, - "shape_pt_lon": -84.0443002302728, - "shape_pt_sequence": 103, - "shape_dist_traveled": 2.355 - } - }, - { - "model": "gtfs.shape", - "pk": 256, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93799146315684, - "shape_pt_lon": -84.0439934603325, - "shape_pt_sequence": 104, - "shape_dist_traveled": 2.395 - } - }, - { - "model": "gtfs.shape", - "pk": 257, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93810165004318, - "shape_pt_lon": -84.0438034580265, - "shape_pt_sequence": 105, - "shape_dist_traveled": 2.419 - } - }, - { - "model": "gtfs.shape", - "pk": 258, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93796407612903, - "shape_pt_lon": -84.0436169062427, - "shape_pt_sequence": 106, - "shape_dist_traveled": 2.444 - } - }, - { - "model": "gtfs.shape", - "pk": 259, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93791116339785, - "shape_pt_lon": -84.043444027742, - "shape_pt_sequence": 107, - "shape_dist_traveled": 2.464 - } - }, - { - "model": "gtfs.shape", - "pk": 260, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93788614994896, - "shape_pt_lon": -84.0432193842326, - "shape_pt_sequence": 108, - "shape_dist_traveled": 2.489 - } - }, - { - "model": "gtfs.shape", - "pk": 261, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93792655633902, - "shape_pt_lon": -84.0429361376045, - "shape_pt_sequence": 109, - "shape_dist_traveled": 2.52 - } - }, - { - "model": "gtfs.shape", - "pk": 262, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93800099196738, - "shape_pt_lon": -84.0424812505301, - "shape_pt_sequence": 110, - "shape_dist_traveled": 2.571 - } - }, - { - "model": "gtfs.shape", - "pk": 263, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93813818359375, - "shape_pt_lon": -84.0421772565051, - "shape_pt_sequence": 111, - "shape_dist_traveled": 2.607 - } - }, - { - "model": "gtfs.shape", - "pk": 264, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93816415907815, - "shape_pt_lon": -84.0419985184082, - "shape_pt_sequence": 112, - "shape_dist_traveled": 2.627 - } - }, - { - "model": "gtfs.shape", - "pk": 265, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.9381545385288, - "shape_pt_lon": -84.0418510350607, - "shape_pt_sequence": 113, - "shape_dist_traveled": 2.643 - } - }, - { - "model": "gtfs.shape", - "pk": 266, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93812567687818, - "shape_pt_lon": -84.0417260160641, - "shape_pt_sequence": 114, - "shape_dist_traveled": 2.657 - } - }, - { - "model": "gtfs.shape", - "pk": 267, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93807564954973, - "shape_pt_lon": -84.0416527622632, - "shape_pt_sequence": 115, - "shape_dist_traveled": 2.667 - } - }, - { - "model": "gtfs.shape", - "pk": 268, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93804289664845, - "shape_pt_lon": -84.0416384252501, - "shape_pt_sequence": 116, - "shape_dist_traveled": 2.671 - } - }, - { - "model": "gtfs.shape", - "pk": 269, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93801311595451, - "shape_pt_lon": -84.0416361581774, - "shape_pt_sequence": 117, - "shape_dist_traveled": 2.675 - } - }, - { - "model": "gtfs.shape", - "pk": 270, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93792172067878, - "shape_pt_lon": -84.0416381115992, - "shape_pt_sequence": 118, - "shape_dist_traveled": 2.685 - } - }, - { - "model": "gtfs.shape", - "pk": 271, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93790247956499, - "shape_pt_lon": -84.0412122658535, - "shape_pt_sequence": 119, - "shape_dist_traveled": 2.731 - } - }, - { - "model": "gtfs.shape", - "pk": 272, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93789478311904, - "shape_pt_lon": -84.0410686893496, - "shape_pt_sequence": 120, - "shape_dist_traveled": 2.747 - } - }, - { - "model": "gtfs.shape", - "pk": 273, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93830046896954, - "shape_pt_lon": -84.040969095546, - "shape_pt_sequence": 121, - "shape_dist_traveled": 2.793 - } - }, - { - "model": "gtfs.shape", - "pk": 274, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93846168564775, - "shape_pt_lon": -84.0409298363785, - "shape_pt_sequence": 122, - "shape_dist_traveled": 2.812 - } - }, - { - "model": "gtfs.shape", - "pk": 275, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93868873033166, - "shape_pt_lon": -84.040967928104, - "shape_pt_sequence": 123, - "shape_dist_traveled": 2.837 - } - }, - { - "model": "gtfs.shape", - "pk": 276, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93884815398905, - "shape_pt_lon": -84.0411370173071, - "shape_pt_sequence": 124, - "shape_dist_traveled": 2.863 - } - }, - { - "model": "gtfs.shape", - "pk": 277, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93915383599336, - "shape_pt_lon": -84.0416568644267, - "shape_pt_sequence": 125, - "shape_dist_traveled": 2.929 - } - }, - { - "model": "gtfs.shape", - "pk": 278, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93928521203319, - "shape_pt_lon": -84.0417935755105, - "shape_pt_sequence": 126, - "shape_dist_traveled": 2.95 - } - }, - { - "model": "gtfs.shape", - "pk": 279, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93942977628924, - "shape_pt_lon": -84.0418876857024, - "shape_pt_sequence": 127, - "shape_dist_traveled": 2.969 - } - }, - { - "model": "gtfs.shape", - "pk": 280, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93950150662073, - "shape_pt_lon": -84.0419089725314, - "shape_pt_sequence": 128, - "shape_dist_traveled": 2.977 - } - }, - { - "model": "gtfs.shape", - "pk": 281, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93950371370814, - "shape_pt_lon": -84.0422428396408, - "shape_pt_sequence": 129, - "shape_dist_traveled": 3.014 - } - }, - { - "model": "gtfs.shape", - "pk": 282, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93948613333313, - "shape_pt_lon": -84.0425204684191, - "shape_pt_sequence": 130, - "shape_dist_traveled": 3.044 - } - }, - { - "model": "gtfs.shape", - "pk": 283, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93944529338017, - "shape_pt_lon": -84.0430246306461, - "shape_pt_sequence": 131, - "shape_dist_traveled": 3.1 - } - }, - { - "model": "gtfs.shape", - "pk": 284, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93942327481619, - "shape_pt_lon": -84.0433356324423, - "shape_pt_sequence": 132, - "shape_dist_traveled": 3.134 - } - }, - { - "model": "gtfs.shape", - "pk": 285, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93972442200525, - "shape_pt_lon": -84.0432655607324, - "shape_pt_sequence": 133, - "shape_dist_traveled": 3.168 - } - }, - { - "model": "gtfs.shape", - "pk": 286, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93978732393233, - "shape_pt_lon": -84.043299171515, - "shape_pt_sequence": 134, - "shape_dist_traveled": 3.176 - } - }, - { - "model": "gtfs.shape", - "pk": 287, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93981711902594, - "shape_pt_lon": -84.0433809579747, - "shape_pt_sequence": 135, - "shape_dist_traveled": 3.186 - } - }, - { - "model": "gtfs.shape", - "pk": 288, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.93991974845217, - "shape_pt_lon": -84.0437596394605, - "shape_pt_sequence": 136, - "shape_dist_traveled": 3.229 - } - }, - { - "model": "gtfs.shape", - "pk": 289, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.94007043205839, - "shape_pt_lon": -84.0443170698121, - "shape_pt_sequence": 137, - "shape_dist_traveled": 3.292 - } - }, - { - "model": "gtfs.shape", - "pk": 290, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.94016533658292, - "shape_pt_lon": -84.0446744654815, - "shape_pt_sequence": 138, - "shape_dist_traveled": 3.332 - } - }, - { - "model": "gtfs.shape", - "pk": 291, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.94027017298111, - "shape_pt_lon": -84.0448268343636, - "shape_pt_sequence": 139, - "shape_dist_traveled": 3.353 - } - }, - { - "model": "gtfs.shape", - "pk": 292, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.94038169599758, - "shape_pt_lon": -84.045244089757, - "shape_pt_sequence": 140, - "shape_dist_traveled": 3.4 - } - }, - { - "model": "gtfs.shape", - "pk": 293, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.94048873914792, - "shape_pt_lon": -84.045632855511, - "shape_pt_sequence": 141, - "shape_dist_traveled": 3.444 - } - }, - { - "model": "gtfs.shape", - "pk": 294, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.94063882056966, - "shape_pt_lon": -84.045599244728, - "shape_pt_sequence": 142, - "shape_dist_traveled": 3.461 - } - }, - { - "model": "gtfs.shape", - "pk": 295, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.94079662666821, - "shape_pt_lon": -84.0450681942005, - "shape_pt_sequence": 143, - "shape_dist_traveled": 3.522 - } - }, - { - "model": "gtfs.shape", - "pk": 296, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.94095071185347, - "shape_pt_lon": -84.044750328054, - "shape_pt_sequence": 144, - "shape_dist_traveled": 3.561 - } - }, - { - "model": "gtfs.shape", - "pk": 297, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.9410528605391, - "shape_pt_lon": -84.0446554341072, - "shape_pt_sequence": 145, - "shape_dist_traveled": 3.576 - } - }, - { - "model": "gtfs.shape", - "pk": 298, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.94157411286451, - "shape_pt_lon": -84.04469185811, - "shape_pt_sequence": 146, - "shape_dist_traveled": 3.634 - } - }, - { - "model": "gtfs.shape", - "pk": 299, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.94242227255298, - "shape_pt_lon": -84.0447474726987, - "shape_pt_sequence": 147, - "shape_dist_traveled": 3.728 - } - }, - { - "model": "gtfs.shape", - "pk": 300, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.94283107241787, - "shape_pt_lon": -84.0447699014639, - "shape_pt_sequence": 148, - "shape_dist_traveled": 3.773 - } - }, - { - "model": "gtfs.shape", - "pk": 301, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.94300697065598, - "shape_pt_lon": -84.0447350564938, - "shape_pt_sequence": 149, - "shape_dist_traveled": 3.793 - } - }, - { - "model": "gtfs.shape", - "pk": 302, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.94326009234421, - "shape_pt_lon": -84.0446544775012, - "shape_pt_sequence": 150, - "shape_dist_traveled": 3.823 - } - }, - { - "model": "gtfs.shape", - "pk": 303, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.94351468777105, - "shape_pt_lon": -84.0445407320727, - "shape_pt_sequence": 151, - "shape_dist_traveled": 3.853 - } - }, - { - "model": "gtfs.shape", - "pk": 304, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.94366913468646, - "shape_pt_lon": -84.0444710421328, - "shape_pt_sequence": 152, - "shape_dist_traveled": 3.872 - } - }, - { - "model": "gtfs.shape", - "pk": 305, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.9437999854876, - "shape_pt_lon": -84.0447541575134, - "shape_pt_sequence": 153, - "shape_dist_traveled": 3.906 - } - }, - { - "model": "gtfs.shape", - "pk": 306, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.94388149907578, - "shape_pt_lon": -84.0448848261506, - "shape_pt_sequence": 154, - "shape_dist_traveled": 3.923 - } - }, - { - "model": "gtfs.shape", - "pk": 307, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.94396600743452, - "shape_pt_lon": -84.0449552037605, - "shape_pt_sequence": 155, - "shape_dist_traveled": 3.935 - } - }, - { - "model": "gtfs.shape", - "pk": 308, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.94433419150155, - "shape_pt_lon": -84.0449932717292, - "shape_pt_sequence": 156, - "shape_dist_traveled": 3.976 - } - }, - { - "model": "gtfs.shape", - "pk": 309, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.94457398813642, - "shape_pt_lon": -84.0450138149367, - "shape_pt_sequence": 157, - "shape_dist_traveled": 4.003 - } - }, - { - "model": "gtfs.shape", - "pk": 310, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.94495221337372, - "shape_pt_lon": -84.045010504636, - "shape_pt_sequence": 158, - "shape_dist_traveled": 4.045 - } - }, - { - "model": "gtfs.shape", - "pk": 311, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.94503698779598, - "shape_pt_lon": -84.0450833311997, - "shape_pt_sequence": 159, - "shape_dist_traveled": 4.057 - } - }, - { - "model": "gtfs.shape", - "pk": 312, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.94506796311185, - "shape_pt_lon": -84.045389534011, - "shape_pt_sequence": 160, - "shape_dist_traveled": 4.091 - } - }, - { - "model": "gtfs.shape", - "pk": 313, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.94509404758507, - "shape_pt_lon": -84.0455020842335, - "shape_pt_sequence": 161, - "shape_dist_traveled": 4.104 - } - }, - { - "model": "gtfs.shape", - "pk": 314, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.94516741015652, - "shape_pt_lon": -84.0455418078417, - "shape_pt_sequence": 162, - "shape_dist_traveled": 4.113 - } - }, - { - "model": "gtfs.shape", - "pk": 315, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.94569411437748, - "shape_pt_lon": -84.0455036631251, - "shape_pt_sequence": 163, - "shape_dist_traveled": 4.171 - } - }, - { - "model": "gtfs.shape", - "pk": 316, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.94576235686358, - "shape_pt_lon": -84.0454645549726, - "shape_pt_sequence": 164, - "shape_dist_traveled": 4.18 - } - }, - { - "model": "gtfs.shape", - "pk": 317, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.94586939851089, - "shape_pt_lon": -84.0452550477597, - "shape_pt_sequence": 165, - "shape_dist_traveled": 4.206 - } - }, - { - "model": "gtfs.shape", - "pk": 318, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.94594554151604, - "shape_pt_lon": -84.0451777429595, - "shape_pt_sequence": 166, - "shape_dist_traveled": 4.218 - } - }, - { - "model": "gtfs.shape", - "pk": 319, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.94629085058927, - "shape_pt_lon": -84.0451530949856, - "shape_pt_sequence": 167, - "shape_dist_traveled": 4.256 - } - }, - { - "model": "gtfs.shape", - "pk": 320, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.94638848955421, - "shape_pt_lon": -84.0451636656039, - "shape_pt_sequence": 168, - "shape_dist_traveled": 4.267 - } - }, - { - "model": "gtfs.shape", - "pk": 321, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.94644918315917, - "shape_pt_lon": -84.0452028781838, - "shape_pt_sequence": 169, - "shape_dist_traveled": 4.275 - } - }, - { - "model": "gtfs.shape", - "pk": 322, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "shape_pt_lat": 9.94648865740507, - "shape_pt_lon": -84.0452462913844, - "shape_pt_sequence": 170, - "shape_dist_traveled": 4.281 - } - }, - { - "model": "gtfs.shape", - "pk": 323, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93551240308205, - "shape_pt_lon": -84.052232462037, - "shape_pt_sequence": 0, - "shape_dist_traveled": 0.0 - } - }, - { - "model": "gtfs.shape", - "pk": 324, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93553038682294, - "shape_pt_lon": -84.0523024805564, - "shape_pt_sequence": 1, - "shape_dist_traveled": 0.008 - } - }, - { - "model": "gtfs.shape", - "pk": 325, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93554317941351, - "shape_pt_lon": -84.0523354193901, - "shape_pt_sequence": 2, - "shape_dist_traveled": 0.012 - } - }, - { - "model": "gtfs.shape", - "pk": 326, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93560006968185, - "shape_pt_lon": -84.0523952582046, - "shape_pt_sequence": 3, - "shape_dist_traveled": 0.021 - } - }, - { - "model": "gtfs.shape", - "pk": 327, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93565298376728, - "shape_pt_lon": -84.0524284133704, - "shape_pt_sequence": 4, - "shape_dist_traveled": 0.028 - } - }, - { - "model": "gtfs.shape", - "pk": 328, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93571914349433, - "shape_pt_lon": -84.0524404498132, - "shape_pt_sequence": 5, - "shape_dist_traveled": 0.035 - } - }, - { - "model": "gtfs.shape", - "pk": 329, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93583719162457, - "shape_pt_lon": -84.0524171180445, - "shape_pt_sequence": 6, - "shape_dist_traveled": 0.049 - } - }, - { - "model": "gtfs.shape", - "pk": 330, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93594643029256, - "shape_pt_lon": -84.0523801266021, - "shape_pt_sequence": 7, - "shape_dist_traveled": 0.061 - } - }, - { - "model": "gtfs.shape", - "pk": 331, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93608834513962, - "shape_pt_lon": -84.0523343631691, - "shape_pt_sequence": 8, - "shape_dist_traveled": 0.078 - } - }, - { - "model": "gtfs.shape", - "pk": 332, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93620422239772, - "shape_pt_lon": -84.0522977078958, - "shape_pt_sequence": 9, - "shape_dist_traveled": 0.091 - } - }, - { - "model": "gtfs.shape", - "pk": 333, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.936293049843, - "shape_pt_lon": -84.0522711599884, - "shape_pt_sequence": 10, - "shape_dist_traveled": 0.101 - } - }, - { - "model": "gtfs.shape", - "pk": 334, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93639226353531, - "shape_pt_lon": -84.0522405229359, - "shape_pt_sequence": 11, - "shape_dist_traveled": 0.113 - } - }, - { - "model": "gtfs.shape", - "pk": 335, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93653093553953, - "shape_pt_lon": -84.0522367457551, - "shape_pt_sequence": 12, - "shape_dist_traveled": 0.128 - } - }, - { - "model": "gtfs.shape", - "pk": 336, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93659589447438, - "shape_pt_lon": -84.0522590055211, - "shape_pt_sequence": 13, - "shape_dist_traveled": 0.136 - } - }, - { - "model": "gtfs.shape", - "pk": 337, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93661615058734, - "shape_pt_lon": -84.0523412639074, - "shape_pt_sequence": 14, - "shape_dist_traveled": 0.145 - } - }, - { - "model": "gtfs.shape", - "pk": 338, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.9365876265418, - "shape_pt_lon": -84.0524260404882, - "shape_pt_sequence": 15, - "shape_dist_traveled": 0.155 - } - }, - { - "model": "gtfs.shape", - "pk": 339, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.9365355393877, - "shape_pt_lon": -84.0524499625703, - "shape_pt_sequence": 16, - "shape_dist_traveled": 0.161 - } - }, - { - "model": "gtfs.shape", - "pk": 340, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93644867420793, - "shape_pt_lon": -84.0524473462339, - "shape_pt_sequence": 17, - "shape_dist_traveled": 0.171 - } - }, - { - "model": "gtfs.shape", - "pk": 341, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93635813864212, - "shape_pt_lon": -84.0524384481957, - "shape_pt_sequence": 18, - "shape_dist_traveled": 0.181 - } - }, - { - "model": "gtfs.shape", - "pk": 342, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93632957313295, - "shape_pt_lon": -84.052426075736, - "shape_pt_sequence": 19, - "shape_dist_traveled": 0.184 - } - }, - { - "model": "gtfs.shape", - "pk": 343, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93630067737655, - "shape_pt_lon": -84.0524254379402, - "shape_pt_sequence": 20, - "shape_dist_traveled": 0.188 - } - }, - { - "model": "gtfs.shape", - "pk": 344, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.9361767385198, - "shape_pt_lon": -84.0524455386407, - "shape_pt_sequence": 21, - "shape_dist_traveled": 0.201 - } - }, - { - "model": "gtfs.shape", - "pk": 345, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93606938255121, - "shape_pt_lon": -84.0524692189919, - "shape_pt_sequence": 22, - "shape_dist_traveled": 0.214 - } - }, - { - "model": "gtfs.shape", - "pk": 346, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.9358662876061, - "shape_pt_lon": -84.0525134237392, - "shape_pt_sequence": 23, - "shape_dist_traveled": 0.237 - } - }, - { - "model": "gtfs.shape", - "pk": 347, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93580530982546, - "shape_pt_lon": -84.0525277028597, - "shape_pt_sequence": 24, - "shape_dist_traveled": 0.244 - } - }, - { - "model": "gtfs.shape", - "pk": 348, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93571720324209, - "shape_pt_lon": -84.0525351455981, - "shape_pt_sequence": 25, - "shape_dist_traveled": 0.253 - } - }, - { - "model": "gtfs.shape", - "pk": 349, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93562932790421, - "shape_pt_lon": -84.0525170973821, - "shape_pt_sequence": 26, - "shape_dist_traveled": 0.263 - } - }, - { - "model": "gtfs.shape", - "pk": 350, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93552958615174, - "shape_pt_lon": -84.0524334827489, - "shape_pt_sequence": 27, - "shape_dist_traveled": 0.278 - } - }, - { - "model": "gtfs.shape", - "pk": 351, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93545575661828, - "shape_pt_lon": -84.052350672979, - "shape_pt_sequence": 28, - "shape_dist_traveled": 0.29 - } - }, - { - "model": "gtfs.shape", - "pk": 352, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93541638163459, - "shape_pt_lon": -84.0522446182099, - "shape_pt_sequence": 29, - "shape_dist_traveled": 0.302 - } - }, - { - "model": "gtfs.shape", - "pk": 353, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93541236377893, - "shape_pt_lon": -84.0520977731443, - "shape_pt_sequence": 30, - "shape_dist_traveled": 0.318 - } - }, - { - "model": "gtfs.shape", - "pk": 354, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.9353609350822, - "shape_pt_lon": -84.0517673714683, - "shape_pt_sequence": 31, - "shape_dist_traveled": 0.355 - } - }, - { - "model": "gtfs.shape", - "pk": 355, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93533537431955, - "shape_pt_lon": -84.0515957473315, - "shape_pt_sequence": 32, - "shape_dist_traveled": 0.374 - } - }, - { - "model": "gtfs.shape", - "pk": 356, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93527832074849, - "shape_pt_lon": -84.0514578761312, - "shape_pt_sequence": 33, - "shape_dist_traveled": 0.39 - } - }, - { - "model": "gtfs.shape", - "pk": 357, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93537394568805, - "shape_pt_lon": -84.051051560594, - "shape_pt_sequence": 34, - "shape_dist_traveled": 0.436 - } - }, - { - "model": "gtfs.shape", - "pk": 358, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93548509593826, - "shape_pt_lon": -84.0506488451042, - "shape_pt_sequence": 35, - "shape_dist_traveled": 0.482 - } - }, - { - "model": "gtfs.shape", - "pk": 359, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93555656904013, - "shape_pt_lon": -84.0503446866737, - "shape_pt_sequence": 36, - "shape_dist_traveled": 0.516 - } - }, - { - "model": "gtfs.shape", - "pk": 360, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93560639042598, - "shape_pt_lon": -84.0501407351937, - "shape_pt_sequence": 37, - "shape_dist_traveled": 0.539 - } - }, - { - "model": "gtfs.shape", - "pk": 361, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93564014039442, - "shape_pt_lon": -84.0499188359838, - "shape_pt_sequence": 38, - "shape_dist_traveled": 0.564 - } - }, - { - "model": "gtfs.shape", - "pk": 362, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93555237106771, - "shape_pt_lon": -84.0495240741516, - "shape_pt_sequence": 39, - "shape_dist_traveled": 0.608 - } - }, - { - "model": "gtfs.shape", - "pk": 363, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.9355127171103, - "shape_pt_lon": -84.0493169635181, - "shape_pt_sequence": 40, - "shape_dist_traveled": 0.631 - } - }, - { - "model": "gtfs.shape", - "pk": 364, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93544759669272, - "shape_pt_lon": -84.0490255135247, - "shape_pt_sequence": 41, - "shape_dist_traveled": 0.664 - } - }, - { - "model": "gtfs.shape", - "pk": 365, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93538988817417, - "shape_pt_lon": -84.0487899823799, - "shape_pt_sequence": 42, - "shape_dist_traveled": 0.691 - } - }, - { - "model": "gtfs.shape", - "pk": 366, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93537301317815, - "shape_pt_lon": -84.0486447689264, - "shape_pt_sequence": 43, - "shape_dist_traveled": 0.707 - } - }, - { - "model": "gtfs.shape", - "pk": 367, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93527658461171, - "shape_pt_lon": -84.0486366108669, - "shape_pt_sequence": 44, - "shape_dist_traveled": 0.718 - } - }, - { - "model": "gtfs.shape", - "pk": 368, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93529274995559, - "shape_pt_lon": -84.0483784246656, - "shape_pt_sequence": 45, - "shape_dist_traveled": 0.746 - } - }, - { - "model": "gtfs.shape", - "pk": 369, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93524694618673, - "shape_pt_lon": -84.0481238929513, - "shape_pt_sequence": 46, - "shape_dist_traveled": 0.774 - } - }, - { - "model": "gtfs.shape", - "pk": 370, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93514165787212, - "shape_pt_lon": -84.0478057230236, - "shape_pt_sequence": 47, - "shape_dist_traveled": 0.811 - } - }, - { - "model": "gtfs.shape", - "pk": 371, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93500316815773, - "shape_pt_lon": -84.0473807827294, - "shape_pt_sequence": 48, - "shape_dist_traveled": 0.86 - } - }, - { - "model": "gtfs.shape", - "pk": 372, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93492049042863, - "shape_pt_lon": -84.0470859236543, - "shape_pt_sequence": 49, - "shape_dist_traveled": 0.894 - } - }, - { - "model": "gtfs.shape", - "pk": 373, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93479657132182, - "shape_pt_lon": -84.0464195689003, - "shape_pt_sequence": 50, - "shape_dist_traveled": 0.968 - } - }, - { - "model": "gtfs.shape", - "pk": 374, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93468604728109, - "shape_pt_lon": -84.0458857020311, - "shape_pt_sequence": 51, - "shape_dist_traveled": 1.028 - } - }, - { - "model": "gtfs.shape", - "pk": 375, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.9346124699569, - "shape_pt_lon": -84.0456137031377, - "shape_pt_sequence": 52, - "shape_dist_traveled": 1.059 - } - }, - { - "model": "gtfs.shape", - "pk": 376, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93481022852054, - "shape_pt_lon": -84.0456081393267, - "shape_pt_sequence": 53, - "shape_dist_traveled": 1.081 - } - }, - { - "model": "gtfs.shape", - "pk": 377, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93495379560579, - "shape_pt_lon": -84.0456083692307, - "shape_pt_sequence": 54, - "shape_dist_traveled": 1.096 - } - }, - { - "model": "gtfs.shape", - "pk": 378, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93502122053513, - "shape_pt_lon": -84.0455873976348, - "shape_pt_sequence": 55, - "shape_dist_traveled": 1.104 - } - }, - { - "model": "gtfs.shape", - "pk": 379, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93525069991888, - "shape_pt_lon": -84.0455815527507, - "shape_pt_sequence": 56, - "shape_dist_traveled": 1.13 - } - }, - { - "model": "gtfs.shape", - "pk": 380, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93533621207088, - "shape_pt_lon": -84.0455791055204, - "shape_pt_sequence": 57, - "shape_dist_traveled": 1.139 - } - }, - { - "model": "gtfs.shape", - "pk": 381, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.9355796939962, - "shape_pt_lon": -84.0455277100451, - "shape_pt_sequence": 58, - "shape_dist_traveled": 1.167 - } - }, - { - "model": "gtfs.shape", - "pk": 382, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93566141737569, - "shape_pt_lon": -84.0454545424224, - "shape_pt_sequence": 59, - "shape_dist_traveled": 1.179 - } - }, - { - "model": "gtfs.shape", - "pk": 383, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93593880374486, - "shape_pt_lon": -84.0454033749615, - "shape_pt_sequence": 60, - "shape_dist_traveled": 1.21 - } - }, - { - "model": "gtfs.shape", - "pk": 384, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93617987563359, - "shape_pt_lon": -84.0453561940705, - "shape_pt_sequence": 61, - "shape_dist_traveled": 1.237 - } - }, - { - "model": "gtfs.shape", - "pk": 385, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93629878421235, - "shape_pt_lon": -84.0453622217276, - "shape_pt_sequence": 62, - "shape_dist_traveled": 1.25 - } - }, - { - "model": "gtfs.shape", - "pk": 386, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93647074793075, - "shape_pt_lon": -84.0454544077961, - "shape_pt_sequence": 63, - "shape_dist_traveled": 1.272 - } - }, - { - "model": "gtfs.shape", - "pk": 387, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.9366470154013, - "shape_pt_lon": -84.0455491574187, - "shape_pt_sequence": 64, - "shape_dist_traveled": 1.294 - } - }, - { - "model": "gtfs.shape", - "pk": 388, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93667996169247, - "shape_pt_lon": -84.0455671051487, - "shape_pt_sequence": 65, - "shape_dist_traveled": 1.298 - } - }, - { - "model": "gtfs.shape", - "pk": 389, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93677076487081, - "shape_pt_lon": -84.0455923951325, - "shape_pt_sequence": 66, - "shape_dist_traveled": 1.308 - } - }, - { - "model": "gtfs.shape", - "pk": 390, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93685019478803, - "shape_pt_lon": -84.0455875957907, - "shape_pt_sequence": 67, - "shape_dist_traveled": 1.317 - } - }, - { - "model": "gtfs.shape", - "pk": 391, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93693939078323, - "shape_pt_lon": -84.0455459896891, - "shape_pt_sequence": 68, - "shape_dist_traveled": 1.328 - } - }, - { - "model": "gtfs.shape", - "pk": 392, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93708216879507, - "shape_pt_lon": -84.0454405657035, - "shape_pt_sequence": 69, - "shape_dist_traveled": 1.348 - } - }, - { - "model": "gtfs.shape", - "pk": 393, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.9372417505605, - "shape_pt_lon": -84.0452791956738, - "shape_pt_sequence": 70, - "shape_dist_traveled": 1.373 - } - }, - { - "model": "gtfs.shape", - "pk": 394, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93733175001592, - "shape_pt_lon": -84.0451437718914, - "shape_pt_sequence": 71, - "shape_dist_traveled": 1.391 - } - }, - { - "model": "gtfs.shape", - "pk": 395, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93747880276838, - "shape_pt_lon": -84.0448843455207, - "shape_pt_sequence": 72, - "shape_dist_traveled": 1.423 - } - }, - { - "model": "gtfs.shape", - "pk": 396, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93759383837854, - "shape_pt_lon": -84.0446848467803, - "shape_pt_sequence": 73, - "shape_dist_traveled": 1.449 - } - }, - { - "model": "gtfs.shape", - "pk": 397, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93775722150572, - "shape_pt_lon": -84.0443877220931, - "shape_pt_sequence": 74, - "shape_dist_traveled": 1.486 - } - }, - { - "model": "gtfs.shape", - "pk": 398, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93792650160209, - "shape_pt_lon": -84.0440980878075, - "shape_pt_sequence": 75, - "shape_dist_traveled": 1.523 - } - }, - { - "model": "gtfs.shape", - "pk": 399, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93809919166979, - "shape_pt_lon": -84.0437999865192, - "shape_pt_sequence": 76, - "shape_dist_traveled": 1.561 - } - }, - { - "model": "gtfs.shape", - "pk": 400, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93796097853527, - "shape_pt_lon": -84.0436147985756, - "shape_pt_sequence": 77, - "shape_dist_traveled": 1.586 - } - }, - { - "model": "gtfs.shape", - "pk": 401, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93791115773413, - "shape_pt_lon": -84.0434434787742, - "shape_pt_sequence": 78, - "shape_dist_traveled": 1.606 - } - }, - { - "model": "gtfs.shape", - "pk": 402, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.9378853721441, - "shape_pt_lon": -84.0432188653814, - "shape_pt_sequence": 79, - "shape_dist_traveled": 1.63 - } - }, - { - "model": "gtfs.shape", - "pk": 403, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93792474683056, - "shape_pt_lon": -84.0429382281456, - "shape_pt_sequence": 80, - "shape_dist_traveled": 1.661 - } - }, - { - "model": "gtfs.shape", - "pk": 404, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93798421082772, - "shape_pt_lon": -84.0425692976739, - "shape_pt_sequence": 81, - "shape_dist_traveled": 1.702 - } - }, - { - "model": "gtfs.shape", - "pk": 405, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93799717971221, - "shape_pt_lon": -84.0424760119919, - "shape_pt_sequence": 82, - "shape_dist_traveled": 1.713 - } - }, - { - "model": "gtfs.shape", - "pk": 406, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93813619639644, - "shape_pt_lon": -84.0421774270254, - "shape_pt_sequence": 83, - "shape_dist_traveled": 1.749 - } - }, - { - "model": "gtfs.shape", - "pk": 407, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93816151133474, - "shape_pt_lon": -84.0419972282554, - "shape_pt_sequence": 84, - "shape_dist_traveled": 1.769 - } - }, - { - "model": "gtfs.shape", - "pk": 408, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93815347569085, - "shape_pt_lon": -84.0418487515775, - "shape_pt_sequence": 85, - "shape_dist_traveled": 1.785 - } - }, - { - "model": "gtfs.shape", - "pk": 409, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93812695789198, - "shape_pt_lon": -84.0417223014224, - "shape_pt_sequence": 86, - "shape_dist_traveled": 1.799 - } - }, - { - "model": "gtfs.shape", - "pk": 410, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93807552975984, - "shape_pt_lon": -84.041649694696, - "shape_pt_sequence": 87, - "shape_dist_traveled": 1.809 - } - }, - { - "model": "gtfs.shape", - "pk": 411, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93801445884308, - "shape_pt_lon": -84.0416317469654, - "shape_pt_sequence": 88, - "shape_dist_traveled": 1.816 - } - }, - { - "model": "gtfs.shape", - "pk": 412, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93791897942971, - "shape_pt_lon": -84.0416350505556, - "shape_pt_sequence": 89, - "shape_dist_traveled": 1.827 - } - }, - { - "model": "gtfs.shape", - "pk": 413, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93789540463778, - "shape_pt_lon": -84.0410687729965, - "shape_pt_sequence": 90, - "shape_dist_traveled": 1.889 - } - }, - { - "model": "gtfs.shape", - "pk": 414, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93846102257875, - "shape_pt_lon": -84.0409278059346, - "shape_pt_sequence": 91, - "shape_dist_traveled": 1.953 - } - }, - { - "model": "gtfs.shape", - "pk": 415, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93868770509072, - "shape_pt_lon": -84.0409636843222, - "shape_pt_sequence": 92, - "shape_dist_traveled": 1.979 - } - }, - { - "model": "gtfs.shape", - "pk": 416, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93884702967763, - "shape_pt_lon": -84.0411317795776, - "shape_pt_sequence": 93, - "shape_dist_traveled": 2.004 - } - }, - { - "model": "gtfs.shape", - "pk": 417, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93915009329333, - "shape_pt_lon": -84.0416545090707, - "shape_pt_sequence": 94, - "shape_dist_traveled": 2.071 - } - }, - { - "model": "gtfs.shape", - "pk": 418, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93928437269097, - "shape_pt_lon": -84.0417940169538, - "shape_pt_sequence": 95, - "shape_dist_traveled": 2.092 - } - }, - { - "model": "gtfs.shape", - "pk": 419, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93942339095397, - "shape_pt_lon": -84.0418844077991, - "shape_pt_sequence": 96, - "shape_dist_traveled": 2.11 - } - }, - { - "model": "gtfs.shape", - "pk": 420, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93949992907343, - "shape_pt_lon": -84.0419066090587, - "shape_pt_sequence": 97, - "shape_dist_traveled": 2.119 - } - }, - { - "model": "gtfs.shape", - "pk": 421, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93949992907343, - "shape_pt_lon": -84.0422475569833, - "shape_pt_sequence": 98, - "shape_dist_traveled": 2.156 - } - }, - { - "model": "gtfs.shape", - "pk": 422, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.939437, - "shape_pt_lon": -84.043074, - "shape_pt_sequence": 99, - "shape_dist_traveled": 2.187 - } - }, - { - "model": "gtfs.shape", - "pk": 423, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.9394249524573, - "shape_pt_lon": -84.0433290766316, - "shape_pt_sequence": 100, - "shape_dist_traveled": 2.275 - } - }, - { - "model": "gtfs.shape", - "pk": 424, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93972312001197, - "shape_pt_lon": -84.0432616940963, - "shape_pt_sequence": 101, - "shape_dist_traveled": 2.309 - } - }, - { - "model": "gtfs.shape", - "pk": 425, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.9397847344284, - "shape_pt_lon": -84.0432938739159, - "shape_pt_sequence": 102, - "shape_dist_traveled": 2.317 - } - }, - { - "model": "gtfs.shape", - "pk": 426, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.9398186343525, - "shape_pt_lon": -84.0433818049407, - "shape_pt_sequence": 103, - "shape_dist_traveled": 2.327 - } - }, - { - "model": "gtfs.shape", - "pk": 427, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.93998824672434, - "shape_pt_lon": -84.0440308770623, - "shape_pt_sequence": 104, - "shape_dist_traveled": 2.401 - } - }, - { - "model": "gtfs.shape", - "pk": 428, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94015974971341, - "shape_pt_lon": -84.0446658158992, - "shape_pt_sequence": 105, - "shape_dist_traveled": 2.473 - } - }, - { - "model": "gtfs.shape", - "pk": 429, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94026910203425, - "shape_pt_lon": -84.0448245474961, - "shape_pt_sequence": 106, - "shape_dist_traveled": 2.494 - } - }, - { - "model": "gtfs.shape", - "pk": 430, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94036490303632, - "shape_pt_lon": -84.0451873514683, - "shape_pt_sequence": 107, - "shape_dist_traveled": 2.535 - } - }, - { - "model": "gtfs.shape", - "pk": 431, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94048769323097, - "shape_pt_lon": -84.0456290389484, - "shape_pt_sequence": 108, - "shape_dist_traveled": 2.586 - } - }, - { - "model": "gtfs.shape", - "pk": 432, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94063635155576, - "shape_pt_lon": -84.0455931434884, - "shape_pt_sequence": 109, - "shape_dist_traveled": 2.602 - } - }, - { - "model": "gtfs.shape", - "pk": 433, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94079234514589, - "shape_pt_lon": -84.0450690355552, - "shape_pt_sequence": 110, - "shape_dist_traveled": 2.662 - } - }, - { - "model": "gtfs.shape", - "pk": 434, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94094918383372, - "shape_pt_lon": -84.0447505513004, - "shape_pt_sequence": 111, - "shape_dist_traveled": 2.701 - } - }, - { - "model": "gtfs.shape", - "pk": 435, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94104532842372, - "shape_pt_lon": -84.0446520351469, - "shape_pt_sequence": 112, - "shape_dist_traveled": 2.717 - } - }, - { - "model": "gtfs.shape", - "pk": 436, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94113081479986, - "shape_pt_lon": -84.0446571934664, - "shape_pt_sequence": 113, - "shape_dist_traveled": 2.726 - } - }, - { - "model": "gtfs.shape", - "pk": 437, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94144321527622, - "shape_pt_lon": -84.0446770863329, - "shape_pt_sequence": 114, - "shape_dist_traveled": 2.761 - } - }, - { - "model": "gtfs.shape", - "pk": 438, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94195499816524, - "shape_pt_lon": -84.0447142198439, - "shape_pt_sequence": 115, - "shape_dist_traveled": 2.817 - } - }, - { - "model": "gtfs.shape", - "pk": 439, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94233948335795, - "shape_pt_lon": -84.0447371192727, - "shape_pt_sequence": 116, - "shape_dist_traveled": 2.86 - } - }, - { - "model": "gtfs.shape", - "pk": 440, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94270561942093, - "shape_pt_lon": -84.0447624203313, - "shape_pt_sequence": 117, - "shape_dist_traveled": 2.901 - } - }, - { - "model": "gtfs.shape", - "pk": 441, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94282741926446, - "shape_pt_lon": -84.0447662997461, - "shape_pt_sequence": 118, - "shape_dist_traveled": 2.914 - } - }, - { - "model": "gtfs.shape", - "pk": 442, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94300876520552, - "shape_pt_lon": -84.0447342405736, - "shape_pt_sequence": 119, - "shape_dist_traveled": 2.934 - } - }, - { - "model": "gtfs.shape", - "pk": 443, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94322619282253, - "shape_pt_lon": -84.044661630678, - "shape_pt_sequence": 120, - "shape_dist_traveled": 2.96 - } - }, - { - "model": "gtfs.shape", - "pk": 444, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94336188947768, - "shape_pt_lon": -84.0446070756693, - "shape_pt_sequence": 121, - "shape_dist_traveled": 2.976 - } - }, - { - "model": "gtfs.shape", - "pk": 445, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94366938860733, - "shape_pt_lon": -84.0444664621215, - "shape_pt_sequence": 122, - "shape_dist_traveled": 3.013 - } - }, - { - "model": "gtfs.shape", - "pk": 446, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94379763572232, - "shape_pt_lon": -84.0447499441632, - "shape_pt_sequence": 123, - "shape_dist_traveled": 3.047 - } - }, - { - "model": "gtfs.shape", - "pk": 447, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94387703073651, - "shape_pt_lon": -84.0448781808515, - "shape_pt_sequence": 124, - "shape_dist_traveled": 3.064 - } - }, - { - "model": "gtfs.shape", - "pk": 448, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94396544788927, - "shape_pt_lon": -84.0449496270056, - "shape_pt_sequence": 125, - "shape_dist_traveled": 3.077 - } - }, - { - "model": "gtfs.shape", - "pk": 449, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94454435151914, - "shape_pt_lon": -84.0450074182673, - "shape_pt_sequence": 126, - "shape_dist_traveled": 3.141 - } - }, - { - "model": "gtfs.shape", - "pk": 450, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94494922686726, - "shape_pt_lon": -84.0450098494603, - "shape_pt_sequence": 127, - "shape_dist_traveled": 3.186 - } - }, - { - "model": "gtfs.shape", - "pk": 451, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94503488859595, - "shape_pt_lon": -84.0450726102459, - "shape_pt_sequence": 128, - "shape_dist_traveled": 3.197 - } - }, - { - "model": "gtfs.shape", - "pk": 452, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94506635931216, - "shape_pt_lon": -84.0453994971357, - "shape_pt_sequence": 129, - "shape_dist_traveled": 3.233 - } - }, - { - "model": "gtfs.shape", - "pk": 453, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94509373573383, - "shape_pt_lon": -84.0454999143925, - "shape_pt_sequence": 130, - "shape_dist_traveled": 3.245 - } - }, - { - "model": "gtfs.shape", - "pk": 454, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94516587977827, - "shape_pt_lon": -84.0455384857143, - "shape_pt_sequence": 131, - "shape_dist_traveled": 3.254 - } - }, - { - "model": "gtfs.shape", - "pk": 455, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94569334489241, - "shape_pt_lon": -84.045501640108, - "shape_pt_sequence": 132, - "shape_dist_traveled": 3.312 - } - }, - { - "model": "gtfs.shape", - "pk": 456, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94576818120904, - "shape_pt_lon": -84.0454572011088, - "shape_pt_sequence": 133, - "shape_dist_traveled": 3.322 - } - }, - { - "model": "gtfs.shape", - "pk": 457, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94581918999885, - "shape_pt_lon": -84.0453571624431, - "shape_pt_sequence": 134, - "shape_dist_traveled": 3.334 - } - }, - { - "model": "gtfs.shape", - "pk": 458, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94586821736523, - "shape_pt_lon": -84.0452494124261, - "shape_pt_sequence": 135, - "shape_dist_traveled": 3.347 - } - }, - { - "model": "gtfs.shape", - "pk": 459, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94594549545337, - "shape_pt_lon": -84.0451749917014, - "shape_pt_sequence": 136, - "shape_dist_traveled": 3.359 - } - }, - { - "model": "gtfs.shape", - "pk": 460, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94628917517751, - "shape_pt_lon": -84.045149887399, - "shape_pt_sequence": 137, - "shape_dist_traveled": 3.397 - } - }, - { - "model": "gtfs.shape", - "pk": 461, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.946387887887, - "shape_pt_lon": -84.0451617577946, - "shape_pt_sequence": 138, - "shape_dist_traveled": 3.408 - } - }, - { - "model": "gtfs.shape", - "pk": 462, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94644528982524, - "shape_pt_lon": -84.0451994142665, - "shape_pt_sequence": 139, - "shape_dist_traveled": 3.416 - } - }, - { - "model": "gtfs.shape", - "pk": 463, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "shape_pt_lat": 9.94649012442296, - "shape_pt_lon": -84.0452511227568, - "shape_pt_sequence": 140, - "shape_dist_traveled": 3.423 - } - }, - { - "model": "gtfs.shape", - "pk": 464, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93551129613598, - "shape_pt_lon": -84.0522203008732, - "shape_pt_sequence": 0, - "shape_dist_traveled": 0.0 - } - }, - { - "model": "gtfs.shape", - "pk": 465, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.9355310767404, - "shape_pt_lon": -84.0522927059177, - "shape_pt_sequence": 1, - "shape_dist_traveled": 0.008 - } - }, - { - "model": "gtfs.shape", - "pk": 466, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93554722789095, - "shape_pt_lon": -84.0523347118824, - "shape_pt_sequence": 2, - "shape_dist_traveled": 0.013 - } - }, - { - "model": "gtfs.shape", - "pk": 467, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93559998927965, - "shape_pt_lon": -84.0523891977038, - "shape_pt_sequence": 3, - "shape_dist_traveled": 0.022 - } - }, - { - "model": "gtfs.shape", - "pk": 468, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93565665681396, - "shape_pt_lon": -84.0524266115309, - "shape_pt_sequence": 4, - "shape_dist_traveled": 0.029 - } - }, - { - "model": "gtfs.shape", - "pk": 469, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93572400544303, - "shape_pt_lon": -84.0524387877407, - "shape_pt_sequence": 5, - "shape_dist_traveled": 0.037 - } - }, - { - "model": "gtfs.shape", - "pk": 470, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93583791088976, - "shape_pt_lon": -84.0524163085106, - "shape_pt_sequence": 6, - "shape_dist_traveled": 0.049 - } - }, - { - "model": "gtfs.shape", - "pk": 471, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93589348533485, - "shape_pt_lon": -84.0524004247557, - "shape_pt_sequence": 7, - "shape_dist_traveled": 0.056 - } - }, - { - "model": "gtfs.shape", - "pk": 472, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93594773879152, - "shape_pt_lon": -84.0523801824105, - "shape_pt_sequence": 8, - "shape_dist_traveled": 0.062 - } - }, - { - "model": "gtfs.shape", - "pk": 473, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93618639604332, - "shape_pt_lon": -84.052302832233, - "shape_pt_sequence": 9, - "shape_dist_traveled": 0.09 - } - }, - { - "model": "gtfs.shape", - "pk": 474, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93639684624757, - "shape_pt_lon": -84.0522406782275, - "shape_pt_sequence": 10, - "shape_dist_traveled": 0.114 - } - }, - { - "model": "gtfs.shape", - "pk": 475, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93653551980098, - "shape_pt_lon": -84.0522361299255, - "shape_pt_sequence": 11, - "shape_dist_traveled": 0.13 - } - }, - { - "model": "gtfs.shape", - "pk": 476, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93673682209909, - "shape_pt_lon": -84.0523076585187, - "shape_pt_sequence": 12, - "shape_dist_traveled": 0.153 - } - }, - { - "model": "gtfs.shape", - "pk": 477, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93708559662569, - "shape_pt_lon": -84.05243186663, - "shape_pt_sequence": 13, - "shape_dist_traveled": 0.194 - } - }, - { - "model": "gtfs.shape", - "pk": 478, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93733577696727, - "shape_pt_lon": -84.0525288520072, - "shape_pt_sequence": 14, - "shape_dist_traveled": 0.224 - } - }, - { - "model": "gtfs.shape", - "pk": 479, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93757969853555, - "shape_pt_lon": -84.0526438746271, - "shape_pt_sequence": 15, - "shape_dist_traveled": 0.253 - } - }, - { - "model": "gtfs.shape", - "pk": 480, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.9377485826659, - "shape_pt_lon": -84.0527043524954, - "shape_pt_sequence": 16, - "shape_dist_traveled": 0.273 - } - }, - { - "model": "gtfs.shape", - "pk": 481, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93779188190045, - "shape_pt_lon": -84.0527107981436, - "shape_pt_sequence": 17, - "shape_dist_traveled": 0.278 - } - }, - { - "model": "gtfs.shape", - "pk": 482, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93787132360124, - "shape_pt_lon": -84.0527199326082, - "shape_pt_sequence": 18, - "shape_dist_traveled": 0.287 - } - }, - { - "model": "gtfs.shape", - "pk": 483, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93795076530203, - "shape_pt_lon": -84.0527243732062, - "shape_pt_sequence": 19, - "shape_dist_traveled": 0.296 - } - }, - { - "model": "gtfs.shape", - "pk": 484, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93802242474458, - "shape_pt_lon": -84.0527168419396, - "shape_pt_sequence": 20, - "shape_dist_traveled": 0.304 - } - }, - { - "model": "gtfs.shape", - "pk": 485, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93809408418712, - "shape_pt_lon": -84.0527036109785, - "shape_pt_sequence": 21, - "shape_dist_traveled": 0.312 - } - }, - { - "model": "gtfs.shape", - "pk": 486, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93815622170643, - "shape_pt_lon": -84.0526341385986, - "shape_pt_sequence": 22, - "shape_dist_traveled": 0.322 - } - }, - { - "model": "gtfs.shape", - "pk": 487, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93824866125399, - "shape_pt_lon": -84.0524441849862, - "shape_pt_sequence": 23, - "shape_dist_traveled": 0.345 - } - }, - { - "model": "gtfs.shape", - "pk": 488, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93840212874288, - "shape_pt_lon": -84.0521210493447, - "shape_pt_sequence": 24, - "shape_dist_traveled": 0.385 - } - }, - { - "model": "gtfs.shape", - "pk": 489, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93859022704029, - "shape_pt_lon": -84.0518711468269, - "shape_pt_sequence": 25, - "shape_dist_traveled": 0.419 - } - }, - { - "model": "gtfs.shape", - "pk": 490, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.9387164365478, - "shape_pt_lon": -84.0517146035903, - "shape_pt_sequence": 26, - "shape_dist_traveled": 0.441 - } - }, - { - "model": "gtfs.shape", - "pk": 491, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93883769238516, - "shape_pt_lon": -84.0515516901066, - "shape_pt_sequence": 27, - "shape_dist_traveled": 0.463 - } - }, - { - "model": "gtfs.shape", - "pk": 492, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93890538473733, - "shape_pt_lon": -84.0514467461262, - "shape_pt_sequence": 28, - "shape_dist_traveled": 0.477 - } - }, - { - "model": "gtfs.shape", - "pk": 493, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93897774723731, - "shape_pt_lon": -84.051298218969, - "shape_pt_sequence": 29, - "shape_dist_traveled": 0.495 - } - }, - { - "model": "gtfs.shape", - "pk": 494, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93901864778466, - "shape_pt_lon": -84.0511281313016, - "shape_pt_sequence": 30, - "shape_dist_traveled": 0.514 - } - }, - { - "model": "gtfs.shape", - "pk": 495, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93905404247567, - "shape_pt_lon": -84.0509181170952, - "shape_pt_sequence": 31, - "shape_dist_traveled": 0.538 - } - }, - { - "model": "gtfs.shape", - "pk": 496, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93908393146568, - "shape_pt_lon": -84.0503591447661, - "shape_pt_sequence": 32, - "shape_dist_traveled": 0.599 - } - }, - { - "model": "gtfs.shape", - "pk": 497, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93910272348104, - "shape_pt_lon": -84.0501183551865, - "shape_pt_sequence": 33, - "shape_dist_traveled": 0.626 - } - }, - { - "model": "gtfs.shape", - "pk": 498, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93910706388403, - "shape_pt_lon": -84.0499402779348, - "shape_pt_sequence": 34, - "shape_dist_traveled": 0.645 - } - }, - { - "model": "gtfs.shape", - "pk": 499, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93910711111161, - "shape_pt_lon": -84.0497648828928, - "shape_pt_sequence": 35, - "shape_dist_traveled": 0.664 - } - }, - { - "model": "gtfs.shape", - "pk": 500, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93906715286185, - "shape_pt_lon": -84.0496439745831, - "shape_pt_sequence": 36, - "shape_dist_traveled": 0.678 - } - }, - { - "model": "gtfs.shape", - "pk": 501, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93897699483947, - "shape_pt_lon": -84.0494999920866, - "shape_pt_sequence": 37, - "shape_dist_traveled": 0.697 - } - }, - { - "model": "gtfs.shape", - "pk": 502, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93879865248422, - "shape_pt_lon": -84.0492839130465, - "shape_pt_sequence": 38, - "shape_dist_traveled": 0.728 - } - }, - { - "model": "gtfs.shape", - "pk": 503, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93852631535243, - "shape_pt_lon": -84.0489259634067, - "shape_pt_sequence": 39, - "shape_dist_traveled": 0.777 - } - }, - { - "model": "gtfs.shape", - "pk": 504, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.9383125595628, - "shape_pt_lon": -84.0486415140485, - "shape_pt_sequence": 40, - "shape_dist_traveled": 0.817 - } - }, - { - "model": "gtfs.shape", - "pk": 505, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93816149920894, - "shape_pt_lon": -84.0484645585026, - "shape_pt_sequence": 41, - "shape_dist_traveled": 0.842 - } - }, - { - "model": "gtfs.shape", - "pk": 506, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93801276292967, - "shape_pt_lon": -84.0483041187788, - "shape_pt_sequence": 42, - "shape_dist_traveled": 0.866 - } - }, - { - "model": "gtfs.shape", - "pk": 507, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93767314890347, - "shape_pt_lon": -84.0479456361923, - "shape_pt_sequence": 43, - "shape_dist_traveled": 0.921 - } - }, - { - "model": "gtfs.shape", - "pk": 508, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93762896738312, - "shape_pt_lon": -84.0479035036496, - "shape_pt_sequence": 44, - "shape_dist_traveled": 0.927 - } - }, - { - "model": "gtfs.shape", - "pk": 509, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.9375818136517, - "shape_pt_lon": -84.0478664002497, - "shape_pt_sequence": 45, - "shape_dist_traveled": 0.934 - } - }, - { - "model": "gtfs.shape", - "pk": 510, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.9375407094932, - "shape_pt_lon": -84.0478370279249, - "shape_pt_sequence": 46, - "shape_dist_traveled": 0.94 - } - }, - { - "model": "gtfs.shape", - "pk": 511, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93749795410686, - "shape_pt_lon": -84.0478110083611, - "shape_pt_sequence": 47, - "shape_dist_traveled": 0.945 - } - }, - { - "model": "gtfs.shape", - "pk": 512, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93745496587906, - "shape_pt_lon": -84.0477901145765, - "shape_pt_sequence": 48, - "shape_dist_traveled": 0.95 - } - }, - { - "model": "gtfs.shape", - "pk": 513, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93736508273494, - "shape_pt_lon": -84.0477598330601, - "shape_pt_sequence": 49, - "shape_dist_traveled": 0.961 - } - }, - { - "model": "gtfs.shape", - "pk": 514, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93726069019733, - "shape_pt_lon": -84.047759267964, - "shape_pt_sequence": 50, - "shape_dist_traveled": 0.972 - } - }, - { - "model": "gtfs.shape", - "pk": 515, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93707479279145, - "shape_pt_lon": -84.047793713066, - "shape_pt_sequence": 51, - "shape_dist_traveled": 0.993 - } - }, - { - "model": "gtfs.shape", - "pk": 516, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93681544721791, - "shape_pt_lon": -84.0478715216077, - "shape_pt_sequence": 52, - "shape_dist_traveled": 1.023 - } - }, - { - "model": "gtfs.shape", - "pk": 517, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93657305173134, - "shape_pt_lon": -84.0479476285628, - "shape_pt_sequence": 53, - "shape_dist_traveled": 1.051 - } - }, - { - "model": "gtfs.shape", - "pk": 518, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93622234344519, - "shape_pt_lon": -84.0480642553351, - "shape_pt_sequence": 54, - "shape_dist_traveled": 1.092 - } - }, - { - "model": "gtfs.shape", - "pk": 519, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93602464016541, - "shape_pt_lon": -84.0481251956082, - "shape_pt_sequence": 55, - "shape_dist_traveled": 1.115 - } - }, - { - "model": "gtfs.shape", - "pk": 520, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93585590049247, - "shape_pt_lon": -84.0481829479595, - "shape_pt_sequence": 56, - "shape_dist_traveled": 1.135 - } - }, - { - "model": "gtfs.shape", - "pk": 521, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.9357089398831, - "shape_pt_lon": -84.0482522936584, - "shape_pt_sequence": 57, - "shape_dist_traveled": 1.153 - } - }, - { - "model": "gtfs.shape", - "pk": 522, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93563189742607, - "shape_pt_lon": -84.0482869664637, - "shape_pt_sequence": 58, - "shape_dist_traveled": 1.162 - } - }, - { - "model": "gtfs.shape", - "pk": 523, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93556048694849, - "shape_pt_lon": -84.0483531600847, - "shape_pt_sequence": 59, - "shape_dist_traveled": 1.173 - } - }, - { - "model": "gtfs.shape", - "pk": 524, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93549839086817, - "shape_pt_lon": -84.048435114092, - "shape_pt_sequence": 60, - "shape_dist_traveled": 1.184 - } - }, - { - "model": "gtfs.shape", - "pk": 525, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93546527295384, - "shape_pt_lon": -84.0485569944104, - "shape_pt_sequence": 61, - "shape_dist_traveled": 1.198 - } - }, - { - "model": "gtfs.shape", - "pk": 526, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.9354549236054, - "shape_pt_lon": -84.0486547088036, - "shape_pt_sequence": 62, - "shape_dist_traveled": 1.209 - } - }, - { - "model": "gtfs.shape", - "pk": 527, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93528001900853, - "shape_pt_lon": -84.048634745016, - "shape_pt_sequence": 63, - "shape_dist_traveled": 1.228 - } - }, - { - "model": "gtfs.shape", - "pk": 528, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93529761291067, - "shape_pt_lon": -84.0483794267626, - "shape_pt_sequence": 64, - "shape_dist_traveled": 1.256 - } - }, - { - "model": "gtfs.shape", - "pk": 529, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.9352527346308, - "shape_pt_lon": -84.0481286733116, - "shape_pt_sequence": 65, - "shape_dist_traveled": 1.284 - } - }, - { - "model": "gtfs.shape", - "pk": 530, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93512765815873, - "shape_pt_lon": -84.0477461762194, - "shape_pt_sequence": 66, - "shape_dist_traveled": 1.328 - } - }, - { - "model": "gtfs.shape", - "pk": 531, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93492703280895, - "shape_pt_lon": -84.0471055797031, - "shape_pt_sequence": 67, - "shape_dist_traveled": 1.402 - } - }, - { - "model": "gtfs.shape", - "pk": 532, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93478949058113, - "shape_pt_lon": -84.046354626689, - "shape_pt_sequence": 68, - "shape_dist_traveled": 1.486 - } - }, - { - "model": "gtfs.shape", - "pk": 533, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93469070939338, - "shape_pt_lon": -84.0458746565008, - "shape_pt_sequence": 69, - "shape_dist_traveled": 1.539 - } - }, - { - "model": "gtfs.shape", - "pk": 534, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93462060674132, - "shape_pt_lon": -84.0456143293, - "shape_pt_sequence": 70, - "shape_dist_traveled": 1.569 - } - }, - { - "model": "gtfs.shape", - "pk": 535, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93489289845325, - "shape_pt_lon": -84.0456070252698, - "shape_pt_sequence": 71, - "shape_dist_traveled": 1.599 - } - }, - { - "model": "gtfs.shape", - "pk": 536, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93495950947043, - "shape_pt_lon": -84.045606154414, - "shape_pt_sequence": 72, - "shape_dist_traveled": 1.606 - } - }, - { - "model": "gtfs.shape", - "pk": 537, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93502573261312, - "shape_pt_lon": -84.0455877894747, - "shape_pt_sequence": 73, - "shape_dist_traveled": 1.614 - } - }, - { - "model": "gtfs.shape", - "pk": 538, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93533984703067, - "shape_pt_lon": -84.0455793808645, - "shape_pt_sequence": 74, - "shape_dist_traveled": 1.649 - } - }, - { - "model": "gtfs.shape", - "pk": 539, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93553106245252, - "shape_pt_lon": -84.0455366983597, - "shape_pt_sequence": 75, - "shape_dist_traveled": 1.67 - } - }, - { - "model": "gtfs.shape", - "pk": 540, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93558489672501, - "shape_pt_lon": -84.0455256779408, - "shape_pt_sequence": 76, - "shape_dist_traveled": 1.677 - } - }, - { - "model": "gtfs.shape", - "pk": 541, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93566584972937, - "shape_pt_lon": -84.0454519050346, - "shape_pt_sequence": 77, - "shape_dist_traveled": 1.689 - } - }, - { - "model": "gtfs.shape", - "pk": 542, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93603020143902, - "shape_pt_lon": -84.0453870153627, - "shape_pt_sequence": 78, - "shape_dist_traveled": 1.73 - } - }, - { - "model": "gtfs.shape", - "pk": 543, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93619941008339, - "shape_pt_lon": -84.0453504149565, - "shape_pt_sequence": 79, - "shape_dist_traveled": 1.749 - } - }, - { - "model": "gtfs.shape", - "pk": 544, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93630011253566, - "shape_pt_lon": -84.0453617663184, - "shape_pt_sequence": 80, - "shape_dist_traveled": 1.76 - } - }, - { - "model": "gtfs.shape", - "pk": 545, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93651948121636, - "shape_pt_lon": -84.0454755016038, - "shape_pt_sequence": 81, - "shape_dist_traveled": 1.787 - } - }, - { - "model": "gtfs.shape", - "pk": 546, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93668368683727, - "shape_pt_lon": -84.0455653411938, - "shape_pt_sequence": 82, - "shape_dist_traveled": 1.808 - } - }, - { - "model": "gtfs.shape", - "pk": 547, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93677258981834, - "shape_pt_lon": -84.045589182648, - "shape_pt_sequence": 83, - "shape_dist_traveled": 1.818 - } - }, - { - "model": "gtfs.shape", - "pk": 548, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93685310570445, - "shape_pt_lon": -84.0455874796866, - "shape_pt_sequence": 84, - "shape_dist_traveled": 1.827 - } - }, - { - "model": "gtfs.shape", - "pk": 549, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93694508327091, - "shape_pt_lon": -84.0455437249918, - "shape_pt_sequence": 85, - "shape_dist_traveled": 1.838 - } - }, - { - "model": "gtfs.shape", - "pk": 550, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93708383542657, - "shape_pt_lon": -84.0454400845081, - "shape_pt_sequence": 86, - "shape_dist_traveled": 1.857 - } - }, - { - "model": "gtfs.shape", - "pk": 551, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93721635101928, - "shape_pt_lon": -84.045309807991, - "shape_pt_sequence": 87, - "shape_dist_traveled": 1.878 - } - }, - { - "model": "gtfs.shape", - "pk": 552, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93724819645461, - "shape_pt_lon": -84.0452761874456, - "shape_pt_sequence": 88, - "shape_dist_traveled": 1.883 - } - }, - { - "model": "gtfs.shape", - "pk": 553, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93734716375109, - "shape_pt_lon": -84.0451229209554, - "shape_pt_sequence": 89, - "shape_dist_traveled": 1.903 - } - }, - { - "model": "gtfs.shape", - "pk": 554, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93752119585777, - "shape_pt_lon": -84.0448187291416, - "shape_pt_sequence": 90, - "shape_dist_traveled": 1.941 - } - }, - { - "model": "gtfs.shape", - "pk": 555, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93767426097248, - "shape_pt_lon": -84.0445416760749, - "shape_pt_sequence": 91, - "shape_dist_traveled": 1.976 - } - }, - { - "model": "gtfs.shape", - "pk": 556, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93785833808635, - "shape_pt_lon": -84.0442186256065, - "shape_pt_sequence": 92, - "shape_dist_traveled": 2.017 - } - }, - { - "model": "gtfs.shape", - "pk": 557, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93810435753431, - "shape_pt_lon": -84.0437983732383, - "shape_pt_sequence": 93, - "shape_dist_traveled": 2.07 - } - }, - { - "model": "gtfs.shape", - "pk": 558, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93796632120651, - "shape_pt_lon": -84.0436125738981, - "shape_pt_sequence": 94, - "shape_dist_traveled": 2.096 - } - }, - { - "model": "gtfs.shape", - "pk": 559, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93791432144543, - "shape_pt_lon": -84.0434414999464, - "shape_pt_sequence": 95, - "shape_dist_traveled": 2.116 - } - }, - { - "model": "gtfs.shape", - "pk": 560, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93788832161072, - "shape_pt_lon": -84.0432184120559, - "shape_pt_sequence": 96, - "shape_dist_traveled": 2.14 - } - }, - { - "model": "gtfs.shape", - "pk": 561, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93792789506808, - "shape_pt_lon": -84.042939145496, - "shape_pt_sequence": 97, - "shape_dist_traveled": 2.171 - } - }, - { - "model": "gtfs.shape", - "pk": 562, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93799597108977, - "shape_pt_lon": -84.0425252959219, - "shape_pt_sequence": 98, - "shape_dist_traveled": 2.217 - } - }, - { - "model": "gtfs.shape", - "pk": 563, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93800488549925, - "shape_pt_lon": -84.0424724302894, - "shape_pt_sequence": 99, - "shape_dist_traveled": 2.223 - } - }, - { - "model": "gtfs.shape", - "pk": 564, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.9381395635656, - "shape_pt_lon": -84.0421750587842, - "shape_pt_sequence": 100, - "shape_dist_traveled": 2.259 - } - }, - { - "model": "gtfs.shape", - "pk": 565, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93816556338036, - "shape_pt_lon": -84.0419988023209, - "shape_pt_sequence": 101, - "shape_dist_traveled": 2.278 - } - }, - { - "model": "gtfs.shape", - "pk": 566, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93815877702913, - "shape_pt_lon": -84.0418468568672, - "shape_pt_sequence": 102, - "shape_dist_traveled": 2.295 - } - }, - { - "model": "gtfs.shape", - "pk": 567, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93812774499086, - "shape_pt_lon": -84.0417208377531, - "shape_pt_sequence": 103, - "shape_dist_traveled": 2.309 - } - }, - { - "model": "gtfs.shape", - "pk": 568, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93810465445374, - "shape_pt_lon": -84.0416827286396, - "shape_pt_sequence": 104, - "shape_dist_traveled": 2.314 - } - }, - { - "model": "gtfs.shape", - "pk": 569, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93807826146448, - "shape_pt_lon": -84.0416493133915, - "shape_pt_sequence": 105, - "shape_dist_traveled": 2.319 - } - }, - { - "model": "gtfs.shape", - "pk": 570, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93804738144964, - "shape_pt_lon": -84.0416349312544, - "shape_pt_sequence": 106, - "shape_dist_traveled": 2.323 - } - }, - { - "model": "gtfs.shape", - "pk": 571, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93801451996184, - "shape_pt_lon": -84.0416322837814, - "shape_pt_sequence": 107, - "shape_dist_traveled": 2.326 - } - }, - { - "model": "gtfs.shape", - "pk": 572, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93792436774485, - "shape_pt_lon": -84.0416346601389, - "shape_pt_sequence": 108, - "shape_dist_traveled": 2.336 - } - }, - { - "model": "gtfs.shape", - "pk": 573, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93790082410227, - "shape_pt_lon": -84.041067340985, - "shape_pt_sequence": 109, - "shape_dist_traveled": 2.399 - } - }, - { - "model": "gtfs.shape", - "pk": 574, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93846425290711, - "shape_pt_lon": -84.0409284047187, - "shape_pt_sequence": 110, - "shape_dist_traveled": 2.463 - } - }, - { - "model": "gtfs.shape", - "pk": 575, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93868651413261, - "shape_pt_lon": -84.0409624274215, - "shape_pt_sequence": 111, - "shape_dist_traveled": 2.488 - } - }, - { - "model": "gtfs.shape", - "pk": 576, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93885247660523, - "shape_pt_lon": -84.0411341586918, - "shape_pt_sequence": 112, - "shape_dist_traveled": 2.514 - } - }, - { - "model": "gtfs.shape", - "pk": 577, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93915539473273, - "shape_pt_lon": -84.0416474460876, - "shape_pt_sequence": 113, - "shape_dist_traveled": 2.579 - } - }, - { - "model": "gtfs.shape", - "pk": 578, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93928861127028, - "shape_pt_lon": -84.0417889786806, - "shape_pt_sequence": 114, - "shape_dist_traveled": 2.601 - } - }, - { - "model": "gtfs.shape", - "pk": 579, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.9394354239606, - "shape_pt_lon": -84.0418813247414, - "shape_pt_sequence": 115, - "shape_dist_traveled": 2.62 - } - }, - { - "model": "gtfs.shape", - "pk": 580, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93950244712471, - "shape_pt_lon": -84.0419056263361, - "shape_pt_sequence": 116, - "shape_dist_traveled": 2.628 - } - }, - { - "model": "gtfs.shape", - "pk": 581, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93950244613303, - "shape_pt_lon": -84.042239368576, - "shape_pt_sequence": 117, - "shape_dist_traveled": 2.664 - } - }, - { - "model": "gtfs.shape", - "pk": 582, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93949446718606, - "shape_pt_lon": -84.0425196469705, - "shape_pt_sequence": 118, - "shape_dist_traveled": 2.695 - } - }, - { - "model": "gtfs.shape", - "pk": 583, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93945457168453, - "shape_pt_lon": -84.0429991991022, - "shape_pt_sequence": 119, - "shape_dist_traveled": 2.748 - } - }, - { - "model": "gtfs.shape", - "pk": 584, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93942712460796, - "shape_pt_lon": -84.043331873611, - "shape_pt_sequence": 120, - "shape_dist_traveled": 2.784 - } - }, - { - "model": "gtfs.shape", - "pk": 585, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93972789866721, - "shape_pt_lon": -84.0432605742965, - "shape_pt_sequence": 121, - "shape_dist_traveled": 2.819 - } - }, - { - "model": "gtfs.shape", - "pk": 586, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93979051078508, - "shape_pt_lon": -84.0432941313524, - "shape_pt_sequence": 122, - "shape_dist_traveled": 2.826 - } - }, - { - "model": "gtfs.shape", - "pk": 587, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93982252793726, - "shape_pt_lon": -84.0433753940134, - "shape_pt_sequence": 123, - "shape_dist_traveled": 2.836 - } - }, - { - "model": "gtfs.shape", - "pk": 588, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.93991292983544, - "shape_pt_lon": -84.0437147893588, - "shape_pt_sequence": 124, - "shape_dist_traveled": 2.875 - } - }, - { - "model": "gtfs.shape", - "pk": 589, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.94002028140903, - "shape_pt_lon": -84.0441287509128, - "shape_pt_sequence": 125, - "shape_dist_traveled": 2.922 - } - }, - { - "model": "gtfs.shape", - "pk": 590, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.94016644833328, - "shape_pt_lon": -84.0446669802431, - "shape_pt_sequence": 126, - "shape_dist_traveled": 2.983 - } - }, - { - "model": "gtfs.shape", - "pk": 591, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.94027078687104, - "shape_pt_lon": -84.044823754755, - "shape_pt_sequence": 127, - "shape_dist_traveled": 3.003 - } - }, - { - "model": "gtfs.shape", - "pk": 592, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.94048864067421, - "shape_pt_lon": -84.0456295904777, - "shape_pt_sequence": 128, - "shape_dist_traveled": 3.095 - } - }, - { - "model": "gtfs.shape", - "pk": 593, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.9406416703034, - "shape_pt_lon": -84.045594280927, - "shape_pt_sequence": 129, - "shape_dist_traveled": 3.112 - } - }, - { - "model": "gtfs.shape", - "pk": 594, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.94079771456593, - "shape_pt_lon": -84.0450692602221, - "shape_pt_sequence": 130, - "shape_dist_traveled": 3.172 - } - }, - { - "model": "gtfs.shape", - "pk": 595, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.9409503711104, - "shape_pt_lon": -84.0447481499267, - "shape_pt_sequence": 131, - "shape_dist_traveled": 3.212 - } - }, - { - "model": "gtfs.shape", - "pk": 596, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.94105192700053, - "shape_pt_lon": -84.0446521079484, - "shape_pt_sequence": 132, - "shape_dist_traveled": 3.227 - } - }, - { - "model": "gtfs.shape", - "pk": 597, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.94171142158802, - "shape_pt_lon": -84.0446962954808, - "shape_pt_sequence": 133, - "shape_dist_traveled": 3.3 - } - }, - { - "model": "gtfs.shape", - "pk": 598, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.94281915936154, - "shape_pt_lon": -84.0447683576565, - "shape_pt_sequence": 134, - "shape_dist_traveled": 3.423 - } - }, - { - "model": "gtfs.shape", - "pk": 599, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.94301266464211, - "shape_pt_lon": -84.0447317924328, - "shape_pt_sequence": 135, - "shape_dist_traveled": 3.445 - } - }, - { - "model": "gtfs.shape", - "pk": 600, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.94326484610015, - "shape_pt_lon": -84.0446461368594, - "shape_pt_sequence": 136, - "shape_dist_traveled": 3.474 - } - }, - { - "model": "gtfs.shape", - "pk": 601, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.94367235170777, - "shape_pt_lon": -84.0444664659679, - "shape_pt_sequence": 137, - "shape_dist_traveled": 3.523 - } - }, - { - "model": "gtfs.shape", - "pk": 602, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.94380140312083, - "shape_pt_lon": -84.044752272012, - "shape_pt_sequence": 138, - "shape_dist_traveled": 3.558 - } - }, - { - "model": "gtfs.shape", - "pk": 603, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.9438796367465, - "shape_pt_lon": -84.0448814333755, - "shape_pt_sequence": 139, - "shape_dist_traveled": 3.574 - } - }, - { - "model": "gtfs.shape", - "pk": 604, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.94396952509255, - "shape_pt_lon": -84.0449503878825, - "shape_pt_sequence": 140, - "shape_dist_traveled": 3.587 - } - }, - { - "model": "gtfs.shape", - "pk": 605, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.94433433418409, - "shape_pt_lon": -84.044987908675, - "shape_pt_sequence": 141, - "shape_dist_traveled": 3.627 - } - }, - { - "model": "gtfs.shape", - "pk": 606, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.94457411376674, - "shape_pt_lon": -84.0450080280451, - "shape_pt_sequence": 142, - "shape_dist_traveled": 3.654 - } - }, - { - "model": "gtfs.shape", - "pk": 607, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.94495390060397, - "shape_pt_lon": -84.0450080280451, - "shape_pt_sequence": 143, - "shape_dist_traveled": 3.696 - } - }, - { - "model": "gtfs.shape", - "pk": 608, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.94504571713547, - "shape_pt_lon": -84.0450786471473, - "shape_pt_sequence": 144, - "shape_dist_traveled": 3.709 - } - }, - { - "model": "gtfs.shape", - "pk": 609, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.94507075688808, - "shape_pt_lon": -84.0453964329445, - "shape_pt_sequence": 145, - "shape_dist_traveled": 3.744 - } - }, - { - "model": "gtfs.shape", - "pk": 610, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.94509858007239, - "shape_pt_lon": -84.0454995368328, - "shape_pt_sequence": 146, - "shape_dist_traveled": 3.755 - } - }, - { - "model": "gtfs.shape", - "pk": 611, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.94517301639726, - "shape_pt_lon": -84.0455360879379, - "shape_pt_sequence": 147, - "shape_dist_traveled": 3.764 - } - }, - { - "model": "gtfs.shape", - "pk": 612, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.94569599438186, - "shape_pt_lon": -84.0455012141288, - "shape_pt_sequence": 148, - "shape_dist_traveled": 3.822 - } - }, - { - "model": "gtfs.shape", - "pk": 613, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.94576731883437, - "shape_pt_lon": -84.0454579354822, - "shape_pt_sequence": 149, - "shape_dist_traveled": 3.832 - } - }, - { - "model": "gtfs.shape", - "pk": 614, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.94587443785238, - "shape_pt_lon": -84.0452474905592, - "shape_pt_sequence": 150, - "shape_dist_traveled": 3.858 - } - }, - { - "model": "gtfs.shape", - "pk": 615, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.94594677794762, - "shape_pt_lon": -84.0451754590753, - "shape_pt_sequence": 151, - "shape_dist_traveled": 3.869 - } - }, - { - "model": "gtfs.shape", - "pk": 616, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.94629204599402, - "shape_pt_lon": -84.0451469719024, - "shape_pt_sequence": 152, - "shape_dist_traveled": 3.907 - } - }, - { - "model": "gtfs.shape", - "pk": 617, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.9463908179176, - "shape_pt_lon": -84.0451610957222, - "shape_pt_sequence": 153, - "shape_dist_traveled": 3.918 - } - }, - { - "model": "gtfs.shape", - "pk": 618, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.94645063751956, - "shape_pt_lon": -84.0451992300371, - "shape_pt_sequence": 154, - "shape_dist_traveled": 3.926 - } - }, - { - "model": "gtfs.shape", - "pk": 619, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "shape_pt_lat": 9.94649738913102, - "shape_pt_lon": -84.0452562192863, - "shape_pt_sequence": 155, - "shape_dist_traveled": 3.934 - } - }, - { - "model": "gtfs.shape", - "pk": 620, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94651450274987, - "shape_pt_lon": -84.0452709224469, - "shape_pt_sequence": 0, - "shape_dist_traveled": 0.0 - } - }, - { - "model": "gtfs.shape", - "pk": 621, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.9465713930344, - "shape_pt_lon": -84.0453586296957, - "shape_pt_sequence": 1, - "shape_dist_traveled": 0.011 - } - }, - { - "model": "gtfs.shape", - "pk": 622, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94670523135418, - "shape_pt_lon": -84.0455321860811, - "shape_pt_sequence": 2, - "shape_dist_traveled": 0.036 - } - }, - { - "model": "gtfs.shape", - "pk": 623, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94685977487793, - "shape_pt_lon": -84.0457428830683, - "shape_pt_sequence": 3, - "shape_dist_traveled": 0.064 - } - }, - { - "model": "gtfs.shape", - "pk": 624, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94692114024093, - "shape_pt_lon": -84.0458252584096, - "shape_pt_sequence": 4, - "shape_dist_traveled": 0.076 - } - }, - { - "model": "gtfs.shape", - "pk": 625, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94699848130395, - "shape_pt_lon": -84.045874911642, - "shape_pt_sequence": 5, - "shape_dist_traveled": 0.086 - } - }, - { - "model": "gtfs.shape", - "pk": 626, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94709174550324, - "shape_pt_lon": -84.0458702927366, - "shape_pt_sequence": 6, - "shape_dist_traveled": 0.096 - } - }, - { - "model": "gtfs.shape", - "pk": 627, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94733286724273, - "shape_pt_lon": -84.0456762984049, - "shape_pt_sequence": 7, - "shape_dist_traveled": 0.13 - } - }, - { - "model": "gtfs.shape", - "pk": 628, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94734992775087, - "shape_pt_lon": -84.0455816108455, - "shape_pt_sequence": 8, - "shape_dist_traveled": 0.141 - } - }, - { - "model": "gtfs.shape", - "pk": 629, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94731694409985, - "shape_pt_lon": -84.0454811496546, - "shape_pt_sequence": 9, - "shape_dist_traveled": 0.152 - } - }, - { - "model": "gtfs.shape", - "pk": 630, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94706331033958, - "shape_pt_lon": -84.0451520526366, - "shape_pt_sequence": 10, - "shape_dist_traveled": 0.198 - } - }, - { - "model": "gtfs.shape", - "pk": 631, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94695639770921, - "shape_pt_lon": -84.044934964086, - "shape_pt_sequence": 11, - "shape_dist_traveled": 0.225 - } - }, - { - "model": "gtfs.shape", - "pk": 632, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94685739750313, - "shape_pt_lon": -84.0447940381815, - "shape_pt_sequence": 12, - "shape_dist_traveled": 0.244 - } - }, - { - "model": "gtfs.shape", - "pk": 633, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94674934743632, - "shape_pt_lon": -84.0447120526121, - "shape_pt_sequence": 13, - "shape_dist_traveled": 0.259 - } - }, - { - "model": "gtfs.shape", - "pk": 634, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94663902259388, - "shape_pt_lon": -84.0446901128118, - "shape_pt_sequence": 14, - "shape_dist_traveled": 0.271 - } - }, - { - "model": "gtfs.shape", - "pk": 635, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94658480665502, - "shape_pt_lon": -84.0447036688627, - "shape_pt_sequence": 15, - "shape_dist_traveled": 0.277 - } - }, - { - "model": "gtfs.shape", - "pk": 636, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94652566341521, - "shape_pt_lon": -84.0447440842844, - "shape_pt_sequence": 16, - "shape_dist_traveled": 0.285 - } - }, - { - "model": "gtfs.shape", - "pk": 637, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94631063663281, - "shape_pt_lon": -84.0447956225084, - "shape_pt_sequence": 17, - "shape_dist_traveled": 0.31 - } - }, - { - "model": "gtfs.shape", - "pk": 638, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94607861289951, - "shape_pt_lon": -84.0448175623087, - "shape_pt_sequence": 18, - "shape_dist_traveled": 0.335 - } - }, - { - "model": "gtfs.shape", - "pk": 639, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94606268969643, - "shape_pt_lon": -84.0448198717614, - "shape_pt_sequence": 19, - "shape_dist_traveled": 0.337 - } - }, - { - "model": "gtfs.shape", - "pk": 640, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94607633849742, - "shape_pt_lon": -84.0451616705072, - "shape_pt_sequence": 20, - "shape_dist_traveled": 0.375 - } - }, - { - "model": "gtfs.shape", - "pk": 641, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94594816328299, - "shape_pt_lon": -84.0451794721398, - "shape_pt_sequence": 21, - "shape_dist_traveled": 0.389 - } - }, - { - "model": "gtfs.shape", - "pk": 642, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94587650883204, - "shape_pt_lon": -84.0452499104458, - "shape_pt_sequence": 22, - "shape_dist_traveled": 0.4 - } - }, - { - "model": "gtfs.shape", - "pk": 643, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94577755742257, - "shape_pt_lon": -84.0454566064596, - "shape_pt_sequence": 23, - "shape_dist_traveled": 0.425 - } - }, - { - "model": "gtfs.shape", - "pk": 644, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94570040854178, - "shape_pt_lon": -84.0455092507792, - "shape_pt_sequence": 24, - "shape_dist_traveled": 0.435 - } - }, - { - "model": "gtfs.shape", - "pk": 645, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94516698035057, - "shape_pt_lon": -84.0455392738468, - "shape_pt_sequence": 25, - "shape_dist_traveled": 0.494 - } - }, - { - "model": "gtfs.shape", - "pk": 646, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94508917283893, - "shape_pt_lon": -84.0455023654374, - "shape_pt_sequence": 26, - "shape_dist_traveled": 0.504 - } - }, - { - "model": "gtfs.shape", - "pk": 647, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94505732633557, - "shape_pt_lon": -84.045382273899, - "shape_pt_sequence": 27, - "shape_dist_traveled": 0.518 - } - }, - { - "model": "gtfs.shape", - "pk": 648, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94502889195332, - "shape_pt_lon": -84.0450808903258, - "shape_pt_sequence": 28, - "shape_dist_traveled": 0.551 - } - }, - { - "model": "gtfs.shape", - "pk": 649, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94495155042415, - "shape_pt_lon": -84.0450173803773, - "shape_pt_sequence": 29, - "shape_dist_traveled": 0.562 - } - }, - { - "model": "gtfs.shape", - "pk": 650, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94472000465252, - "shape_pt_lon": -84.045015769873, - "shape_pt_sequence": 30, - "shape_dist_traveled": 0.587 - } - }, - { - "model": "gtfs.shape", - "pk": 651, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94425679788889, - "shape_pt_lon": -84.0449868892884, - "shape_pt_sequence": 31, - "shape_dist_traveled": 0.639 - } - }, - { - "model": "gtfs.shape", - "pk": 652, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94389594579139, - "shape_pt_lon": -84.0449568041774, - "shape_pt_sequence": 32, - "shape_dist_traveled": 0.679 - } - }, - { - "model": "gtfs.shape", - "pk": 653, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.9433847319748, - "shape_pt_lon": -84.0449197895004, - "shape_pt_sequence": 33, - "shape_dist_traveled": 0.736 - } - }, - { - "model": "gtfs.shape", - "pk": 654, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94261500079999, - "shape_pt_lon": -84.0448773383005, - "shape_pt_sequence": 34, - "shape_dist_traveled": 0.821 - } - }, - { - "model": "gtfs.shape", - "pk": 655, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94204155986042, - "shape_pt_lon": -84.0448390343892, - "shape_pt_sequence": 35, - "shape_dist_traveled": 0.884 - } - }, - { - "model": "gtfs.shape", - "pk": 656, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94137698645447, - "shape_pt_lon": -84.0448024388483, - "shape_pt_sequence": 36, - "shape_dist_traveled": 0.958 - } - }, - { - "model": "gtfs.shape", - "pk": 657, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94096102380372, - "shape_pt_lon": -84.0447771566035, - "shape_pt_sequence": 37, - "shape_dist_traveled": 1.004 - } - }, - { - "model": "gtfs.shape", - "pk": 658, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94082181962447, - "shape_pt_lon": -84.0450446175143, - "shape_pt_sequence": 38, - "shape_dist_traveled": 1.037 - } - }, - { - "model": "gtfs.shape", - "pk": 659, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94065523781238, - "shape_pt_lon": -84.0456053336701, - "shape_pt_sequence": 39, - "shape_dist_traveled": 1.101 - } - }, - { - "model": "gtfs.shape", - "pk": 660, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94048314593914, - "shape_pt_lon": -84.045634999557, - "shape_pt_sequence": 40, - "shape_dist_traveled": 1.121 - } - }, - { - "model": "gtfs.shape", - "pk": 661, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.9403780406827, - "shape_pt_lon": -84.0452283043053, - "shape_pt_sequence": 41, - "shape_dist_traveled": 1.167 - } - }, - { - "model": "gtfs.shape", - "pk": 662, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.9402703855621, - "shape_pt_lon": -84.04482278961, - "shape_pt_sequence": 42, - "shape_dist_traveled": 1.213 - } - }, - { - "model": "gtfs.shape", - "pk": 663, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94016328794055, - "shape_pt_lon": -84.0446641785108, - "shape_pt_sequence": 43, - "shape_dist_traveled": 1.234 - } - }, - { - "model": "gtfs.shape", - "pk": 664, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.94010181117775, - "shape_pt_lon": -84.0444165990228, - "shape_pt_sequence": 44, - "shape_dist_traveled": 1.262 - } - }, - { - "model": "gtfs.shape", - "pk": 665, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93971666992378, - "shape_pt_lon": -84.0445263287881, - "shape_pt_sequence": 45, - "shape_dist_traveled": 1.306 - } - }, - { - "model": "gtfs.shape", - "pk": 666, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93932936015097, - "shape_pt_lon": -84.0446221116145, - "shape_pt_sequence": 46, - "shape_dist_traveled": 1.35 - } - }, - { - "model": "gtfs.shape", - "pk": 667, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93920408915902, - "shape_pt_lon": -84.0446545394456, - "shape_pt_sequence": 47, - "shape_dist_traveled": 1.364 - } - }, - { - "model": "gtfs.shape", - "pk": 668, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.9391568243881, - "shape_pt_lon": -84.0446456512568, - "shape_pt_sequence": 48, - "shape_dist_traveled": 1.37 - } - }, - { - "model": "gtfs.shape", - "pk": 669, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93912509354336, - "shape_pt_lon": -84.0446159514984, - "shape_pt_sequence": 49, - "shape_dist_traveled": 1.375 - } - }, - { - "model": "gtfs.shape", - "pk": 670, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93911021843789, - "shape_pt_lon": -84.0445637722231, - "shape_pt_sequence": 50, - "shape_dist_traveled": 1.381 - } - }, - { - "model": "gtfs.shape", - "pk": 671, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93919615665697, - "shape_pt_lon": -84.0443354246074, - "shape_pt_sequence": 51, - "shape_dist_traveled": 1.407 - } - }, - { - "model": "gtfs.shape", - "pk": 672, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.939024, - "shape_pt_lon": -84.043697, - "shape_pt_sequence": 52, - "shape_dist_traveled": 1.459 - } - }, - { - "model": "gtfs.shape", - "pk": 673, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.9389589108528, - "shape_pt_lon": -84.0434647440871, - "shape_pt_sequence": 53, - "shape_dist_traveled": 1.506 - } - }, - { - "model": "gtfs.shape", - "pk": 674, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93927926961302, - "shape_pt_lon": -84.0433689657322, - "shape_pt_sequence": 54, - "shape_dist_traveled": 1.543 - } - }, - { - "model": "gtfs.shape", - "pk": 675, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.9394214266361, - "shape_pt_lon": -84.0433251613281, - "shape_pt_sequence": 55, - "shape_dist_traveled": 1.56 - } - }, - { - "model": "gtfs.shape", - "pk": 676, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.939438, - "shape_pt_lon": -84.043078, - "shape_pt_sequence": 56, - "shape_dist_traveled": 1.597 - } - }, - { - "model": "gtfs.shape", - "pk": 677, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93949676004582, - "shape_pt_lon": -84.0424704121516, - "shape_pt_sequence": 57, - "shape_dist_traveled": 1.654 - } - }, - { - "model": "gtfs.shape", - "pk": 678, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93950197815545, - "shape_pt_lon": -84.0423387592283, - "shape_pt_sequence": 58, - "shape_dist_traveled": 1.668 - } - }, - { - "model": "gtfs.shape", - "pk": 679, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93950471943605, - "shape_pt_lon": -84.042195874555, - "shape_pt_sequence": 59, - "shape_dist_traveled": 1.684 - } - }, - { - "model": "gtfs.shape", - "pk": 680, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93950937287681, - "shape_pt_lon": -84.0420595652431, - "shape_pt_sequence": 60, - "shape_dist_traveled": 1.699 - } - }, - { - "model": "gtfs.shape", - "pk": 681, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93950560510053, - "shape_pt_lon": -84.0419237588459, - "shape_pt_sequence": 61, - "shape_dist_traveled": 1.714 - } - }, - { - "model": "gtfs.shape", - "pk": 682, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93932694656827, - "shape_pt_lon": -84.0418526043861, - "shape_pt_sequence": 62, - "shape_dist_traveled": 1.735 - } - }, - { - "model": "gtfs.shape", - "pk": 683, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93916441674404, - "shape_pt_lon": -84.0416871226965, - "shape_pt_sequence": 63, - "shape_dist_traveled": 1.761 - } - }, - { - "model": "gtfs.shape", - "pk": 684, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93904364750639, - "shape_pt_lon": -84.0415030389796, - "shape_pt_sequence": 64, - "shape_dist_traveled": 1.785 - } - }, - { - "model": "gtfs.shape", - "pk": 685, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93882652989536, - "shape_pt_lon": -84.0411360631089, - "shape_pt_sequence": 65, - "shape_dist_traveled": 1.832 - } - }, - { - "model": "gtfs.shape", - "pk": 686, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93877761093714, - "shape_pt_lon": -84.0410711382821, - "shape_pt_sequence": 66, - "shape_dist_traveled": 1.841 - } - }, - { - "model": "gtfs.shape", - "pk": 687, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93872439879922, - "shape_pt_lon": -84.0410192892248, - "shape_pt_sequence": 67, - "shape_dist_traveled": 1.849 - } - }, - { - "model": "gtfs.shape", - "pk": 688, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93860739420377, - "shape_pt_lon": -84.0409548622543, - "shape_pt_sequence": 68, - "shape_dist_traveled": 1.863 - } - }, - { - "model": "gtfs.shape", - "pk": 689, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93847712489684, - "shape_pt_lon": -84.0409464827492, - "shape_pt_sequence": 69, - "shape_dist_traveled": 1.878 - } - }, - { - "model": "gtfs.shape", - "pk": 690, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93831748290179, - "shape_pt_lon": -84.0409847362632, - "shape_pt_sequence": 70, - "shape_dist_traveled": 1.896 - } - }, - { - "model": "gtfs.shape", - "pk": 691, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93790526804534, - "shape_pt_lon": -84.0410975311932, - "shape_pt_sequence": 71, - "shape_dist_traveled": 1.943 - } - }, - { - "model": "gtfs.shape", - "pk": 692, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93791543483811, - "shape_pt_lon": -84.0413721007657, - "shape_pt_sequence": 72, - "shape_dist_traveled": 1.973 - } - }, - { - "model": "gtfs.shape", - "pk": 693, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93792971313351, - "shape_pt_lon": -84.0416234000621, - "shape_pt_sequence": 73, - "shape_dist_traveled": 2.001 - } - }, - { - "model": "gtfs.shape", - "pk": 694, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93801943406157, - "shape_pt_lon": -84.0416214268987, - "shape_pt_sequence": 74, - "shape_dist_traveled": 2.011 - } - }, - { - "model": "gtfs.shape", - "pk": 695, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93808013647371, - "shape_pt_lon": -84.0416385167757, - "shape_pt_sequence": 75, - "shape_dist_traveled": 2.018 - } - }, - { - "model": "gtfs.shape", - "pk": 696, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.9381333560273, - "shape_pt_lon": -84.0417143841426, - "shape_pt_sequence": 76, - "shape_dist_traveled": 2.028 - } - }, - { - "model": "gtfs.shape", - "pk": 697, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.9381491692212, - "shape_pt_lon": -84.0417661717713, - "shape_pt_sequence": 77, - "shape_dist_traveled": 2.034 - } - }, - { - "model": "gtfs.shape", - "pk": 698, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93816498245021, - "shape_pt_lon": -84.0418402279053, - "shape_pt_sequence": 78, - "shape_dist_traveled": 2.042 - } - }, - { - "model": "gtfs.shape", - "pk": 699, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93817110369939, - "shape_pt_lon": -84.041955196169, - "shape_pt_sequence": 79, - "shape_dist_traveled": 2.055 - } - }, - { - "model": "gtfs.shape", - "pk": 700, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93816447211196, - "shape_pt_lon": -84.0420620743374, - "shape_pt_sequence": 80, - "shape_dist_traveled": 2.067 - } - }, - { - "model": "gtfs.shape", - "pk": 701, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93814558312971, - "shape_pt_lon": -84.042172549653, - "shape_pt_sequence": 81, - "shape_dist_traveled": 2.079 - } - }, - { - "model": "gtfs.shape", - "pk": 702, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93806546361139, - "shape_pt_lon": -84.0423590295751, - "shape_pt_sequence": 82, - "shape_dist_traveled": 2.101 - } - }, - { - "model": "gtfs.shape", - "pk": 703, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93800868895506, - "shape_pt_lon": -84.0424754995415, - "shape_pt_sequence": 83, - "shape_dist_traveled": 2.116 - } - }, - { - "model": "gtfs.shape", - "pk": 704, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93798455282835, - "shape_pt_lon": -84.0426277550985, - "shape_pt_sequence": 84, - "shape_dist_traveled": 2.132 - } - }, - { - "model": "gtfs.shape", - "pk": 705, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93793303246509, - "shape_pt_lon": -84.0429680898401, - "shape_pt_sequence": 85, - "shape_dist_traveled": 2.17 - } - }, - { - "model": "gtfs.shape", - "pk": 706, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93789255913571, - "shape_pt_lon": -84.0431865014681, - "shape_pt_sequence": 86, - "shape_dist_traveled": 2.195 - } - }, - { - "model": "gtfs.shape", - "pk": 707, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93792278510311, - "shape_pt_lon": -84.0434262188335, - "shape_pt_sequence": 87, - "shape_dist_traveled": 2.221 - } - }, - { - "model": "gtfs.shape", - "pk": 708, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93793612530689, - "shape_pt_lon": -84.0435140997635, - "shape_pt_sequence": 88, - "shape_dist_traveled": 2.231 - } - }, - { - "model": "gtfs.shape", - "pk": 709, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93796843588535, - "shape_pt_lon": -84.0436045719397, - "shape_pt_sequence": 89, - "shape_dist_traveled": 2.241 - } - }, - { - "model": "gtfs.shape", - "pk": 710, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93811029202329, - "shape_pt_lon": -84.0437946545471, - "shape_pt_sequence": 90, - "shape_dist_traveled": 2.267 - } - }, - { - "model": "gtfs.shape", - "pk": 711, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93796317506452, - "shape_pt_lon": -84.044044224914, - "shape_pt_sequence": 91, - "shape_dist_traveled": 2.299 - } - }, - { - "model": "gtfs.shape", - "pk": 712, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93778888741941, - "shape_pt_lon": -84.0443497474269, - "shape_pt_sequence": 92, - "shape_dist_traveled": 2.338 - } - }, - { - "model": "gtfs.shape", - "pk": 713, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93759056212761, - "shape_pt_lon": -84.0447040111923, - "shape_pt_sequence": 93, - "shape_dist_traveled": 2.383 - } - }, - { - "model": "gtfs.shape", - "pk": 714, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93743889754011, - "shape_pt_lon": -84.0449773758339, - "shape_pt_sequence": 94, - "shape_dist_traveled": 2.417 - } - }, - { - "model": "gtfs.shape", - "pk": 715, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93734106177819, - "shape_pt_lon": -84.0451442319336, - "shape_pt_sequence": 95, - "shape_dist_traveled": 2.438 - } - }, - { - "model": "gtfs.shape", - "pk": 716, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93725220134541, - "shape_pt_lon": -84.0452700748287, - "shape_pt_sequence": 96, - "shape_dist_traveled": 2.455 - } - }, - { - "model": "gtfs.shape", - "pk": 717, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93710383236486, - "shape_pt_lon": -84.0454232410009, - "shape_pt_sequence": 97, - "shape_dist_traveled": 2.479 - } - }, - { - "model": "gtfs.shape", - "pk": 718, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93703302156643, - "shape_pt_lon": -84.045480287002, - "shape_pt_sequence": 98, - "shape_dist_traveled": 2.489 - } - }, - { - "model": "gtfs.shape", - "pk": 719, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93692669580576, - "shape_pt_lon": -84.0455559204937, - "shape_pt_sequence": 99, - "shape_dist_traveled": 2.503 - } - }, - { - "model": "gtfs.shape", - "pk": 720, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93685320196694, - "shape_pt_lon": -84.0455868138288, - "shape_pt_sequence": 100, - "shape_dist_traveled": 2.512 - } - }, - { - "model": "gtfs.shape", - "pk": 721, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93677214106483, - "shape_pt_lon": -84.045591032246, - "shape_pt_sequence": 101, - "shape_dist_traveled": 2.521 - } - }, - { - "model": "gtfs.shape", - "pk": 722, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93667892839703, - "shape_pt_lon": -84.0455673986725, - "shape_pt_sequence": 102, - "shape_dist_traveled": 2.531 - } - }, - { - "model": "gtfs.shape", - "pk": 723, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93652937757293, - "shape_pt_lon": -84.0454873867401, - "shape_pt_sequence": 103, - "shape_dist_traveled": 2.55 - } - }, - { - "model": "gtfs.shape", - "pk": 724, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93646683969579, - "shape_pt_lon": -84.0454491600057, - "shape_pt_sequence": 104, - "shape_dist_traveled": 2.558 - } - }, - { - "model": "gtfs.shape", - "pk": 725, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93640033885562, - "shape_pt_lon": -84.0454129449283, - "shape_pt_sequence": 105, - "shape_dist_traveled": 2.567 - } - }, - { - "model": "gtfs.shape", - "pk": 726, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93634297166293, - "shape_pt_lon": -84.0453776127618, - "shape_pt_sequence": 106, - "shape_dist_traveled": 2.574 - } - }, - { - "model": "gtfs.shape", - "pk": 727, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93629576054226, - "shape_pt_lon": -84.0453623778292, - "shape_pt_sequence": 107, - "shape_dist_traveled": 2.579 - } - }, - { - "model": "gtfs.shape", - "pk": 728, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93624363287526, - "shape_pt_lon": -84.0453512637102, - "shape_pt_sequence": 108, - "shape_dist_traveled": 2.585 - } - }, - { - "model": "gtfs.shape", - "pk": 729, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.9361862212533, - "shape_pt_lon": -84.0453538959122, - "shape_pt_sequence": 109, - "shape_dist_traveled": 2.592 - } - }, - { - "model": "gtfs.shape", - "pk": 730, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93603883510741, - "shape_pt_lon": -84.0453890269646, - "shape_pt_sequence": 110, - "shape_dist_traveled": 2.608 - } - }, - { - "model": "gtfs.shape", - "pk": 731, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93580414505913, - "shape_pt_lon": -84.0454308854351, - "shape_pt_sequence": 111, - "shape_dist_traveled": 2.635 - } - }, - { - "model": "gtfs.shape", - "pk": 732, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93565385732093, - "shape_pt_lon": -84.0454587046985, - "shape_pt_sequence": 112, - "shape_dist_traveled": 2.652 - } - }, - { - "model": "gtfs.shape", - "pk": 733, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93558390036268, - "shape_pt_lon": -84.0455252542674, - "shape_pt_sequence": 113, - "shape_dist_traveled": 2.662 - } - }, - { - "model": "gtfs.shape", - "pk": 734, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93547184500151, - "shape_pt_lon": -84.0455798539966, - "shape_pt_sequence": 114, - "shape_dist_traveled": 2.676 - } - }, - { - "model": "gtfs.shape", - "pk": 735, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93533906172064, - "shape_pt_lon": -84.0456377473207, - "shape_pt_sequence": 115, - "shape_dist_traveled": 2.692 - } - }, - { - "model": "gtfs.shape", - "pk": 736, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93501118853525, - "shape_pt_lon": -84.0456383288227, - "shape_pt_sequence": 116, - "shape_dist_traveled": 2.728 - } - }, - { - "model": "gtfs.shape", - "pk": 737, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93495718975151, - "shape_pt_lon": -84.0456086223286, - "shape_pt_sequence": 117, - "shape_dist_traveled": 2.735 - } - }, - { - "model": "gtfs.shape", - "pk": 738, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93465006354252, - "shape_pt_lon": -84.0456168978697, - "shape_pt_sequence": 118, - "shape_dist_traveled": 2.769 - } - }, - { - "model": "gtfs.shape", - "pk": 739, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93477095640989, - "shape_pt_lon": -84.0461340991613, - "shape_pt_sequence": 119, - "shape_dist_traveled": 2.827 - } - }, - { - "model": "gtfs.shape", - "pk": 740, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93490403346722, - "shape_pt_lon": -84.0468176973466, - "shape_pt_sequence": 120, - "shape_dist_traveled": 2.904 - } - }, - { - "model": "gtfs.shape", - "pk": 741, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93495932029753, - "shape_pt_lon": -84.0471113963055, - "shape_pt_sequence": 121, - "shape_dist_traveled": 2.937 - } - }, - { - "model": "gtfs.shape", - "pk": 742, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93505827498137, - "shape_pt_lon": -84.0474601236579, - "shape_pt_sequence": 122, - "shape_dist_traveled": 2.976 - } - }, - { - "model": "gtfs.shape", - "pk": 743, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93519897363926, - "shape_pt_lon": -84.0478899692808, - "shape_pt_sequence": 123, - "shape_dist_traveled": 3.026 - } - }, - { - "model": "gtfs.shape", - "pk": 744, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93527449143981, - "shape_pt_lon": -84.0481284685146, - "shape_pt_sequence": 124, - "shape_dist_traveled": 3.053 - } - }, - { - "model": "gtfs.shape", - "pk": 745, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93531543817006, - "shape_pt_lon": -84.0483778894022, - "shape_pt_sequence": 125, - "shape_dist_traveled": 3.081 - } - }, - { - "model": "gtfs.shape", - "pk": 746, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93529755715117, - "shape_pt_lon": -84.0486249437023, - "shape_pt_sequence": 126, - "shape_dist_traveled": 3.108 - } - }, - { - "model": "gtfs.shape", - "pk": 747, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.93545425079317, - "shape_pt_lon": -84.0486430566726, - "shape_pt_sequence": 127, - "shape_dist_traveled": 3.126 - } - }, - { - "model": "gtfs.shape", - "pk": 748, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.9354703595261, - "shape_pt_lon": -84.0488000764969, - "shape_pt_sequence": 128, - "shape_dist_traveled": 3.143 - } - }, - { - "model": "gtfs.shape", - "pk": 749, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "shape_pt_lat": 9.9355323422866, - "shape_pt_lon": -84.0490437766179, - "shape_pt_sequence": 129, - "shape_dist_traveled": 3.171 - } - }, - { - "model": "gtfs.shape", - "pk": 750, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94651439468106, - "shape_pt_lon": -84.0452793145875, - "shape_pt_sequence": 0, - "shape_dist_traveled": 0.0 - } - }, - { - "model": "gtfs.shape", - "pk": 751, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94656979269062, - "shape_pt_lon": -84.0453635889366, - "shape_pt_sequence": 1, - "shape_dist_traveled": 0.011 - } - }, - { - "model": "gtfs.shape", - "pk": 752, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94668819013391, - "shape_pt_lon": -84.0455133598416, - "shape_pt_sequence": 2, - "shape_dist_traveled": 0.032 - } - }, - { - "model": "gtfs.shape", - "pk": 753, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94677813595565, - "shape_pt_lon": -84.0456333624982, - "shape_pt_sequence": 3, - "shape_dist_traveled": 0.049 - } - }, - { - "model": "gtfs.shape", - "pk": 754, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94692110409536, - "shape_pt_lon": -84.0458288226395, - "shape_pt_sequence": 4, - "shape_dist_traveled": 0.075 - } - }, - { - "model": "gtfs.shape", - "pk": 755, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94699667079666, - "shape_pt_lon": -84.0458784281265, - "shape_pt_sequence": 5, - "shape_dist_traveled": 0.085 - } - }, - { - "model": "gtfs.shape", - "pk": 756, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94709290535486, - "shape_pt_lon": -84.0458729567443, - "shape_pt_sequence": 6, - "shape_dist_traveled": 0.096 - } - }, - { - "model": "gtfs.shape", - "pk": 757, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94722193423012, - "shape_pt_lon": -84.0457747817661, - "shape_pt_sequence": 7, - "shape_dist_traveled": 0.114 - } - }, - { - "model": "gtfs.shape", - "pk": 758, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94733469552996, - "shape_pt_lon": -84.0456766067879, - "shape_pt_sequence": 8, - "shape_dist_traveled": 0.13 - } - }, - { - "model": "gtfs.shape", - "pk": 759, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94735240267321, - "shape_pt_lon": -84.0455812484176, - "shape_pt_sequence": 9, - "shape_dist_traveled": 0.141 - } - }, - { - "model": "gtfs.shape", - "pk": 760, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94731698838683, - "shape_pt_lon": -84.0454835451677, - "shape_pt_sequence": 10, - "shape_dist_traveled": 0.152 - } - }, - { - "model": "gtfs.shape", - "pk": 761, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94706401578786, - "shape_pt_lon": -84.045155482603, - "shape_pt_sequence": 11, - "shape_dist_traveled": 0.198 - } - }, - { - "model": "gtfs.shape", - "pk": 762, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94695753981341, - "shape_pt_lon": -84.0449388905875, - "shape_pt_sequence": 12, - "shape_dist_traveled": 0.224 - } - }, - { - "model": "gtfs.shape", - "pk": 763, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94685591607748, - "shape_pt_lon": -84.0447927265256, - "shape_pt_sequence": 13, - "shape_dist_traveled": 0.244 - } - }, - { - "model": "gtfs.shape", - "pk": 764, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94674691466528, - "shape_pt_lon": -84.0447132911805, - "shape_pt_sequence": 14, - "shape_dist_traveled": 0.259 - } - }, - { - "model": "gtfs.shape", - "pk": 765, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94663836196663, - "shape_pt_lon": -84.0446929689046, - "shape_pt_sequence": 15, - "shape_dist_traveled": 0.271 - } - }, - { - "model": "gtfs.shape", - "pk": 766, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.9465853910728, - "shape_pt_lon": -84.0447054750041, - "shape_pt_sequence": 16, - "shape_dist_traveled": 0.277 - } - }, - { - "model": "gtfs.shape", - "pk": 767, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94652457073993, - "shape_pt_lon": -84.0447469011822, - "shape_pt_sequence": 17, - "shape_dist_traveled": 0.285 - } - }, - { - "model": "gtfs.shape", - "pk": 768, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94630948675802, - "shape_pt_lon": -84.0447977068717, - "shape_pt_sequence": 18, - "shape_dist_traveled": 0.31 - } - }, - { - "model": "gtfs.shape", - "pk": 769, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94606507414992, - "shape_pt_lon": -84.0448235005163, - "shape_pt_sequence": 19, - "shape_dist_traveled": 0.337 - } - }, - { - "model": "gtfs.shape", - "pk": 770, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94607893196729, - "shape_pt_lon": -84.0451642894519, - "shape_pt_sequence": 20, - "shape_dist_traveled": 0.374 - } - }, - { - "model": "gtfs.shape", - "pk": 771, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94594726623906, - "shape_pt_lon": -84.0451842895768, - "shape_pt_sequence": 21, - "shape_dist_traveled": 0.389 - } - }, - { - "model": "gtfs.shape", - "pk": 772, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94587566747948, - "shape_pt_lon": -84.0452538542911, - "shape_pt_sequence": 22, - "shape_dist_traveled": 0.4 - } - }, - { - "model": "gtfs.shape", - "pk": 773, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94577795917383, - "shape_pt_lon": -84.0454601695233, - "shape_pt_sequence": 23, - "shape_dist_traveled": 0.425 - } - }, - { - "model": "gtfs.shape", - "pk": 774, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94569943146, - "shape_pt_lon": -84.0455125384658, - "shape_pt_sequence": 24, - "shape_dist_traveled": 0.435 - } - }, - { - "model": "gtfs.shape", - "pk": 775, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94545154684154, - "shape_pt_lon": -84.0455252458136, - "shape_pt_sequence": 25, - "shape_dist_traveled": 0.463 - } - }, - { - "model": "gtfs.shape", - "pk": 776, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94516751299271, - "shape_pt_lon": -84.0455414357082, - "shape_pt_sequence": 26, - "shape_dist_traveled": 0.494 - } - }, - { - "model": "gtfs.shape", - "pk": 777, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94508849180003, - "shape_pt_lon": -84.0455037479672, - "shape_pt_sequence": 27, - "shape_dist_traveled": 0.504 - } - }, - { - "model": "gtfs.shape", - "pk": 778, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94505511036374, - "shape_pt_lon": -84.0453835472561, - "shape_pt_sequence": 28, - "shape_dist_traveled": 0.518 - } - }, - { - "model": "gtfs.shape", - "pk": 779, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94502739484005, - "shape_pt_lon": -84.045084965639, - "shape_pt_sequence": 29, - "shape_dist_traveled": 0.55 - } - }, - { - "model": "gtfs.shape", - "pk": 780, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94499479036127, - "shape_pt_lon": -84.0450504044021, - "shape_pt_sequence": 30, - "shape_dist_traveled": 0.556 - } - }, - { - "model": "gtfs.shape", - "pk": 781, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94494963682908, - "shape_pt_lon": -84.0450208723069, - "shape_pt_sequence": 31, - "shape_dist_traveled": 0.562 - } - }, - { - "model": "gtfs.shape", - "pk": 782, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94467428591231, - "shape_pt_lon": -84.0450154011338, - "shape_pt_sequence": 32, - "shape_dist_traveled": 0.592 - } - }, - { - "model": "gtfs.shape", - "pk": 783, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94435778151253, - "shape_pt_lon": -84.0450041637077, - "shape_pt_sequence": 33, - "shape_dist_traveled": 0.627 - } - }, - { - "model": "gtfs.shape", - "pk": 784, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94347268380579, - "shape_pt_lon": -84.0449287137552, - "shape_pt_sequence": 34, - "shape_dist_traveled": 0.725 - } - }, - { - "model": "gtfs.shape", - "pk": 785, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94295817880508, - "shape_pt_lon": -84.0448982678798, - "shape_pt_sequence": 35, - "shape_dist_traveled": 0.782 - } - }, - { - "model": "gtfs.shape", - "pk": 786, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94230048632557, - "shape_pt_lon": -84.0448587644203, - "shape_pt_sequence": 36, - "shape_dist_traveled": 0.855 - } - }, - { - "model": "gtfs.shape", - "pk": 787, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94171228683352, - "shape_pt_lon": -84.0448222996627, - "shape_pt_sequence": 37, - "shape_dist_traveled": 0.92 - } - }, - { - "model": "gtfs.shape", - "pk": 788, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94096530647596, - "shape_pt_lon": -84.0447760219723, - "shape_pt_sequence": 38, - "shape_dist_traveled": 1.003 - } - }, - { - "model": "gtfs.shape", - "pk": 789, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94090663320268, - "shape_pt_lon": -84.0448740739734, - "shape_pt_sequence": 39, - "shape_dist_traveled": 1.016 - } - }, - { - "model": "gtfs.shape", - "pk": 790, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94084406020503, - "shape_pt_lon": -84.0449871934796, - "shape_pt_sequence": 40, - "shape_dist_traveled": 1.03 - } - }, - { - "model": "gtfs.shape", - "pk": 791, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94077751897418, - "shape_pt_lon": -84.0452171289551, - "shape_pt_sequence": 41, - "shape_dist_traveled": 1.056 - } - }, - { - "model": "gtfs.shape", - "pk": 792, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94072156165138, - "shape_pt_lon": -84.0453974813657, - "shape_pt_sequence": 42, - "shape_dist_traveled": 1.077 - } - }, - { - "model": "gtfs.shape", - "pk": 793, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94066022328121, - "shape_pt_lon": -84.0456042948351, - "shape_pt_sequence": 43, - "shape_dist_traveled": 1.101 - } - }, - { - "model": "gtfs.shape", - "pk": 794, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94049309734092, - "shape_pt_lon": -84.0456331735173, - "shape_pt_sequence": 44, - "shape_dist_traveled": 1.119 - } - }, - { - "model": "gtfs.shape", - "pk": 795, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94043960234258, - "shape_pt_lon": -84.0454384499972, - "shape_pt_sequence": 45, - "shape_dist_traveled": 1.142 - } - }, - { - "model": "gtfs.shape", - "pk": 796, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94037244769911, - "shape_pt_lon": -84.0451953028132, - "shape_pt_sequence": 46, - "shape_dist_traveled": 1.169 - } - }, - { - "model": "gtfs.shape", - "pk": 797, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94027492444419, - "shape_pt_lon": -84.0448203307503, - "shape_pt_sequence": 47, - "shape_dist_traveled": 1.212 - } - }, - { - "model": "gtfs.shape", - "pk": 798, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94022435173391, - "shape_pt_lon": -84.0447437519701, - "shape_pt_sequence": 48, - "shape_dist_traveled": 1.222 - } - }, - { - "model": "gtfs.shape", - "pk": 799, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94016681408322, - "shape_pt_lon": -84.0446621944019, - "shape_pt_sequence": 49, - "shape_dist_traveled": 1.233 - } - }, - { - "model": "gtfs.shape", - "pk": 800, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.94010200702146, - "shape_pt_lon": -84.044417503094, - "shape_pt_sequence": 50, - "shape_dist_traveled": 1.261 - } - }, - { - "model": "gtfs.shape", - "pk": 801, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93987745974345, - "shape_pt_lon": -84.0444809655781, - "shape_pt_sequence": 51, - "shape_dist_traveled": 1.286 - } - }, - { - "model": "gtfs.shape", - "pk": 802, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93971459423953, - "shape_pt_lon": -84.0445245874922, - "shape_pt_sequence": 52, - "shape_dist_traveled": 1.305 - } - }, - { - "model": "gtfs.shape", - "pk": 803, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93927560616025, - "shape_pt_lon": -84.0446392902696, - "shape_pt_sequence": 53, - "shape_dist_traveled": 1.355 - } - }, - { - "model": "gtfs.shape", - "pk": 804, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93920545121652, - "shape_pt_lon": -84.0446560771702, - "shape_pt_sequence": 54, - "shape_dist_traveled": 1.363 - } - }, - { - "model": "gtfs.shape", - "pk": 805, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93916110643307, - "shape_pt_lon": -84.0446448875091, - "shape_pt_sequence": 55, - "shape_dist_traveled": 1.368 - } - }, - { - "model": "gtfs.shape", - "pk": 806, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93912385292449, - "shape_pt_lon": -84.0446191813258, - "shape_pt_sequence": 56, - "shape_dist_traveled": 1.373 - } - }, - { - "model": "gtfs.shape", - "pk": 807, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93911625815432, - "shape_pt_lon": -84.0445525134932, - "shape_pt_sequence": 57, - "shape_dist_traveled": 1.38 - } - }, - { - "model": "gtfs.shape", - "pk": 808, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93919941590806, - "shape_pt_lon": -84.0443337547524, - "shape_pt_sequence": 58, - "shape_dist_traveled": 1.406 - } - }, - { - "model": "gtfs.shape", - "pk": 809, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93911055274011, - "shape_pt_lon": -84.044006444136, - "shape_pt_sequence": 59, - "shape_dist_traveled": 1.443 - } - }, - { - "model": "gtfs.shape", - "pk": 810, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.9390190082839, - "shape_pt_lon": -84.0436747724812, - "shape_pt_sequence": 60, - "shape_dist_traveled": 1.481 - } - }, - { - "model": "gtfs.shape", - "pk": 811, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93895911426052, - "shape_pt_lon": -84.0434673567427, - "shape_pt_sequence": 61, - "shape_dist_traveled": 1.505 - } - }, - { - "model": "gtfs.shape", - "pk": 812, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.9392879865273, - "shape_pt_lon": -84.0433689432454, - "shape_pt_sequence": 62, - "shape_dist_traveled": 1.543 - } - }, - { - "model": "gtfs.shape", - "pk": 813, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93942115014918, - "shape_pt_lon": -84.0433274860744, - "shape_pt_sequence": 63, - "shape_dist_traveled": 1.558 - } - }, - { - "model": "gtfs.shape", - "pk": 814, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93944755512195, - "shape_pt_lon": -84.0429942406062, - "shape_pt_sequence": 64, - "shape_dist_traveled": 1.595 - } - }, - { - "model": "gtfs.shape", - "pk": 815, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93946810072644, - "shape_pt_lon": -84.0427365454686, - "shape_pt_sequence": 65, - "shape_dist_traveled": 1.623 - } - }, - { - "model": "gtfs.shape", - "pk": 816, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93949017843466, - "shape_pt_lon": -84.0424561880641, - "shape_pt_sequence": 66, - "shape_dist_traveled": 1.654 - } - }, - { - "model": "gtfs.shape", - "pk": 817, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93949896641922, - "shape_pt_lon": -84.0421337910545, - "shape_pt_sequence": 67, - "shape_dist_traveled": 1.689 - } - }, - { - "model": "gtfs.shape", - "pk": 818, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93950631475532, - "shape_pt_lon": -84.0419274245262, - "shape_pt_sequence": 68, - "shape_dist_traveled": 1.712 - } - }, - { - "model": "gtfs.shape", - "pk": 819, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93932958005353, - "shape_pt_lon": -84.0418524186819, - "shape_pt_sequence": 69, - "shape_dist_traveled": 1.733 - } - }, - { - "model": "gtfs.shape", - "pk": 820, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93916814008368, - "shape_pt_lon": -84.041691039804, - "shape_pt_sequence": 70, - "shape_dist_traveled": 1.758 - } - }, - { - "model": "gtfs.shape", - "pk": 821, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93900519121203, - "shape_pt_lon": -84.0414413521148, - "shape_pt_sequence": 71, - "shape_dist_traveled": 1.791 - } - }, - { - "model": "gtfs.shape", - "pk": 822, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93882565486029, - "shape_pt_lon": -84.0411391429389, - "shape_pt_sequence": 72, - "shape_dist_traveled": 1.83 - } - }, - { - "model": "gtfs.shape", - "pk": 823, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93878072700935, - "shape_pt_lon": -84.0410728454411, - "shape_pt_sequence": 73, - "shape_dist_traveled": 1.839 - } - }, - { - "model": "gtfs.shape", - "pk": 824, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93872490109004, - "shape_pt_lon": -84.0410213000932, - "shape_pt_sequence": 74, - "shape_dist_traveled": 1.847 - } - }, - { - "model": "gtfs.shape", - "pk": 825, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93861004710345, - "shape_pt_lon": -84.0409544792739, - "shape_pt_sequence": 75, - "shape_dist_traveled": 1.862 - } - }, - { - "model": "gtfs.shape", - "pk": 826, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93847396797512, - "shape_pt_lon": -84.0409494403816, - "shape_pt_sequence": 76, - "shape_dist_traveled": 1.877 - } - }, - { - "model": "gtfs.shape", - "pk": 827, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93814652860348, - "shape_pt_lon": -84.0410341635524, - "shape_pt_sequence": 77, - "shape_dist_traveled": 1.914 - } - }, - { - "model": "gtfs.shape", - "pk": 828, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93790671250708, - "shape_pt_lon": -84.0411014405278, - "shape_pt_sequence": 78, - "shape_dist_traveled": 1.942 - } - }, - { - "model": "gtfs.shape", - "pk": 829, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93791663555238, - "shape_pt_lon": -84.0413834314017, - "shape_pt_sequence": 79, - "shape_dist_traveled": 1.973 - } - }, - { - "model": "gtfs.shape", - "pk": 830, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93793079347671, - "shape_pt_lon": -84.0416285810649, - "shape_pt_sequence": 80, - "shape_dist_traveled": 1.999 - } - }, - { - "model": "gtfs.shape", - "pk": 831, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93801967154644, - "shape_pt_lon": -84.0416254546011, - "shape_pt_sequence": 81, - "shape_dist_traveled": 2.009 - } - }, - { - "model": "gtfs.shape", - "pk": 832, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93807996226397, - "shape_pt_lon": -84.0416431189912, - "shape_pt_sequence": 82, - "shape_dist_traveled": 2.016 - } - }, - { - "model": "gtfs.shape", - "pk": 833, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93810791480517, - "shape_pt_lon": -84.0416788253891, - "shape_pt_sequence": 83, - "shape_dist_traveled": 2.021 - } - }, - { - "model": "gtfs.shape", - "pk": 834, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93813256489417, - "shape_pt_lon": -84.0417178845482, - "shape_pt_sequence": 84, - "shape_dist_traveled": 2.026 - } - }, - { - "model": "gtfs.shape", - "pk": 835, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.9381630635316, - "shape_pt_lon": -84.0418440755105, - "shape_pt_sequence": 85, - "shape_dist_traveled": 2.041 - } - }, - { - "model": "gtfs.shape", - "pk": 836, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93816840355805, - "shape_pt_lon": -84.0419580950124, - "shape_pt_sequence": 86, - "shape_dist_traveled": 2.053 - } - }, - { - "model": "gtfs.shape", - "pk": 837, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93816233402513, - "shape_pt_lon": -84.0420632597521, - "shape_pt_sequence": 87, - "shape_dist_traveled": 2.065 - } - }, - { - "model": "gtfs.shape", - "pk": 838, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93814321123235, - "shape_pt_lon": -84.0421742120474, - "shape_pt_sequence": 88, - "shape_dist_traveled": 2.077 - } - }, - { - "model": "gtfs.shape", - "pk": 839, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93803086770445, - "shape_pt_lon": -84.042431585693, - "shape_pt_sequence": 89, - "shape_dist_traveled": 2.108 - } - }, - { - "model": "gtfs.shape", - "pk": 840, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93800811636062, - "shape_pt_lon": -84.0424780922361, - "shape_pt_sequence": 90, - "shape_dist_traveled": 2.113 - } - }, - { - "model": "gtfs.shape", - "pk": 841, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93798034157711, - "shape_pt_lon": -84.0426586032431, - "shape_pt_sequence": 91, - "shape_dist_traveled": 2.134 - } - }, - { - "model": "gtfs.shape", - "pk": 842, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93791715763552, - "shape_pt_lon": -84.0430584128099, - "shape_pt_sequence": 92, - "shape_dist_traveled": 2.178 - } - }, - { - "model": "gtfs.shape", - "pk": 843, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93789378213828, - "shape_pt_lon": -84.0431955755255, - "shape_pt_sequence": 93, - "shape_dist_traveled": 2.193 - } - }, - { - "model": "gtfs.shape", - "pk": 844, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.9379228858361, - "shape_pt_lon": -84.0434355505527, - "shape_pt_sequence": 94, - "shape_dist_traveled": 2.22 - } - }, - { - "model": "gtfs.shape", - "pk": 845, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93793324365073, - "shape_pt_lon": -84.0435100147268, - "shape_pt_sequence": 95, - "shape_dist_traveled": 2.228 - } - }, - { - "model": "gtfs.shape", - "pk": 846, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93796925623814, - "shape_pt_lon": -84.0436073742708, - "shape_pt_sequence": 96, - "shape_dist_traveled": 2.239 - } - }, - { - "model": "gtfs.shape", - "pk": 847, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93811129632628, - "shape_pt_lon": -84.0437957690067, - "shape_pt_sequence": 97, - "shape_dist_traveled": 2.265 - } - }, - { - "model": "gtfs.shape", - "pk": 848, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93796149488666, - "shape_pt_lon": -84.0440534496211, - "shape_pt_sequence": 98, - "shape_dist_traveled": 2.298 - } - }, - { - "model": "gtfs.shape", - "pk": 849, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93777133769974, - "shape_pt_lon": -84.0443836171542, - "shape_pt_sequence": 99, - "shape_dist_traveled": 2.34 - } - }, - { - "model": "gtfs.shape", - "pk": 850, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.9375818272445, - "shape_pt_lon": -84.0447196978834, - "shape_pt_sequence": 100, - "shape_dist_traveled": 2.382 - } - }, - { - "model": "gtfs.shape", - "pk": 851, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93745018852863, - "shape_pt_lon": -84.0449635706007, - "shape_pt_sequence": 101, - "shape_dist_traveled": 2.413 - } - }, - { - "model": "gtfs.shape", - "pk": 852, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93734180767617, - "shape_pt_lon": -84.0451463546949, - "shape_pt_sequence": 102, - "shape_dist_traveled": 2.436 - } - }, - { - "model": "gtfs.shape", - "pk": 853, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93725372200282, - "shape_pt_lon": -84.0452714142582, - "shape_pt_sequence": 103, - "shape_dist_traveled": 2.453 - } - }, - { - "model": "gtfs.shape", - "pk": 854, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.937108322267, - "shape_pt_lon": -84.0454262175884, - "shape_pt_sequence": 104, - "shape_dist_traveled": 2.476 - } - }, - { - "model": "gtfs.shape", - "pk": 855, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93692719931924, - "shape_pt_lon": -84.0455586526682, - "shape_pt_sequence": 105, - "shape_dist_traveled": 2.501 - } - }, - { - "model": "gtfs.shape", - "pk": 856, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93685401442958, - "shape_pt_lon": -84.0455873611916, - "shape_pt_sequence": 106, - "shape_dist_traveled": 2.51 - } - }, - { - "model": "gtfs.shape", - "pk": 857, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93677373653686, - "shape_pt_lon": -84.0455923110153, - "shape_pt_sequence": 107, - "shape_dist_traveled": 2.519 - } - }, - { - "model": "gtfs.shape", - "pk": 858, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93668019604487, - "shape_pt_lon": -84.0455680674162, - "shape_pt_sequence": 108, - "shape_dist_traveled": 2.529 - } - }, - { - "model": "gtfs.shape", - "pk": 859, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93646480148586, - "shape_pt_lon": -84.0454482787829, - "shape_pt_sequence": 109, - "shape_dist_traveled": 2.556 - } - }, - { - "model": "gtfs.shape", - "pk": 860, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93636588688585, - "shape_pt_lon": -84.0453892763726, - "shape_pt_sequence": 110, - "shape_dist_traveled": 2.569 - } - }, - { - "model": "gtfs.shape", - "pk": 861, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93632308831075, - "shape_pt_lon": -84.0453697036442, - "shape_pt_sequence": 111, - "shape_dist_traveled": 2.574 - } - }, - { - "model": "gtfs.shape", - "pk": 862, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93629762770389, - "shape_pt_lon": -84.0453615303045, - "shape_pt_sequence": 112, - "shape_dist_traveled": 2.577 - } - }, - { - "model": "gtfs.shape", - "pk": 863, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93624652235345, - "shape_pt_lon": -84.0453532765511, - "shape_pt_sequence": 113, - "shape_dist_traveled": 2.583 - } - }, - { - "model": "gtfs.shape", - "pk": 864, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93618732594838, - "shape_pt_lon": -84.0453570927397, - "shape_pt_sequence": 114, - "shape_dist_traveled": 2.59 - } - }, - { - "model": "gtfs.shape", - "pk": 865, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93603538344972, - "shape_pt_lon": -84.0453927689936, - "shape_pt_sequence": 115, - "shape_dist_traveled": 2.607 - } - }, - { - "model": "gtfs.shape", - "pk": 866, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93577991764324, - "shape_pt_lon": -84.045437957483, - "shape_pt_sequence": 116, - "shape_dist_traveled": 2.636 - } - }, - { - "model": "gtfs.shape", - "pk": 867, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93565154581259, - "shape_pt_lon": -84.0454621421002, - "shape_pt_sequence": 117, - "shape_dist_traveled": 2.65 - } - }, - { - "model": "gtfs.shape", - "pk": 868, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93558482499322, - "shape_pt_lon": -84.0455294509499, - "shape_pt_sequence": 118, - "shape_dist_traveled": 2.66 - } - }, - { - "model": "gtfs.shape", - "pk": 869, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93533787082614, - "shape_pt_lon": -84.0456405554627, - "shape_pt_sequence": 119, - "shape_dist_traveled": 2.69 - } - }, - { - "model": "gtfs.shape", - "pk": 870, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.9350109333037, - "shape_pt_lon": -84.0456410811815, - "shape_pt_sequence": 120, - "shape_dist_traveled": 2.727 - } - }, - { - "model": "gtfs.shape", - "pk": 871, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93495968412818, - "shape_pt_lon": -84.0456087998837, - "shape_pt_sequence": 121, - "shape_dist_traveled": 2.733 - } - }, - { - "model": "gtfs.shape", - "pk": 872, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93464858697721, - "shape_pt_lon": -84.0456196757956, - "shape_pt_sequence": 122, - "shape_dist_traveled": 2.768 - } - }, - { - "model": "gtfs.shape", - "pk": 873, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93480225304748, - "shape_pt_lon": -84.046294734079, - "shape_pt_sequence": 123, - "shape_dist_traveled": 2.844 - } - }, - { - "model": "gtfs.shape", - "pk": 874, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93495610721508, - "shape_pt_lon": -84.0470992295944, - "shape_pt_sequence": 124, - "shape_dist_traveled": 2.933 - } - }, - { - "model": "gtfs.shape", - "pk": 875, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93514466639919, - "shape_pt_lon": -84.047738281775, - "shape_pt_sequence": 125, - "shape_dist_traveled": 3.007 - } - }, - { - "model": "gtfs.shape", - "pk": 876, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93527584609242, - "shape_pt_lon": -84.048128961463, - "shape_pt_sequence": 126, - "shape_dist_traveled": 3.052 - } - }, - { - "model": "gtfs.shape", - "pk": 877, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93531583349863, - "shape_pt_lon": -84.0483847176419, - "shape_pt_sequence": 127, - "shape_dist_traveled": 3.08 - } - }, - { - "model": "gtfs.shape", - "pk": 878, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93529983825585, - "shape_pt_lon": -84.0486296483808, - "shape_pt_sequence": 128, - "shape_dist_traveled": 3.107 - } - }, - { - "model": "gtfs.shape", - "pk": 879, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93545520267059, - "shape_pt_lon": -84.0486491888617, - "shape_pt_sequence": 129, - "shape_dist_traveled": 3.124 - } - }, - { - "model": "gtfs.shape", - "pk": 880, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.9354703980085, - "shape_pt_lon": -84.0488055127148, - "shape_pt_sequence": 130, - "shape_dist_traveled": 3.142 - } - }, - { - "model": "gtfs.shape", - "pk": 881, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93553667972237, - "shape_pt_lon": -84.0490832368349, - "shape_pt_sequence": 131, - "shape_dist_traveled": 3.173 - } - }, - { - "model": "gtfs.shape", - "pk": 882, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.9355977604479, - "shape_pt_lon": -84.0493162487417, - "shape_pt_sequence": 132, - "shape_dist_traveled": 3.199 - } - }, - { - "model": "gtfs.shape", - "pk": 883, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93570243695239, - "shape_pt_lon": -84.0495918083302, - "shape_pt_sequence": 133, - "shape_dist_traveled": 3.232 - } - }, - { - "model": "gtfs.shape", - "pk": 884, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93571038517426, - "shape_pt_lon": -84.0496787768477, - "shape_pt_sequence": 134, - "shape_dist_traveled": 3.241 - } - }, - { - "model": "gtfs.shape", - "pk": 885, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93571038484225, - "shape_pt_lon": -84.0499696558076, - "shape_pt_sequence": 135, - "shape_dist_traveled": 3.273 - } - }, - { - "model": "gtfs.shape", - "pk": 886, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93570321714193, - "shape_pt_lon": -84.0500954158227, - "shape_pt_sequence": 136, - "shape_dist_traveled": 3.287 - } - }, - { - "model": "gtfs.shape", - "pk": 887, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93566700857604, - "shape_pt_lon": -84.0503419760518, - "shape_pt_sequence": 137, - "shape_dist_traveled": 3.314 - } - }, - { - "model": "gtfs.shape", - "pk": 888, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93560674646944, - "shape_pt_lon": -84.0506470296121, - "shape_pt_sequence": 138, - "shape_dist_traveled": 3.348 - } - }, - { - "model": "gtfs.shape", - "pk": 889, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93553343216217, - "shape_pt_lon": -84.0510737676674, - "shape_pt_sequence": 139, - "shape_dist_traveled": 3.396 - } - }, - { - "model": "gtfs.shape", - "pk": 890, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93549263100849, - "shape_pt_lon": -84.0513075140395, - "shape_pt_sequence": 140, - "shape_dist_traveled": 3.422 - } - }, - { - "model": "gtfs.shape", - "pk": 891, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93546272803463, - "shape_pt_lon": -84.0515459542782, - "shape_pt_sequence": 141, - "shape_dist_traveled": 3.448 - } - }, - { - "model": "gtfs.shape", - "pk": 892, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93544955548966, - "shape_pt_lon": -84.0516525931019, - "shape_pt_sequence": 142, - "shape_dist_traveled": 3.46 - } - }, - { - "model": "gtfs.shape", - "pk": 893, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93544794162221, - "shape_pt_lon": -84.0517605730299, - "shape_pt_sequence": 143, - "shape_dist_traveled": 3.472 - } - }, - { - "model": "gtfs.shape", - "pk": 894, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93547169143514, - "shape_pt_lon": -84.0519830595855, - "shape_pt_sequence": 144, - "shape_dist_traveled": 3.496 - } - }, - { - "model": "gtfs.shape", - "pk": 895, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93548892832953, - "shape_pt_lon": -84.0521081889526, - "shape_pt_sequence": 145, - "shape_dist_traveled": 3.51 - } - }, - { - "model": "gtfs.shape", - "pk": 896, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "shape_pt_lat": 9.93550175796293, - "shape_pt_lon": -84.0521827017793, - "shape_pt_sequence": 146, - "shape_dist_traveled": 3.519 - } - }, - { - "model": "gtfs.geoshape", - "pk": 1, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_sin_milla", - "geometry": "SRID=4326;LINESTRING(-84.04899295728595 9.935610136323218, -84.04537504744147 9.935903915437937, -84.04467644300775 9.937467311441507, -84.04237892478906 9.938029607676915, -84.04307776266035 9.939451647823137, -84.04450675690296 9.940155168862551, -84.04468346245408 9.943761220391434, -84.0451915613564 9.946441050827925)", - "has_altitude": false - } - }, - { - "model": "gtfs.geoshape", - "pk": 2, - "fields": { - "feed": "1", - "shape_id": "desde_educacion_con_milla", - "geometry": "SRID=4326;LINESTRING(-84.04899295728595 9.935610136323218, -84.0517499001992 9.93860832346218, -84.04876049840074 9.93832361909286, -84.04537504744147 9.935903915437937, -84.04467644300775 9.937467311441507, -84.04237892478906 9.938029607676915, -84.04307776266035 9.939461647823137, -84.04450675690296 9.940155168862551, -84.04475066837327 9.94119204389136, -84.04488346245408 9.943413920391434, -84.0451915613564 9.946441050827925)", - "has_altitude": false - } - }, - { - "model": "gtfs.geoshape", - "pk": 3, - "fields": { - "feed": "1", - "shape_id": "desde_artes_sin_milla", - "geometry": "SRID=4326;LINESTRING(-84.05217559901489 9.935501598287884, -84.04537504744147 9.935903915437937, -84.04467644300775 9.937467311441507, -84.04237892478906 9.938029607676915, -84.04307776266035 9.939461647823137, -84.04450675690296 9.940155168862551, -84.04475066837327 9.94119204389136, -84.04488346245408 9.943413920391434, -84.0451915613564 9.946441050827925)", - "has_altitude": false - } - }, - { - "model": "gtfs.geoshape", - "pk": 4, - "fields": { - "feed": "1", - "shape_id": "desde_artes_con_milla", - "geometry": "SRID=4326;LINESTRING(-84.05217559901489 9.935501598287884, -84.0517499001992 9.93860832346218, -84.04876049840074 9.93832361909286, -84.04537504744147 9.935903915437937, -84.04467644300775 9.937467311441507, -84.04237892478906 9.938029607676915, -84.04307776266035 9.939461647823137, -84.04450675690296 9.940155168862551, -84.04475066837327 9.94119204389136, -84.04488346245408 9.943413920391434, -84.0451915613564 9.946441050827925)", - "has_altitude": false - } - }, - { - "model": "gtfs.geoshape", - "pk": 5, - "fields": { - "feed": "1", - "shape_id": "hacia_artes", - "geometry": "SRID=4326;LINESTRING(-84.0451915613564 9.946441050827925, -84.04495180739714 9.943381444081362, -84.04483991497501 9.941220574743566, -84.04468654565294 9.939134591559855, -84.0436758508172 9.938980381389706, -84.042189216776 9.939472792042086, -84.04229551510366 9.938130529026141, -84.04501822768842 9.937468669419962, -84.04546950911886 9.93589305371453, -84.05217559901489 9.935501598287884)", - "has_altitude": false - } - }, - { - "model": "gtfs.geoshape", - "pk": 6, - "fields": { - "feed": "1", - "shape_id": "hacia_educacion", - "geometry": "SRID=4326;LINESTRING(-84.0451915613564 9.946441050827925, -84.04495180739714 9.943381444081362, -84.04483991497501 9.941220574743566, -84.04468654565294 9.939134591559855, -84.0436758508172 9.938980381389706, -84.042189216776 9.939472792042086, -84.04229551510366 9.938130529026141, -84.04501822768842 9.937468669419962, -84.04546950911886 9.93589305371453, -84.04899295728595 9.935610136323218)", - "has_altitude": false - } - }, - { - "model": "gtfs.gtfsprovider", - "pk": 1, - "fields": { - "code": "bUCR", - "name": "bUCR", - "description": "Bus de la UCR", - "website": "https://bucr.digital", - "schedule_url": null, - "trip_updates_url": null, - "vehicle_positions_url": null, - "service_alerts_url": null, - "timezone": "America/costa_rica", - "is_active": true - } - }, - { - "model": "gtfs.feed", - "pk": 1, - "fields": { - "gtfs_provider": 1, - "http_etag": null, - "http_last_modified": "2024-07-11T00:00:00Z", - "is_current": true, - "retrieved_at": "2024-07-11T04:28:41.332Z" - } - } -] \ No newline at end of file + { + "model": "gtfs.agency", + "pk": 1, + "fields": { + "feed": "1", + "agency_id": "bUCR", + "agency_name": "Buses de la Universidad de Costa Rica", + "agency_url": "https://bus.ucr.ac.cr/", + "agency_timezone": "America/Costa_Rica", + "agency_lang": "es", + "agency_phone": "25112919", + "agency_fare_url": "https://bus.ucr.ac.cr/#tarifas", + "agency_email": "bus@ucr.ac.cr" + } + }, + { + "model": "gtfs.route", + "pk": 1, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "agency_id": "bUCR", + "route_short_name": "bUCR L1", + "route_long_name": "Bus interno UCR sin milla", + "route_desc": "Esta ruta conecta las tres fincas del Campus Universitario Rodrigo Facio en San Pedro de Montes de Oca, y no incluye la vuelta por la milla universitaria.", + "route_type": 3, + "route_url": "https://bus.ucr.ac.cr/#L1", + "route_color": "00C0F3", + "route_text_color": "FFFFFF", + "route_sort_order": null + } + }, + { + "model": "gtfs.route", + "pk": 2, + "fields": { + "feed": "1", + "route_id": "bUCR_L2", + "agency_id": "bUCR", + "route_short_name": "bUCR L2", + "route_long_name": "Bus interno UCR con milla", + "route_desc": "Esta ruta conecta las tres fincas del Campus Universitario Rodrigo Facio en San Pedro de Montes de Oca, e incluye la vuelta por la milla universitaria.", + "route_type": 3, + "route_url": "https://bus.ucr.ac.cr/#L2", + "route_color": "005DA4", + "route_text_color": "FFFFFF", + "route_sort_order": null + } + }, + { + "model": "gtfs.stop", + "pk": 1, + "fields": { + "feed": "1", + "stop_id": "bUCR_0_01", + "stop_code": "", + "stop_name": "Facultad de Educación", + "stop_desc": "Frente al jardín de la Facultad de Educación (FE)", + "stop_lat": 9.935610136323218, + "stop_lon": -84.04899295728595, + "stop_point": "SRID=4326;POINT (-84.04899295728595 9.935610136323218)", + "zone_id": "bUCR_0", + "stop_url": "", + "location_type": 0, + "parent_station": "", + "stop_timezone": "", + "wheelchair_boarding": 1, + "platform_code": "" + } + }, + { + "model": "gtfs.stop", + "pk": 2, + "fields": { + "feed": "1", + "stop_id": "bUCR_0_02", + "stop_code": "", + "stop_name": "Escuela de Artes Plásticas", + "stop_desc": "Nuevo edificio de la Escuela de Artes Plásticas (EAP)", + "stop_lat": 9.935501598287884, + "stop_lon": -84.05217559901489, + "stop_point": "SRID=4326;POINT (-84.05217559901489 9.935501598287884)", + "zone_id": "bUCR_0", + "stop_url": "", + "location_type": 0, + "parent_station": "", + "stop_timezone": "", + "wheelchair_boarding": 1, + "platform_code": "" + } + }, + { + "model": "gtfs.stop", + "pk": 3, + "fields": { + "feed": "1", + "stop_id": "bUCR_0_03", + "stop_code": "", + "stop_name": "Biblioteca de Ciencias de la Salud", + "stop_desc": "Frente al antiguo edificio de la Facultad de Odontología (FOd), diagonal al parqueo de la Biblioteca de Ciencias de la Salud", + "stop_lat": 9.93860832346218, + "stop_lon": -84.0517499001992, + "stop_point": "SRID=4326;POINT (-84.0517499001992 9.93860832346218)", + "zone_id": "bUCR_0", + "stop_url": "", + "location_type": 0, + "parent_station": "", + "stop_timezone": "", + "wheelchair_boarding": 1, + "platform_code": "" + } + }, + { + "model": "gtfs.stop", + "pk": 4, + "fields": { + "feed": "1", + "stop_id": "bUCR_0_04", + "stop_code": "", + "stop_name": "Facultad de Microbiología", + "stop_desc": "Esquina noreste del parqueo de las Escuelas de Artes Musicales (EAM), Química (EQ) y Biología (EB) y la Facultad de Microbiología (FMic)", + "stop_lat": 9.93832361909286, + "stop_lon": -84.04876049840074, + "stop_point": "SRID=4326;POINT (-84.04876049840074 9.93832361909286 )", + "zone_id": "bUCR_0", + "stop_url": "", + "location_type": 0, + "parent_station": "", + "stop_timezone": "", + "wheelchair_boarding": 1, + "platform_code": "" + } + }, + { + "model": "gtfs.stop", + "pk": 5, + "fields": { + "feed": "1", + "stop_id": "bUCR_0_05", + "stop_code": "", + "stop_name": "Laboratorio Nacional de Materiales y Modelos Estructurales (LanammeUCR)", + "stop_desc": "Junto al parqueo del Centro de Transferencia Tecnológica (CTT), diagonal al Laboratorio Nacional de Materiales y Modelos Estructurales (LANAMME)", + "stop_lat": 9.935903915437937, + "stop_lon": -84.04537504744147, + "stop_point": "SRID=4326;POINT (-84.04537504744147 9.935903915437937)", + "zone_id": "bUCR_0", + "stop_url": "", + "location_type": 0, + "parent_station": "bUCR_LA", + "stop_timezone": "", + "wheelchair_boarding": 2, + "platform_code": "" + } + }, + { + "model": "gtfs.stop", + "pk": 6, + "fields": { + "feed": "1", + "stop_id": "bUCR_0_06", + "stop_code": "", + "stop_name": "Facultad de Ingeniería", + "stop_desc": "Costado norte del nuevo edificio de la Facultad de Ingeniería (FI)", + "stop_lat": 9.937467311441509, + "stop_lon": -84.04467644300775, + "stop_point": "SRID=4326;POINT (-84.04467644300775 9.937467311441507)", + "zone_id": "bUCR_0", + "stop_url": "", + "location_type": 0, + "parent_station": "bUCR_FI", + "stop_timezone": "", + "wheelchair_boarding": 2, + "platform_code": "" + } + }, + { + "model": "gtfs.stop", + "pk": 7, + "fields": { + "feed": "1", + "stop_id": "bUCR_0_07", + "stop_code": "", + "stop_name": "Facultad de Ciencias Sociales", + "stop_desc": "Entre la Facultad de Ciencias Sociales (FCS) y el edificio de parqueos", + "stop_lat": 9.938029607676915, + "stop_lon": -84.04237892478906, + "stop_point": "SRID=4326;POINT (-84.04237892478906 9.938029607676915)", + "zone_id": "bUCR_0", + "stop_url": "", + "location_type": 0, + "parent_station": "bUCR_CS", + "stop_timezone": "", + "wheelchair_boarding": 2, + "platform_code": "" + } + }, + { + "model": "gtfs.stop", + "pk": 8, + "fields": { + "feed": "1", + "stop_id": "bUCR_0_08", + "stop_code": "", + "stop_name": "Instituto de Investigación en Educación (INIE)", + "stop_desc": "Costado sur del edificio del Instituto de Investigación en Educación (INIE)", + "stop_lat": 9.939451647823136, + "stop_lon": -84.04307776266035, + "stop_point": "SRID=4326;POINT (-84.04307776266035 9.939451647823137)", + "zone_id": "bUCR_0", + "stop_url": "", + "location_type": 0, + "parent_station": "", + "stop_timezone": "", + "wheelchair_boarding": 2, + "platform_code": "" + } + }, + { + "model": "gtfs.stop", + "pk": 9, + "fields": { + "feed": "1", + "stop_id": "bUCR_0_09", + "stop_code": "", + "stop_name": "Centro de Investigación en Cirugía y Cáncer (CICICA)", + "stop_desc": "Costado sur del edificio del Centro de Investigación en Cirugía y Cáncer (CICICA)", + "stop_lat": 9.940155168862551, + "stop_lon": -84.04450675690296, + "stop_point": "SRID=4326;POINT (-84.04450675690296 9.940155168862551)", + "zone_id": "bUCR_0", + "stop_url": "", + "location_type": 0, + "parent_station": "", + "stop_timezone": "", + "wheelchair_boarding": 2, + "platform_code": "" + } + }, + { + "model": "gtfs.stop", + "pk": 10, + "fields": { + "feed": "1", + "stop_id": "bUCR_0_10", + "stop_code": "", + "stop_name": "Oficina de Bienestar y Salud (OBS)", + "stop_desc": "Entre el nuevo edificio de la Oficina de Bienestar y Salud (OBS) y el Estadio Ecológico", + "stop_lat": 9.943761220391433, + "stop_lon": -84.04468346245407, + "stop_point": "SRID=4326;POINT (-84.04468346245408 9.943761220391434)", + "zone_id": "bUCR_0", + "stop_url": "", + "location_type": 0, + "parent_station": "", + "stop_timezone": "", + "wheelchair_boarding": 2, + "platform_code": "" + } + }, + { + "model": "gtfs.stop", + "pk": 11, + "fields": { + "feed": "1", + "stop_id": "bUCR_0_11", + "stop_code": "", + "stop_name": "Facultad de Odontología", + "stop_desc": "En el nuevo edificio de la Facultad de Odontología (FOd) en la Finca 3", + "stop_lat": 9.946441050827923, + "stop_lon": -84.0451915613564, + "stop_point": "SRID=4326;POINT (-84.0451915613564 9.946441050827925)", + "zone_id": "bUCR_0", + "stop_url": "", + "location_type": 0, + "parent_station": "", + "stop_timezone": "", + "wheelchair_boarding": 2, + "platform_code": "" + } + }, + { + "model": "gtfs.stop", + "pk": 12, + "fields": { + "feed": "1", + "stop_id": "bUCR_1_01", + "stop_code": "", + "stop_name": "Facultad de Odontología", + "stop_desc": "En el nuevo edificio de la Facultad de Odontología (FOd) en la Finca 3", + "stop_lat": 9.946529500847424, + "stop_lon": -84.04535458313804, + "stop_point": "SRID=4326;POINT (-84.04535458313804 9.946529500847424)", + "zone_id": "bUCR_1", + "stop_url": "", + "location_type": 0, + "parent_station": "", + "stop_timezone": "", + "wheelchair_boarding": 2, + "platform_code": "" + } + }, + { + "model": "gtfs.stop", + "pk": 13, + "fields": { + "feed": "1", + "stop_id": "bUCR_1_02", + "stop_code": "", + "stop_name": "Escuela de Educación Física y Deportes (EDUFI)", + "stop_desc": "Costado este de las canchas multiuso y de la Escuela de Educación Física y Deportes (EDUFI)", + "stop_lat": 9.943381444081362, + "stop_lon": -84.04495180739714, + "stop_point": "SRID=4326;POINT (-84.04495180739714 9.943381444081362)", + "zone_id": "bUCR_1", + "stop_url": "", + "location_type": 0, + "parent_station": "", + "stop_timezone": "", + "wheelchair_boarding": 2, + "platform_code": "" + } + }, + { + "model": "gtfs.stop", + "pk": 14, + "fields": { + "feed": "1", + "stop_id": "bUCR_1_03", + "stop_code": "", + "stop_name": "Escuela de Nutrición", + "stop_desc": "Esquina noreste del edificio de la Escuela de Nutrición (ENu)", + "stop_lat": 9.939134591559856, + "stop_lon": -84.04468654565294, + "stop_point": "SRID=4326;POINT (-84.04468654565294 9.939134591559855)", + "zone_id": "bUCR_1", + "stop_url": "", + "location_type": 0, + "parent_station": "", + "stop_timezone": "", + "wheelchair_boarding": 2, + "platform_code": "" + } + }, + { + "model": "gtfs.stop", + "pk": 15, + "fields": { + "feed": "1", + "stop_id": "bUCR_1_04", + "stop_code": "", + "stop_name": "Centro de Investigación en Ciencias del Mar y Limnología (CIMAR)", + "stop_desc": "Entre el edificio de parqueos y el Centro de Investigación en Ciencias del Mar y Limnología (CIMAR)", + "stop_lat": 9.938980381389706, + "stop_lon": -84.0436758508172, + "stop_point": "SRID=4326;POINT (-84.0436758508172 9.938980381389706)", + "zone_id": "bUCR_1", + "stop_url": "", + "location_type": 0, + "parent_station": "", + "stop_timezone": "", + "wheelchair_boarding": 1, + "platform_code": "" + } + }, + { + "model": "gtfs.stop", + "pk": 16, + "fields": { + "feed": "1", + "stop_id": "bUCR_1_05", + "stop_code": "", + "stop_name": "Centro de Investigación en Matemática Pura y Aplicada (CIMPA)", + "stop_desc": "Frente al edificio del Centro de Investigación en Matemática Pura y Aplicada (CIMPA)", + "stop_lat": 9.939472792042086, + "stop_lon": -84.042189216776, + "stop_point": "SRID=4326;POINT (-84.042189216776 9.939472792042086)", + "zone_id": "bUCR_1", + "stop_url": "", + "location_type": 0, + "parent_station": "", + "stop_timezone": "", + "wheelchair_boarding": 2, + "platform_code": "" + } + }, + { + "model": "gtfs.stop", + "pk": 17, + "fields": { + "feed": "1", + "stop_id": "bUCR_1_06", + "stop_code": "", + "stop_name": "Facultad de Ciencias Sociales", + "stop_desc": "Entre la Facultad de Ciencias Sociales (FCS) y el edificio de parqueos", + "stop_lat": 9.93813052902614, + "stop_lon": -84.04229551510366, + "stop_point": "SRID=4326;POINT (-84.04229551510366 9.938130529026141)", + "zone_id": "bUCR_1", + "stop_url": "", + "location_type": 0, + "parent_station": "bUCR_CS", + "stop_timezone": "", + "wheelchair_boarding": 1, + "platform_code": "" + } + }, + { + "model": "gtfs.stop", + "pk": 18, + "fields": { + "feed": "1", + "stop_id": "bUCR_1_07", + "stop_code": "", + "stop_name": "Facultad de Ingeniería", + "stop_desc": "Costado norte del nuevo edificio de la Facultad de Ingeniería (FI), al otro lado de la calle", + "stop_lat": 9.937468669419962, + "stop_lon": -84.04501822768842, + "stop_point": "SRID=4326;POINT (-84.04501822768842 9.937468669419962)", + "zone_id": "bUCR_1", + "stop_url": "", + "location_type": 0, + "parent_station": "bUCR_FI", + "stop_timezone": "", + "wheelchair_boarding": 1, + "platform_code": "" + } + }, + { + "model": "gtfs.stop", + "pk": 19, + "fields": { + "feed": "1", + "stop_id": "bUCR_1_08", + "stop_code": "", + "stop_name": "Laboratorio Nacional de Materiales y Modelos Estructurales (LanammeUCR)", + "stop_desc": "Junto al parqueo del Centro de Transferencia Tecnológica (CTT), diagonal al Laboratorio Nacional de Materiales y Modelos Estructurales (LANAMME), al otro lado de la calle", + "stop_lat": 9.93589305371453, + "stop_lon": -84.04546950911886, + "stop_point": "SRID=4326;POINT (-84.04546950911886 9.93589305371453)", + "zone_id": "bUCR_1", + "stop_url": "", + "location_type": 0, + "parent_station": "bUCR_LA", + "stop_timezone": "", + "wheelchair_boarding": 2, + "platform_code": "" + } + }, + { + "model": "gtfs.stop", + "pk": 20, + "fields": { + "feed": "1", + "stop_id": "bUCR_FI", + "stop_code": "", + "stop_name": "Facultad de Ingeniería", + "stop_desc": "En las inmediaciones del edificio de la Facultad de Ingeniería", + "stop_lat": 9.937467311441509, + "stop_lon": -84.04467644300775, + "stop_point": "SRID=4326;POINT (-84.04467644300775 9.937467311441507)", + "zone_id": "", + "stop_url": "", + "location_type": 1, + "parent_station": "", + "stop_timezone": "", + "wheelchair_boarding": 1, + "platform_code": "" + } + }, + { + "model": "gtfs.stop", + "pk": 21, + "fields": { + "feed": "1", + "stop_id": "bUCR_CS", + "stop_code": "", + "stop_name": "Facultad de Ciencias Sociales", + "stop_desc": "En las inmediaciones del edificio de la Facultad de Ciencias Sociales", + "stop_lat": 9.93813052902614, + "stop_lon": -84.04229551510366, + "stop_point": "SRID=4326;POINT (-84.04229551510366 9.938130529026141)", + "zone_id": "", + "stop_url": "", + "location_type": 1, + "parent_station": "", + "stop_timezone": "", + "wheelchair_boarding": 1, + "platform_code": "" + } + }, + { + "model": "gtfs.stop", + "pk": 22, + "fields": { + "feed": "1", + "stop_id": "bUCR_LA", + "stop_code": "", + "stop_name": "Laboratorio Nacional de Materiales y Modelos Estructurales (LanammeUCR)", + "stop_desc": "En las inmediaciones del Laboratorio Nacional de Materiales y Modelos Estructurales (LanammeUCR)", + "stop_lat": 9.935785141707278, + "stop_lon": -84.04544067497328, + "stop_point": "SRID=4326;POINT (-84.04544067497328 9.935785141707278)", + "zone_id": "", + "stop_url": "", + "location_type": 1, + "parent_station": "", + "stop_timezone": "", + "wheelchair_boarding": 1, + "platform_code": "" + } + }, + { + "model": "gtfs.trip", + "pk": 1, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_educacion_sin_milla_entresemana_06:10", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_sin_milla", + "geoshape": 1, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 2, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_educacion_sin_milla_entresemana_06:30", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_sin_milla", + "geoshape": 1, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 3, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_educacion_sin_milla_entresemana_07:00", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_sin_milla", + "geoshape": 1, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 4, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_educacion_sin_milla_entresemana_07:20", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_sin_milla", + "geoshape": 1, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 5, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_educacion_sin_milla_entresemana_07:50", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_sin_milla", + "geoshape": 1, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 6, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_educacion_sin_milla_entresemana_08:10", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_sin_milla", + "geoshape": 1, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 7, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_educacion_sin_milla_entresemana_08:55", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_sin_milla", + "geoshape": 1, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 8, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_educacion_sin_milla_entresemana_09:15", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_sin_milla", + "geoshape": 1, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 9, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_educacion_sin_milla_entresemana_09:45", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_sin_milla", + "geoshape": 1, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 10, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_educacion_sin_milla_entresemana_10:05", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_sin_milla", + "geoshape": 1, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 11, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_educacion_sin_milla_entresemana_10:35", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_sin_milla", + "geoshape": 1, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 12, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_educacion_sin_milla_entresemana_10:55", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_sin_milla", + "geoshape": 1, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 13, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_educacion_sin_milla_entresemana_11:15", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_sin_milla", + "geoshape": 1, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 14, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_educacion_sin_milla_entresemana_11:25", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_sin_milla", + "geoshape": 1, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 15, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_educacion_sin_milla_entresemana_11:40", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_sin_milla", + "geoshape": 1, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 16, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_educacion_sin_milla_entresemana_12:00", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_sin_milla", + "geoshape": 1, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 17, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_educacion_sin_milla_entresemana_12:25", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_sin_milla", + "geoshape": 1, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 18, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_educacion_sin_milla_entresemana_12:35", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_sin_milla", + "geoshape": 1, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 19, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_educacion_sin_milla_entresemana_13:10", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_sin_milla", + "geoshape": 1, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 20, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_educacion_sin_milla_entresemana_13:45", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_sin_milla", + "geoshape": 1, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 21, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_educacion_sin_milla_entresemana_14:10", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_sin_milla", + "geoshape": 1, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 22, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_educacion_sin_milla_entresemana_14:30", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_sin_milla", + "geoshape": 1, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 23, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_educacion_sin_milla_entresemana_14:55", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_sin_milla", + "geoshape": 1, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 24, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_educacion_sin_milla_entresemana_15:15", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_sin_milla", + "geoshape": 1, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 25, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_educacion_sin_milla_entresemana_15:55", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_sin_milla", + "geoshape": 1, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 26, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_educacion_sin_milla_entresemana_16:30", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_sin_milla", + "geoshape": 1, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 27, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_educacion_sin_milla_entresemana_16:55", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_sin_milla", + "geoshape": 1, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 28, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_educacion_sin_milla_entresemana_17:30", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_sin_milla", + "geoshape": 1, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 29, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_educacion_sin_milla_entresemana_17:55", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_sin_milla", + "geoshape": 1, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 30, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_educacion_sin_milla_entresemana_18:25", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_sin_milla", + "geoshape": 1, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 31, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_educacion_sin_milla_entresemana_18:50", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_sin_milla", + "geoshape": 1, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 32, + "fields": { + "feed": "1", + "route_id": "bUCR_L2", + "service_id": "entresemana", + "trip_id": "desde_educacion_con_milla_entresemana_19:15", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_con_milla", + "geoshape": 2, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 33, + "fields": { + "feed": "1", + "route_id": "bUCR_L2", + "service_id": "entresemana", + "trip_id": "desde_educacion_con_milla_entresemana_20:10", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_con_milla", + "geoshape": 2, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 34, + "fields": { + "feed": "1", + "route_id": "bUCR_L2", + "service_id": "entresemana", + "trip_id": "desde_educacion_con_milla_entresemana_20:50", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_con_milla", + "geoshape": 2, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 35, + "fields": { + "feed": "1", + "route_id": "bUCR_L2", + "service_id": "entresemana", + "trip_id": "desde_educacion_con_milla_entresemana_21:00", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_con_milla", + "geoshape": 2, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 36, + "fields": { + "feed": "1", + "route_id": "bUCR_L2", + "service_id": "entresemana", + "trip_id": "desde_educacion_con_milla_entresemana_21:35", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_educacion_con_milla", + "geoshape": 2, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 37, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_artes_sin_milla_entresemana_06:20", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_artes_sin_milla", + "geoshape": 3, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 38, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_artes_sin_milla_entresemana_06:40", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_artes_sin_milla", + "geoshape": 3, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 39, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_artes_sin_milla_entresemana_07:10", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_artes_sin_milla", + "geoshape": 3, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 40, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_artes_sin_milla_entresemana_07:30", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_artes_sin_milla", + "geoshape": 3, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 41, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_artes_sin_milla_entresemana_08:00", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_artes_sin_milla", + "geoshape": 3, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 42, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_artes_sin_milla_entresemana_08:35", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_artes_sin_milla", + "geoshape": 3, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 43, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_artes_sin_milla_entresemana_09:05", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_artes_sin_milla", + "geoshape": 3, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 44, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_artes_sin_milla_entresemana_09:25", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_artes_sin_milla", + "geoshape": 3, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 45, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_artes_sin_milla_entresemana_09:55", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_artes_sin_milla", + "geoshape": 3, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 46, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_artes_sin_milla_entresemana_10:15", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_artes_sin_milla", + "geoshape": 3, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 47, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_artes_sin_milla_entresemana_10:45", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_artes_sin_milla", + "geoshape": 3, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 48, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_artes_sin_milla_entresemana_11:05", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_artes_sin_milla", + "geoshape": 3, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 49, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_artes_sin_milla_entresemana_11:35", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_artes_sin_milla", + "geoshape": 3, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 50, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_artes_sin_milla_entresemana_11:50", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_artes_sin_milla", + "geoshape": 3, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 51, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_artes_sin_milla_entresemana_12:10", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_artes_sin_milla", + "geoshape": 3, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 52, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_artes_sin_milla_entresemana_12:30", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_artes_sin_milla", + "geoshape": 3, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 53, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_artes_sin_milla_entresemana_12:45", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_artes_sin_milla", + "geoshape": 3, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 54, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_artes_sin_milla_entresemana_13:20", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_artes_sin_milla", + "geoshape": 3, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 55, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_artes_sin_milla_entresemana_14:00", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_artes_sin_milla", + "geoshape": 3, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 56, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_artes_sin_milla_entresemana_14:20", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_artes_sin_milla", + "geoshape": 3, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 57, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_artes_sin_milla_entresemana_14:45", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_artes_sin_milla", + "geoshape": 3, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 58, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_artes_sin_milla_entresemana_15:05", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_artes_sin_milla", + "geoshape": 3, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 59, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_artes_sin_milla_entresemana_15:30", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_artes_sin_milla", + "geoshape": 3, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 60, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_artes_sin_milla_entresemana_16:05", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_artes_sin_milla", + "geoshape": 3, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 61, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_artes_sin_milla_entresemana_16:40", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_artes_sin_milla", + "geoshape": 3, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 62, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_artes_sin_milla_entresemana_17:05", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_artes_sin_milla", + "geoshape": 3, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 63, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_artes_sin_milla_entresemana_17:40", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_artes_sin_milla", + "geoshape": 3, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 64, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_artes_sin_milla_entresemana_18:05", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_artes_sin_milla", + "geoshape": 3, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 65, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "desde_artes_sin_milla_entresemana_18:35", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_artes_sin_milla", + "geoshape": 3, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 66, + "fields": { + "feed": "1", + "route_id": "bUCR_L2", + "service_id": "entresemana", + "trip_id": "desde_artes_con_milla_entresemana_19:00", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_artes_con_milla", + "geoshape": 4, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 67, + "fields": { + "feed": "1", + "route_id": "bUCR_L2", + "service_id": "entresemana", + "trip_id": "desde_artes_con_milla_entresemana_19:35", + "trip_headsign": "Deportivas", + "trip_short_name": "", + "direction_id": 0, + "block_id": "", + "shape_id": "desde_artes_con_milla", + "geoshape": 4, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 68, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_artes_entresemana_06:20", + "trip_headsign": "Artes Plásticas", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_artes", + "geoshape": 5, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 69, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_educacion_entresemana_06:40", + "trip_headsign": "Educación", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_educacion", + "geoshape": 6, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 70, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_artes_entresemana_06:50", + "trip_headsign": "Artes Plásticas", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_artes", + "geoshape": 5, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 71, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_educacion_entresemana_07:00", + "trip_headsign": "Educación", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_educacion", + "geoshape": 6, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 72, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_artes_entresemana_07:10", + "trip_headsign": "Artes Plásticas", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_artes", + "geoshape": 5, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 73, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_educacion_entresemana_07:30", + "trip_headsign": "Educación", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_educacion", + "geoshape": 6, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 74, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_artes_entresemana_07:40", + "trip_headsign": "Artes Plásticas", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_artes", + "geoshape": 5, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 75, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_educacion_entresemana_07:50", + "trip_headsign": "Educación", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_educacion", + "geoshape": 6, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 76, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_artes_entresemana_08:00", + "trip_headsign": "Artes Plásticas", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_artes", + "geoshape": 5, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 77, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_educacion_entresemana_08:35", + "trip_headsign": "Educación", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_educacion", + "geoshape": 6, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 78, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_artes_entresemana_08:45", + "trip_headsign": "Artes Plásticas", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_artes", + "geoshape": 5, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 79, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_educacion_entresemana_08:55", + "trip_headsign": "Educación", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_educacion", + "geoshape": 6, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 80, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_artes_entresemana_09:05", + "trip_headsign": "Artes Plásticas", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_artes", + "geoshape": 5, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 81, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_educacion_entresemana_09:25", + "trip_headsign": "Educación", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_educacion", + "geoshape": 6, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 82, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_artes_entresemana_09:35", + "trip_headsign": "Artes Plásticas", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_artes", + "geoshape": 5, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 83, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_educacion_entresemana_09:45", + "trip_headsign": "Educación", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_educacion", + "geoshape": 6, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 84, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_artes_entresemana_09:55", + "trip_headsign": "Artes Plásticas", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_artes", + "geoshape": 5, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 85, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_educacion_entresemana_10:15", + "trip_headsign": "Educación", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_educacion", + "geoshape": 6, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 86, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_artes_entresemana_10:25", + "trip_headsign": "Artes Plásticas", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_artes", + "geoshape": 5, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 87, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_educacion_entresemana_10:35", + "trip_headsign": "Educación", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_educacion", + "geoshape": 6, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 88, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_artes_entresemana_10:45", + "trip_headsign": "Artes Plásticas", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_artes", + "geoshape": 5, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 89, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_educacion_entresemana_11:05", + "trip_headsign": "Educación", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_educacion", + "geoshape": 6, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 90, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_artes_entresemana_11:15", + "trip_headsign": "Artes Plásticas", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_artes", + "geoshape": 5, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 91, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_educacion_entresemana_11:20", + "trip_headsign": "Educación", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_educacion", + "geoshape": 6, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 92, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_artes_entresemana_11:30", + "trip_headsign": "Artes Plásticas", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_artes", + "geoshape": 5, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 93, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_educacion_entresemana_11:40", + "trip_headsign": "Educación", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_educacion", + "geoshape": 6, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 94, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_artes_entresemana_11:50", + "trip_headsign": "Artes Plásticas", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_artes", + "geoshape": 5, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 95, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_educacion_entresemana_12:05", + "trip_headsign": "Educación", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_educacion", + "geoshape": 6, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 96, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_artes_entresemana_12:10", + "trip_headsign": "Artes Plásticas", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_artes", + "geoshape": 5, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 97, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_educacion_entresemana_12:15", + "trip_headsign": "Educación", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_educacion", + "geoshape": 6, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 98, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_artes_entresemana_12:25", + "trip_headsign": "Artes Plásticas", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_artes", + "geoshape": 5, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 99, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_educacion_entresemana_12:50", + "trip_headsign": "Educación", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_educacion", + "geoshape": 6, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 100, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_artes_entresemana_13:00", + "trip_headsign": "Artes Plásticas", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_artes", + "geoshape": 5, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 101, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_educacion_entresemana_13:25", + "trip_headsign": "Educación", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_educacion", + "geoshape": 6, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 102, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_artes_entresemana_13:40", + "trip_headsign": "Artes Plásticas", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_artes", + "geoshape": 5, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 103, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_educacion_entresemana_13:50", + "trip_headsign": "Educación", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_educacion", + "geoshape": 6, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 104, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_artes_entresemana_14:00", + "trip_headsign": "Artes Plásticas", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_artes", + "geoshape": 5, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 105, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_educacion_entresemana_14:10", + "trip_headsign": "Educación", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_educacion", + "geoshape": 6, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 106, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_artes_entresemana_14:25", + "trip_headsign": "Artes Plásticas", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_artes", + "geoshape": 5, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 107, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_educacion_entresemana_14:35", + "trip_headsign": "Educación", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_educacion", + "geoshape": 6, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 108, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_artes_entresemana_14:45", + "trip_headsign": "Artes Plásticas", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_artes", + "geoshape": 5, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 109, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_educacion_entresemana_14:55", + "trip_headsign": "Educación", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_educacion", + "geoshape": 6, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 110, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_artes_entresemana_15:10", + "trip_headsign": "Artes Plásticas", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_artes", + "geoshape": 5, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 111, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_educacion_entresemana_15:20", + "trip_headsign": "Educación", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_educacion", + "geoshape": 6, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 112, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_artes_entresemana_15:30", + "trip_headsign": "Artes Plásticas", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_artes", + "geoshape": 5, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 113, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_educacion_entresemana_16:05", + "trip_headsign": "Educación", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_educacion", + "geoshape": 6, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 114, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_artes_entresemana_16:15", + "trip_headsign": "Artes Plásticas", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_artes", + "geoshape": 5, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 115, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_educacion_entresemana_16:30", + "trip_headsign": "Educación", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_educacion", + "geoshape": 6, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 116, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_artes_entresemana_16:40", + "trip_headsign": "Artes Plásticas", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_artes", + "geoshape": 5, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 117, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_educacion_entresemana_17:05", + "trip_headsign": "Educación", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_educacion", + "geoshape": 6, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 118, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_artes_entresemana_17:15", + "trip_headsign": "Artes Plásticas", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_artes", + "geoshape": 5, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 119, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_educacion_entresemana_17:30", + "trip_headsign": "Educación", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_educacion", + "geoshape": 6, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 120, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_artes_entresemana_17:40", + "trip_headsign": "Artes Plásticas", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_artes", + "geoshape": 5, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 121, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_educacion_entresemana_18:05", + "trip_headsign": "Educación", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_educacion", + "geoshape": 6, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 122, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_artes_entresemana_18:15", + "trip_headsign": "Artes Plásticas", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_artes", + "geoshape": 5, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 123, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_educacion_entresemana_18:30", + "trip_headsign": "Educación", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_educacion", + "geoshape": 6, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 124, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_artes_entresemana_18:40", + "trip_headsign": "Artes Plásticas", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_artes", + "geoshape": 5, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 125, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_educacion_entresemana_18:55", + "trip_headsign": "Educación", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_educacion", + "geoshape": 6, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 126, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_educacion_entresemana_19:15", + "trip_headsign": "Educación", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_educacion", + "geoshape": 6, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 127, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_artes_entresemana_19:50", + "trip_headsign": "Artes Plásticas", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_artes", + "geoshape": 5, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 128, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_educacion_entresemana_20:30", + "trip_headsign": "Educación", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_educacion", + "geoshape": 6, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 129, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_educacion_entresemana_20:40", + "trip_headsign": "Educación", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_educacion", + "geoshape": 6, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.trip", + "pk": 130, + "fields": { + "feed": "1", + "route_id": "bUCR_L1", + "service_id": "entresemana", + "trip_id": "hacia_educacion_entresemana_21:15", + "trip_headsign": "Educación", + "trip_short_name": "", + "direction_id": 1, + "block_id": "", + "shape_id": "hacia_educacion", + "geoshape": 6, + "wheelchair_accessible": 0, + "bikes_allowed": 2 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_06:10", + "arrival_time": "06:10:00", + "departure_time": "06:10:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 2, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_06:10", + "arrival_time": "06:18:28.582000", + "departure_time": "06:18:28.582000", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.554, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 3, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_06:10", + "arrival_time": "06:19:45.164000", + "departure_time": "06:19:45.164000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.788, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 4, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_06:10", + "arrival_time": "06:21:14.182000", + "departure_time": "06:21:14.182000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.06, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 5, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_06:10", + "arrival_time": "06:24:18.764000", + "departure_time": "06:24:18.764000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.624, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 6, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_06:10", + "arrival_time": "06:25:23.564000", + "departure_time": "06:25:23.564000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.822, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 7, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_06:10", + "arrival_time": "06:28:20.291000", + "departure_time": "06:28:20.291000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.362, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 8, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_06:10", + "arrival_time": "06:30:34.145000", + "departure_time": "06:30:34.145000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.771, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 9, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_06:30", + "arrival_time": "06:30:00", + "departure_time": "06:30:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 10, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_06:30", + "arrival_time": "06:38:28.582000", + "departure_time": "06:38:28.582000", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.554, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 11, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_06:30", + "arrival_time": "06:39:45.164000", + "departure_time": "06:39:45.164000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.788, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 12, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_06:30", + "arrival_time": "06:41:14.182000", + "departure_time": "06:41:14.182000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.06, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 13, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_06:30", + "arrival_time": "06:44:18.764000", + "departure_time": "06:44:18.764000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.624, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 14, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_06:30", + "arrival_time": "06:45:23.564000", + "departure_time": "06:45:23.564000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.822, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 15, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_06:30", + "arrival_time": "06:48:20.291000", + "departure_time": "06:48:20.291000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.362, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 16, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_06:30", + "arrival_time": "06:50:34.145000", + "departure_time": "06:50:34.145000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.771, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 17, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_07:00", + "arrival_time": "07:00:00", + "departure_time": "07:00:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 18, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_07:00", + "arrival_time": "07:08:28.582000", + "departure_time": "07:08:28.582000", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.554, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 19, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_07:00", + "arrival_time": "07:09:45.164000", + "departure_time": "07:09:45.164000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.788, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 20, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_07:00", + "arrival_time": "07:11:14.182000", + "departure_time": "07:11:14.182000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.06, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 21, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_07:00", + "arrival_time": "07:14:18.764000", + "departure_time": "07:14:18.764000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.624, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 22, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_07:00", + "arrival_time": "07:15:23.564000", + "departure_time": "07:15:23.564000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.822, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 23, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_07:00", + "arrival_time": "07:18:20.291000", + "departure_time": "07:18:20.291000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.362, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 24, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_07:00", + "arrival_time": "07:20:34.145000", + "departure_time": "07:20:34.145000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.771, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 25, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_07:20", + "arrival_time": "07:20:00", + "departure_time": "07:20:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 26, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_07:20", + "arrival_time": "07:28:28.582000", + "departure_time": "07:28:28.582000", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.554, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 27, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_07:20", + "arrival_time": "07:29:45.164000", + "departure_time": "07:29:45.164000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.788, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 28, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_07:20", + "arrival_time": "07:31:14.182000", + "departure_time": "07:31:14.182000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.06, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 29, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_07:20", + "arrival_time": "07:34:18.764000", + "departure_time": "07:34:18.764000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.624, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 30, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_07:20", + "arrival_time": "07:35:23.564000", + "departure_time": "07:35:23.564000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.822, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 31, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_07:20", + "arrival_time": "07:38:20.291000", + "departure_time": "07:38:20.291000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.362, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 32, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_07:20", + "arrival_time": "07:40:34.145000", + "departure_time": "07:40:34.145000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.771, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 33, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_07:50", + "arrival_time": "07:50:00", + "departure_time": "07:50:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 34, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_07:50", + "arrival_time": "07:58:28.582000", + "departure_time": "07:58:28.582000", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.554, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 35, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_07:50", + "arrival_time": "07:59:45.164000", + "departure_time": "07:59:45.164000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.788, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 36, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_07:50", + "arrival_time": "08:01:14.182000", + "departure_time": "08:01:14.182000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.06, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 37, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_07:50", + "arrival_time": "08:04:18.764000", + "departure_time": "08:04:18.764000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.624, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 38, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_07:50", + "arrival_time": "08:05:23.564000", + "departure_time": "08:05:23.564000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.822, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 39, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_07:50", + "arrival_time": "08:08:20.291000", + "departure_time": "08:08:20.291000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.362, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 40, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_07:50", + "arrival_time": "08:10:34.145000", + "departure_time": "08:10:34.145000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.771, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 41, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_08:10", + "arrival_time": "08:10:00", + "departure_time": "08:10:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 42, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_08:10", + "arrival_time": "08:18:28.582000", + "departure_time": "08:18:28.582000", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.554, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 43, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_08:10", + "arrival_time": "08:19:45.164000", + "departure_time": "08:19:45.164000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.788, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 44, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_08:10", + "arrival_time": "08:21:14.182000", + "departure_time": "08:21:14.182000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.06, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 45, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_08:10", + "arrival_time": "08:24:18.764000", + "departure_time": "08:24:18.764000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.624, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 46, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_08:10", + "arrival_time": "08:25:23.564000", + "departure_time": "08:25:23.564000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.822, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 47, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_08:10", + "arrival_time": "08:28:20.291000", + "departure_time": "08:28:20.291000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.362, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 48, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_08:10", + "arrival_time": "08:30:34.145000", + "departure_time": "08:30:34.145000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.771, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 49, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_08:55", + "arrival_time": "08:55:00", + "departure_time": "08:55:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 50, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_08:55", + "arrival_time": "09:03:28.582000", + "departure_time": "09:03:28.582000", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.554, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 51, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_08:55", + "arrival_time": "09:04:45.164000", + "departure_time": "09:04:45.164000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.788, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 52, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_08:55", + "arrival_time": "09:06:14.182000", + "departure_time": "09:06:14.182000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.06, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 53, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_08:55", + "arrival_time": "09:09:18.764000", + "departure_time": "09:09:18.764000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.624, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 54, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_08:55", + "arrival_time": "09:10:23.564000", + "departure_time": "09:10:23.564000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.822, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 55, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_08:55", + "arrival_time": "09:13:20.291000", + "departure_time": "09:13:20.291000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.362, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 56, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_08:55", + "arrival_time": "09:15:34.145000", + "departure_time": "09:15:34.145000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.771, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 57, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_09:15", + "arrival_time": "09:15:00", + "departure_time": "09:15:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 58, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_09:15", + "arrival_time": "09:23:28.582000", + "departure_time": "09:23:28.582000", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.554, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 59, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_09:15", + "arrival_time": "09:24:45.164000", + "departure_time": "09:24:45.164000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.788, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 60, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_09:15", + "arrival_time": "09:26:14.182000", + "departure_time": "09:26:14.182000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.06, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 61, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_09:15", + "arrival_time": "09:29:18.764000", + "departure_time": "09:29:18.764000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.624, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 62, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_09:15", + "arrival_time": "09:30:23.564000", + "departure_time": "09:30:23.564000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.822, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 63, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_09:15", + "arrival_time": "09:33:20.291000", + "departure_time": "09:33:20.291000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.362, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 64, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_09:15", + "arrival_time": "09:35:34.145000", + "departure_time": "09:35:34.145000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.771, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 65, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_09:45", + "arrival_time": "09:45:00", + "departure_time": "09:45:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 66, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_09:45", + "arrival_time": "09:53:28.582000", + "departure_time": "09:53:28.582000", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.554, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 67, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_09:45", + "arrival_time": "09:54:45.164000", + "departure_time": "09:54:45.164000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.788, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 68, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_09:45", + "arrival_time": "09:56:14.182000", + "departure_time": "09:56:14.182000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.06, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 69, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_09:45", + "arrival_time": "09:59:18.764000", + "departure_time": "09:59:18.764000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.624, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 70, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_09:45", + "arrival_time": "10:00:23.564000", + "departure_time": "10:00:23.564000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.822, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 71, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_09:45", + "arrival_time": "10:03:20.291000", + "departure_time": "10:03:20.291000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.362, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 72, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_09:45", + "arrival_time": "10:05:34.145000", + "departure_time": "10:05:34.145000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.771, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 73, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_10:05", + "arrival_time": "10:05:00", + "departure_time": "10:05:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 74, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_10:05", + "arrival_time": "10:13:28.582000", + "departure_time": "10:13:28.582000", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.554, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 75, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_10:05", + "arrival_time": "10:14:45.164000", + "departure_time": "10:14:45.164000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.788, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 76, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_10:05", + "arrival_time": "10:16:14.182000", + "departure_time": "10:16:14.182000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.06, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 77, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_10:05", + "arrival_time": "10:19:18.764000", + "departure_time": "10:19:18.764000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.624, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 78, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_10:05", + "arrival_time": "10:20:23.564000", + "departure_time": "10:20:23.564000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.822, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 79, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_10:05", + "arrival_time": "10:23:20.291000", + "departure_time": "10:23:20.291000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.362, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 80, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_10:05", + "arrival_time": "10:25:34.145000", + "departure_time": "10:25:34.145000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.771, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 81, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_10:35", + "arrival_time": "10:35:00", + "departure_time": "10:35:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 82, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_10:35", + "arrival_time": "10:43:28.582000", + "departure_time": "10:43:28.582000", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.554, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 83, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_10:35", + "arrival_time": "10:44:45.164000", + "departure_time": "10:44:45.164000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.788, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 84, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_10:35", + "arrival_time": "10:46:14.182000", + "departure_time": "10:46:14.182000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.06, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 85, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_10:35", + "arrival_time": "10:49:18.764000", + "departure_time": "10:49:18.764000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.624, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 86, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_10:35", + "arrival_time": "10:50:23.564000", + "departure_time": "10:50:23.564000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.822, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 87, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_10:35", + "arrival_time": "10:53:20.291000", + "departure_time": "10:53:20.291000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.362, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 88, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_10:35", + "arrival_time": "10:55:34.145000", + "departure_time": "10:55:34.145000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.771, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 89, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_10:55", + "arrival_time": "10:55:00", + "departure_time": "10:55:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 90, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_10:55", + "arrival_time": "11:03:28.582000", + "departure_time": "11:03:28.582000", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.554, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 91, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_10:55", + "arrival_time": "11:04:45.164000", + "departure_time": "11:04:45.164000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.788, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 92, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_10:55", + "arrival_time": "11:06:14.182000", + "departure_time": "11:06:14.182000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.06, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 93, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_10:55", + "arrival_time": "11:09:18.764000", + "departure_time": "11:09:18.764000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.624, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 94, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_10:55", + "arrival_time": "11:10:23.564000", + "departure_time": "11:10:23.564000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.822, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 95, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_10:55", + "arrival_time": "11:13:20.291000", + "departure_time": "11:13:20.291000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.362, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 96, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_10:55", + "arrival_time": "11:15:34.145000", + "departure_time": "11:15:34.145000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.771, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 97, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_11:15", + "arrival_time": "11:15:00", + "departure_time": "11:15:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 98, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_11:15", + "arrival_time": "11:23:28.582000", + "departure_time": "11:23:28.582000", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.554, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 99, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_11:15", + "arrival_time": "11:24:45.164000", + "departure_time": "11:24:45.164000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.788, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 100, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_11:15", + "arrival_time": "11:26:14.182000", + "departure_time": "11:26:14.182000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.06, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 101, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_11:15", + "arrival_time": "11:29:18.764000", + "departure_time": "11:29:18.764000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.624, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 102, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_11:15", + "arrival_time": "11:30:23.564000", + "departure_time": "11:30:23.564000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.822, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 103, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_11:15", + "arrival_time": "11:33:20.291000", + "departure_time": "11:33:20.291000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.362, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 104, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_11:15", + "arrival_time": "11:35:34.145000", + "departure_time": "11:35:34.145000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.771, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 105, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_11:25", + "arrival_time": "11:25:00", + "departure_time": "11:25:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 106, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_11:25", + "arrival_time": "11:33:28.582000", + "departure_time": "11:33:28.582000", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.554, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 107, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_11:25", + "arrival_time": "11:34:45.164000", + "departure_time": "11:34:45.164000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.788, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 108, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_11:25", + "arrival_time": "11:36:14.182000", + "departure_time": "11:36:14.182000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.06, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 109, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_11:25", + "arrival_time": "11:39:18.764000", + "departure_time": "11:39:18.764000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.624, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 110, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_11:25", + "arrival_time": "11:40:23.564000", + "departure_time": "11:40:23.564000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.822, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 111, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_11:25", + "arrival_time": "11:43:20.291000", + "departure_time": "11:43:20.291000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.362, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 112, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_11:25", + "arrival_time": "11:45:34.145000", + "departure_time": "11:45:34.145000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.771, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 113, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_11:40", + "arrival_time": "11:40:00", + "departure_time": "11:40:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 114, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_11:40", + "arrival_time": "11:48:28.582000", + "departure_time": "11:48:28.582000", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.554, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 115, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_11:40", + "arrival_time": "11:49:45.164000", + "departure_time": "11:49:45.164000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.788, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 116, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_11:40", + "arrival_time": "11:51:14.182000", + "departure_time": "11:51:14.182000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.06, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 117, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_11:40", + "arrival_time": "11:54:18.764000", + "departure_time": "11:54:18.764000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.624, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 118, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_11:40", + "arrival_time": "11:55:23.564000", + "departure_time": "11:55:23.564000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.822, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 119, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_11:40", + "arrival_time": "11:58:20.291000", + "departure_time": "11:58:20.291000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.362, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 120, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_11:40", + "arrival_time": "12:00:34.145000", + "departure_time": "12:00:34.145000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.771, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 121, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_12:00", + "arrival_time": "12:00:00", + "departure_time": "12:00:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 122, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_12:00", + "arrival_time": "12:08:28.582000", + "departure_time": "12:08:28.582000", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.554, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 123, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_12:00", + "arrival_time": "12:09:45.164000", + "departure_time": "12:09:45.164000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.788, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 124, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_12:00", + "arrival_time": "12:11:14.182000", + "departure_time": "12:11:14.182000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.06, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 125, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_12:00", + "arrival_time": "12:14:18.764000", + "departure_time": "12:14:18.764000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.624, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 126, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_12:00", + "arrival_time": "12:15:23.564000", + "departure_time": "12:15:23.564000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.822, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 127, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_12:00", + "arrival_time": "12:18:20.291000", + "departure_time": "12:18:20.291000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.362, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 128, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_12:00", + "arrival_time": "12:20:34.145000", + "departure_time": "12:20:34.145000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.771, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 129, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_12:25", + "arrival_time": "12:25:00", + "departure_time": "12:25:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 130, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_12:25", + "arrival_time": "12:33:28.582000", + "departure_time": "12:33:28.582000", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.554, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 131, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_12:25", + "arrival_time": "12:34:45.164000", + "departure_time": "12:34:45.164000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.788, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 132, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_12:25", + "arrival_time": "12:36:14.182000", + "departure_time": "12:36:14.182000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.06, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 133, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_12:25", + "arrival_time": "12:39:18.764000", + "departure_time": "12:39:18.764000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.624, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 134, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_12:25", + "arrival_time": "12:40:23.564000", + "departure_time": "12:40:23.564000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.822, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 135, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_12:25", + "arrival_time": "12:43:20.291000", + "departure_time": "12:43:20.291000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.362, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 136, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_12:25", + "arrival_time": "12:45:34.145000", + "departure_time": "12:45:34.145000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.771, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 137, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_12:35", + "arrival_time": "12:35:00", + "departure_time": "12:35:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 138, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_12:35", + "arrival_time": "12:43:28.582000", + "departure_time": "12:43:28.582000", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.554, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 139, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_12:35", + "arrival_time": "12:44:45.164000", + "departure_time": "12:44:45.164000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.788, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 140, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_12:35", + "arrival_time": "12:46:14.182000", + "departure_time": "12:46:14.182000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.06, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 141, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_12:35", + "arrival_time": "12:49:18.764000", + "departure_time": "12:49:18.764000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.624, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 142, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_12:35", + "arrival_time": "12:50:23.564000", + "departure_time": "12:50:23.564000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.822, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 143, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_12:35", + "arrival_time": "12:53:20.291000", + "departure_time": "12:53:20.291000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.362, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 144, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_12:35", + "arrival_time": "12:55:34.145000", + "departure_time": "12:55:34.145000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.771, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 145, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_13:10", + "arrival_time": "13:10:00", + "departure_time": "13:10:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 146, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_13:10", + "arrival_time": "13:18:28.582000", + "departure_time": "13:18:28.582000", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.554, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 147, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_13:10", + "arrival_time": "13:19:45.164000", + "departure_time": "13:19:45.164000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.788, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 148, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_13:10", + "arrival_time": "13:21:14.182000", + "departure_time": "13:21:14.182000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.06, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 149, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_13:10", + "arrival_time": "13:24:18.764000", + "departure_time": "13:24:18.764000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.624, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 150, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_13:10", + "arrival_time": "13:25:23.564000", + "departure_time": "13:25:23.564000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.822, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 151, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_13:10", + "arrival_time": "13:28:20.291000", + "departure_time": "13:28:20.291000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.362, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 152, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_13:10", + "arrival_time": "13:30:34.145000", + "departure_time": "13:30:34.145000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.771, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 153, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_13:45", + "arrival_time": "13:45:00", + "departure_time": "13:45:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 154, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_13:45", + "arrival_time": "13:53:28.582000", + "departure_time": "13:53:28.582000", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.554, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 155, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_13:45", + "arrival_time": "13:54:45.164000", + "departure_time": "13:54:45.164000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.788, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 156, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_13:45", + "arrival_time": "13:56:14.182000", + "departure_time": "13:56:14.182000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.06, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 157, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_13:45", + "arrival_time": "13:59:18.764000", + "departure_time": "13:59:18.764000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.624, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 158, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_13:45", + "arrival_time": "14:00:23.564000", + "departure_time": "14:00:23.564000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.822, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 159, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_13:45", + "arrival_time": "14:03:20.291000", + "departure_time": "14:03:20.291000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.362, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 160, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_13:45", + "arrival_time": "14:05:34.145000", + "departure_time": "14:05:34.145000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.771, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 161, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_14:10", + "arrival_time": "14:10:00", + "departure_time": "14:10:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 162, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_14:10", + "arrival_time": "14:18:28.582000", + "departure_time": "14:18:28.582000", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.554, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 163, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_14:10", + "arrival_time": "14:19:45.164000", + "departure_time": "14:19:45.164000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.788, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 164, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_14:10", + "arrival_time": "14:21:14.182000", + "departure_time": "14:21:14.182000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.06, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 165, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_14:10", + "arrival_time": "14:24:18.764000", + "departure_time": "14:24:18.764000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.624, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 166, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_14:10", + "arrival_time": "14:25:23.564000", + "departure_time": "14:25:23.564000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.822, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 167, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_14:10", + "arrival_time": "14:28:20.291000", + "departure_time": "14:28:20.291000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.362, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 168, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_14:10", + "arrival_time": "14:30:34.145000", + "departure_time": "14:30:34.145000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.771, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 169, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_14:30", + "arrival_time": "14:30:00", + "departure_time": "14:30:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 170, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_14:30", + "arrival_time": "14:38:28.582000", + "departure_time": "14:38:28.582000", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.554, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 171, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_14:30", + "arrival_time": "14:39:45.164000", + "departure_time": "14:39:45.164000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.788, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 172, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_14:30", + "arrival_time": "14:41:14.182000", + "departure_time": "14:41:14.182000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.06, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 173, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_14:30", + "arrival_time": "14:44:18.764000", + "departure_time": "14:44:18.764000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.624, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 174, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_14:30", + "arrival_time": "14:45:23.564000", + "departure_time": "14:45:23.564000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.822, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 175, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_14:30", + "arrival_time": "14:48:20.291000", + "departure_time": "14:48:20.291000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.362, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 176, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_14:30", + "arrival_time": "14:50:34.145000", + "departure_time": "14:50:34.145000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.771, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 177, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_14:55", + "arrival_time": "14:55:00", + "departure_time": "14:55:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 178, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_14:55", + "arrival_time": "15:03:28.582000", + "departure_time": "15:03:28.582000", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.554, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 179, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_14:55", + "arrival_time": "15:04:45.164000", + "departure_time": "15:04:45.164000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.788, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 180, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_14:55", + "arrival_time": "15:06:14.182000", + "departure_time": "15:06:14.182000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.06, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 181, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_14:55", + "arrival_time": "15:09:18.764000", + "departure_time": "15:09:18.764000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.624, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 182, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_14:55", + "arrival_time": "15:10:23.564000", + "departure_time": "15:10:23.564000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.822, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 183, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_14:55", + "arrival_time": "15:13:20.291000", + "departure_time": "15:13:20.291000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.362, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 184, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_14:55", + "arrival_time": "15:15:34.145000", + "departure_time": "15:15:34.145000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.771, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 185, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_15:15", + "arrival_time": "15:15:00", + "departure_time": "15:15:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 186, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_15:15", + "arrival_time": "15:23:28.582000", + "departure_time": "15:23:28.582000", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.554, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 187, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_15:15", + "arrival_time": "15:24:45.164000", + "departure_time": "15:24:45.164000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.788, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 188, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_15:15", + "arrival_time": "15:26:14.182000", + "departure_time": "15:26:14.182000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.06, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 189, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_15:15", + "arrival_time": "15:29:18.764000", + "departure_time": "15:29:18.764000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.624, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 190, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_15:15", + "arrival_time": "15:30:23.564000", + "departure_time": "15:30:23.564000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.822, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 191, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_15:15", + "arrival_time": "15:33:20.291000", + "departure_time": "15:33:20.291000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.362, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 192, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_15:15", + "arrival_time": "15:35:34.145000", + "departure_time": "15:35:34.145000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.771, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 193, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_15:55", + "arrival_time": "15:55:00", + "departure_time": "15:55:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 194, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_15:55", + "arrival_time": "16:03:28.582000", + "departure_time": "16:03:28.582000", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.554, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 195, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_15:55", + "arrival_time": "16:04:45.164000", + "departure_time": "16:04:45.164000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.788, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 196, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_15:55", + "arrival_time": "16:06:14.182000", + "departure_time": "16:06:14.182000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.06, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 197, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_15:55", + "arrival_time": "16:09:18.764000", + "departure_time": "16:09:18.764000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.624, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 198, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_15:55", + "arrival_time": "16:10:23.564000", + "departure_time": "16:10:23.564000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.822, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 199, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_15:55", + "arrival_time": "16:13:20.291000", + "departure_time": "16:13:20.291000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.362, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 200, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_15:55", + "arrival_time": "16:15:34.145000", + "departure_time": "16:15:34.145000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.771, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 201, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_16:30", + "arrival_time": "16:30:00", + "departure_time": "16:30:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 202, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_16:30", + "arrival_time": "16:38:28.582000", + "departure_time": "16:38:28.582000", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.554, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 203, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_16:30", + "arrival_time": "16:39:45.164000", + "departure_time": "16:39:45.164000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.788, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 204, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_16:30", + "arrival_time": "16:41:14.182000", + "departure_time": "16:41:14.182000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.06, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 205, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_16:30", + "arrival_time": "16:44:18.764000", + "departure_time": "16:44:18.764000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.624, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 206, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_16:30", + "arrival_time": "16:45:23.564000", + "departure_time": "16:45:23.564000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.822, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 207, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_16:30", + "arrival_time": "16:48:20.291000", + "departure_time": "16:48:20.291000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.362, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 208, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_16:30", + "arrival_time": "16:50:34.145000", + "departure_time": "16:50:34.145000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.771, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 209, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_16:55", + "arrival_time": "16:55:00", + "departure_time": "16:55:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 210, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_16:55", + "arrival_time": "17:03:28.582000", + "departure_time": "17:03:28.582000", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.554, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 211, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_16:55", + "arrival_time": "17:04:45.164000", + "departure_time": "17:04:45.164000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.788, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 212, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_16:55", + "arrival_time": "17:06:14.182000", + "departure_time": "17:06:14.182000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.06, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 213, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_16:55", + "arrival_time": "17:09:18.764000", + "departure_time": "17:09:18.764000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.624, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 214, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_16:55", + "arrival_time": "17:10:23.564000", + "departure_time": "17:10:23.564000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.822, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 215, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_16:55", + "arrival_time": "17:13:20.291000", + "departure_time": "17:13:20.291000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.362, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 216, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_16:55", + "arrival_time": "17:15:34.145000", + "departure_time": "17:15:34.145000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.771, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 217, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_17:30", + "arrival_time": "17:30:00", + "departure_time": "17:30:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 218, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_17:30", + "arrival_time": "17:38:28.582000", + "departure_time": "17:38:28.582000", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.554, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 219, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_17:30", + "arrival_time": "17:39:45.164000", + "departure_time": "17:39:45.164000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.788, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 220, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_17:30", + "arrival_time": "17:41:14.182000", + "departure_time": "17:41:14.182000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.06, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 221, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_17:30", + "arrival_time": "17:44:18.764000", + "departure_time": "17:44:18.764000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.624, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 222, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_17:30", + "arrival_time": "17:45:23.564000", + "departure_time": "17:45:23.564000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.822, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 223, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_17:30", + "arrival_time": "17:48:20.291000", + "departure_time": "17:48:20.291000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.362, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 224, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_17:30", + "arrival_time": "17:50:34.145000", + "departure_time": "17:50:34.145000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.771, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 225, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_17:55", + "arrival_time": "17:55:00", + "departure_time": "17:55:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 226, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_17:55", + "arrival_time": "18:03:28.582000", + "departure_time": "18:03:28.582000", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.554, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 227, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_17:55", + "arrival_time": "18:04:45.164000", + "departure_time": "18:04:45.164000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.788, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 228, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_17:55", + "arrival_time": "18:06:14.182000", + "departure_time": "18:06:14.182000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.06, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 229, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_17:55", + "arrival_time": "18:09:18.764000", + "departure_time": "18:09:18.764000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.624, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 230, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_17:55", + "arrival_time": "18:10:23.564000", + "departure_time": "18:10:23.564000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.822, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 231, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_17:55", + "arrival_time": "18:13:20.291000", + "departure_time": "18:13:20.291000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.362, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 232, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_17:55", + "arrival_time": "18:15:34.145000", + "departure_time": "18:15:34.145000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.771, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 233, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_18:25", + "arrival_time": "18:25:00", + "departure_time": "18:25:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 234, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_18:25", + "arrival_time": "18:33:28.582000", + "departure_time": "18:33:28.582000", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.554, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 235, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_18:25", + "arrival_time": "18:34:45.164000", + "departure_time": "18:34:45.164000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.788, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 236, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_18:25", + "arrival_time": "18:36:14.182000", + "departure_time": "18:36:14.182000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.06, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 237, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_18:25", + "arrival_time": "18:39:18.764000", + "departure_time": "18:39:18.764000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.624, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 238, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_18:25", + "arrival_time": "18:40:23.564000", + "departure_time": "18:40:23.564000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.822, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 239, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_18:25", + "arrival_time": "18:43:20.291000", + "departure_time": "18:43:20.291000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.362, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 240, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_18:25", + "arrival_time": "18:45:34.145000", + "departure_time": "18:45:34.145000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.771, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 241, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_18:50", + "arrival_time": "18:50:00", + "departure_time": "18:50:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 242, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_18:50", + "arrival_time": "18:58:28.582000", + "departure_time": "18:58:28.582000", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.554, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 243, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_18:50", + "arrival_time": "18:59:45.164000", + "departure_time": "18:59:45.164000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.788, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 244, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_18:50", + "arrival_time": "19:01:14.182000", + "departure_time": "19:01:14.182000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.06, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 245, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_18:50", + "arrival_time": "19:04:18.764000", + "departure_time": "19:04:18.764000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.624, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 246, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_18:50", + "arrival_time": "19:05:23.564000", + "departure_time": "19:05:23.564000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.822, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 247, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_18:50", + "arrival_time": "19:08:20.291000", + "departure_time": "19:08:20.291000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.362, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 248, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_sin_milla_entresemana_18:50", + "arrival_time": "19:10:34.145000", + "departure_time": "19:10:34.145000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.771, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 249, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_19:15", + "arrival_time": "19:15:00", + "departure_time": "19:15:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 250, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_19:15", + "arrival_time": "19:19:22.473000", + "departure_time": "19:19:22.473000", + "stop_id": "bUCR_0_03", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.802, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 251, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_19:15", + "arrival_time": "19:21:20.945000", + "departure_time": "19:21:20.945000", + "stop_id": "bUCR_0_04", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.164, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 252, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_19:15", + "arrival_time": "19:26:19.418000", + "departure_time": "19:26:19.418000", + "stop_id": "bUCR_0_05", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.076, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 253, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_19:15", + "arrival_time": "19:27:36.655000", + "departure_time": "19:27:36.655000", + "stop_id": "bUCR_0_06", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.312, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 254, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_19:15", + "arrival_time": "19:29:13.200000", + "departure_time": "19:29:13.200000", + "stop_id": "bUCR_0_07", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.607, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 255, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_19:15", + "arrival_time": "19:32:05.673000", + "departure_time": "19:32:05.673000", + "stop_id": "bUCR_0_08", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.134, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 256, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_19:15", + "arrival_time": "19:33:10.473000", + "departure_time": "19:33:10.473000", + "stop_id": "bUCR_0_09", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.332, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 257, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_19:15", + "arrival_time": "19:36:00.982000", + "departure_time": "19:36:00.982000", + "stop_id": "bUCR_0_10", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.853, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 258, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_19:15", + "arrival_time": "19:38:21.055000", + "departure_time": "19:38:21.055000", + "stop_id": "bUCR_0_11", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 4.281, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 259, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_20:10", + "arrival_time": "20:10:00", + "departure_time": "20:10:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 260, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_20:10", + "arrival_time": "20:14:22.473000", + "departure_time": "20:14:22.473000", + "stop_id": "bUCR_0_03", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.802, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 261, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_20:10", + "arrival_time": "20:16:20.945000", + "departure_time": "20:16:20.945000", + "stop_id": "bUCR_0_04", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.164, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 262, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_20:10", + "arrival_time": "20:21:19.418000", + "departure_time": "20:21:19.418000", + "stop_id": "bUCR_0_05", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.076, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 263, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_20:10", + "arrival_time": "20:22:36.655000", + "departure_time": "20:22:36.655000", + "stop_id": "bUCR_0_06", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.312, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 264, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_20:10", + "arrival_time": "20:24:13.200000", + "departure_time": "20:24:13.200000", + "stop_id": "bUCR_0_07", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.607, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 265, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_20:10", + "arrival_time": "20:27:05.673000", + "departure_time": "20:27:05.673000", + "stop_id": "bUCR_0_08", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.134, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 266, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_20:10", + "arrival_time": "20:28:10.473000", + "departure_time": "20:28:10.473000", + "stop_id": "bUCR_0_09", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.332, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 267, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_20:10", + "arrival_time": "20:31:00.982000", + "departure_time": "20:31:00.982000", + "stop_id": "bUCR_0_10", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.853, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 268, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_20:10", + "arrival_time": "20:33:21.055000", + "departure_time": "20:33:21.055000", + "stop_id": "bUCR_0_11", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 4.281, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 269, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_20:50", + "arrival_time": "20:50:00", + "departure_time": "20:50:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 270, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_20:50", + "arrival_time": "20:54:22.473000", + "departure_time": "20:54:22.473000", + "stop_id": "bUCR_0_03", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.802, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 271, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_20:50", + "arrival_time": "20:56:20.945000", + "departure_time": "20:56:20.945000", + "stop_id": "bUCR_0_04", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.164, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 272, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_20:50", + "arrival_time": "21:01:19.418000", + "departure_time": "21:01:19.418000", + "stop_id": "bUCR_0_05", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.076, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 273, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_20:50", + "arrival_time": "21:02:36.655000", + "departure_time": "21:02:36.655000", + "stop_id": "bUCR_0_06", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.312, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 274, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_20:50", + "arrival_time": "21:04:13.200000", + "departure_time": "21:04:13.200000", + "stop_id": "bUCR_0_07", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.607, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 275, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_20:50", + "arrival_time": "21:07:05.673000", + "departure_time": "21:07:05.673000", + "stop_id": "bUCR_0_08", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.134, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 276, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_20:50", + "arrival_time": "21:08:10.473000", + "departure_time": "21:08:10.473000", + "stop_id": "bUCR_0_09", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.332, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 277, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_20:50", + "arrival_time": "21:11:00.982000", + "departure_time": "21:11:00.982000", + "stop_id": "bUCR_0_10", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.853, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 278, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_20:50", + "arrival_time": "21:13:21.055000", + "departure_time": "21:13:21.055000", + "stop_id": "bUCR_0_11", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 4.281, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 279, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_21:00", + "arrival_time": "21:00:00", + "departure_time": "21:00:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 280, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_21:00", + "arrival_time": "21:04:22.473000", + "departure_time": "21:04:22.473000", + "stop_id": "bUCR_0_03", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.802, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 281, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_21:00", + "arrival_time": "21:06:20.945000", + "departure_time": "21:06:20.945000", + "stop_id": "bUCR_0_04", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.164, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 282, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_21:00", + "arrival_time": "21:11:19.418000", + "departure_time": "21:11:19.418000", + "stop_id": "bUCR_0_05", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.076, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 283, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_21:00", + "arrival_time": "21:12:36.655000", + "departure_time": "21:12:36.655000", + "stop_id": "bUCR_0_06", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.312, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 284, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_21:00", + "arrival_time": "21:14:13.200000", + "departure_time": "21:14:13.200000", + "stop_id": "bUCR_0_07", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.607, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 285, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_21:00", + "arrival_time": "21:17:05.673000", + "departure_time": "21:17:05.673000", + "stop_id": "bUCR_0_08", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.134, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 286, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_21:00", + "arrival_time": "21:18:10.473000", + "departure_time": "21:18:10.473000", + "stop_id": "bUCR_0_09", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.332, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 287, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_21:00", + "arrival_time": "21:21:00.982000", + "departure_time": "21:21:00.982000", + "stop_id": "bUCR_0_10", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.853, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 288, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_21:00", + "arrival_time": "21:23:21.055000", + "departure_time": "21:23:21.055000", + "stop_id": "bUCR_0_11", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 4.281, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 289, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_21:35", + "arrival_time": "21:35:00", + "departure_time": "21:35:00", + "stop_id": "bUCR_0_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 290, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_21:35", + "arrival_time": "21:39:22.473000", + "departure_time": "21:39:22.473000", + "stop_id": "bUCR_0_03", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.802, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 291, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_21:35", + "arrival_time": "21:41:20.945000", + "departure_time": "21:41:20.945000", + "stop_id": "bUCR_0_04", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.164, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 292, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_21:35", + "arrival_time": "21:46:19.418000", + "departure_time": "21:46:19.418000", + "stop_id": "bUCR_0_05", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.076, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 293, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_21:35", + "arrival_time": "21:47:36.655000", + "departure_time": "21:47:36.655000", + "stop_id": "bUCR_0_06", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.312, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 294, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_21:35", + "arrival_time": "21:49:13.200000", + "departure_time": "21:49:13.200000", + "stop_id": "bUCR_0_07", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.607, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 295, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_21:35", + "arrival_time": "21:52:05.673000", + "departure_time": "21:52:05.673000", + "stop_id": "bUCR_0_08", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.134, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 296, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_21:35", + "arrival_time": "21:53:10.473000", + "departure_time": "21:53:10.473000", + "stop_id": "bUCR_0_09", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.332, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 297, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_21:35", + "arrival_time": "21:56:00.982000", + "departure_time": "21:56:00.982000", + "stop_id": "bUCR_0_10", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.853, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 298, + "fields": { + "feed": "1", + "trip_id": "desde_educacion_con_milla_entresemana_21:35", + "arrival_time": "21:58:21.055000", + "departure_time": "21:58:21.055000", + "stop_id": "bUCR_0_11", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 4.281, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 299, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_06:20", + "arrival_time": "06:20:00", + "departure_time": "06:20:00", + "stop_id": "bUCR_0_02", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 300, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_06:20", + "arrival_time": "06:26:36", + "departure_time": "06:26:36", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.21, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 301, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_06:20", + "arrival_time": "06:27:54.218000", + "departure_time": "06:27:54.218000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.449, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 302, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_06:20", + "arrival_time": "06:29:32.400000", + "departure_time": "06:29:32.400000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.749, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 303, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_06:20", + "arrival_time": "06:32:24.545000", + "departure_time": "06:32:24.545000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.275, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 304, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_06:20", + "arrival_time": "06:33:29.345000", + "departure_time": "06:33:29.345000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.473, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 305, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_06:20", + "arrival_time": "06:36:13.964000", + "departure_time": "06:36:13.964000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.976, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 306, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_06:20", + "arrival_time": "06:38:40.255000", + "departure_time": "06:38:40.255000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.423, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 307, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_06:40", + "arrival_time": "06:40:00", + "departure_time": "06:40:00", + "stop_id": "bUCR_0_02", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 308, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_06:40", + "arrival_time": "06:46:36", + "departure_time": "06:46:36", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.21, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 309, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_06:40", + "arrival_time": "06:47:54.218000", + "departure_time": "06:47:54.218000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.449, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 310, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_06:40", + "arrival_time": "06:49:32.400000", + "departure_time": "06:49:32.400000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.749, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 311, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_06:40", + "arrival_time": "06:52:24.545000", + "departure_time": "06:52:24.545000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.275, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 312, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_06:40", + "arrival_time": "06:53:29.345000", + "departure_time": "06:53:29.345000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.473, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 313, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_06:40", + "arrival_time": "06:56:13.964000", + "departure_time": "06:56:13.964000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.976, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 314, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_06:40", + "arrival_time": "06:58:40.255000", + "departure_time": "06:58:40.255000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.423, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 315, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_07:10", + "arrival_time": "07:10:00", + "departure_time": "07:10:00", + "stop_id": "bUCR_0_02", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 316, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_07:10", + "arrival_time": "07:16:36", + "departure_time": "07:16:36", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.21, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 317, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_07:10", + "arrival_time": "07:17:54.218000", + "departure_time": "07:17:54.218000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.449, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 318, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_07:10", + "arrival_time": "07:19:32.400000", + "departure_time": "07:19:32.400000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.749, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 319, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_07:10", + "arrival_time": "07:22:24.545000", + "departure_time": "07:22:24.545000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.275, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 320, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_07:10", + "arrival_time": "07:23:29.345000", + "departure_time": "07:23:29.345000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.473, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 321, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_07:10", + "arrival_time": "07:26:13.964000", + "departure_time": "07:26:13.964000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.976, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 322, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_07:10", + "arrival_time": "07:28:40.255000", + "departure_time": "07:28:40.255000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.423, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 323, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_07:30", + "arrival_time": "07:30:00", + "departure_time": "07:30:00", + "stop_id": "bUCR_0_02", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 324, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_07:30", + "arrival_time": "07:36:36", + "departure_time": "07:36:36", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.21, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 325, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_07:30", + "arrival_time": "07:37:54.218000", + "departure_time": "07:37:54.218000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.449, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 326, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_07:30", + "arrival_time": "07:39:32.400000", + "departure_time": "07:39:32.400000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.749, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 327, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_07:30", + "arrival_time": "07:42:24.545000", + "departure_time": "07:42:24.545000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.275, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 328, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_07:30", + "arrival_time": "07:43:29.345000", + "departure_time": "07:43:29.345000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.473, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 329, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_07:30", + "arrival_time": "07:46:13.964000", + "departure_time": "07:46:13.964000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.976, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 330, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_07:30", + "arrival_time": "07:48:40.255000", + "departure_time": "07:48:40.255000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.423, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 331, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_08:00", + "arrival_time": "08:00:00", + "departure_time": "08:00:00", + "stop_id": "bUCR_0_02", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 332, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_08:00", + "arrival_time": "08:06:36", + "departure_time": "08:06:36", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.21, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 333, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_08:00", + "arrival_time": "08:07:54.218000", + "departure_time": "08:07:54.218000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.449, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 334, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_08:00", + "arrival_time": "08:09:32.400000", + "departure_time": "08:09:32.400000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.749, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 335, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_08:00", + "arrival_time": "08:12:24.545000", + "departure_time": "08:12:24.545000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.275, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 336, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_08:00", + "arrival_time": "08:13:29.345000", + "departure_time": "08:13:29.345000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.473, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 337, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_08:00", + "arrival_time": "08:16:13.964000", + "departure_time": "08:16:13.964000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.976, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 338, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_08:00", + "arrival_time": "08:18:40.255000", + "departure_time": "08:18:40.255000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.423, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 339, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_08:35", + "arrival_time": "08:35:00", + "departure_time": "08:35:00", + "stop_id": "bUCR_0_02", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 340, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_08:35", + "arrival_time": "08:41:36", + "departure_time": "08:41:36", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.21, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 341, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_08:35", + "arrival_time": "08:42:54.218000", + "departure_time": "08:42:54.218000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.449, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 342, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_08:35", + "arrival_time": "08:44:32.400000", + "departure_time": "08:44:32.400000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.749, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 343, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_08:35", + "arrival_time": "08:47:24.545000", + "departure_time": "08:47:24.545000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.275, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 344, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_08:35", + "arrival_time": "08:48:29.345000", + "departure_time": "08:48:29.345000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.473, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 345, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_08:35", + "arrival_time": "08:51:13.964000", + "departure_time": "08:51:13.964000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.976, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 346, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_08:35", + "arrival_time": "08:53:40.255000", + "departure_time": "08:53:40.255000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.423, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 347, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_09:05", + "arrival_time": "09:05:00", + "departure_time": "09:05:00", + "stop_id": "bUCR_0_02", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 348, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_09:05", + "arrival_time": "09:11:36", + "departure_time": "09:11:36", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.21, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 349, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_09:05", + "arrival_time": "09:12:54.218000", + "departure_time": "09:12:54.218000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.449, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 350, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_09:05", + "arrival_time": "09:14:32.400000", + "departure_time": "09:14:32.400000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.749, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 351, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_09:05", + "arrival_time": "09:17:24.545000", + "departure_time": "09:17:24.545000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.275, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 352, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_09:05", + "arrival_time": "09:18:29.345000", + "departure_time": "09:18:29.345000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.473, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 353, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_09:05", + "arrival_time": "09:21:13.964000", + "departure_time": "09:21:13.964000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.976, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 354, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_09:05", + "arrival_time": "09:23:40.255000", + "departure_time": "09:23:40.255000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.423, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 355, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_09:25", + "arrival_time": "09:25:00", + "departure_time": "09:25:00", + "stop_id": "bUCR_0_02", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 356, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_09:25", + "arrival_time": "09:31:36", + "departure_time": "09:31:36", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.21, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 357, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_09:25", + "arrival_time": "09:32:54.218000", + "departure_time": "09:32:54.218000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.449, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 358, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_09:25", + "arrival_time": "09:34:32.400000", + "departure_time": "09:34:32.400000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.749, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 359, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_09:25", + "arrival_time": "09:37:24.545000", + "departure_time": "09:37:24.545000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.275, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 360, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_09:25", + "arrival_time": "09:38:29.345000", + "departure_time": "09:38:29.345000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.473, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 361, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_09:25", + "arrival_time": "09:41:13.964000", + "departure_time": "09:41:13.964000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.976, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 362, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_09:25", + "arrival_time": "09:43:40.255000", + "departure_time": "09:43:40.255000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.423, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 363, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_09:55", + "arrival_time": "09:55:00", + "departure_time": "09:55:00", + "stop_id": "bUCR_0_02", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 364, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_09:55", + "arrival_time": "10:01:36", + "departure_time": "10:01:36", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.21, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 365, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_09:55", + "arrival_time": "10:02:54.218000", + "departure_time": "10:02:54.218000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.449, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 366, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_09:55", + "arrival_time": "10:04:32.400000", + "departure_time": "10:04:32.400000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.749, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 367, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_09:55", + "arrival_time": "10:07:24.545000", + "departure_time": "10:07:24.545000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.275, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 368, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_09:55", + "arrival_time": "10:08:29.345000", + "departure_time": "10:08:29.345000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.473, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 369, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_09:55", + "arrival_time": "10:11:13.964000", + "departure_time": "10:11:13.964000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.976, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 370, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_09:55", + "arrival_time": "10:13:40.255000", + "departure_time": "10:13:40.255000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.423, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 371, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_10:15", + "arrival_time": "10:15:00", + "departure_time": "10:15:00", + "stop_id": "bUCR_0_02", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 372, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_10:15", + "arrival_time": "10:21:36", + "departure_time": "10:21:36", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.21, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 373, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_10:15", + "arrival_time": "10:22:54.218000", + "departure_time": "10:22:54.218000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.449, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 374, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_10:15", + "arrival_time": "10:24:32.400000", + "departure_time": "10:24:32.400000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.749, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 375, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_10:15", + "arrival_time": "10:27:24.545000", + "departure_time": "10:27:24.545000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.275, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 376, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_10:15", + "arrival_time": "10:28:29.345000", + "departure_time": "10:28:29.345000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.473, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 377, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_10:15", + "arrival_time": "10:31:13.964000", + "departure_time": "10:31:13.964000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.976, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 378, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_10:15", + "arrival_time": "10:33:40.255000", + "departure_time": "10:33:40.255000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.423, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 379, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_10:45", + "arrival_time": "10:45:00", + "departure_time": "10:45:00", + "stop_id": "bUCR_0_02", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 380, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_10:45", + "arrival_time": "10:51:36", + "departure_time": "10:51:36", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.21, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 381, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_10:45", + "arrival_time": "10:52:54.218000", + "departure_time": "10:52:54.218000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.449, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 382, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_10:45", + "arrival_time": "10:54:32.400000", + "departure_time": "10:54:32.400000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.749, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 383, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_10:45", + "arrival_time": "10:57:24.545000", + "departure_time": "10:57:24.545000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.275, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 384, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_10:45", + "arrival_time": "10:58:29.345000", + "departure_time": "10:58:29.345000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.473, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 385, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_10:45", + "arrival_time": "11:01:13.964000", + "departure_time": "11:01:13.964000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.976, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 386, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_10:45", + "arrival_time": "11:03:40.255000", + "departure_time": "11:03:40.255000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.423, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 387, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_11:05", + "arrival_time": "11:05:00", + "departure_time": "11:05:00", + "stop_id": "bUCR_0_02", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 388, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_11:05", + "arrival_time": "11:11:36", + "departure_time": "11:11:36", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.21, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 389, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_11:05", + "arrival_time": "11:12:54.218000", + "departure_time": "11:12:54.218000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.449, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 390, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_11:05", + "arrival_time": "11:14:32.400000", + "departure_time": "11:14:32.400000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.749, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 391, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_11:05", + "arrival_time": "11:17:24.545000", + "departure_time": "11:17:24.545000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.275, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 392, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_11:05", + "arrival_time": "11:18:29.345000", + "departure_time": "11:18:29.345000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.473, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 393, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_11:05", + "arrival_time": "11:21:13.964000", + "departure_time": "11:21:13.964000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.976, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 394, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_11:05", + "arrival_time": "11:23:40.255000", + "departure_time": "11:23:40.255000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.423, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 395, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_11:35", + "arrival_time": "11:35:00", + "departure_time": "11:35:00", + "stop_id": "bUCR_0_02", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 396, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_11:35", + "arrival_time": "11:41:36", + "departure_time": "11:41:36", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.21, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 397, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_11:35", + "arrival_time": "11:42:54.218000", + "departure_time": "11:42:54.218000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.449, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 398, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_11:35", + "arrival_time": "11:44:32.400000", + "departure_time": "11:44:32.400000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.749, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 399, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_11:35", + "arrival_time": "11:47:24.545000", + "departure_time": "11:47:24.545000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.275, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 400, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_11:35", + "arrival_time": "11:48:29.345000", + "departure_time": "11:48:29.345000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.473, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 401, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_11:35", + "arrival_time": "11:51:13.964000", + "departure_time": "11:51:13.964000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.976, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 402, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_11:35", + "arrival_time": "11:53:40.255000", + "departure_time": "11:53:40.255000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.423, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 403, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_11:50", + "arrival_time": "11:50:00", + "departure_time": "11:50:00", + "stop_id": "bUCR_0_02", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 404, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_11:50", + "arrival_time": "11:56:36", + "departure_time": "11:56:36", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.21, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 405, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_11:50", + "arrival_time": "11:57:54.218000", + "departure_time": "11:57:54.218000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.449, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 406, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_11:50", + "arrival_time": "11:59:32.400000", + "departure_time": "11:59:32.400000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.749, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 407, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_11:50", + "arrival_time": "12:02:24.545000", + "departure_time": "12:02:24.545000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.275, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 408, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_11:50", + "arrival_time": "12:03:29.345000", + "departure_time": "12:03:29.345000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.473, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 409, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_11:50", + "arrival_time": "12:06:13.964000", + "departure_time": "12:06:13.964000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.976, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 410, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_11:50", + "arrival_time": "12:08:40.255000", + "departure_time": "12:08:40.255000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.423, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 411, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_12:10", + "arrival_time": "12:10:00", + "departure_time": "12:10:00", + "stop_id": "bUCR_0_02", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 412, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_12:10", + "arrival_time": "12:16:36", + "departure_time": "12:16:36", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.21, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 413, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_12:10", + "arrival_time": "12:17:54.218000", + "departure_time": "12:17:54.218000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.449, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 414, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_12:10", + "arrival_time": "12:19:32.400000", + "departure_time": "12:19:32.400000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.749, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 415, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_12:10", + "arrival_time": "12:22:24.545000", + "departure_time": "12:22:24.545000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.275, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 416, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_12:10", + "arrival_time": "12:23:29.345000", + "departure_time": "12:23:29.345000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.473, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 417, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_12:10", + "arrival_time": "12:26:13.964000", + "departure_time": "12:26:13.964000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.976, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 418, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_12:10", + "arrival_time": "12:28:40.255000", + "departure_time": "12:28:40.255000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.423, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 419, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_12:30", + "arrival_time": "12:30:00", + "departure_time": "12:30:00", + "stop_id": "bUCR_0_02", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 420, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_12:30", + "arrival_time": "12:36:36", + "departure_time": "12:36:36", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.21, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 421, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_12:30", + "arrival_time": "12:37:54.218000", + "departure_time": "12:37:54.218000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.449, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 422, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_12:30", + "arrival_time": "12:39:32.400000", + "departure_time": "12:39:32.400000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.749, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 423, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_12:30", + "arrival_time": "12:42:24.545000", + "departure_time": "12:42:24.545000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.275, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 424, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_12:30", + "arrival_time": "12:43:29.345000", + "departure_time": "12:43:29.345000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.473, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 425, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_12:30", + "arrival_time": "12:46:13.964000", + "departure_time": "12:46:13.964000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.976, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 426, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_12:30", + "arrival_time": "12:48:40.255000", + "departure_time": "12:48:40.255000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.423, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 427, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_12:45", + "arrival_time": "12:45:00", + "departure_time": "12:45:00", + "stop_id": "bUCR_0_02", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 428, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_12:45", + "arrival_time": "12:51:36", + "departure_time": "12:51:36", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.21, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 429, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_12:45", + "arrival_time": "12:52:54.218000", + "departure_time": "12:52:54.218000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.449, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 430, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_12:45", + "arrival_time": "12:54:32.400000", + "departure_time": "12:54:32.400000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.749, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 431, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_12:45", + "arrival_time": "12:57:24.545000", + "departure_time": "12:57:24.545000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.275, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 432, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_12:45", + "arrival_time": "12:58:29.345000", + "departure_time": "12:58:29.345000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.473, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 433, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_12:45", + "arrival_time": "13:01:13.964000", + "departure_time": "13:01:13.964000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.976, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 434, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_12:45", + "arrival_time": "13:03:40.255000", + "departure_time": "13:03:40.255000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.423, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 435, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_13:20", + "arrival_time": "13:20:00", + "departure_time": "13:20:00", + "stop_id": "bUCR_0_02", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 436, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_13:20", + "arrival_time": "13:26:36", + "departure_time": "13:26:36", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.21, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 437, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_13:20", + "arrival_time": "13:27:54.218000", + "departure_time": "13:27:54.218000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.449, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 438, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_13:20", + "arrival_time": "13:29:32.400000", + "departure_time": "13:29:32.400000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.749, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 439, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_13:20", + "arrival_time": "13:32:24.545000", + "departure_time": "13:32:24.545000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.275, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 440, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_13:20", + "arrival_time": "13:33:29.345000", + "departure_time": "13:33:29.345000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.473, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 441, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_13:20", + "arrival_time": "13:36:13.964000", + "departure_time": "13:36:13.964000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.976, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 442, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_13:20", + "arrival_time": "13:38:40.255000", + "departure_time": "13:38:40.255000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.423, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 443, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_14:00", + "arrival_time": "14:00:00", + "departure_time": "14:00:00", + "stop_id": "bUCR_0_02", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 444, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_14:00", + "arrival_time": "14:06:36", + "departure_time": "14:06:36", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.21, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 445, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_14:00", + "arrival_time": "14:07:54.218000", + "departure_time": "14:07:54.218000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.449, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 446, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_14:00", + "arrival_time": "14:09:32.400000", + "departure_time": "14:09:32.400000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.749, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 447, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_14:00", + "arrival_time": "14:12:24.545000", + "departure_time": "14:12:24.545000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.275, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 448, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_14:00", + "arrival_time": "14:13:29.345000", + "departure_time": "14:13:29.345000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.473, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 449, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_14:00", + "arrival_time": "14:16:13.964000", + "departure_time": "14:16:13.964000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.976, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 450, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_14:00", + "arrival_time": "14:18:40.255000", + "departure_time": "14:18:40.255000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.423, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 451, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_14:20", + "arrival_time": "14:20:00", + "departure_time": "14:20:00", + "stop_id": "bUCR_0_02", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 452, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_14:20", + "arrival_time": "14:26:36", + "departure_time": "14:26:36", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.21, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 453, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_14:20", + "arrival_time": "14:27:54.218000", + "departure_time": "14:27:54.218000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.449, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 454, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_14:20", + "arrival_time": "14:29:32.400000", + "departure_time": "14:29:32.400000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.749, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 455, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_14:20", + "arrival_time": "14:32:24.545000", + "departure_time": "14:32:24.545000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.275, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 456, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_14:20", + "arrival_time": "14:33:29.345000", + "departure_time": "14:33:29.345000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.473, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 457, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_14:20", + "arrival_time": "14:36:13.964000", + "departure_time": "14:36:13.964000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.976, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 458, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_14:20", + "arrival_time": "14:38:40.255000", + "departure_time": "14:38:40.255000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.423, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 459, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_14:45", + "arrival_time": "14:45:00", + "departure_time": "14:45:00", + "stop_id": "bUCR_0_02", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 460, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_14:45", + "arrival_time": "14:51:36", + "departure_time": "14:51:36", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.21, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 461, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_14:45", + "arrival_time": "14:52:54.218000", + "departure_time": "14:52:54.218000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.449, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 462, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_14:45", + "arrival_time": "14:54:32.400000", + "departure_time": "14:54:32.400000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.749, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 463, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_14:45", + "arrival_time": "14:57:24.545000", + "departure_time": "14:57:24.545000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.275, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 464, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_14:45", + "arrival_time": "14:58:29.345000", + "departure_time": "14:58:29.345000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.473, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 465, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_14:45", + "arrival_time": "15:01:13.964000", + "departure_time": "15:01:13.964000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.976, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 466, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_14:45", + "arrival_time": "15:03:40.255000", + "departure_time": "15:03:40.255000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.423, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 467, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_15:05", + "arrival_time": "15:05:00", + "departure_time": "15:05:00", + "stop_id": "bUCR_0_02", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 468, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_15:05", + "arrival_time": "15:11:36", + "departure_time": "15:11:36", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.21, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 469, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_15:05", + "arrival_time": "15:12:54.218000", + "departure_time": "15:12:54.218000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.449, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 470, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_15:05", + "arrival_time": "15:14:32.400000", + "departure_time": "15:14:32.400000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.749, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 471, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_15:05", + "arrival_time": "15:17:24.545000", + "departure_time": "15:17:24.545000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.275, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 472, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_15:05", + "arrival_time": "15:18:29.345000", + "departure_time": "15:18:29.345000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.473, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 473, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_15:05", + "arrival_time": "15:21:13.964000", + "departure_time": "15:21:13.964000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.976, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 474, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_15:05", + "arrival_time": "15:23:40.255000", + "departure_time": "15:23:40.255000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.423, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 475, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_15:30", + "arrival_time": "15:30:00", + "departure_time": "15:30:00", + "stop_id": "bUCR_0_02", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 476, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_15:30", + "arrival_time": "15:36:36", + "departure_time": "15:36:36", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.21, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 477, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_15:30", + "arrival_time": "15:37:54.218000", + "departure_time": "15:37:54.218000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.449, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 478, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_15:30", + "arrival_time": "15:39:32.400000", + "departure_time": "15:39:32.400000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.749, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 479, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_15:30", + "arrival_time": "15:42:24.545000", + "departure_time": "15:42:24.545000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.275, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 480, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_15:30", + "arrival_time": "15:43:29.345000", + "departure_time": "15:43:29.345000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.473, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 481, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_15:30", + "arrival_time": "15:46:13.964000", + "departure_time": "15:46:13.964000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.976, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 482, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_15:30", + "arrival_time": "15:48:40.255000", + "departure_time": "15:48:40.255000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.423, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 483, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_16:05", + "arrival_time": "16:05:00", + "departure_time": "16:05:00", + "stop_id": "bUCR_0_02", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 484, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_16:05", + "arrival_time": "16:11:36", + "departure_time": "16:11:36", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.21, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 485, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_16:05", + "arrival_time": "16:12:54.218000", + "departure_time": "16:12:54.218000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.449, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 486, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_16:05", + "arrival_time": "16:14:32.400000", + "departure_time": "16:14:32.400000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.749, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 487, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_16:05", + "arrival_time": "16:17:24.545000", + "departure_time": "16:17:24.545000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.275, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 488, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_16:05", + "arrival_time": "16:18:29.345000", + "departure_time": "16:18:29.345000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.473, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 489, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_16:05", + "arrival_time": "16:21:13.964000", + "departure_time": "16:21:13.964000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.976, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 490, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_16:05", + "arrival_time": "16:23:40.255000", + "departure_time": "16:23:40.255000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.423, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 491, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_16:40", + "arrival_time": "16:40:00", + "departure_time": "16:40:00", + "stop_id": "bUCR_0_02", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 492, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_16:40", + "arrival_time": "16:46:36", + "departure_time": "16:46:36", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.21, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 493, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_16:40", + "arrival_time": "16:47:54.218000", + "departure_time": "16:47:54.218000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.449, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 494, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_16:40", + "arrival_time": "16:49:32.400000", + "departure_time": "16:49:32.400000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.749, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 495, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_16:40", + "arrival_time": "16:52:24.545000", + "departure_time": "16:52:24.545000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.275, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 496, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_16:40", + "arrival_time": "16:53:29.345000", + "departure_time": "16:53:29.345000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.473, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 497, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_16:40", + "arrival_time": "16:56:13.964000", + "departure_time": "16:56:13.964000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.976, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 498, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_16:40", + "arrival_time": "16:58:40.255000", + "departure_time": "16:58:40.255000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.423, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 499, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_17:05", + "arrival_time": "17:05:00", + "departure_time": "17:05:00", + "stop_id": "bUCR_0_02", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 500, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_17:05", + "arrival_time": "17:11:36", + "departure_time": "17:11:36", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.21, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 501, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_17:05", + "arrival_time": "17:12:54.218000", + "departure_time": "17:12:54.218000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.449, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 502, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_17:05", + "arrival_time": "17:14:32.400000", + "departure_time": "17:14:32.400000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.749, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 503, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_17:05", + "arrival_time": "17:17:24.545000", + "departure_time": "17:17:24.545000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.275, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 504, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_17:05", + "arrival_time": "17:18:29.345000", + "departure_time": "17:18:29.345000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.473, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 505, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_17:05", + "arrival_time": "17:21:13.964000", + "departure_time": "17:21:13.964000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.976, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 506, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_17:05", + "arrival_time": "17:23:40.255000", + "departure_time": "17:23:40.255000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.423, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 507, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_17:40", + "arrival_time": "17:40:00", + "departure_time": "17:40:00", + "stop_id": "bUCR_0_02", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 508, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_17:40", + "arrival_time": "17:46:36", + "departure_time": "17:46:36", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.21, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 509, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_17:40", + "arrival_time": "17:47:54.218000", + "departure_time": "17:47:54.218000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.449, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 510, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_17:40", + "arrival_time": "17:49:32.400000", + "departure_time": "17:49:32.400000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.749, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 511, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_17:40", + "arrival_time": "17:52:24.545000", + "departure_time": "17:52:24.545000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.275, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 512, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_17:40", + "arrival_time": "17:53:29.345000", + "departure_time": "17:53:29.345000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.473, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 513, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_17:40", + "arrival_time": "17:56:13.964000", + "departure_time": "17:56:13.964000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.976, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 514, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_17:40", + "arrival_time": "17:58:40.255000", + "departure_time": "17:58:40.255000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.423, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 515, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_18:05", + "arrival_time": "18:05:00", + "departure_time": "18:05:00", + "stop_id": "bUCR_0_02", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 516, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_18:05", + "arrival_time": "18:11:36", + "departure_time": "18:11:36", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.21, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 517, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_18:05", + "arrival_time": "18:12:54.218000", + "departure_time": "18:12:54.218000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.449, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 518, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_18:05", + "arrival_time": "18:14:32.400000", + "departure_time": "18:14:32.400000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.749, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 519, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_18:05", + "arrival_time": "18:17:24.545000", + "departure_time": "18:17:24.545000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.275, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 520, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_18:05", + "arrival_time": "18:18:29.345000", + "departure_time": "18:18:29.345000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.473, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 521, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_18:05", + "arrival_time": "18:21:13.964000", + "departure_time": "18:21:13.964000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.976, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 522, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_18:05", + "arrival_time": "18:23:40.255000", + "departure_time": "18:23:40.255000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.423, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 523, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_18:35", + "arrival_time": "18:35:00", + "departure_time": "18:35:00", + "stop_id": "bUCR_0_02", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 524, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_18:35", + "arrival_time": "18:41:36", + "departure_time": "18:41:36", + "stop_id": "bUCR_0_05", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.21, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 525, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_18:35", + "arrival_time": "18:42:54.218000", + "departure_time": "18:42:54.218000", + "stop_id": "bUCR_0_06", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.449, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 526, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_18:35", + "arrival_time": "18:44:32.400000", + "departure_time": "18:44:32.400000", + "stop_id": "bUCR_0_07", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.749, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 527, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_18:35", + "arrival_time": "18:47:24.545000", + "departure_time": "18:47:24.545000", + "stop_id": "bUCR_0_08", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.275, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 528, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_18:35", + "arrival_time": "18:48:29.345000", + "departure_time": "18:48:29.345000", + "stop_id": "bUCR_0_09", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.473, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 529, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_18:35", + "arrival_time": "18:51:13.964000", + "departure_time": "18:51:13.964000", + "stop_id": "bUCR_0_10", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.976, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 530, + "fields": { + "feed": "1", + "trip_id": "desde_artes_sin_milla_entresemana_18:35", + "arrival_time": "18:53:40.255000", + "departure_time": "18:53:40.255000", + "stop_id": "bUCR_0_11", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.423, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 531, + "fields": { + "feed": "1", + "trip_id": "desde_artes_con_milla_entresemana_19:00", + "arrival_time": "19:00:00", + "departure_time": "19:00:00", + "stop_id": "bUCR_0_02", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 532, + "fields": { + "feed": "1", + "trip_id": "desde_artes_con_milla_entresemana_19:00", + "arrival_time": "19:02:24.327000", + "departure_time": "19:02:24.327000", + "stop_id": "bUCR_0_03", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.441, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 533, + "fields": { + "feed": "1", + "trip_id": "desde_artes_con_milla_entresemana_19:00", + "arrival_time": "19:04:27.382000", + "departure_time": "19:04:27.382000", + "stop_id": "bUCR_0_04", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.817, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 534, + "fields": { + "feed": "1", + "trip_id": "desde_artes_con_milla_entresemana_19:00", + "arrival_time": "19:09:26.182000", + "departure_time": "19:09:26.182000", + "stop_id": "bUCR_0_05", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.73, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 535, + "fields": { + "feed": "1", + "trip_id": "desde_artes_con_milla_entresemana_19:00", + "arrival_time": "19:10:46.691000", + "departure_time": "19:10:46.691000", + "stop_id": "bUCR_0_06", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.976, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 536, + "fields": { + "feed": "1", + "trip_id": "desde_artes_con_milla_entresemana_19:00", + "arrival_time": "19:12:19.309000", + "departure_time": "19:12:19.309000", + "stop_id": "bUCR_0_07", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.259, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 537, + "fields": { + "feed": "1", + "trip_id": "desde_artes_con_milla_entresemana_19:00", + "arrival_time": "19:15:11.127000", + "departure_time": "19:15:11.127000", + "stop_id": "bUCR_0_08", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.784, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 538, + "fields": { + "feed": "1", + "trip_id": "desde_artes_con_milla_entresemana_19:00", + "arrival_time": "19:16:16.255000", + "departure_time": "19:16:16.255000", + "stop_id": "bUCR_0_09", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.983, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 539, + "fields": { + "feed": "1", + "trip_id": "desde_artes_con_milla_entresemana_19:00", + "arrival_time": "19:19:12.982000", + "departure_time": "19:19:12.982000", + "stop_id": "bUCR_0_10", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.523, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 540, + "fields": { + "feed": "1", + "trip_id": "desde_artes_con_milla_entresemana_19:00", + "arrival_time": "19:21:27.491000", + "departure_time": "19:21:27.491000", + "stop_id": "bUCR_0_11", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.934, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 541, + "fields": { + "feed": "1", + "trip_id": "desde_artes_con_milla_entresemana_19:35", + "arrival_time": "19:35:00", + "departure_time": "19:35:00", + "stop_id": "bUCR_0_02", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 542, + "fields": { + "feed": "1", + "trip_id": "desde_artes_con_milla_entresemana_19:35", + "arrival_time": "19:37:24.327000", + "departure_time": "19:37:24.327000", + "stop_id": "bUCR_0_03", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.441, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 543, + "fields": { + "feed": "1", + "trip_id": "desde_artes_con_milla_entresemana_19:35", + "arrival_time": "19:39:27.382000", + "departure_time": "19:39:27.382000", + "stop_id": "bUCR_0_04", + "stop_sequence": 2, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.817, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 544, + "fields": { + "feed": "1", + "trip_id": "desde_artes_con_milla_entresemana_19:35", + "arrival_time": "19:44:26.182000", + "departure_time": "19:44:26.182000", + "stop_id": "bUCR_0_05", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.73, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 545, + "fields": { + "feed": "1", + "trip_id": "desde_artes_con_milla_entresemana_19:35", + "arrival_time": "19:45:46.691000", + "departure_time": "19:45:46.691000", + "stop_id": "bUCR_0_06", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.976, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 546, + "fields": { + "feed": "1", + "trip_id": "desde_artes_con_milla_entresemana_19:35", + "arrival_time": "19:47:19.309000", + "departure_time": "19:47:19.309000", + "stop_id": "bUCR_0_07", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.259, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 547, + "fields": { + "feed": "1", + "trip_id": "desde_artes_con_milla_entresemana_19:35", + "arrival_time": "19:50:11.127000", + "departure_time": "19:50:11.127000", + "stop_id": "bUCR_0_08", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.784, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 548, + "fields": { + "feed": "1", + "trip_id": "desde_artes_con_milla_entresemana_19:35", + "arrival_time": "19:51:16.255000", + "departure_time": "19:51:16.255000", + "stop_id": "bUCR_0_09", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.983, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 549, + "fields": { + "feed": "1", + "trip_id": "desde_artes_con_milla_entresemana_19:35", + "arrival_time": "19:54:12.982000", + "departure_time": "19:54:12.982000", + "stop_id": "bUCR_0_10", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.523, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 550, + "fields": { + "feed": "1", + "trip_id": "desde_artes_con_milla_entresemana_19:35", + "arrival_time": "19:56:27.491000", + "departure_time": "19:56:27.491000", + "stop_id": "bUCR_0_11", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.934, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 551, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_06:20", + "arrival_time": "06:20:00", + "departure_time": "06:20:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 552, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_06:20", + "arrival_time": "06:24:15.927000", + "departure_time": "06:24:15.927000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.782, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 553, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_06:20", + "arrival_time": "06:27:27.709000", + "departure_time": "06:27:27.709000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.368, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 554, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_06:20", + "arrival_time": "06:28:04.691000", + "departure_time": "06:28:04.691000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.481, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 555, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_06:20", + "arrival_time": "06:29:12.764000", + "departure_time": "06:29:12.764000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.689, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 556, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_06:20", + "arrival_time": "06:31:29.891000", + "departure_time": "06:31:29.891000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.108, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 557, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_06:20", + "arrival_time": "06:33:09.709000", + "departure_time": "06:33:09.709000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.413, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 558, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_06:20", + "arrival_time": "06:34:22.691000", + "departure_time": "06:34:22.691000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.636, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 559, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_06:20", + "arrival_time": "06:39:11.673000", + "departure_time": "06:39:11.673000", + "stop_id": "bUCR_0_02", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.519, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 560, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_06:40", + "arrival_time": "06:40:00", + "departure_time": "06:40:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 561, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_06:40", + "arrival_time": "06:44:00.873000", + "departure_time": "06:44:00.873000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.736, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 562, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_06:40", + "arrival_time": "06:47:28.364000", + "departure_time": "06:47:28.364000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.37, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 563, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_06:40", + "arrival_time": "06:48:12.873000", + "departure_time": "06:48:12.873000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.506, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 564, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_06:40", + "arrival_time": "06:49:11.127000", + "departure_time": "06:49:11.127000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.684, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 565, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_06:40", + "arrival_time": "06:51:27.600000", + "departure_time": "06:51:27.600000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.101, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 566, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_06:40", + "arrival_time": "06:53:11.018000", + "departure_time": "06:53:11.018000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.417, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 567, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_06:40", + "arrival_time": "06:54:22.364000", + "departure_time": "06:54:22.364000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.635, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 568, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_06:40", + "arrival_time": "06:57:17.782000", + "departure_time": "06:57:17.782000", + "stop_id": "bUCR_0_01", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.171, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 569, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_06:50", + "arrival_time": "06:50:00", + "departure_time": "06:50:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 570, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_06:50", + "arrival_time": "06:54:15.927000", + "departure_time": "06:54:15.927000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.782, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 571, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_06:50", + "arrival_time": "06:57:27.709000", + "departure_time": "06:57:27.709000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.368, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 572, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_06:50", + "arrival_time": "06:58:04.691000", + "departure_time": "06:58:04.691000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.481, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 573, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_06:50", + "arrival_time": "06:59:12.764000", + "departure_time": "06:59:12.764000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.689, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 574, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_06:50", + "arrival_time": "07:01:29.891000", + "departure_time": "07:01:29.891000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.108, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 575, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_06:50", + "arrival_time": "07:03:09.709000", + "departure_time": "07:03:09.709000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.413, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 576, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_06:50", + "arrival_time": "07:04:22.691000", + "departure_time": "07:04:22.691000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.636, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 577, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_06:50", + "arrival_time": "07:09:11.673000", + "departure_time": "07:09:11.673000", + "stop_id": "bUCR_0_02", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.519, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 578, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_07:00", + "arrival_time": "07:00:00", + "departure_time": "07:00:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 579, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_07:00", + "arrival_time": "07:04:00.873000", + "departure_time": "07:04:00.873000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.736, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 580, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_07:00", + "arrival_time": "07:07:28.364000", + "departure_time": "07:07:28.364000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.37, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 581, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_07:00", + "arrival_time": "07:08:12.873000", + "departure_time": "07:08:12.873000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.506, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 582, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_07:00", + "arrival_time": "07:09:11.127000", + "departure_time": "07:09:11.127000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.684, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 583, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_07:00", + "arrival_time": "07:11:27.600000", + "departure_time": "07:11:27.600000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.101, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 584, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_07:00", + "arrival_time": "07:13:11.018000", + "departure_time": "07:13:11.018000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.417, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 585, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_07:00", + "arrival_time": "07:14:22.364000", + "departure_time": "07:14:22.364000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.635, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 586, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_07:00", + "arrival_time": "07:17:17.782000", + "departure_time": "07:17:17.782000", + "stop_id": "bUCR_0_01", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.171, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 587, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_07:10", + "arrival_time": "07:10:00", + "departure_time": "07:10:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 588, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_07:10", + "arrival_time": "07:14:15.927000", + "departure_time": "07:14:15.927000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.782, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 589, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_07:10", + "arrival_time": "07:17:27.709000", + "departure_time": "07:17:27.709000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.368, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 590, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_07:10", + "arrival_time": "07:18:04.691000", + "departure_time": "07:18:04.691000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.481, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 591, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_07:10", + "arrival_time": "07:19:12.764000", + "departure_time": "07:19:12.764000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.689, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 592, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_07:10", + "arrival_time": "07:21:29.891000", + "departure_time": "07:21:29.891000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.108, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 593, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_07:10", + "arrival_time": "07:23:09.709000", + "departure_time": "07:23:09.709000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.413, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 594, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_07:10", + "arrival_time": "07:24:22.691000", + "departure_time": "07:24:22.691000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.636, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 595, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_07:10", + "arrival_time": "07:29:11.673000", + "departure_time": "07:29:11.673000", + "stop_id": "bUCR_0_02", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.519, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 596, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_07:30", + "arrival_time": "07:30:00", + "departure_time": "07:30:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 597, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_07:30", + "arrival_time": "07:34:00.873000", + "departure_time": "07:34:00.873000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.736, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 598, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_07:30", + "arrival_time": "07:37:28.364000", + "departure_time": "07:37:28.364000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.37, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 599, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_07:30", + "arrival_time": "07:38:12.873000", + "departure_time": "07:38:12.873000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.506, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 600, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_07:30", + "arrival_time": "07:39:11.127000", + "departure_time": "07:39:11.127000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.684, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 601, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_07:30", + "arrival_time": "07:41:27.600000", + "departure_time": "07:41:27.600000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.101, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 602, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_07:30", + "arrival_time": "07:43:11.018000", + "departure_time": "07:43:11.018000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.417, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 603, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_07:30", + "arrival_time": "07:44:22.364000", + "departure_time": "07:44:22.364000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.635, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 604, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_07:30", + "arrival_time": "07:47:17.782000", + "departure_time": "07:47:17.782000", + "stop_id": "bUCR_0_01", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.171, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 605, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_07:40", + "arrival_time": "07:40:00", + "departure_time": "07:40:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 606, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_07:40", + "arrival_time": "07:44:15.927000", + "departure_time": "07:44:15.927000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.782, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 607, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_07:40", + "arrival_time": "07:47:27.709000", + "departure_time": "07:47:27.709000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.368, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 608, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_07:40", + "arrival_time": "07:48:04.691000", + "departure_time": "07:48:04.691000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.481, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 609, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_07:40", + "arrival_time": "07:49:12.764000", + "departure_time": "07:49:12.764000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.689, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 610, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_07:40", + "arrival_time": "07:51:29.891000", + "departure_time": "07:51:29.891000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.108, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 611, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_07:40", + "arrival_time": "07:53:09.709000", + "departure_time": "07:53:09.709000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.413, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 612, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_07:40", + "arrival_time": "07:54:22.691000", + "departure_time": "07:54:22.691000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.636, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 613, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_07:40", + "arrival_time": "07:59:11.673000", + "departure_time": "07:59:11.673000", + "stop_id": "bUCR_0_02", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.519, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 614, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_07:50", + "arrival_time": "07:50:00", + "departure_time": "07:50:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 615, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_07:50", + "arrival_time": "07:54:00.873000", + "departure_time": "07:54:00.873000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.736, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 616, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_07:50", + "arrival_time": "07:57:28.364000", + "departure_time": "07:57:28.364000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.37, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 617, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_07:50", + "arrival_time": "07:58:12.873000", + "departure_time": "07:58:12.873000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.506, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 618, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_07:50", + "arrival_time": "07:59:11.127000", + "departure_time": "07:59:11.127000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.684, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 619, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_07:50", + "arrival_time": "08:01:27.600000", + "departure_time": "08:01:27.600000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.101, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 620, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_07:50", + "arrival_time": "08:03:11.018000", + "departure_time": "08:03:11.018000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.417, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 621, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_07:50", + "arrival_time": "08:04:22.364000", + "departure_time": "08:04:22.364000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.635, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 622, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_07:50", + "arrival_time": "08:07:17.782000", + "departure_time": "08:07:17.782000", + "stop_id": "bUCR_0_01", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.171, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 623, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_08:00", + "arrival_time": "08:00:00", + "departure_time": "08:00:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 624, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_08:00", + "arrival_time": "08:04:15.927000", + "departure_time": "08:04:15.927000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.782, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 625, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_08:00", + "arrival_time": "08:07:27.709000", + "departure_time": "08:07:27.709000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.368, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 626, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_08:00", + "arrival_time": "08:08:04.691000", + "departure_time": "08:08:04.691000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.481, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 627, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_08:00", + "arrival_time": "08:09:12.764000", + "departure_time": "08:09:12.764000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.689, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 628, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_08:00", + "arrival_time": "08:11:29.891000", + "departure_time": "08:11:29.891000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.108, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 629, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_08:00", + "arrival_time": "08:13:09.709000", + "departure_time": "08:13:09.709000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.413, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 630, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_08:00", + "arrival_time": "08:14:22.691000", + "departure_time": "08:14:22.691000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.636, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 631, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_08:00", + "arrival_time": "08:19:11.673000", + "departure_time": "08:19:11.673000", + "stop_id": "bUCR_0_02", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.519, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 632, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_08:35", + "arrival_time": "08:35:00", + "departure_time": "08:35:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 633, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_08:35", + "arrival_time": "08:39:00.873000", + "departure_time": "08:39:00.873000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.736, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 634, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_08:35", + "arrival_time": "08:42:28.364000", + "departure_time": "08:42:28.364000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.37, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 635, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_08:35", + "arrival_time": "08:43:12.873000", + "departure_time": "08:43:12.873000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.506, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 636, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_08:35", + "arrival_time": "08:44:11.127000", + "departure_time": "08:44:11.127000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.684, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 637, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_08:35", + "arrival_time": "08:46:27.600000", + "departure_time": "08:46:27.600000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.101, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 638, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_08:35", + "arrival_time": "08:48:11.018000", + "departure_time": "08:48:11.018000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.417, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 639, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_08:35", + "arrival_time": "08:49:22.364000", + "departure_time": "08:49:22.364000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.635, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 640, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_08:35", + "arrival_time": "08:52:17.782000", + "departure_time": "08:52:17.782000", + "stop_id": "bUCR_0_01", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.171, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 641, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_08:45", + "arrival_time": "08:45:00", + "departure_time": "08:45:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 642, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_08:45", + "arrival_time": "08:49:15.927000", + "departure_time": "08:49:15.927000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.782, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 643, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_08:45", + "arrival_time": "08:52:27.709000", + "departure_time": "08:52:27.709000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.368, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 644, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_08:45", + "arrival_time": "08:53:04.691000", + "departure_time": "08:53:04.691000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.481, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 645, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_08:45", + "arrival_time": "08:54:12.764000", + "departure_time": "08:54:12.764000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.689, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 646, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_08:45", + "arrival_time": "08:56:29.891000", + "departure_time": "08:56:29.891000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.108, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 647, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_08:45", + "arrival_time": "08:58:09.709000", + "departure_time": "08:58:09.709000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.413, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 648, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_08:45", + "arrival_time": "08:59:22.691000", + "departure_time": "08:59:22.691000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.636, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 649, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_08:45", + "arrival_time": "09:04:11.673000", + "departure_time": "09:04:11.673000", + "stop_id": "bUCR_0_02", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.519, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 650, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_08:55", + "arrival_time": "08:55:00", + "departure_time": "08:55:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 651, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_08:55", + "arrival_time": "08:59:00.873000", + "departure_time": "08:59:00.873000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.736, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 652, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_08:55", + "arrival_time": "09:02:28.364000", + "departure_time": "09:02:28.364000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.37, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 653, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_08:55", + "arrival_time": "09:03:12.873000", + "departure_time": "09:03:12.873000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.506, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 654, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_08:55", + "arrival_time": "09:04:11.127000", + "departure_time": "09:04:11.127000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.684, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 655, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_08:55", + "arrival_time": "09:06:27.600000", + "departure_time": "09:06:27.600000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.101, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 656, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_08:55", + "arrival_time": "09:08:11.018000", + "departure_time": "09:08:11.018000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.417, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 657, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_08:55", + "arrival_time": "09:09:22.364000", + "departure_time": "09:09:22.364000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.635, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 658, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_08:55", + "arrival_time": "09:12:17.782000", + "departure_time": "09:12:17.782000", + "stop_id": "bUCR_0_01", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.171, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 659, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_09:05", + "arrival_time": "09:05:00", + "departure_time": "09:05:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 660, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_09:05", + "arrival_time": "09:09:15.927000", + "departure_time": "09:09:15.927000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.782, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 661, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_09:05", + "arrival_time": "09:12:27.709000", + "departure_time": "09:12:27.709000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.368, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 662, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_09:05", + "arrival_time": "09:13:04.691000", + "departure_time": "09:13:04.691000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.481, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 663, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_09:05", + "arrival_time": "09:14:12.764000", + "departure_time": "09:14:12.764000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.689, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 664, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_09:05", + "arrival_time": "09:16:29.891000", + "departure_time": "09:16:29.891000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.108, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 665, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_09:05", + "arrival_time": "09:18:09.709000", + "departure_time": "09:18:09.709000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.413, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 666, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_09:05", + "arrival_time": "09:19:22.691000", + "departure_time": "09:19:22.691000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.636, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 667, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_09:05", + "arrival_time": "09:24:11.673000", + "departure_time": "09:24:11.673000", + "stop_id": "bUCR_0_02", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.519, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 668, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_09:25", + "arrival_time": "09:25:00", + "departure_time": "09:25:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 669, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_09:25", + "arrival_time": "09:29:00.873000", + "departure_time": "09:29:00.873000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.736, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 670, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_09:25", + "arrival_time": "09:32:28.364000", + "departure_time": "09:32:28.364000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.37, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 671, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_09:25", + "arrival_time": "09:33:12.873000", + "departure_time": "09:33:12.873000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.506, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 672, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_09:25", + "arrival_time": "09:34:11.127000", + "departure_time": "09:34:11.127000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.684, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 673, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_09:25", + "arrival_time": "09:36:27.600000", + "departure_time": "09:36:27.600000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.101, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 674, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_09:25", + "arrival_time": "09:38:11.018000", + "departure_time": "09:38:11.018000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.417, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 675, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_09:25", + "arrival_time": "09:39:22.364000", + "departure_time": "09:39:22.364000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.635, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 676, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_09:25", + "arrival_time": "09:42:17.782000", + "departure_time": "09:42:17.782000", + "stop_id": "bUCR_0_01", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.171, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 677, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_09:35", + "arrival_time": "09:35:00", + "departure_time": "09:35:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 678, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_09:35", + "arrival_time": "09:39:15.927000", + "departure_time": "09:39:15.927000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.782, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 679, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_09:35", + "arrival_time": "09:42:27.709000", + "departure_time": "09:42:27.709000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.368, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 680, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_09:35", + "arrival_time": "09:43:04.691000", + "departure_time": "09:43:04.691000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.481, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 681, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_09:35", + "arrival_time": "09:44:12.764000", + "departure_time": "09:44:12.764000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.689, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 682, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_09:35", + "arrival_time": "09:46:29.891000", + "departure_time": "09:46:29.891000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.108, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 683, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_09:35", + "arrival_time": "09:48:09.709000", + "departure_time": "09:48:09.709000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.413, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 684, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_09:35", + "arrival_time": "09:49:22.691000", + "departure_time": "09:49:22.691000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.636, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 685, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_09:35", + "arrival_time": "09:54:11.673000", + "departure_time": "09:54:11.673000", + "stop_id": "bUCR_0_02", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.519, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 686, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_09:45", + "arrival_time": "09:45:00", + "departure_time": "09:45:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 687, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_09:45", + "arrival_time": "09:49:00.873000", + "departure_time": "09:49:00.873000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.736, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 688, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_09:45", + "arrival_time": "09:52:28.364000", + "departure_time": "09:52:28.364000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.37, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 689, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_09:45", + "arrival_time": "09:53:12.873000", + "departure_time": "09:53:12.873000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.506, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 690, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_09:45", + "arrival_time": "09:54:11.127000", + "departure_time": "09:54:11.127000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.684, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 691, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_09:45", + "arrival_time": "09:56:27.600000", + "departure_time": "09:56:27.600000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.101, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 692, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_09:45", + "arrival_time": "09:58:11.018000", + "departure_time": "09:58:11.018000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.417, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 693, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_09:45", + "arrival_time": "09:59:22.364000", + "departure_time": "09:59:22.364000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.635, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 694, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_09:45", + "arrival_time": "10:02:17.782000", + "departure_time": "10:02:17.782000", + "stop_id": "bUCR_0_01", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.171, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 695, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_09:55", + "arrival_time": "09:55:00", + "departure_time": "09:55:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 696, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_09:55", + "arrival_time": "09:59:15.927000", + "departure_time": "09:59:15.927000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.782, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 697, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_09:55", + "arrival_time": "10:02:27.709000", + "departure_time": "10:02:27.709000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.368, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 698, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_09:55", + "arrival_time": "10:03:04.691000", + "departure_time": "10:03:04.691000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.481, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 699, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_09:55", + "arrival_time": "10:04:12.764000", + "departure_time": "10:04:12.764000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.689, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 700, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_09:55", + "arrival_time": "10:06:29.891000", + "departure_time": "10:06:29.891000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.108, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 701, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_09:55", + "arrival_time": "10:08:09.709000", + "departure_time": "10:08:09.709000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.413, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 702, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_09:55", + "arrival_time": "10:09:22.691000", + "departure_time": "10:09:22.691000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.636, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 703, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_09:55", + "arrival_time": "10:14:11.673000", + "departure_time": "10:14:11.673000", + "stop_id": "bUCR_0_02", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.519, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 704, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_10:15", + "arrival_time": "10:15:00", + "departure_time": "10:15:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 705, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_10:15", + "arrival_time": "10:19:00.873000", + "departure_time": "10:19:00.873000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.736, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 706, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_10:15", + "arrival_time": "10:22:28.364000", + "departure_time": "10:22:28.364000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.37, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 707, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_10:15", + "arrival_time": "10:23:12.873000", + "departure_time": "10:23:12.873000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.506, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 708, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_10:15", + "arrival_time": "10:24:11.127000", + "departure_time": "10:24:11.127000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.684, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 709, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_10:15", + "arrival_time": "10:26:27.600000", + "departure_time": "10:26:27.600000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.101, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 710, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_10:15", + "arrival_time": "10:28:11.018000", + "departure_time": "10:28:11.018000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.417, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 711, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_10:15", + "arrival_time": "10:29:22.364000", + "departure_time": "10:29:22.364000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.635, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 712, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_10:15", + "arrival_time": "10:32:17.782000", + "departure_time": "10:32:17.782000", + "stop_id": "bUCR_0_01", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.171, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 713, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_10:25", + "arrival_time": "10:25:00", + "departure_time": "10:25:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 714, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_10:25", + "arrival_time": "10:29:15.927000", + "departure_time": "10:29:15.927000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.782, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 715, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_10:25", + "arrival_time": "10:32:27.709000", + "departure_time": "10:32:27.709000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.368, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 716, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_10:25", + "arrival_time": "10:33:04.691000", + "departure_time": "10:33:04.691000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.481, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 717, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_10:25", + "arrival_time": "10:34:12.764000", + "departure_time": "10:34:12.764000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.689, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 718, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_10:25", + "arrival_time": "10:36:29.891000", + "departure_time": "10:36:29.891000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.108, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 719, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_10:25", + "arrival_time": "10:38:09.709000", + "departure_time": "10:38:09.709000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.413, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 720, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_10:25", + "arrival_time": "10:39:22.691000", + "departure_time": "10:39:22.691000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.636, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 721, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_10:25", + "arrival_time": "10:44:11.673000", + "departure_time": "10:44:11.673000", + "stop_id": "bUCR_0_02", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.519, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 722, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_10:35", + "arrival_time": "10:35:00", + "departure_time": "10:35:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 723, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_10:35", + "arrival_time": "10:39:00.873000", + "departure_time": "10:39:00.873000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.736, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 724, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_10:35", + "arrival_time": "10:42:28.364000", + "departure_time": "10:42:28.364000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.37, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 725, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_10:35", + "arrival_time": "10:43:12.873000", + "departure_time": "10:43:12.873000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.506, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 726, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_10:35", + "arrival_time": "10:44:11.127000", + "departure_time": "10:44:11.127000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.684, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 727, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_10:35", + "arrival_time": "10:46:27.600000", + "departure_time": "10:46:27.600000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.101, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 728, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_10:35", + "arrival_time": "10:48:11.018000", + "departure_time": "10:48:11.018000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.417, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 729, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_10:35", + "arrival_time": "10:49:22.364000", + "departure_time": "10:49:22.364000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.635, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 730, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_10:35", + "arrival_time": "10:52:17.782000", + "departure_time": "10:52:17.782000", + "stop_id": "bUCR_0_01", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.171, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 731, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_10:45", + "arrival_time": "10:45:00", + "departure_time": "10:45:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 732, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_10:45", + "arrival_time": "10:49:15.927000", + "departure_time": "10:49:15.927000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.782, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 733, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_10:45", + "arrival_time": "10:52:27.709000", + "departure_time": "10:52:27.709000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.368, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 734, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_10:45", + "arrival_time": "10:53:04.691000", + "departure_time": "10:53:04.691000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.481, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 735, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_10:45", + "arrival_time": "10:54:12.764000", + "departure_time": "10:54:12.764000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.689, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 736, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_10:45", + "arrival_time": "10:56:29.891000", + "departure_time": "10:56:29.891000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.108, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 737, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_10:45", + "arrival_time": "10:58:09.709000", + "departure_time": "10:58:09.709000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.413, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 738, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_10:45", + "arrival_time": "10:59:22.691000", + "departure_time": "10:59:22.691000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.636, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 739, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_10:45", + "arrival_time": "11:04:11.673000", + "departure_time": "11:04:11.673000", + "stop_id": "bUCR_0_02", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.519, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 740, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_11:05", + "arrival_time": "11:05:00", + "departure_time": "11:05:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 741, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_11:05", + "arrival_time": "11:09:00.873000", + "departure_time": "11:09:00.873000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.736, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 742, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_11:05", + "arrival_time": "11:12:28.364000", + "departure_time": "11:12:28.364000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.37, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 743, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_11:05", + "arrival_time": "11:13:12.873000", + "departure_time": "11:13:12.873000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.506, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 744, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_11:05", + "arrival_time": "11:14:11.127000", + "departure_time": "11:14:11.127000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.684, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 745, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_11:05", + "arrival_time": "11:16:27.600000", + "departure_time": "11:16:27.600000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.101, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 746, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_11:05", + "arrival_time": "11:18:11.018000", + "departure_time": "11:18:11.018000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.417, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 747, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_11:05", + "arrival_time": "11:19:22.364000", + "departure_time": "11:19:22.364000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.635, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 748, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_11:05", + "arrival_time": "11:22:17.782000", + "departure_time": "11:22:17.782000", + "stop_id": "bUCR_0_01", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.171, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 749, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_11:15", + "arrival_time": "11:15:00", + "departure_time": "11:15:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 750, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_11:15", + "arrival_time": "11:19:15.927000", + "departure_time": "11:19:15.927000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.782, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 751, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_11:15", + "arrival_time": "11:22:27.709000", + "departure_time": "11:22:27.709000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.368, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 752, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_11:15", + "arrival_time": "11:23:04.691000", + "departure_time": "11:23:04.691000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.481, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 753, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_11:15", + "arrival_time": "11:24:12.764000", + "departure_time": "11:24:12.764000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.689, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 754, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_11:15", + "arrival_time": "11:26:29.891000", + "departure_time": "11:26:29.891000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.108, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 755, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_11:15", + "arrival_time": "11:28:09.709000", + "departure_time": "11:28:09.709000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.413, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 756, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_11:15", + "arrival_time": "11:29:22.691000", + "departure_time": "11:29:22.691000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.636, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 757, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_11:15", + "arrival_time": "11:34:11.673000", + "departure_time": "11:34:11.673000", + "stop_id": "bUCR_0_02", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.519, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 758, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_11:20", + "arrival_time": "11:20:00", + "departure_time": "11:20:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 759, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_11:20", + "arrival_time": "11:24:00.873000", + "departure_time": "11:24:00.873000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.736, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 760, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_11:20", + "arrival_time": "11:27:28.364000", + "departure_time": "11:27:28.364000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.37, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 761, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_11:20", + "arrival_time": "11:28:12.873000", + "departure_time": "11:28:12.873000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.506, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 762, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_11:20", + "arrival_time": "11:29:11.127000", + "departure_time": "11:29:11.127000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.684, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 763, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_11:20", + "arrival_time": "11:31:27.600000", + "departure_time": "11:31:27.600000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.101, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 764, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_11:20", + "arrival_time": "11:33:11.018000", + "departure_time": "11:33:11.018000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.417, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 765, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_11:20", + "arrival_time": "11:34:22.364000", + "departure_time": "11:34:22.364000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.635, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 766, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_11:20", + "arrival_time": "11:37:17.782000", + "departure_time": "11:37:17.782000", + "stop_id": "bUCR_0_01", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.171, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 767, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_11:30", + "arrival_time": "11:30:00", + "departure_time": "11:30:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 768, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_11:30", + "arrival_time": "11:34:15.927000", + "departure_time": "11:34:15.927000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.782, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 769, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_11:30", + "arrival_time": "11:37:27.709000", + "departure_time": "11:37:27.709000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.368, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 770, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_11:30", + "arrival_time": "11:38:04.691000", + "departure_time": "11:38:04.691000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.481, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 771, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_11:30", + "arrival_time": "11:39:12.764000", + "departure_time": "11:39:12.764000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.689, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 772, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_11:30", + "arrival_time": "11:41:29.891000", + "departure_time": "11:41:29.891000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.108, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 773, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_11:30", + "arrival_time": "11:43:09.709000", + "departure_time": "11:43:09.709000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.413, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 774, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_11:30", + "arrival_time": "11:44:22.691000", + "departure_time": "11:44:22.691000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.636, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 775, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_11:30", + "arrival_time": "11:49:11.673000", + "departure_time": "11:49:11.673000", + "stop_id": "bUCR_0_02", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.519, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 776, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_11:40", + "arrival_time": "11:40:00", + "departure_time": "11:40:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 777, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_11:40", + "arrival_time": "11:44:00.873000", + "departure_time": "11:44:00.873000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.736, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 778, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_11:40", + "arrival_time": "11:47:28.364000", + "departure_time": "11:47:28.364000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.37, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 779, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_11:40", + "arrival_time": "11:48:12.873000", + "departure_time": "11:48:12.873000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.506, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 780, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_11:40", + "arrival_time": "11:49:11.127000", + "departure_time": "11:49:11.127000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.684, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 781, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_11:40", + "arrival_time": "11:51:27.600000", + "departure_time": "11:51:27.600000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.101, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 782, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_11:40", + "arrival_time": "11:53:11.018000", + "departure_time": "11:53:11.018000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.417, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 783, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_11:40", + "arrival_time": "11:54:22.364000", + "departure_time": "11:54:22.364000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.635, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 784, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_11:40", + "arrival_time": "11:57:17.782000", + "departure_time": "11:57:17.782000", + "stop_id": "bUCR_0_01", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.171, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 785, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_11:50", + "arrival_time": "11:50:00", + "departure_time": "11:50:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 786, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_11:50", + "arrival_time": "11:54:15.927000", + "departure_time": "11:54:15.927000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.782, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 787, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_11:50", + "arrival_time": "11:57:27.709000", + "departure_time": "11:57:27.709000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.368, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 788, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_11:50", + "arrival_time": "11:58:04.691000", + "departure_time": "11:58:04.691000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.481, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 789, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_11:50", + "arrival_time": "11:59:12.764000", + "departure_time": "11:59:12.764000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.689, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 790, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_11:50", + "arrival_time": "12:01:29.891000", + "departure_time": "12:01:29.891000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.108, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 791, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_11:50", + "arrival_time": "12:03:09.709000", + "departure_time": "12:03:09.709000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.413, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 792, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_11:50", + "arrival_time": "12:04:22.691000", + "departure_time": "12:04:22.691000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.636, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 793, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_11:50", + "arrival_time": "12:09:11.673000", + "departure_time": "12:09:11.673000", + "stop_id": "bUCR_0_02", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.519, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 794, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_12:05", + "arrival_time": "12:05:00", + "departure_time": "12:05:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 795, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_12:05", + "arrival_time": "12:09:00.873000", + "departure_time": "12:09:00.873000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.736, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 796, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_12:05", + "arrival_time": "12:12:28.364000", + "departure_time": "12:12:28.364000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.37, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 797, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_12:05", + "arrival_time": "12:13:12.873000", + "departure_time": "12:13:12.873000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.506, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 798, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_12:05", + "arrival_time": "12:14:11.127000", + "departure_time": "12:14:11.127000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.684, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 799, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_12:05", + "arrival_time": "12:16:27.600000", + "departure_time": "12:16:27.600000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.101, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 800, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_12:05", + "arrival_time": "12:18:11.018000", + "departure_time": "12:18:11.018000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.417, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 801, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_12:05", + "arrival_time": "12:19:22.364000", + "departure_time": "12:19:22.364000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.635, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 802, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_12:05", + "arrival_time": "12:22:17.782000", + "departure_time": "12:22:17.782000", + "stop_id": "bUCR_0_01", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.171, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 803, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_12:10", + "arrival_time": "12:10:00", + "departure_time": "12:10:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 804, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_12:10", + "arrival_time": "12:14:15.927000", + "departure_time": "12:14:15.927000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.782, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 805, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_12:10", + "arrival_time": "12:17:27.709000", + "departure_time": "12:17:27.709000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.368, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 806, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_12:10", + "arrival_time": "12:18:04.691000", + "departure_time": "12:18:04.691000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.481, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 807, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_12:10", + "arrival_time": "12:19:12.764000", + "departure_time": "12:19:12.764000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.689, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 808, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_12:10", + "arrival_time": "12:21:29.891000", + "departure_time": "12:21:29.891000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.108, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 809, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_12:10", + "arrival_time": "12:23:09.709000", + "departure_time": "12:23:09.709000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.413, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 810, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_12:10", + "arrival_time": "12:24:22.691000", + "departure_time": "12:24:22.691000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.636, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 811, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_12:10", + "arrival_time": "12:29:11.673000", + "departure_time": "12:29:11.673000", + "stop_id": "bUCR_0_02", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.519, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 812, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_12:15", + "arrival_time": "12:15:00", + "departure_time": "12:15:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 813, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_12:15", + "arrival_time": "12:19:00.873000", + "departure_time": "12:19:00.873000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.736, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 814, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_12:15", + "arrival_time": "12:22:28.364000", + "departure_time": "12:22:28.364000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.37, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 815, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_12:15", + "arrival_time": "12:23:12.873000", + "departure_time": "12:23:12.873000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.506, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 816, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_12:15", + "arrival_time": "12:24:11.127000", + "departure_time": "12:24:11.127000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.684, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 817, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_12:15", + "arrival_time": "12:26:27.600000", + "departure_time": "12:26:27.600000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.101, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 818, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_12:15", + "arrival_time": "12:28:11.018000", + "departure_time": "12:28:11.018000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.417, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 819, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_12:15", + "arrival_time": "12:29:22.364000", + "departure_time": "12:29:22.364000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.635, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 820, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_12:15", + "arrival_time": "12:32:17.782000", + "departure_time": "12:32:17.782000", + "stop_id": "bUCR_0_01", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.171, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 821, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_12:25", + "arrival_time": "12:25:00", + "departure_time": "12:25:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 822, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_12:25", + "arrival_time": "12:29:15.927000", + "departure_time": "12:29:15.927000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.782, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 823, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_12:25", + "arrival_time": "12:32:27.709000", + "departure_time": "12:32:27.709000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.368, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 824, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_12:25", + "arrival_time": "12:33:04.691000", + "departure_time": "12:33:04.691000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.481, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 825, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_12:25", + "arrival_time": "12:34:12.764000", + "departure_time": "12:34:12.764000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.689, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 826, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_12:25", + "arrival_time": "12:36:29.891000", + "departure_time": "12:36:29.891000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.108, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 827, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_12:25", + "arrival_time": "12:38:09.709000", + "departure_time": "12:38:09.709000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.413, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 828, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_12:25", + "arrival_time": "12:39:22.691000", + "departure_time": "12:39:22.691000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.636, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 829, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_12:25", + "arrival_time": "12:44:11.673000", + "departure_time": "12:44:11.673000", + "stop_id": "bUCR_0_02", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.519, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 830, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_12:50", + "arrival_time": "12:50:00", + "departure_time": "12:50:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 831, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_12:50", + "arrival_time": "12:54:00.873000", + "departure_time": "12:54:00.873000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.736, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 832, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_12:50", + "arrival_time": "12:57:28.364000", + "departure_time": "12:57:28.364000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.37, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 833, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_12:50", + "arrival_time": "12:58:12.873000", + "departure_time": "12:58:12.873000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.506, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 834, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_12:50", + "arrival_time": "12:59:11.127000", + "departure_time": "12:59:11.127000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.684, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 835, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_12:50", + "arrival_time": "13:01:27.600000", + "departure_time": "13:01:27.600000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.101, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 836, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_12:50", + "arrival_time": "13:03:11.018000", + "departure_time": "13:03:11.018000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.417, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 837, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_12:50", + "arrival_time": "13:04:22.364000", + "departure_time": "13:04:22.364000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.635, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 838, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_12:50", + "arrival_time": "13:07:17.782000", + "departure_time": "13:07:17.782000", + "stop_id": "bUCR_0_01", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.171, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 839, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_13:00", + "arrival_time": "13:00:00", + "departure_time": "13:00:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 840, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_13:00", + "arrival_time": "13:04:15.927000", + "departure_time": "13:04:15.927000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.782, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 841, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_13:00", + "arrival_time": "13:07:27.709000", + "departure_time": "13:07:27.709000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.368, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 842, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_13:00", + "arrival_time": "13:08:04.691000", + "departure_time": "13:08:04.691000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.481, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 843, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_13:00", + "arrival_time": "13:09:12.764000", + "departure_time": "13:09:12.764000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.689, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 844, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_13:00", + "arrival_time": "13:11:29.891000", + "departure_time": "13:11:29.891000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.108, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 845, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_13:00", + "arrival_time": "13:13:09.709000", + "departure_time": "13:13:09.709000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.413, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 846, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_13:00", + "arrival_time": "13:14:22.691000", + "departure_time": "13:14:22.691000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.636, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 847, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_13:00", + "arrival_time": "13:19:11.673000", + "departure_time": "13:19:11.673000", + "stop_id": "bUCR_0_02", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.519, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 848, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_13:25", + "arrival_time": "13:25:00", + "departure_time": "13:25:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 849, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_13:25", + "arrival_time": "13:29:00.873000", + "departure_time": "13:29:00.873000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.736, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 850, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_13:25", + "arrival_time": "13:32:28.364000", + "departure_time": "13:32:28.364000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.37, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 851, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_13:25", + "arrival_time": "13:33:12.873000", + "departure_time": "13:33:12.873000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.506, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 852, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_13:25", + "arrival_time": "13:34:11.127000", + "departure_time": "13:34:11.127000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.684, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 853, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_13:25", + "arrival_time": "13:36:27.600000", + "departure_time": "13:36:27.600000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.101, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 854, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_13:25", + "arrival_time": "13:38:11.018000", + "departure_time": "13:38:11.018000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.417, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 855, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_13:25", + "arrival_time": "13:39:22.364000", + "departure_time": "13:39:22.364000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.635, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 856, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_13:25", + "arrival_time": "13:42:17.782000", + "departure_time": "13:42:17.782000", + "stop_id": "bUCR_0_01", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.171, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 857, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_13:40", + "arrival_time": "13:40:00", + "departure_time": "13:40:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 858, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_13:40", + "arrival_time": "13:44:15.927000", + "departure_time": "13:44:15.927000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.782, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 859, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_13:40", + "arrival_time": "13:47:27.709000", + "departure_time": "13:47:27.709000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.368, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 860, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_13:40", + "arrival_time": "13:48:04.691000", + "departure_time": "13:48:04.691000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.481, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 861, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_13:40", + "arrival_time": "13:49:12.764000", + "departure_time": "13:49:12.764000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.689, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 862, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_13:40", + "arrival_time": "13:51:29.891000", + "departure_time": "13:51:29.891000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.108, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 863, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_13:40", + "arrival_time": "13:53:09.709000", + "departure_time": "13:53:09.709000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.413, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 864, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_13:40", + "arrival_time": "13:54:22.691000", + "departure_time": "13:54:22.691000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.636, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 865, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_13:40", + "arrival_time": "13:59:11.673000", + "departure_time": "13:59:11.673000", + "stop_id": "bUCR_0_02", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.519, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 866, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_13:50", + "arrival_time": "13:50:00", + "departure_time": "13:50:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 867, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_13:50", + "arrival_time": "13:54:00.873000", + "departure_time": "13:54:00.873000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.736, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 868, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_13:50", + "arrival_time": "13:57:28.364000", + "departure_time": "13:57:28.364000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.37, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 869, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_13:50", + "arrival_time": "13:58:12.873000", + "departure_time": "13:58:12.873000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.506, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 870, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_13:50", + "arrival_time": "13:59:11.127000", + "departure_time": "13:59:11.127000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.684, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 871, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_13:50", + "arrival_time": "14:01:27.600000", + "departure_time": "14:01:27.600000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.101, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 872, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_13:50", + "arrival_time": "14:03:11.018000", + "departure_time": "14:03:11.018000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.417, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 873, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_13:50", + "arrival_time": "14:04:22.364000", + "departure_time": "14:04:22.364000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.635, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 874, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_13:50", + "arrival_time": "14:07:17.782000", + "departure_time": "14:07:17.782000", + "stop_id": "bUCR_0_01", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.171, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 875, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_14:00", + "arrival_time": "14:00:00", + "departure_time": "14:00:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 876, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_14:00", + "arrival_time": "14:04:15.927000", + "departure_time": "14:04:15.927000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.782, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 877, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_14:00", + "arrival_time": "14:07:27.709000", + "departure_time": "14:07:27.709000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.368, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 878, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_14:00", + "arrival_time": "14:08:04.691000", + "departure_time": "14:08:04.691000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.481, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 879, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_14:00", + "arrival_time": "14:09:12.764000", + "departure_time": "14:09:12.764000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.689, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 880, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_14:00", + "arrival_time": "14:11:29.891000", + "departure_time": "14:11:29.891000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.108, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 881, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_14:00", + "arrival_time": "14:13:09.709000", + "departure_time": "14:13:09.709000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.413, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 882, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_14:00", + "arrival_time": "14:14:22.691000", + "departure_time": "14:14:22.691000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.636, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 883, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_14:00", + "arrival_time": "14:19:11.673000", + "departure_time": "14:19:11.673000", + "stop_id": "bUCR_0_02", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.519, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 884, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_14:10", + "arrival_time": "14:10:00", + "departure_time": "14:10:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 885, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_14:10", + "arrival_time": "14:14:00.873000", + "departure_time": "14:14:00.873000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.736, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 886, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_14:10", + "arrival_time": "14:17:28.364000", + "departure_time": "14:17:28.364000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.37, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 887, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_14:10", + "arrival_time": "14:18:12.873000", + "departure_time": "14:18:12.873000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.506, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 888, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_14:10", + "arrival_time": "14:19:11.127000", + "departure_time": "14:19:11.127000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.684, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 889, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_14:10", + "arrival_time": "14:21:27.600000", + "departure_time": "14:21:27.600000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.101, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 890, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_14:10", + "arrival_time": "14:23:11.018000", + "departure_time": "14:23:11.018000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.417, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 891, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_14:10", + "arrival_time": "14:24:22.364000", + "departure_time": "14:24:22.364000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.635, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 892, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_14:10", + "arrival_time": "14:27:17.782000", + "departure_time": "14:27:17.782000", + "stop_id": "bUCR_0_01", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.171, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 893, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_14:25", + "arrival_time": "14:25:00", + "departure_time": "14:25:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 894, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_14:25", + "arrival_time": "14:29:15.927000", + "departure_time": "14:29:15.927000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.782, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 895, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_14:25", + "arrival_time": "14:32:27.709000", + "departure_time": "14:32:27.709000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.368, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 896, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_14:25", + "arrival_time": "14:33:04.691000", + "departure_time": "14:33:04.691000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.481, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 897, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_14:25", + "arrival_time": "14:34:12.764000", + "departure_time": "14:34:12.764000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.689, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 898, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_14:25", + "arrival_time": "14:36:29.891000", + "departure_time": "14:36:29.891000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.108, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 899, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_14:25", + "arrival_time": "14:38:09.709000", + "departure_time": "14:38:09.709000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.413, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 900, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_14:25", + "arrival_time": "14:39:22.691000", + "departure_time": "14:39:22.691000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.636, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 901, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_14:25", + "arrival_time": "14:44:11.673000", + "departure_time": "14:44:11.673000", + "stop_id": "bUCR_0_02", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.519, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 902, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_14:35", + "arrival_time": "14:35:00", + "departure_time": "14:35:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 903, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_14:35", + "arrival_time": "14:39:00.873000", + "departure_time": "14:39:00.873000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.736, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 904, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_14:35", + "arrival_time": "14:42:28.364000", + "departure_time": "14:42:28.364000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.37, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 905, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_14:35", + "arrival_time": "14:43:12.873000", + "departure_time": "14:43:12.873000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.506, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 906, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_14:35", + "arrival_time": "14:44:11.127000", + "departure_time": "14:44:11.127000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.684, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 907, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_14:35", + "arrival_time": "14:46:27.600000", + "departure_time": "14:46:27.600000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.101, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 908, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_14:35", + "arrival_time": "14:48:11.018000", + "departure_time": "14:48:11.018000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.417, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 909, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_14:35", + "arrival_time": "14:49:22.364000", + "departure_time": "14:49:22.364000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.635, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 910, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_14:35", + "arrival_time": "14:52:17.782000", + "departure_time": "14:52:17.782000", + "stop_id": "bUCR_0_01", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.171, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 911, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_14:45", + "arrival_time": "14:45:00", + "departure_time": "14:45:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 912, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_14:45", + "arrival_time": "14:49:15.927000", + "departure_time": "14:49:15.927000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.782, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 913, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_14:45", + "arrival_time": "14:52:27.709000", + "departure_time": "14:52:27.709000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.368, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 914, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_14:45", + "arrival_time": "14:53:04.691000", + "departure_time": "14:53:04.691000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.481, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 915, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_14:45", + "arrival_time": "14:54:12.764000", + "departure_time": "14:54:12.764000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.689, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 916, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_14:45", + "arrival_time": "14:56:29.891000", + "departure_time": "14:56:29.891000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.108, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 917, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_14:45", + "arrival_time": "14:58:09.709000", + "departure_time": "14:58:09.709000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.413, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 918, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_14:45", + "arrival_time": "14:59:22.691000", + "departure_time": "14:59:22.691000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.636, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 919, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_14:45", + "arrival_time": "15:04:11.673000", + "departure_time": "15:04:11.673000", + "stop_id": "bUCR_0_02", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.519, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 920, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_14:55", + "arrival_time": "14:55:00", + "departure_time": "14:55:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 921, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_14:55", + "arrival_time": "14:59:00.873000", + "departure_time": "14:59:00.873000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.736, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 922, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_14:55", + "arrival_time": "15:02:28.364000", + "departure_time": "15:02:28.364000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.37, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 923, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_14:55", + "arrival_time": "15:03:12.873000", + "departure_time": "15:03:12.873000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.506, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 924, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_14:55", + "arrival_time": "15:04:11.127000", + "departure_time": "15:04:11.127000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.684, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 925, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_14:55", + "arrival_time": "15:06:27.600000", + "departure_time": "15:06:27.600000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.101, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 926, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_14:55", + "arrival_time": "15:08:11.018000", + "departure_time": "15:08:11.018000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.417, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 927, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_14:55", + "arrival_time": "15:09:22.364000", + "departure_time": "15:09:22.364000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.635, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 928, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_14:55", + "arrival_time": "15:12:17.782000", + "departure_time": "15:12:17.782000", + "stop_id": "bUCR_0_01", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.171, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 929, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_15:10", + "arrival_time": "15:10:00", + "departure_time": "15:10:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 930, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_15:10", + "arrival_time": "15:14:15.927000", + "departure_time": "15:14:15.927000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.782, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 931, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_15:10", + "arrival_time": "15:17:27.709000", + "departure_time": "15:17:27.709000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.368, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 932, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_15:10", + "arrival_time": "15:18:04.691000", + "departure_time": "15:18:04.691000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.481, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 933, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_15:10", + "arrival_time": "15:19:12.764000", + "departure_time": "15:19:12.764000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.689, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 934, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_15:10", + "arrival_time": "15:21:29.891000", + "departure_time": "15:21:29.891000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.108, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 935, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_15:10", + "arrival_time": "15:23:09.709000", + "departure_time": "15:23:09.709000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.413, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 936, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_15:10", + "arrival_time": "15:24:22.691000", + "departure_time": "15:24:22.691000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.636, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 937, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_15:10", + "arrival_time": "15:29:11.673000", + "departure_time": "15:29:11.673000", + "stop_id": "bUCR_0_02", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.519, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 938, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_15:20", + "arrival_time": "15:20:00", + "departure_time": "15:20:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 939, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_15:20", + "arrival_time": "15:24:00.873000", + "departure_time": "15:24:00.873000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.736, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 940, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_15:20", + "arrival_time": "15:27:28.364000", + "departure_time": "15:27:28.364000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.37, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 941, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_15:20", + "arrival_time": "15:28:12.873000", + "departure_time": "15:28:12.873000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.506, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 942, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_15:20", + "arrival_time": "15:29:11.127000", + "departure_time": "15:29:11.127000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.684, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 943, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_15:20", + "arrival_time": "15:31:27.600000", + "departure_time": "15:31:27.600000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.101, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 944, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_15:20", + "arrival_time": "15:33:11.018000", + "departure_time": "15:33:11.018000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.417, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 945, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_15:20", + "arrival_time": "15:34:22.364000", + "departure_time": "15:34:22.364000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.635, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 946, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_15:20", + "arrival_time": "15:37:17.782000", + "departure_time": "15:37:17.782000", + "stop_id": "bUCR_0_01", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.171, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 947, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_15:30", + "arrival_time": "15:30:00", + "departure_time": "15:30:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 948, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_15:30", + "arrival_time": "15:34:15.927000", + "departure_time": "15:34:15.927000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.782, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 949, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_15:30", + "arrival_time": "15:37:27.709000", + "departure_time": "15:37:27.709000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.368, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 950, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_15:30", + "arrival_time": "15:38:04.691000", + "departure_time": "15:38:04.691000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.481, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 951, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_15:30", + "arrival_time": "15:39:12.764000", + "departure_time": "15:39:12.764000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.689, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 952, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_15:30", + "arrival_time": "15:41:29.891000", + "departure_time": "15:41:29.891000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.108, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 953, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_15:30", + "arrival_time": "15:43:09.709000", + "departure_time": "15:43:09.709000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.413, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 954, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_15:30", + "arrival_time": "15:44:22.691000", + "departure_time": "15:44:22.691000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.636, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 955, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_15:30", + "arrival_time": "15:49:11.673000", + "departure_time": "15:49:11.673000", + "stop_id": "bUCR_0_02", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.519, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 956, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_16:05", + "arrival_time": "16:05:00", + "departure_time": "16:05:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 957, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_16:05", + "arrival_time": "16:09:00.873000", + "departure_time": "16:09:00.873000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.736, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 958, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_16:05", + "arrival_time": "16:12:28.364000", + "departure_time": "16:12:28.364000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.37, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 959, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_16:05", + "arrival_time": "16:13:12.873000", + "departure_time": "16:13:12.873000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.506, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 960, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_16:05", + "arrival_time": "16:14:11.127000", + "departure_time": "16:14:11.127000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.684, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 961, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_16:05", + "arrival_time": "16:16:27.600000", + "departure_time": "16:16:27.600000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.101, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 962, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_16:05", + "arrival_time": "16:18:11.018000", + "departure_time": "16:18:11.018000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.417, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 963, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_16:05", + "arrival_time": "16:19:22.364000", + "departure_time": "16:19:22.364000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.635, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 964, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_16:05", + "arrival_time": "16:22:17.782000", + "departure_time": "16:22:17.782000", + "stop_id": "bUCR_0_01", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.171, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 965, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_16:15", + "arrival_time": "16:15:00", + "departure_time": "16:15:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 966, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_16:15", + "arrival_time": "16:19:15.927000", + "departure_time": "16:19:15.927000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.782, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 967, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_16:15", + "arrival_time": "16:22:27.709000", + "departure_time": "16:22:27.709000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.368, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 968, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_16:15", + "arrival_time": "16:23:04.691000", + "departure_time": "16:23:04.691000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.481, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 969, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_16:15", + "arrival_time": "16:24:12.764000", + "departure_time": "16:24:12.764000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.689, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 970, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_16:15", + "arrival_time": "16:26:29.891000", + "departure_time": "16:26:29.891000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.108, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 971, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_16:15", + "arrival_time": "16:28:09.709000", + "departure_time": "16:28:09.709000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.413, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 972, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_16:15", + "arrival_time": "16:29:22.691000", + "departure_time": "16:29:22.691000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.636, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 973, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_16:15", + "arrival_time": "16:34:11.673000", + "departure_time": "16:34:11.673000", + "stop_id": "bUCR_0_02", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.519, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 974, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_16:30", + "arrival_time": "16:30:00", + "departure_time": "16:30:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 975, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_16:30", + "arrival_time": "16:34:00.873000", + "departure_time": "16:34:00.873000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.736, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 976, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_16:30", + "arrival_time": "16:37:28.364000", + "departure_time": "16:37:28.364000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.37, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 977, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_16:30", + "arrival_time": "16:38:12.873000", + "departure_time": "16:38:12.873000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.506, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 978, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_16:30", + "arrival_time": "16:39:11.127000", + "departure_time": "16:39:11.127000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.684, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 979, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_16:30", + "arrival_time": "16:41:27.600000", + "departure_time": "16:41:27.600000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.101, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 980, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_16:30", + "arrival_time": "16:43:11.018000", + "departure_time": "16:43:11.018000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.417, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 981, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_16:30", + "arrival_time": "16:44:22.364000", + "departure_time": "16:44:22.364000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.635, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 982, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_16:30", + "arrival_time": "16:47:17.782000", + "departure_time": "16:47:17.782000", + "stop_id": "bUCR_0_01", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.171, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 983, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_16:40", + "arrival_time": "16:40:00", + "departure_time": "16:40:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 984, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_16:40", + "arrival_time": "16:44:15.927000", + "departure_time": "16:44:15.927000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.782, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 985, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_16:40", + "arrival_time": "16:47:27.709000", + "departure_time": "16:47:27.709000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.368, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 986, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_16:40", + "arrival_time": "16:48:04.691000", + "departure_time": "16:48:04.691000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.481, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 987, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_16:40", + "arrival_time": "16:49:12.764000", + "departure_time": "16:49:12.764000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.689, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 988, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_16:40", + "arrival_time": "16:51:29.891000", + "departure_time": "16:51:29.891000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.108, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 989, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_16:40", + "arrival_time": "16:53:09.709000", + "departure_time": "16:53:09.709000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.413, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 990, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_16:40", + "arrival_time": "16:54:22.691000", + "departure_time": "16:54:22.691000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.636, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 991, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_16:40", + "arrival_time": "16:59:11.673000", + "departure_time": "16:59:11.673000", + "stop_id": "bUCR_0_02", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.519, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 992, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_17:05", + "arrival_time": "17:05:00", + "departure_time": "17:05:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 993, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_17:05", + "arrival_time": "17:09:00.873000", + "departure_time": "17:09:00.873000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.736, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 994, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_17:05", + "arrival_time": "17:12:28.364000", + "departure_time": "17:12:28.364000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.37, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 995, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_17:05", + "arrival_time": "17:13:12.873000", + "departure_time": "17:13:12.873000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.506, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 996, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_17:05", + "arrival_time": "17:14:11.127000", + "departure_time": "17:14:11.127000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.684, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 997, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_17:05", + "arrival_time": "17:16:27.600000", + "departure_time": "17:16:27.600000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.101, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 998, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_17:05", + "arrival_time": "17:18:11.018000", + "departure_time": "17:18:11.018000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.417, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 999, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_17:05", + "arrival_time": "17:19:22.364000", + "departure_time": "17:19:22.364000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.635, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1000, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_17:05", + "arrival_time": "17:22:17.782000", + "departure_time": "17:22:17.782000", + "stop_id": "bUCR_0_01", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.171, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1001, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_17:15", + "arrival_time": "17:15:00", + "departure_time": "17:15:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1002, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_17:15", + "arrival_time": "17:19:15.927000", + "departure_time": "17:19:15.927000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.782, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1003, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_17:15", + "arrival_time": "17:22:27.709000", + "departure_time": "17:22:27.709000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.368, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1004, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_17:15", + "arrival_time": "17:23:04.691000", + "departure_time": "17:23:04.691000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.481, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1005, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_17:15", + "arrival_time": "17:24:12.764000", + "departure_time": "17:24:12.764000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.689, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1006, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_17:15", + "arrival_time": "17:26:29.891000", + "departure_time": "17:26:29.891000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.108, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1007, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_17:15", + "arrival_time": "17:28:09.709000", + "departure_time": "17:28:09.709000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.413, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1008, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_17:15", + "arrival_time": "17:29:22.691000", + "departure_time": "17:29:22.691000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.636, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1009, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_17:15", + "arrival_time": "17:34:11.673000", + "departure_time": "17:34:11.673000", + "stop_id": "bUCR_0_02", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.519, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1010, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_17:30", + "arrival_time": "17:30:00", + "departure_time": "17:30:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1011, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_17:30", + "arrival_time": "17:34:00.873000", + "departure_time": "17:34:00.873000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.736, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1012, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_17:30", + "arrival_time": "17:37:28.364000", + "departure_time": "17:37:28.364000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.37, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1013, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_17:30", + "arrival_time": "17:38:12.873000", + "departure_time": "17:38:12.873000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.506, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1014, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_17:30", + "arrival_time": "17:39:11.127000", + "departure_time": "17:39:11.127000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.684, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1015, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_17:30", + "arrival_time": "17:41:27.600000", + "departure_time": "17:41:27.600000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.101, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1016, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_17:30", + "arrival_time": "17:43:11.018000", + "departure_time": "17:43:11.018000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.417, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1017, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_17:30", + "arrival_time": "17:44:22.364000", + "departure_time": "17:44:22.364000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.635, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1018, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_17:30", + "arrival_time": "17:47:17.782000", + "departure_time": "17:47:17.782000", + "stop_id": "bUCR_0_01", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.171, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1019, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_17:40", + "arrival_time": "17:40:00", + "departure_time": "17:40:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1020, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_17:40", + "arrival_time": "17:44:15.927000", + "departure_time": "17:44:15.927000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.782, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1021, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_17:40", + "arrival_time": "17:47:27.709000", + "departure_time": "17:47:27.709000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.368, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1022, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_17:40", + "arrival_time": "17:48:04.691000", + "departure_time": "17:48:04.691000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.481, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1023, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_17:40", + "arrival_time": "17:49:12.764000", + "departure_time": "17:49:12.764000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.689, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1024, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_17:40", + "arrival_time": "17:51:29.891000", + "departure_time": "17:51:29.891000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.108, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1025, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_17:40", + "arrival_time": "17:53:09.709000", + "departure_time": "17:53:09.709000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.413, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1026, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_17:40", + "arrival_time": "17:54:22.691000", + "departure_time": "17:54:22.691000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.636, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1027, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_17:40", + "arrival_time": "17:59:11.673000", + "departure_time": "17:59:11.673000", + "stop_id": "bUCR_0_02", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.519, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1028, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_18:05", + "arrival_time": "18:05:00", + "departure_time": "18:05:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1029, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_18:05", + "arrival_time": "18:09:00.873000", + "departure_time": "18:09:00.873000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.736, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1030, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_18:05", + "arrival_time": "18:12:28.364000", + "departure_time": "18:12:28.364000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.37, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1031, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_18:05", + "arrival_time": "18:13:12.873000", + "departure_time": "18:13:12.873000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.506, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1032, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_18:05", + "arrival_time": "18:14:11.127000", + "departure_time": "18:14:11.127000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.684, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1033, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_18:05", + "arrival_time": "18:16:27.600000", + "departure_time": "18:16:27.600000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.101, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1034, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_18:05", + "arrival_time": "18:18:11.018000", + "departure_time": "18:18:11.018000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.417, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1035, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_18:05", + "arrival_time": "18:19:22.364000", + "departure_time": "18:19:22.364000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.635, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1036, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_18:05", + "arrival_time": "18:22:17.782000", + "departure_time": "18:22:17.782000", + "stop_id": "bUCR_0_01", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.171, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1037, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_18:15", + "arrival_time": "18:15:00", + "departure_time": "18:15:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1038, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_18:15", + "arrival_time": "18:19:15.927000", + "departure_time": "18:19:15.927000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.782, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1039, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_18:15", + "arrival_time": "18:22:27.709000", + "departure_time": "18:22:27.709000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.368, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1040, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_18:15", + "arrival_time": "18:23:04.691000", + "departure_time": "18:23:04.691000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.481, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1041, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_18:15", + "arrival_time": "18:24:12.764000", + "departure_time": "18:24:12.764000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.689, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1042, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_18:15", + "arrival_time": "18:26:29.891000", + "departure_time": "18:26:29.891000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.108, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1043, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_18:15", + "arrival_time": "18:28:09.709000", + "departure_time": "18:28:09.709000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.413, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1044, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_18:15", + "arrival_time": "18:29:22.691000", + "departure_time": "18:29:22.691000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.636, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1045, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_18:15", + "arrival_time": "18:34:11.673000", + "departure_time": "18:34:11.673000", + "stop_id": "bUCR_0_02", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.519, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1046, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_18:30", + "arrival_time": "18:30:00", + "departure_time": "18:30:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1047, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_18:30", + "arrival_time": "18:34:00.873000", + "departure_time": "18:34:00.873000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.736, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1048, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_18:30", + "arrival_time": "18:37:28.364000", + "departure_time": "18:37:28.364000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.37, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1049, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_18:30", + "arrival_time": "18:38:12.873000", + "departure_time": "18:38:12.873000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.506, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1050, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_18:30", + "arrival_time": "18:39:11.127000", + "departure_time": "18:39:11.127000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.684, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1051, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_18:30", + "arrival_time": "18:41:27.600000", + "departure_time": "18:41:27.600000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.101, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1052, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_18:30", + "arrival_time": "18:43:11.018000", + "departure_time": "18:43:11.018000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.417, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1053, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_18:30", + "arrival_time": "18:44:22.364000", + "departure_time": "18:44:22.364000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.635, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1054, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_18:30", + "arrival_time": "18:47:17.782000", + "departure_time": "18:47:17.782000", + "stop_id": "bUCR_0_01", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.171, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1055, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_18:40", + "arrival_time": "18:40:00", + "departure_time": "18:40:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1056, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_18:40", + "arrival_time": "18:44:15.927000", + "departure_time": "18:44:15.927000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.782, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1057, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_18:40", + "arrival_time": "18:47:27.709000", + "departure_time": "18:47:27.709000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.368, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1058, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_18:40", + "arrival_time": "18:48:04.691000", + "departure_time": "18:48:04.691000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.481, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1059, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_18:40", + "arrival_time": "18:49:12.764000", + "departure_time": "18:49:12.764000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.689, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1060, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_18:40", + "arrival_time": "18:51:29.891000", + "departure_time": "18:51:29.891000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.108, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1061, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_18:40", + "arrival_time": "18:53:09.709000", + "departure_time": "18:53:09.709000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.413, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1062, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_18:40", + "arrival_time": "18:54:22.691000", + "departure_time": "18:54:22.691000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.636, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1063, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_18:40", + "arrival_time": "18:59:11.673000", + "departure_time": "18:59:11.673000", + "stop_id": "bUCR_0_02", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.519, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1064, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_18:55", + "arrival_time": "18:55:00", + "departure_time": "18:55:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1065, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_18:55", + "arrival_time": "18:59:00.873000", + "departure_time": "18:59:00.873000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.736, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1066, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_18:55", + "arrival_time": "19:02:28.364000", + "departure_time": "19:02:28.364000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.37, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1067, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_18:55", + "arrival_time": "19:03:12.873000", + "departure_time": "19:03:12.873000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.506, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1068, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_18:55", + "arrival_time": "19:04:11.127000", + "departure_time": "19:04:11.127000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.684, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1069, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_18:55", + "arrival_time": "19:06:27.600000", + "departure_time": "19:06:27.600000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.101, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1070, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_18:55", + "arrival_time": "19:08:11.018000", + "departure_time": "19:08:11.018000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.417, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1071, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_18:55", + "arrival_time": "19:09:22.364000", + "departure_time": "19:09:22.364000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.635, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1072, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_18:55", + "arrival_time": "19:12:17.782000", + "departure_time": "19:12:17.782000", + "stop_id": "bUCR_0_01", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.171, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1073, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_19:15", + "arrival_time": "19:15:00", + "departure_time": "19:15:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1074, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_19:15", + "arrival_time": "19:19:00.873000", + "departure_time": "19:19:00.873000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.736, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1075, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_19:15", + "arrival_time": "19:22:28.364000", + "departure_time": "19:22:28.364000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.37, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1076, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_19:15", + "arrival_time": "19:23:12.873000", + "departure_time": "19:23:12.873000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.506, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1077, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_19:15", + "arrival_time": "19:24:11.127000", + "departure_time": "19:24:11.127000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.684, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1078, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_19:15", + "arrival_time": "19:26:27.600000", + "departure_time": "19:26:27.600000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.101, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1079, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_19:15", + "arrival_time": "19:28:11.018000", + "departure_time": "19:28:11.018000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.417, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1080, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_19:15", + "arrival_time": "19:29:22.364000", + "departure_time": "19:29:22.364000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.635, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1081, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_19:15", + "arrival_time": "19:32:17.782000", + "departure_time": "19:32:17.782000", + "stop_id": "bUCR_0_01", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.171, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1082, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_19:50", + "arrival_time": "19:50:00", + "departure_time": "19:50:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1083, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_19:50", + "arrival_time": "19:54:15.927000", + "departure_time": "19:54:15.927000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.782, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1084, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_19:50", + "arrival_time": "19:57:27.709000", + "departure_time": "19:57:27.709000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.368, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1085, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_19:50", + "arrival_time": "19:58:04.691000", + "departure_time": "19:58:04.691000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.481, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1086, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_19:50", + "arrival_time": "19:59:12.764000", + "departure_time": "19:59:12.764000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.689, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1087, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_19:50", + "arrival_time": "20:01:29.891000", + "departure_time": "20:01:29.891000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.108, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1088, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_19:50", + "arrival_time": "20:03:09.709000", + "departure_time": "20:03:09.709000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.413, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1089, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_19:50", + "arrival_time": "20:04:22.691000", + "departure_time": "20:04:22.691000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.636, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1090, + "fields": { + "feed": "1", + "trip_id": "hacia_artes_entresemana_19:50", + "arrival_time": "20:09:11.673000", + "departure_time": "20:09:11.673000", + "stop_id": "bUCR_0_02", + "stop_sequence": 10, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.519, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1091, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_20:30", + "arrival_time": "20:30:00", + "departure_time": "20:30:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1092, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_20:30", + "arrival_time": "20:34:00.873000", + "departure_time": "20:34:00.873000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.736, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1093, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_20:30", + "arrival_time": "20:37:28.364000", + "departure_time": "20:37:28.364000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.37, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1094, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_20:30", + "arrival_time": "20:38:12.873000", + "departure_time": "20:38:12.873000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.506, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1095, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_20:30", + "arrival_time": "20:39:11.127000", + "departure_time": "20:39:11.127000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.684, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1096, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_20:30", + "arrival_time": "20:41:27.600000", + "departure_time": "20:41:27.600000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.101, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1097, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_20:30", + "arrival_time": "20:43:11.018000", + "departure_time": "20:43:11.018000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.417, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1098, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_20:30", + "arrival_time": "20:44:22.364000", + "departure_time": "20:44:22.364000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.635, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1099, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_20:30", + "arrival_time": "20:47:17.782000", + "departure_time": "20:47:17.782000", + "stop_id": "bUCR_0_01", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.171, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1100, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_20:40", + "arrival_time": "20:40:00", + "departure_time": "20:40:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1101, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_20:40", + "arrival_time": "20:44:00.873000", + "departure_time": "20:44:00.873000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.736, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1102, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_20:40", + "arrival_time": "20:47:28.364000", + "departure_time": "20:47:28.364000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.37, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1103, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_20:40", + "arrival_time": "20:48:12.873000", + "departure_time": "20:48:12.873000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.506, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1104, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_20:40", + "arrival_time": "20:49:11.127000", + "departure_time": "20:49:11.127000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.684, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1105, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_20:40", + "arrival_time": "20:51:27.600000", + "departure_time": "20:51:27.600000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.101, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1106, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_20:40", + "arrival_time": "20:53:11.018000", + "departure_time": "20:53:11.018000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.417, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1107, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_20:40", + "arrival_time": "20:54:22.364000", + "departure_time": "20:54:22.364000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.635, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1108, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_20:40", + "arrival_time": "20:57:17.782000", + "departure_time": "20:57:17.782000", + "stop_id": "bUCR_0_01", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.171, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1109, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_21:15", + "arrival_time": "21:15:00", + "departure_time": "21:15:00", + "stop_id": "bUCR_1_01", + "stop_sequence": 0, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.0, + "timepoint": 1 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1110, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_21:15", + "arrival_time": "21:19:00.873000", + "departure_time": "21:19:00.873000", + "stop_id": "bUCR_1_02", + "stop_sequence": 1, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 0.736, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1111, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_21:15", + "arrival_time": "21:22:28.364000", + "departure_time": "21:22:28.364000", + "stop_id": "bUCR_1_03", + "stop_sequence": 3, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.37, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1112, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_21:15", + "arrival_time": "21:23:12.873000", + "departure_time": "21:23:12.873000", + "stop_id": "bUCR_1_04", + "stop_sequence": 4, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.506, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1113, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_21:15", + "arrival_time": "21:24:11.127000", + "departure_time": "21:24:11.127000", + "stop_id": "bUCR_1_05", + "stop_sequence": 5, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 1.684, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1114, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_21:15", + "arrival_time": "21:26:27.600000", + "departure_time": "21:26:27.600000", + "stop_id": "bUCR_1_06", + "stop_sequence": 6, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.101, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1115, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_21:15", + "arrival_time": "21:28:11.018000", + "departure_time": "21:28:11.018000", + "stop_id": "bUCR_1_07", + "stop_sequence": 7, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.417, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1116, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_21:15", + "arrival_time": "21:29:22.364000", + "departure_time": "21:29:22.364000", + "stop_id": "bUCR_1_08", + "stop_sequence": 8, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 2.635, + "timepoint": 0 + } + }, + { + "model": "gtfs.stoptime", + "pk": 1117, + "fields": { + "feed": "1", + "trip_id": "hacia_educacion_entresemana_21:15", + "arrival_time": "21:32:17.782000", + "departure_time": "21:32:17.782000", + "stop_id": "bUCR_0_01", + "stop_sequence": 9, + "stop_headsign": "", + "pickup_type": 0, + "drop_off_type": 0, + "shape_dist_traveled": 3.171, + "timepoint": 0 + } + }, + { + "model": "gtfs.calendar", + "pk": 1, + "fields": { + "feed": "1", + "service_id": "entresemana", + "monday": 1, + "tuesday": 1, + "wednesday": 1, + "thursday": 1, + "friday": 1, + "saturday": 0, + "sunday": 0, + "start_date": "2024-01-01", + "end_date": "2024-12-31" + } + }, + { + "model": "gtfs.farerule", + "pk": 1, + "fields": { + "feed": "1", + "fare_id": "no_tarifa", + "route_id": "bUCR_L1", + "origin_id": "bUCR_0", + "destination_id": "bUCR_0", + "contains_id": "" + } + }, + { + "model": "gtfs.farerule", + "pk": 2, + "fields": { + "feed": "1", + "fare_id": "no_tarifa", + "route_id": "bUCR_L2", + "origin_id": "bUCR_1", + "destination_id": "bUCR_1", + "contains_id": "" + } + }, + { + "model": "gtfs.fareattribute", + "pk": 1, + "fields": { + "feed": "1", + "fare_id": "no_tarifa", + "price": 0, + "currency_type": "CRC", + "payment_method": 0, + "transfers": 0, + "transfer_duration": null + } + }, + { + "model": "gtfs.shape", + "pk": 1, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93554944029271, + "shape_pt_lon": -84.0491138975951, + "shape_pt_sequence": 0, + "shape_dist_traveled": 0.0 + } + }, + { + "model": "gtfs.shape", + "pk": 2, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.9355589010814, + "shape_pt_lon": -84.0491582627979, + "shape_pt_sequence": 1, + "shape_dist_traveled": 0.005 + } + }, + { + "model": "gtfs.shape", + "pk": 3, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93557354275506, + "shape_pt_lon": -84.0492241246225, + "shape_pt_sequence": 2, + "shape_dist_traveled": 0.012 + } + }, + { + "model": "gtfs.shape", + "pk": 4, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.9356000651633, + "shape_pt_lon": -84.049324861376, + "shape_pt_sequence": 3, + "shape_dist_traveled": 0.024 + } + }, + { + "model": "gtfs.shape", + "pk": 5, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93563773463719, + "shape_pt_lon": -84.049416778843, + "shape_pt_sequence": 4, + "shape_dist_traveled": 0.035 + } + }, + { + "model": "gtfs.shape", + "pk": 6, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93568399531643, + "shape_pt_lon": -84.0495368755472, + "shape_pt_sequence": 5, + "shape_dist_traveled": 0.049 + } + }, + { + "model": "gtfs.shape", + "pk": 7, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93570316048327, + "shape_pt_lon": -84.0495945755631, + "shape_pt_sequence": 6, + "shape_dist_traveled": 0.056 + } + }, + { + "model": "gtfs.shape", + "pk": 8, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93571109089738, + "shape_pt_lon": -84.0496871639603, + "shape_pt_sequence": 7, + "shape_dist_traveled": 0.066 + } + }, + { + "model": "gtfs.shape", + "pk": 9, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93571292483817, + "shape_pt_lon": -84.0498464474787, + "shape_pt_sequence": 8, + "shape_dist_traveled": 0.083 + } + }, + { + "model": "gtfs.shape", + "pk": 10, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93570393244304, + "shape_pt_lon": -84.0500877222699, + "shape_pt_sequence": 9, + "shape_dist_traveled": 0.11 + } + }, + { + "model": "gtfs.shape", + "pk": 11, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93566539329337, + "shape_pt_lon": -84.050351168656, + "shape_pt_sequence": 10, + "shape_dist_traveled": 0.139 + } + }, + { + "model": "gtfs.shape", + "pk": 12, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93561786205413, + "shape_pt_lon": -84.0505937476355, + "shape_pt_sequence": 11, + "shape_dist_traveled": 0.166 + } + }, + { + "model": "gtfs.shape", + "pk": 13, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93556519227529, + "shape_pt_lon": -84.050878060609, + "shape_pt_sequence": 12, + "shape_dist_traveled": 0.198 + } + }, + { + "model": "gtfs.shape", + "pk": 14, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93552922267821, + "shape_pt_lon": -84.051108901895, + "shape_pt_sequence": 13, + "shape_dist_traveled": 0.223 + } + }, + { + "model": "gtfs.shape", + "pk": 15, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93548169125642, + "shape_pt_lon": -84.0513932152566, + "shape_pt_sequence": 14, + "shape_dist_traveled": 0.255 + } + }, + { + "model": "gtfs.shape", + "pk": 16, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93545342942273, + "shape_pt_lon": -84.0516410109878, + "shape_pt_sequence": 15, + "shape_dist_traveled": 0.282 + } + }, + { + "model": "gtfs.shape", + "pk": 17, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93544741074256, + "shape_pt_lon": -84.0516943904767, + "shape_pt_sequence": 16, + "shape_dist_traveled": 0.288 + } + }, + { + "model": "gtfs.shape", + "pk": 18, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93544700627605, + "shape_pt_lon": -84.051754475488, + "shape_pt_sequence": 17, + "shape_dist_traveled": 0.295 + } + }, + { + "model": "gtfs.shape", + "pk": 19, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93546627570862, + "shape_pt_lon": -84.0519579288248, + "shape_pt_sequence": 18, + "shape_dist_traveled": 0.317 + } + }, + { + "model": "gtfs.shape", + "pk": 20, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93548939902537, + "shape_pt_lon": -84.052131385837, + "shape_pt_sequence": 19, + "shape_dist_traveled": 0.336 + } + }, + { + "model": "gtfs.shape", + "pk": 21, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93550517435119, + "shape_pt_lon": -84.0522239834817, + "shape_pt_sequence": 20, + "shape_dist_traveled": 0.347 + } + }, + { + "model": "gtfs.shape", + "pk": 22, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93554618004823, + "shape_pt_lon": -84.0523340057342, + "shape_pt_sequence": 21, + "shape_dist_traveled": 0.36 + } + }, + { + "model": "gtfs.shape", + "pk": 23, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93559987797587, + "shape_pt_lon": -84.0523914948391, + "shape_pt_sequence": 22, + "shape_dist_traveled": 0.368 + } + }, + { + "model": "gtfs.shape", + "pk": 24, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93565552854654, + "shape_pt_lon": -84.0524281689233, + "shape_pt_sequence": 23, + "shape_dist_traveled": 0.376 + } + }, + { + "model": "gtfs.shape", + "pk": 25, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93572094236273, + "shape_pt_lon": -84.0524410544122, + "shape_pt_sequence": 24, + "shape_dist_traveled": 0.383 + } + }, + { + "model": "gtfs.shape", + "pk": 26, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93583614886311, + "shape_pt_lon": -84.0524182569563, + "shape_pt_sequence": 25, + "shape_dist_traveled": 0.396 + } + }, + { + "model": "gtfs.shape", + "pk": 27, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93603336648931, + "shape_pt_lon": -84.0523528383197, + "shape_pt_sequence": 26, + "shape_dist_traveled": 0.419 + } + }, + { + "model": "gtfs.shape", + "pk": 28, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93625691629266, + "shape_pt_lon": -84.0522832947174, + "shape_pt_sequence": 27, + "shape_dist_traveled": 0.445 + } + }, + { + "model": "gtfs.shape", + "pk": 29, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93639307154715, + "shape_pt_lon": -84.0522431941422, + "shape_pt_sequence": 28, + "shape_dist_traveled": 0.46 + } + }, + { + "model": "gtfs.shape", + "pk": 30, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93653561474882, + "shape_pt_lon": -84.0522372469934, + "shape_pt_sequence": 29, + "shape_dist_traveled": 0.476 + } + }, + { + "model": "gtfs.shape", + "pk": 31, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93660005206628, + "shape_pt_lon": -84.0522600443969, + "shape_pt_sequence": 30, + "shape_dist_traveled": 0.484 + } + }, + { + "model": "gtfs.shape", + "pk": 32, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93661957852377, + "shape_pt_lon": -84.0523423132888, + "shape_pt_sequence": 31, + "shape_dist_traveled": 0.493 + } + }, + { + "model": "gtfs.shape", + "pk": 33, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93659126516027, + "shape_pt_lon": -84.0524275557544, + "shape_pt_sequence": 32, + "shape_dist_traveled": 0.503 + } + }, + { + "model": "gtfs.shape", + "pk": 34, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93653854371827, + "shape_pt_lon": -84.0524503531584, + "shape_pt_sequence": 33, + "shape_dist_traveled": 0.509 + } + }, + { + "model": "gtfs.shape", + "pk": 35, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93645360359939, + "shape_pt_lon": -84.0524483707755, + "shape_pt_sequence": 34, + "shape_dist_traveled": 0.519 + } + }, + { + "model": "gtfs.shape", + "pk": 36, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93636085286962, + "shape_pt_lon": -84.052439450052, + "shape_pt_sequence": 35, + "shape_dist_traveled": 0.529 + } + }, + { + "model": "gtfs.shape", + "pk": 37, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93633386047036, + "shape_pt_lon": -84.0524268046992, + "shape_pt_sequence": 36, + "shape_dist_traveled": 0.532 + } + }, + { + "model": "gtfs.shape", + "pk": 38, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93630422609543, + "shape_pt_lon": -84.0524265645631, + "shape_pt_sequence": 37, + "shape_dist_traveled": 0.535 + } + }, + { + "model": "gtfs.shape", + "pk": 39, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93618120917912, + "shape_pt_lon": -84.0524473794854, + "shape_pt_sequence": 38, + "shape_dist_traveled": 0.549 + } + }, + { + "model": "gtfs.shape", + "pk": 40, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93600742368285, + "shape_pt_lon": -84.052484053706, + "shape_pt_sequence": 39, + "shape_dist_traveled": 0.569 + } + }, + { + "model": "gtfs.shape", + "pk": 41, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93581118236608, + "shape_pt_lon": -84.0525276661302, + "shape_pt_sequence": 40, + "shape_dist_traveled": 0.591 + } + }, + { + "model": "gtfs.shape", + "pk": 42, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93571876163712, + "shape_pt_lon": -84.0525355663096, + "shape_pt_sequence": 41, + "shape_dist_traveled": 0.601 + } + }, + { + "model": "gtfs.shape", + "pk": 43, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93563153840537, + "shape_pt_lon": -84.0525177541372, + "shape_pt_sequence": 42, + "shape_dist_traveled": 0.611 + } + }, + { + "model": "gtfs.shape", + "pk": 44, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93553310902874, + "shape_pt_lon": -84.0524334735888, + "shape_pt_sequence": 43, + "shape_dist_traveled": 0.626 + } + }, + { + "model": "gtfs.shape", + "pk": 45, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93545970504671, + "shape_pt_lon": -84.0523512340121, + "shape_pt_sequence": 44, + "shape_dist_traveled": 0.638 + } + }, + { + "model": "gtfs.shape", + "pk": 46, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93542065199216, + "shape_pt_lon": -84.0522451765253, + "shape_pt_sequence": 45, + "shape_dist_traveled": 0.65 + } + }, + { + "model": "gtfs.shape", + "pk": 47, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93541674668641, + "shape_pt_lon": -84.0521014537632, + "shape_pt_sequence": 46, + "shape_dist_traveled": 0.666 + } + }, + { + "model": "gtfs.shape", + "pk": 48, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93537769362758, + "shape_pt_lon": -84.0518556382803, + "shape_pt_sequence": 47, + "shape_dist_traveled": 0.693 + } + }, + { + "model": "gtfs.shape", + "pk": 49, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93533766423581, + "shape_pt_lon": -84.0515960083744, + "shape_pt_sequence": 48, + "shape_dist_traveled": 0.722 + } + }, + { + "model": "gtfs.shape", + "pk": 50, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93531364398533, + "shape_pt_lon": -84.0515277691646, + "shape_pt_sequence": 49, + "shape_dist_traveled": 0.73 + } + }, + { + "model": "gtfs.shape", + "pk": 51, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93528103728449, + "shape_pt_lon": -84.0514612063353, + "shape_pt_sequence": 50, + "shape_dist_traveled": 0.738 + } + }, + { + "model": "gtfs.shape", + "pk": 52, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93537964636139, + "shape_pt_lon": -84.0510449054667, + "shape_pt_sequence": 51, + "shape_dist_traveled": 0.785 + } + }, + { + "model": "gtfs.shape", + "pk": 53, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93549228868242, + "shape_pt_lon": -84.0506385823758, + "shape_pt_sequence": 52, + "shape_dist_traveled": 0.831 + } + }, + { + "model": "gtfs.shape", + "pk": 54, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93560853450969, + "shape_pt_lon": -84.0501428263958, + "shape_pt_sequence": 53, + "shape_dist_traveled": 0.887 + } + }, + { + "model": "gtfs.shape", + "pk": 55, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93564523227799, + "shape_pt_lon": -84.0499153784661, + "shape_pt_sequence": 54, + "shape_dist_traveled": 0.912 + } + }, + { + "model": "gtfs.shape", + "pk": 56, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.9355593156005, + "shape_pt_lon": -84.0495436816674, + "shape_pt_sequence": 55, + "shape_dist_traveled": 0.954 + } + }, + { + "model": "gtfs.shape", + "pk": 57, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93549425099087, + "shape_pt_lon": -84.049203385401, + "shape_pt_sequence": 56, + "shape_dist_traveled": 0.992 + } + }, + { + "model": "gtfs.shape", + "pk": 58, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93539252590615, + "shape_pt_lon": -84.0487850070695, + "shape_pt_sequence": 57, + "shape_dist_traveled": 1.039 + } + }, + { + "model": "gtfs.shape", + "pk": 59, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93537592835444, + "shape_pt_lon": -84.0486462402645, + "shape_pt_sequence": 58, + "shape_dist_traveled": 1.055 + } + }, + { + "model": "gtfs.shape", + "pk": 60, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93528024833921, + "shape_pt_lon": -84.0486373195414, + "shape_pt_sequence": 59, + "shape_dist_traveled": 1.065 + } + }, + { + "model": "gtfs.shape", + "pk": 61, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93529755089066, + "shape_pt_lon": -84.0483824809879, + "shape_pt_sequence": 60, + "shape_dist_traveled": 1.093 + } + }, + { + "model": "gtfs.shape", + "pk": 62, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93524885628052, + "shape_pt_lon": -84.048123669054, + "shape_pt_sequence": 61, + "shape_dist_traveled": 1.122 + } + }, + { + "model": "gtfs.shape", + "pk": 63, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.9351256875275, + "shape_pt_lon": -84.0477514451489, + "shape_pt_sequence": 62, + "shape_dist_traveled": 1.165 + } + }, + { + "model": "gtfs.shape", + "pk": 64, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93500538311991, + "shape_pt_lon": -84.0473850372423, + "shape_pt_sequence": 63, + "shape_dist_traveled": 1.208 + } + }, + { + "model": "gtfs.shape", + "pk": 65, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93492412702167, + "shape_pt_lon": -84.0470954278149, + "shape_pt_sequence": 64, + "shape_dist_traveled": 1.241 + } + }, + { + "model": "gtfs.shape", + "pk": 66, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93480668693231, + "shape_pt_lon": -84.046441127981, + "shape_pt_sequence": 65, + "shape_dist_traveled": 1.314 + } + }, + { + "model": "gtfs.shape", + "pk": 67, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93468020166955, + "shape_pt_lon": -84.0458485099908, + "shape_pt_sequence": 66, + "shape_dist_traveled": 1.38 + } + }, + { + "model": "gtfs.shape", + "pk": 68, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93461570602311, + "shape_pt_lon": -84.0456145784198, + "shape_pt_sequence": 67, + "shape_dist_traveled": 1.407 + } + }, + { + "model": "gtfs.shape", + "pk": 69, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93495613335646, + "shape_pt_lon": -84.0456080574792, + "shape_pt_sequence": 68, + "shape_dist_traveled": 1.444 + } + }, + { + "model": "gtfs.shape", + "pk": 70, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93502533870439, + "shape_pt_lon": -84.0455873014759, + "shape_pt_sequence": 69, + "shape_dist_traveled": 1.452 + } + }, + { + "model": "gtfs.shape", + "pk": 71, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93533638426393, + "shape_pt_lon": -84.045580669786, + "shape_pt_sequence": 70, + "shape_dist_traveled": 1.487 + } + }, + { + "model": "gtfs.shape", + "pk": 72, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93558174876489, + "shape_pt_lon": -84.045528502083, + "shape_pt_sequence": 71, + "shape_dist_traveled": 1.514 + } + }, + { + "model": "gtfs.shape", + "pk": 73, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.9356639649666, + "shape_pt_lon": -84.0454554675517, + "shape_pt_sequence": 72, + "shape_dist_traveled": 1.527 + } + }, + { + "model": "gtfs.shape", + "pk": 74, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93591239555134, + "shape_pt_lon": -84.0454118867064, + "shape_pt_sequence": 73, + "shape_dist_traveled": 1.554 + } + }, + { + "model": "gtfs.shape", + "pk": 75, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93618345188633, + "shape_pt_lon": -84.0453571107868, + "shape_pt_sequence": 74, + "shape_dist_traveled": 1.585 + } + }, + { + "model": "gtfs.shape", + "pk": 76, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93630292207917, + "shape_pt_lon": -84.0453649359146, + "shape_pt_sequence": 75, + "shape_dist_traveled": 1.598 + } + }, + { + "model": "gtfs.shape", + "pk": 77, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93644423085287, + "shape_pt_lon": -84.0454366662581, + "shape_pt_sequence": 76, + "shape_dist_traveled": 1.616 + } + }, + { + "model": "gtfs.shape", + "pk": 78, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93668331840604, + "shape_pt_lon": -84.045567569655, + "shape_pt_sequence": 77, + "shape_dist_traveled": 1.646 + } + }, + { + "model": "gtfs.shape", + "pk": 79, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93677195745002, + "shape_pt_lon": -84.045592349228, + "shape_pt_sequence": 78, + "shape_dist_traveled": 1.656 + } + }, + { + "model": "gtfs.shape", + "pk": 80, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.9368528887295, + "shape_pt_lon": -84.0455871324757, + "shape_pt_sequence": 79, + "shape_dist_traveled": 1.665 + } + }, + { + "model": "gtfs.shape", + "pk": 81, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93694152772752, + "shape_pt_lon": -84.0455467026459, + "shape_pt_sequence": 80, + "shape_dist_traveled": 1.676 + } + }, + { + "model": "gtfs.shape", + "pk": 82, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93708540528038, + "shape_pt_lon": -84.0454423673758, + "shape_pt_sequence": 81, + "shape_dist_traveled": 1.695 + } + }, + { + "model": "gtfs.shape", + "pk": 83, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.9372459343465, + "shape_pt_lon": -84.0452787163273, + "shape_pt_sequence": 82, + "shape_dist_traveled": 1.721 + } + }, + { + "model": "gtfs.shape", + "pk": 84, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93733842710149, + "shape_pt_lon": -84.0451378640166, + "shape_pt_sequence": 83, + "shape_dist_traveled": 1.739 + } + }, + { + "model": "gtfs.shape", + "pk": 85, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93756026309952, + "shape_pt_lon": -84.044752821983, + "shape_pt_sequence": 84, + "shape_dist_traveled": 1.788 + } + }, + { + "model": "gtfs.shape", + "pk": 86, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93777652816203, + "shape_pt_lon": -84.0443585013794, + "shape_pt_sequence": 85, + "shape_dist_traveled": 1.837 + } + }, + { + "model": "gtfs.shape", + "pk": 87, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.9381041049962, + "shape_pt_lon": -84.0438016139119, + "shape_pt_sequence": 86, + "shape_dist_traveled": 1.908 + } + }, + { + "model": "gtfs.shape", + "pk": 88, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93796476738381, + "shape_pt_lon": -84.0436166501913, + "shape_pt_sequence": 87, + "shape_dist_traveled": 1.934 + } + }, + { + "model": "gtfs.shape", + "pk": 89, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93791473560688, + "shape_pt_lon": -84.0434457982085, + "shape_pt_sequence": 88, + "shape_dist_traveled": 1.953 + } + }, + { + "model": "gtfs.shape", + "pk": 90, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93789047771889, + "shape_pt_lon": -84.0432203034589, + "shape_pt_sequence": 89, + "shape_dist_traveled": 1.978 + } + }, + { + "model": "gtfs.shape", + "pk": 91, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93791970638376, + "shape_pt_lon": -84.0429894627193, + "shape_pt_sequence": 90, + "shape_dist_traveled": 2.004 + } + }, + { + "model": "gtfs.shape", + "pk": 92, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93798008366965, + "shape_pt_lon": -84.0426008139046, + "shape_pt_sequence": 91, + "shape_dist_traveled": 2.047 + } + }, + { + "model": "gtfs.shape", + "pk": 93, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93800449142722, + "shape_pt_lon": -84.0424795244151, + "shape_pt_sequence": 92, + "shape_dist_traveled": 2.06 + } + }, + { + "model": "gtfs.shape", + "pk": 94, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.9381380917555, + "shape_pt_lon": -84.0421782569734, + "shape_pt_sequence": 93, + "shape_dist_traveled": 2.097 + } + }, + { + "model": "gtfs.shape", + "pk": 95, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93816473253672, + "shape_pt_lon": -84.0419964534982, + "shape_pt_sequence": 94, + "shape_dist_traveled": 2.117 + } + }, + { + "model": "gtfs.shape", + "pk": 96, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93815830944601, + "shape_pt_lon": -84.0418503844357, + "shape_pt_sequence": 95, + "shape_dist_traveled": 2.133 + } + }, + { + "model": "gtfs.shape", + "pk": 97, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93812876322556, + "shape_pt_lon": -84.0417251823817, + "shape_pt_sequence": 96, + "shape_dist_traveled": 2.147 + } + }, + { + "model": "gtfs.shape", + "pk": 98, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93807176432108, + "shape_pt_lon": -84.0416449024973, + "shape_pt_sequence": 97, + "shape_dist_traveled": 2.158 + } + }, + { + "model": "gtfs.shape", + "pk": 99, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.9380170014129, + "shape_pt_lon": -84.0416364975937, + "shape_pt_sequence": 98, + "shape_dist_traveled": 2.164 + } + }, + { + "model": "gtfs.shape", + "pk": 100, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.9379218878614, + "shape_pt_lon": -84.0416378013257, + "shape_pt_sequence": 99, + "shape_dist_traveled": 2.174 + } + }, + { + "model": "gtfs.shape", + "pk": 101, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93790138516287, + "shape_pt_lon": -84.0411362584451, + "shape_pt_sequence": 100, + "shape_dist_traveled": 2.229 + } + }, + { + "model": "gtfs.shape", + "pk": 102, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93789650346394, + "shape_pt_lon": -84.041068473332, + "shape_pt_sequence": 101, + "shape_dist_traveled": 2.237 + } + }, + { + "model": "gtfs.shape", + "pk": 103, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93846399292934, + "shape_pt_lon": -84.0409289658467, + "shape_pt_sequence": 102, + "shape_dist_traveled": 2.301 + } + }, + { + "model": "gtfs.shape", + "pk": 104, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93868999787477, + "shape_pt_lon": -84.0409645503437, + "shape_pt_sequence": 103, + "shape_dist_traveled": 2.327 + } + }, + { + "model": "gtfs.shape", + "pk": 105, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93885220465146, + "shape_pt_lon": -84.0411343350368, + "shape_pt_sequence": 104, + "shape_dist_traveled": 2.353 + } + }, + { + "model": "gtfs.shape", + "pk": 106, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93915775668989, + "shape_pt_lon": -84.0416551779252, + "shape_pt_sequence": 105, + "shape_dist_traveled": 2.419 + } + }, + { + "model": "gtfs.shape", + "pk": 107, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93928866239001, + "shape_pt_lon": -84.0417942257713, + "shape_pt_sequence": 106, + "shape_dist_traveled": 2.44 + } + }, + { + "model": "gtfs.shape", + "pk": 108, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.9394332650851, + "shape_pt_lon": -84.0418835860126, + "shape_pt_sequence": 107, + "shape_dist_traveled": 2.459 + } + }, + { + "model": "gtfs.shape", + "pk": 109, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93950294569722, + "shape_pt_lon": -84.0419072239736, + "shape_pt_sequence": 108, + "shape_dist_traveled": 2.467 + } + }, + { + "model": "gtfs.shape", + "pk": 110, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93950393195614, + "shape_pt_lon": -84.0422269282472, + "shape_pt_sequence": 109, + "shape_dist_traveled": 2.502 + } + }, + { + "model": "gtfs.shape", + "pk": 111, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93949212322203, + "shape_pt_lon": -84.0425117128132, + "shape_pt_sequence": 110, + "shape_dist_traveled": 2.533 + } + }, + { + "model": "gtfs.shape", + "pk": 112, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93945684385667, + "shape_pt_lon": -84.0429181490899, + "shape_pt_sequence": 111, + "shape_dist_traveled": 2.578 + } + }, + { + "model": "gtfs.shape", + "pk": 113, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93942503205056, + "shape_pt_lon": -84.0433331349077, + "shape_pt_sequence": 112, + "shape_dist_traveled": 2.624 + } + }, + { + "model": "gtfs.shape", + "pk": 114, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93972770605043, + "shape_pt_lon": -84.0432631191506, + "shape_pt_sequence": 113, + "shape_dist_traveled": 2.658 + } + }, + { + "model": "gtfs.shape", + "pk": 115, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93979024582779, + "shape_pt_lon": -84.0432957235711, + "shape_pt_sequence": 114, + "shape_dist_traveled": 2.666 + } + }, + { + "model": "gtfs.shape", + "pk": 116, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.93981898031695, + "shape_pt_lon": -84.0433729445674, + "shape_pt_sequence": 115, + "shape_dist_traveled": 2.675 + } + }, + { + "model": "gtfs.shape", + "pk": 117, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.94007108411656, + "shape_pt_lon": -84.0443132968873, + "shape_pt_sequence": 116, + "shape_dist_traveled": 2.782 + } + }, + { + "model": "gtfs.shape", + "pk": 118, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.94016605495639, + "shape_pt_lon": -84.0446693302114, + "shape_pt_sequence": 117, + "shape_dist_traveled": 2.822 + } + }, + { + "model": "gtfs.shape", + "pk": 119, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.94027244564152, + "shape_pt_lon": -84.0448273689979, + "shape_pt_sequence": 118, + "shape_dist_traveled": 2.843 + } + }, + { + "model": "gtfs.shape", + "pk": 120, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.94046211098755, + "shape_pt_lon": -84.0455400945559, + "shape_pt_sequence": 119, + "shape_dist_traveled": 2.924 + } + }, + { + "model": "gtfs.shape", + "pk": 121, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.94049056601295, + "shape_pt_lon": -84.0456302713637, + "shape_pt_sequence": 120, + "shape_dist_traveled": 2.934 + } + }, + { + "model": "gtfs.shape", + "pk": 122, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.94063822457009, + "shape_pt_lon": -84.0455978789472, + "shape_pt_sequence": 121, + "shape_dist_traveled": 2.951 + } + }, + { + "model": "gtfs.shape", + "pk": 123, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.94079717180704, + "shape_pt_lon": -84.0450688663703, + "shape_pt_sequence": 122, + "shape_dist_traveled": 3.012 + } + }, + { + "model": "gtfs.shape", + "pk": 124, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.94095438717349, + "shape_pt_lon": -84.04474671421, + "shape_pt_sequence": 123, + "shape_dist_traveled": 3.051 + } + }, + { + "model": "gtfs.shape", + "pk": 125, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.94105262250509, + "shape_pt_lon": -84.0446527254796, + "shape_pt_sequence": 124, + "shape_dist_traveled": 3.066 + } + }, + { + "model": "gtfs.shape", + "pk": 126, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.9414150973303, + "shape_pt_lon": -84.0446772759114, + "shape_pt_sequence": 125, + "shape_dist_traveled": 3.106 + } + }, + { + "model": "gtfs.shape", + "pk": 127, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.94222783326419, + "shape_pt_lon": -84.0447316948875, + "shape_pt_sequence": 126, + "shape_dist_traveled": 3.196 + } + }, + { + "model": "gtfs.shape", + "pk": 128, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.94282430588245, + "shape_pt_lon": -84.0447692666912, + "shape_pt_sequence": 127, + "shape_dist_traveled": 3.262 + } + }, + { + "model": "gtfs.shape", + "pk": 129, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.9430072194504, + "shape_pt_lon": -84.0447361152365, + "shape_pt_sequence": 128, + "shape_dist_traveled": 3.283 + } + }, + { + "model": "gtfs.shape", + "pk": 130, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.94325327852743, + "shape_pt_lon": -84.0446536543918, + "shape_pt_sequence": 129, + "shape_dist_traveled": 3.311 + } + }, + { + "model": "gtfs.shape", + "pk": 131, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.94367377439675, + "shape_pt_lon": -84.0444658512058, + "shape_pt_sequence": 130, + "shape_dist_traveled": 3.362 + } + }, + { + "model": "gtfs.shape", + "pk": 132, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.94380472710699, + "shape_pt_lon": -84.0447574980966, + "shape_pt_sequence": 131, + "shape_dist_traveled": 3.397 + } + }, + { + "model": "gtfs.shape", + "pk": 133, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.94388103477618, + "shape_pt_lon": -84.044883947833, + "shape_pt_sequence": 132, + "shape_dist_traveled": 3.414 + } + }, + { + "model": "gtfs.shape", + "pk": 134, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.94396870046222, + "shape_pt_lon": -84.044952212081, + "shape_pt_sequence": 133, + "shape_dist_traveled": 3.426 + } + }, + { + "model": "gtfs.shape", + "pk": 135, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.94440018674929, + "shape_pt_lon": -84.0449991890221, + "shape_pt_sequence": 134, + "shape_dist_traveled": 3.474 + } + }, + { + "model": "gtfs.shape", + "pk": 136, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.94457575401998, + "shape_pt_lon": -84.045011078064, + "shape_pt_sequence": 135, + "shape_dist_traveled": 3.493 + } + }, + { + "model": "gtfs.shape", + "pk": 137, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.94495341180596, + "shape_pt_lon": -84.045007224609, + "shape_pt_sequence": 136, + "shape_dist_traveled": 3.535 + } + }, + { + "model": "gtfs.shape", + "pk": 138, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.94503790634203, + "shape_pt_lon": -84.0450804402532, + "shape_pt_sequence": 137, + "shape_dist_traveled": 3.547 + } + }, + { + "model": "gtfs.shape", + "pk": 139, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.94507262278836, + "shape_pt_lon": -84.0454078875236, + "shape_pt_sequence": 138, + "shape_dist_traveled": 3.584 + } + }, + { + "model": "gtfs.shape", + "pk": 140, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.94509663743075, + "shape_pt_lon": -84.0455018337476, + "shape_pt_sequence": 139, + "shape_dist_traveled": 3.594 + } + }, + { + "model": "gtfs.shape", + "pk": 141, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.94516495042239, + "shape_pt_lon": -84.0455370798079, + "shape_pt_sequence": 140, + "shape_dist_traveled": 3.603 + } + }, + { + "model": "gtfs.shape", + "pk": 142, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.94535421093323, + "shape_pt_lon": -84.0455279840503, + "shape_pt_sequence": 141, + "shape_dist_traveled": 3.624 + } + }, + { + "model": "gtfs.shape", + "pk": 143, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.94569609354827, + "shape_pt_lon": -84.0455006967812, + "shape_pt_sequence": 142, + "shape_dist_traveled": 3.662 + } + }, + { + "model": "gtfs.shape", + "pk": 144, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.94576019859063, + "shape_pt_lon": -84.0454636202844, + "shape_pt_sequence": 143, + "shape_dist_traveled": 3.67 + } + }, + { + "model": "gtfs.shape", + "pk": 145, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.9458090133638, + "shape_pt_lon": -84.0453783778183, + "shape_pt_sequence": 144, + "shape_dist_traveled": 3.681 + } + }, + { + "model": "gtfs.shape", + "pk": 146, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.94587051996754, + "shape_pt_lon": -84.0452505141197, + "shape_pt_sequence": 145, + "shape_dist_traveled": 3.696 + } + }, + { + "model": "gtfs.shape", + "pk": 147, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.94594579827001, + "shape_pt_lon": -84.0451768005758, + "shape_pt_sequence": 146, + "shape_dist_traveled": 3.708 + } + }, + { + "model": "gtfs.shape", + "pk": 148, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.9462925242644, + "shape_pt_lon": -84.0451498689492, + "shape_pt_sequence": 147, + "shape_dist_traveled": 3.746 + } + }, + { + "model": "gtfs.shape", + "pk": 149, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.9463897709987, + "shape_pt_lon": -84.0451620803092, + "shape_pt_sequence": 148, + "shape_dist_traveled": 3.757 + } + }, + { + "model": "gtfs.shape", + "pk": 150, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.94645002673405, + "shape_pt_lon": -84.0452016714679, + "shape_pt_sequence": 149, + "shape_dist_traveled": 3.765 + } + }, + { + "model": "gtfs.shape", + "pk": 151, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "shape_pt_lat": 9.94648404073633, + "shape_pt_lon": -84.0452387476835, + "shape_pt_sequence": 150, + "shape_dist_traveled": 3.771 + } + }, + { + "model": "gtfs.shape", + "pk": 152, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93554615993122, + "shape_pt_lon": -84.0491114962244, + "shape_pt_sequence": 0, + "shape_dist_traveled": 0.0 + } + }, + { + "model": "gtfs.shape", + "pk": 153, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93557253860416, + "shape_pt_lon": -84.0492324408382, + "shape_pt_sequence": 1, + "shape_dist_traveled": 0.014 + } + }, + { + "model": "gtfs.shape", + "pk": 154, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93559719650295, + "shape_pt_lon": -84.0493243902202, + "shape_pt_sequence": 2, + "shape_dist_traveled": 0.024 + } + }, + { + "model": "gtfs.shape", + "pk": 155, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93566832503712, + "shape_pt_lon": -84.0495039565472, + "shape_pt_sequence": 3, + "shape_dist_traveled": 0.045 + } + }, + { + "model": "gtfs.shape", + "pk": 156, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93570246673155, + "shape_pt_lon": -84.0495983130441, + "shape_pt_sequence": 4, + "shape_dist_traveled": 0.056 + } + }, + { + "model": "gtfs.shape", + "pk": 157, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93570957958473, + "shape_pt_lon": -84.0496907438365, + "shape_pt_sequence": 5, + "shape_dist_traveled": 0.066 + } + }, + { + "model": "gtfs.shape", + "pk": 158, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93571147624034, + "shape_pt_lon": -84.0498491281346, + "shape_pt_sequence": 6, + "shape_dist_traveled": 0.084 + } + }, + { + "model": "gtfs.shape", + "pk": 159, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93570246663722, + "shape_pt_lon": -84.0500893518124, + "shape_pt_sequence": 7, + "shape_dist_traveled": 0.11 + } + }, + { + "model": "gtfs.shape", + "pk": 160, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93566785089355, + "shape_pt_lon": -84.0503237982121, + "shape_pt_sequence": 8, + "shape_dist_traveled": 0.136 + } + }, + { + "model": "gtfs.shape", + "pk": 161, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93562801871054, + "shape_pt_lon": -84.0505362327233, + "shape_pt_sequence": 9, + "shape_dist_traveled": 0.16 + } + }, + { + "model": "gtfs.shape", + "pk": 162, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93558581568109, + "shape_pt_lon": -84.0507591258626, + "shape_pt_sequence": 10, + "shape_dist_traveled": 0.185 + } + }, + { + "model": "gtfs.shape", + "pk": 163, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93553934502577, + "shape_pt_lon": -84.0510354553896, + "shape_pt_sequence": 11, + "shape_dist_traveled": 0.215 + } + }, + { + "model": "gtfs.shape", + "pk": 164, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93548718391971, + "shape_pt_lon": -84.0513535074206, + "shape_pt_sequence": 12, + "shape_dist_traveled": 0.251 + } + }, + { + "model": "gtfs.shape", + "pk": 165, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93544590778002, + "shape_pt_lon": -84.0516944413929, + "shape_pt_sequence": 13, + "shape_dist_traveled": 0.288 + } + }, + { + "model": "gtfs.shape", + "pk": 166, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93544406437546, + "shape_pt_lon": -84.0517683691601, + "shape_pt_sequence": 14, + "shape_dist_traveled": 0.297 + } + }, + { + "model": "gtfs.shape", + "pk": 167, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93549752617786, + "shape_pt_lon": -84.0521913460308, + "shape_pt_sequence": 15, + "shape_dist_traveled": 0.343 + } + }, + { + "model": "gtfs.shape", + "pk": 168, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93552149197739, + "shape_pt_lon": -84.0522746314152, + "shape_pt_sequence": 16, + "shape_dist_traveled": 0.353 + } + }, + { + "model": "gtfs.shape", + "pk": 169, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93554545760814, + "shape_pt_lon": -84.0523420082619, + "shape_pt_sequence": 17, + "shape_dist_traveled": 0.361 + } + }, + { + "model": "gtfs.shape", + "pk": 170, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93560168465873, + "shape_pt_lon": -84.0523981556341, + "shape_pt_sequence": 18, + "shape_dist_traveled": 0.369 + } + }, + { + "model": "gtfs.shape", + "pk": 171, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93565791169966, + "shape_pt_lon": -84.0524318440576, + "shape_pt_sequence": 19, + "shape_dist_traveled": 0.377 + } + }, + { + "model": "gtfs.shape", + "pk": 172, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.935720591012, + "shape_pt_lon": -84.0524430735317, + "shape_pt_sequence": 20, + "shape_dist_traveled": 0.384 + } + }, + { + "model": "gtfs.shape", + "pk": 173, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93583857529975, + "shape_pt_lon": -84.0524187427515, + "shape_pt_sequence": 21, + "shape_dist_traveled": 0.397 + } + }, + { + "model": "gtfs.shape", + "pk": 174, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93605505885652, + "shape_pt_lon": -84.0523466867771, + "shape_pt_sequence": 22, + "shape_dist_traveled": 0.422 + } + }, + { + "model": "gtfs.shape", + "pk": 175, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93627443620344, + "shape_pt_lon": -84.0522802455722, + "shape_pt_sequence": 23, + "shape_dist_traveled": 0.448 + } + }, + { + "model": "gtfs.shape", + "pk": 176, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93639436894143, + "shape_pt_lon": -84.052243749702, + "shape_pt_sequence": 24, + "shape_dist_traveled": 0.461 + } + }, + { + "model": "gtfs.shape", + "pk": 177, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93653263180367, + "shape_pt_lon": -84.0522390707544, + "shape_pt_sequence": 25, + "shape_dist_traveled": 0.477 + } + }, + { + "model": "gtfs.shape", + "pk": 178, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93679802054417, + "shape_pt_lon": -84.0523349506756, + "shape_pt_sequence": 26, + "shape_dist_traveled": 0.508 + } + }, + { + "model": "gtfs.shape", + "pk": 179, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93706910208629, + "shape_pt_lon": -84.0524313369778, + "shape_pt_sequence": 27, + "shape_dist_traveled": 0.54 + } + }, + { + "model": "gtfs.shape", + "pk": 180, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93735023603007, + "shape_pt_lon": -84.0525380169441, + "shape_pt_sequence": 28, + "shape_dist_traveled": 0.573 + } + }, + { + "model": "gtfs.shape", + "pk": 181, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.9375714563375, + "shape_pt_lon": -84.0526437612861, + "shape_pt_sequence": 29, + "shape_dist_traveled": 0.6 + } + }, + { + "model": "gtfs.shape", + "pk": 182, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93774105816322, + "shape_pt_lon": -84.0527027160271, + "shape_pt_sequence": 30, + "shape_dist_traveled": 0.62 + } + }, + { + "model": "gtfs.shape", + "pk": 183, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93778978041929, + "shape_pt_lon": -84.0527151488461, + "shape_pt_sequence": 31, + "shape_dist_traveled": 0.625 + } + }, + { + "model": "gtfs.shape", + "pk": 184, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93794647765702, + "shape_pt_lon": -84.0527273141104, + "shape_pt_sequence": 32, + "shape_dist_traveled": 0.643 + } + }, + { + "model": "gtfs.shape", + "pk": 185, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93809150988507, + "shape_pt_lon": -84.0527076622996, + "shape_pt_sequence": 33, + "shape_dist_traveled": 0.659 + } + }, + { + "model": "gtfs.shape", + "pk": 186, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93815511047925, + "shape_pt_lon": -84.052635606505, + "shape_pt_sequence": 34, + "shape_dist_traveled": 0.67 + } + }, + { + "model": "gtfs.shape", + "pk": 187, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93840121696546, + "shape_pt_lon": -84.0521246655647, + "shape_pt_sequence": 35, + "shape_dist_traveled": 0.732 + } + }, + { + "model": "gtfs.shape", + "pk": 188, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93857142751338, + "shape_pt_lon": -84.051894479649, + "shape_pt_sequence": 36, + "shape_dist_traveled": 0.763 + } + }, + { + "model": "gtfs.shape", + "pk": 189, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93879176765612, + "shape_pt_lon": -84.0516156036497, + "shape_pt_sequence": 37, + "shape_dist_traveled": 0.802 + } + }, + { + "model": "gtfs.shape", + "pk": 190, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93890106345436, + "shape_pt_lon": -84.0514555284908, + "shape_pt_sequence": 38, + "shape_dist_traveled": 0.824 + } + }, + { + "model": "gtfs.shape", + "pk": 191, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93897507515302, + "shape_pt_lon": -84.0513020294891, + "shape_pt_sequence": 39, + "shape_dist_traveled": 0.842 + } + }, + { + "model": "gtfs.shape", + "pk": 192, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.9390141956147, + "shape_pt_lon": -84.0511345760324, + "shape_pt_sequence": 40, + "shape_dist_traveled": 0.861 + } + }, + { + "model": "gtfs.shape", + "pk": 193, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93905117558812, + "shape_pt_lon": -84.0509224405605, + "shape_pt_sequence": 41, + "shape_dist_traveled": 0.885 + } + }, + { + "model": "gtfs.shape", + "pk": 194, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93906597792292, + "shape_pt_lon": -84.0506014881021, + "shape_pt_sequence": 42, + "shape_dist_traveled": 0.92 + } + }, + { + "model": "gtfs.shape", + "pk": 195, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93909856537408, + "shape_pt_lon": -84.0501243834524, + "shape_pt_sequence": 43, + "shape_dist_traveled": 0.973 + } + }, + { + "model": "gtfs.shape", + "pk": 196, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93910318560055, + "shape_pt_lon": -84.0497656390733, + "shape_pt_sequence": 44, + "shape_dist_traveled": 1.012 + } + }, + { + "model": "gtfs.shape", + "pk": 197, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93906512245888, + "shape_pt_lon": -84.049652930016, + "shape_pt_sequence": 45, + "shape_dist_traveled": 1.025 + } + }, + { + "model": "gtfs.shape", + "pk": 198, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.9389773657529, + "shape_pt_lon": -84.0495133854688, + "shape_pt_sequence": 46, + "shape_dist_traveled": 1.043 + } + }, + { + "model": "gtfs.shape", + "pk": 199, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93881453893313, + "shape_pt_lon": -84.0493115816303, + "shape_pt_sequence": 47, + "shape_dist_traveled": 1.072 + } + }, + { + "model": "gtfs.shape", + "pk": 200, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93860413409909, + "shape_pt_lon": -84.0490281988577, + "shape_pt_sequence": 48, + "shape_dist_traveled": 1.11 + } + }, + { + "model": "gtfs.shape", + "pk": 201, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93847607358095, + "shape_pt_lon": -84.0488647834885, + "shape_pt_sequence": 49, + "shape_dist_traveled": 1.133 + } + }, + { + "model": "gtfs.shape", + "pk": 202, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93830796101282, + "shape_pt_lon": -84.0486425856324, + "shape_pt_sequence": 50, + "shape_dist_traveled": 1.164 + } + }, + { + "model": "gtfs.shape", + "pk": 203, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93812775111203, + "shape_pt_lon": -84.0484368995492, + "shape_pt_sequence": 51, + "shape_dist_traveled": 1.194 + } + }, + { + "model": "gtfs.shape", + "pk": 204, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93798100124938, + "shape_pt_lon": -84.0482768335369, + "shape_pt_sequence": 52, + "shape_dist_traveled": 1.218 + } + }, + { + "model": "gtfs.shape", + "pk": 205, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93768022319365, + "shape_pt_lon": -84.0479566982914, + "shape_pt_sequence": 53, + "shape_dist_traveled": 1.266 + } + }, + { + "model": "gtfs.shape", + "pk": 206, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93763286635998, + "shape_pt_lon": -84.0479111252314, + "shape_pt_sequence": 54, + "shape_dist_traveled": 1.274 + } + }, + { + "model": "gtfs.shape", + "pk": 207, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93758319780721, + "shape_pt_lon": -84.0478722576937, + "shape_pt_sequence": 55, + "shape_dist_traveled": 1.28 + } + }, + { + "model": "gtfs.shape", + "pk": 208, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93753870216281, + "shape_pt_lon": -84.0478404135935, + "shape_pt_sequence": 56, + "shape_dist_traveled": 1.287 + } + }, + { + "model": "gtfs.shape", + "pk": 209, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.9374942065184, + "shape_pt_lon": -84.0478139339113, + "shape_pt_sequence": 57, + "shape_dist_traveled": 1.292 + } + }, + { + "model": "gtfs.shape", + "pk": 210, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93745024180206, + "shape_pt_lon": -84.0477923420699, + "shape_pt_sequence": 58, + "shape_dist_traveled": 1.298 + } + }, + { + "model": "gtfs.shape", + "pk": 211, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93735938216936, + "shape_pt_lon": -84.0477606919451, + "shape_pt_sequence": 59, + "shape_dist_traveled": 1.308 + } + }, + { + "model": "gtfs.shape", + "pk": 212, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93724916693389, + "shape_pt_lon": -84.0477606931305, + "shape_pt_sequence": 60, + "shape_dist_traveled": 1.32 + } + }, + { + "model": "gtfs.shape", + "pk": 213, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93715177760806, + "shape_pt_lon": -84.0477784341865, + "shape_pt_sequence": 61, + "shape_dist_traveled": 1.331 + } + }, + { + "model": "gtfs.shape", + "pk": 214, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93705710158646, + "shape_pt_lon": -84.0477987581936, + "shape_pt_sequence": 62, + "shape_dist_traveled": 1.342 + } + }, + { + "model": "gtfs.shape", + "pk": 215, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93672866697375, + "shape_pt_lon": -84.0479001602699, + "shape_pt_sequence": 63, + "shape_dist_traveled": 1.38 + } + }, + { + "model": "gtfs.shape", + "pk": 216, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93643873625598, + "shape_pt_lon": -84.0479940310818, + "shape_pt_sequence": 64, + "shape_dist_traveled": 1.414 + } + }, + { + "model": "gtfs.shape", + "pk": 217, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93605459371357, + "shape_pt_lon": -84.0481209106209, + "shape_pt_sequence": 65, + "shape_dist_traveled": 1.458 + } + }, + { + "model": "gtfs.shape", + "pk": 218, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93594785009141, + "shape_pt_lon": -84.0481497577059, + "shape_pt_sequence": 66, + "shape_dist_traveled": 1.471 + } + }, + { + "model": "gtfs.shape", + "pk": 219, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93584672067646, + "shape_pt_lon": -84.0481926863882, + "shape_pt_sequence": 67, + "shape_dist_traveled": 1.483 + } + }, + { + "model": "gtfs.shape", + "pk": 220, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93562414968525, + "shape_pt_lon": -84.0482902977589, + "shape_pt_sequence": 68, + "shape_dist_traveled": 1.51 + } + }, + { + "model": "gtfs.shape", + "pk": 221, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93555563302149, + "shape_pt_lon": -84.0483541402688, + "shape_pt_sequence": 69, + "shape_dist_traveled": 1.52 + } + }, + { + "model": "gtfs.shape", + "pk": 222, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93552377293763, + "shape_pt_lon": -84.048395536302, + "shape_pt_sequence": 70, + "shape_dist_traveled": 1.526 + } + }, + { + "model": "gtfs.shape", + "pk": 223, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93549323384328, + "shape_pt_lon": -84.0484359265072, + "shape_pt_sequence": 71, + "shape_dist_traveled": 1.531 + } + }, + { + "model": "gtfs.shape", + "pk": 224, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93545924101029, + "shape_pt_lon": -84.0485562630898, + "shape_pt_sequence": 72, + "shape_dist_traveled": 1.545 + } + }, + { + "model": "gtfs.shape", + "pk": 225, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93545410965148, + "shape_pt_lon": -84.0486084574091, + "shape_pt_sequence": 73, + "shape_dist_traveled": 1.551 + } + }, + { + "model": "gtfs.shape", + "pk": 226, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93545261101962, + "shape_pt_lon": -84.0486583047952, + "shape_pt_sequence": 74, + "shape_dist_traveled": 1.556 + } + }, + { + "model": "gtfs.shape", + "pk": 227, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93527714539185, + "shape_pt_lon": -84.0486381383254, + "shape_pt_sequence": 75, + "shape_dist_traveled": 1.576 + } + }, + { + "model": "gtfs.shape", + "pk": 228, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93529369875646, + "shape_pt_lon": -84.0483849370953, + "shape_pt_sequence": 76, + "shape_dist_traveled": 1.604 + } + }, + { + "model": "gtfs.shape", + "pk": 229, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93524845287248, + "shape_pt_lon": -84.0481250138729, + "shape_pt_sequence": 77, + "shape_dist_traveled": 1.633 + } + }, + { + "model": "gtfs.shape", + "pk": 230, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93510490695821, + "shape_pt_lon": -84.0476876510322, + "shape_pt_sequence": 78, + "shape_dist_traveled": 1.683 + } + }, + { + "model": "gtfs.shape", + "pk": 231, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93492309622952, + "shape_pt_lon": -84.0471049676225, + "shape_pt_sequence": 79, + "shape_dist_traveled": 1.75 + } + }, + { + "model": "gtfs.shape", + "pk": 232, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93478795156821, + "shape_pt_lon": -84.0463710454434, + "shape_pt_sequence": 80, + "shape_dist_traveled": 1.832 + } + }, + { + "model": "gtfs.shape", + "pk": 233, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93468712924438, + "shape_pt_lon": -84.0458810362687, + "shape_pt_sequence": 81, + "shape_dist_traveled": 1.887 + } + }, + { + "model": "gtfs.shape", + "pk": 234, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93461716476174, + "shape_pt_lon": -84.0456150110652, + "shape_pt_sequence": 82, + "shape_dist_traveled": 1.917 + } + }, + { + "model": "gtfs.shape", + "pk": 235, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93466453460568, + "shape_pt_lon": -84.045615726073, + "shape_pt_sequence": 83, + "shape_dist_traveled": 1.922 + } + }, + { + "model": "gtfs.shape", + "pk": 236, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93495411611772, + "shape_pt_lon": -84.0456098658075, + "shape_pt_sequence": 84, + "shape_dist_traveled": 1.954 + } + }, + { + "model": "gtfs.shape", + "pk": 237, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93501867239507, + "shape_pt_lon": -84.0455893287031, + "shape_pt_sequence": 85, + "shape_dist_traveled": 1.962 + } + }, + { + "model": "gtfs.shape", + "pk": 238, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93533255656777, + "shape_pt_lon": -84.0455828491321, + "shape_pt_sequence": 86, + "shape_dist_traveled": 1.996 + } + }, + { + "model": "gtfs.shape", + "pk": 239, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93558174215077, + "shape_pt_lon": -84.0455310895244, + "shape_pt_sequence": 87, + "shape_dist_traveled": 2.025 + } + }, + { + "model": "gtfs.shape", + "pk": 240, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93565354440517, + "shape_pt_lon": -84.0454587191306, + "shape_pt_sequence": 88, + "shape_dist_traveled": 2.036 + } + }, + { + "model": "gtfs.shape", + "pk": 241, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93601427775509, + "shape_pt_lon": -84.0453935565556, + "shape_pt_sequence": 89, + "shape_dist_traveled": 2.076 + } + }, + { + "model": "gtfs.shape", + "pk": 242, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93618250695711, + "shape_pt_lon": -84.0453574183472, + "shape_pt_sequence": 90, + "shape_dist_traveled": 2.095 + } + }, + { + "model": "gtfs.shape", + "pk": 243, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93624056084127, + "shape_pt_lon": -84.0453568135217, + "shape_pt_sequence": 91, + "shape_dist_traveled": 2.102 + } + }, + { + "model": "gtfs.shape", + "pk": 244, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93629795423082, + "shape_pt_lon": -84.0453642553238, + "shape_pt_sequence": 92, + "shape_dist_traveled": 2.108 + } + }, + { + "model": "gtfs.shape", + "pk": 245, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93659318251401, + "shape_pt_lon": -84.0455215059456, + "shape_pt_sequence": 93, + "shape_dist_traveled": 2.145 + } + }, + { + "model": "gtfs.shape", + "pk": 246, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93667976807258, + "shape_pt_lon": -84.0455703414396, + "shape_pt_sequence": 94, + "shape_dist_traveled": 2.156 + } + }, + { + "model": "gtfs.shape", + "pk": 247, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.9367692395777, + "shape_pt_lon": -84.0455957359235, + "shape_pt_sequence": 95, + "shape_dist_traveled": 2.166 + } + }, + { + "model": "gtfs.shape", + "pk": 248, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93685293870503, + "shape_pt_lon": -84.0455879222361, + "shape_pt_sequence": 96, + "shape_dist_traveled": 2.176 + } + }, + { + "model": "gtfs.shape", + "pk": 249, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93694173624727, + "shape_pt_lon": -84.0455491295231, + "shape_pt_sequence": 97, + "shape_dist_traveled": 2.186 + } + }, + { + "model": "gtfs.shape", + "pk": 250, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93708123470739, + "shape_pt_lon": -84.0454446214555, + "shape_pt_sequence": 98, + "shape_dist_traveled": 2.206 + } + }, + { + "model": "gtfs.shape", + "pk": 251, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93724313131711, + "shape_pt_lon": -84.0452817159445, + "shape_pt_sequence": 99, + "shape_dist_traveled": 2.231 + } + }, + { + "model": "gtfs.shape", + "pk": 252, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93734607124923, + "shape_pt_lon": -84.0451254422096, + "shape_pt_sequence": 100, + "shape_dist_traveled": 2.251 + } + }, + { + "model": "gtfs.shape", + "pk": 253, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93748749351063, + "shape_pt_lon": -84.0448724740612, + "shape_pt_sequence": 101, + "shape_dist_traveled": 2.283 + } + }, + { + "model": "gtfs.shape", + "pk": 254, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93761860756564, + "shape_pt_lon": -84.0446484093239, + "shape_pt_sequence": 102, + "shape_dist_traveled": 2.312 + } + }, + { + "model": "gtfs.shape", + "pk": 255, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93781098243242, + "shape_pt_lon": -84.0443002302728, + "shape_pt_sequence": 103, + "shape_dist_traveled": 2.355 + } + }, + { + "model": "gtfs.shape", + "pk": 256, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93799146315684, + "shape_pt_lon": -84.0439934603325, + "shape_pt_sequence": 104, + "shape_dist_traveled": 2.395 + } + }, + { + "model": "gtfs.shape", + "pk": 257, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93810165004318, + "shape_pt_lon": -84.0438034580265, + "shape_pt_sequence": 105, + "shape_dist_traveled": 2.419 + } + }, + { + "model": "gtfs.shape", + "pk": 258, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93796407612903, + "shape_pt_lon": -84.0436169062427, + "shape_pt_sequence": 106, + "shape_dist_traveled": 2.444 + } + }, + { + "model": "gtfs.shape", + "pk": 259, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93791116339785, + "shape_pt_lon": -84.043444027742, + "shape_pt_sequence": 107, + "shape_dist_traveled": 2.464 + } + }, + { + "model": "gtfs.shape", + "pk": 260, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93788614994896, + "shape_pt_lon": -84.0432193842326, + "shape_pt_sequence": 108, + "shape_dist_traveled": 2.489 + } + }, + { + "model": "gtfs.shape", + "pk": 261, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93792655633902, + "shape_pt_lon": -84.0429361376045, + "shape_pt_sequence": 109, + "shape_dist_traveled": 2.52 + } + }, + { + "model": "gtfs.shape", + "pk": 262, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93800099196738, + "shape_pt_lon": -84.0424812505301, + "shape_pt_sequence": 110, + "shape_dist_traveled": 2.571 + } + }, + { + "model": "gtfs.shape", + "pk": 263, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93813818359375, + "shape_pt_lon": -84.0421772565051, + "shape_pt_sequence": 111, + "shape_dist_traveled": 2.607 + } + }, + { + "model": "gtfs.shape", + "pk": 264, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93816415907815, + "shape_pt_lon": -84.0419985184082, + "shape_pt_sequence": 112, + "shape_dist_traveled": 2.627 + } + }, + { + "model": "gtfs.shape", + "pk": 265, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.9381545385288, + "shape_pt_lon": -84.0418510350607, + "shape_pt_sequence": 113, + "shape_dist_traveled": 2.643 + } + }, + { + "model": "gtfs.shape", + "pk": 266, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93812567687818, + "shape_pt_lon": -84.0417260160641, + "shape_pt_sequence": 114, + "shape_dist_traveled": 2.657 + } + }, + { + "model": "gtfs.shape", + "pk": 267, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93807564954973, + "shape_pt_lon": -84.0416527622632, + "shape_pt_sequence": 115, + "shape_dist_traveled": 2.667 + } + }, + { + "model": "gtfs.shape", + "pk": 268, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93804289664845, + "shape_pt_lon": -84.0416384252501, + "shape_pt_sequence": 116, + "shape_dist_traveled": 2.671 + } + }, + { + "model": "gtfs.shape", + "pk": 269, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93801311595451, + "shape_pt_lon": -84.0416361581774, + "shape_pt_sequence": 117, + "shape_dist_traveled": 2.675 + } + }, + { + "model": "gtfs.shape", + "pk": 270, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93792172067878, + "shape_pt_lon": -84.0416381115992, + "shape_pt_sequence": 118, + "shape_dist_traveled": 2.685 + } + }, + { + "model": "gtfs.shape", + "pk": 271, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93790247956499, + "shape_pt_lon": -84.0412122658535, + "shape_pt_sequence": 119, + "shape_dist_traveled": 2.731 + } + }, + { + "model": "gtfs.shape", + "pk": 272, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93789478311904, + "shape_pt_lon": -84.0410686893496, + "shape_pt_sequence": 120, + "shape_dist_traveled": 2.747 + } + }, + { + "model": "gtfs.shape", + "pk": 273, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93830046896954, + "shape_pt_lon": -84.040969095546, + "shape_pt_sequence": 121, + "shape_dist_traveled": 2.793 + } + }, + { + "model": "gtfs.shape", + "pk": 274, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93846168564775, + "shape_pt_lon": -84.0409298363785, + "shape_pt_sequence": 122, + "shape_dist_traveled": 2.812 + } + }, + { + "model": "gtfs.shape", + "pk": 275, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93868873033166, + "shape_pt_lon": -84.040967928104, + "shape_pt_sequence": 123, + "shape_dist_traveled": 2.837 + } + }, + { + "model": "gtfs.shape", + "pk": 276, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93884815398905, + "shape_pt_lon": -84.0411370173071, + "shape_pt_sequence": 124, + "shape_dist_traveled": 2.863 + } + }, + { + "model": "gtfs.shape", + "pk": 277, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93915383599336, + "shape_pt_lon": -84.0416568644267, + "shape_pt_sequence": 125, + "shape_dist_traveled": 2.929 + } + }, + { + "model": "gtfs.shape", + "pk": 278, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93928521203319, + "shape_pt_lon": -84.0417935755105, + "shape_pt_sequence": 126, + "shape_dist_traveled": 2.95 + } + }, + { + "model": "gtfs.shape", + "pk": 279, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93942977628924, + "shape_pt_lon": -84.0418876857024, + "shape_pt_sequence": 127, + "shape_dist_traveled": 2.969 + } + }, + { + "model": "gtfs.shape", + "pk": 280, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93950150662073, + "shape_pt_lon": -84.0419089725314, + "shape_pt_sequence": 128, + "shape_dist_traveled": 2.977 + } + }, + { + "model": "gtfs.shape", + "pk": 281, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93950371370814, + "shape_pt_lon": -84.0422428396408, + "shape_pt_sequence": 129, + "shape_dist_traveled": 3.014 + } + }, + { + "model": "gtfs.shape", + "pk": 282, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93948613333313, + "shape_pt_lon": -84.0425204684191, + "shape_pt_sequence": 130, + "shape_dist_traveled": 3.044 + } + }, + { + "model": "gtfs.shape", + "pk": 283, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93944529338017, + "shape_pt_lon": -84.0430246306461, + "shape_pt_sequence": 131, + "shape_dist_traveled": 3.1 + } + }, + { + "model": "gtfs.shape", + "pk": 284, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93942327481619, + "shape_pt_lon": -84.0433356324423, + "shape_pt_sequence": 132, + "shape_dist_traveled": 3.134 + } + }, + { + "model": "gtfs.shape", + "pk": 285, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93972442200525, + "shape_pt_lon": -84.0432655607324, + "shape_pt_sequence": 133, + "shape_dist_traveled": 3.168 + } + }, + { + "model": "gtfs.shape", + "pk": 286, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93978732393233, + "shape_pt_lon": -84.043299171515, + "shape_pt_sequence": 134, + "shape_dist_traveled": 3.176 + } + }, + { + "model": "gtfs.shape", + "pk": 287, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93981711902594, + "shape_pt_lon": -84.0433809579747, + "shape_pt_sequence": 135, + "shape_dist_traveled": 3.186 + } + }, + { + "model": "gtfs.shape", + "pk": 288, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.93991974845217, + "shape_pt_lon": -84.0437596394605, + "shape_pt_sequence": 136, + "shape_dist_traveled": 3.229 + } + }, + { + "model": "gtfs.shape", + "pk": 289, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.94007043205839, + "shape_pt_lon": -84.0443170698121, + "shape_pt_sequence": 137, + "shape_dist_traveled": 3.292 + } + }, + { + "model": "gtfs.shape", + "pk": 290, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.94016533658292, + "shape_pt_lon": -84.0446744654815, + "shape_pt_sequence": 138, + "shape_dist_traveled": 3.332 + } + }, + { + "model": "gtfs.shape", + "pk": 291, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.94027017298111, + "shape_pt_lon": -84.0448268343636, + "shape_pt_sequence": 139, + "shape_dist_traveled": 3.353 + } + }, + { + "model": "gtfs.shape", + "pk": 292, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.94038169599758, + "shape_pt_lon": -84.045244089757, + "shape_pt_sequence": 140, + "shape_dist_traveled": 3.4 + } + }, + { + "model": "gtfs.shape", + "pk": 293, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.94048873914792, + "shape_pt_lon": -84.045632855511, + "shape_pt_sequence": 141, + "shape_dist_traveled": 3.444 + } + }, + { + "model": "gtfs.shape", + "pk": 294, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.94063882056966, + "shape_pt_lon": -84.045599244728, + "shape_pt_sequence": 142, + "shape_dist_traveled": 3.461 + } + }, + { + "model": "gtfs.shape", + "pk": 295, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.94079662666821, + "shape_pt_lon": -84.0450681942005, + "shape_pt_sequence": 143, + "shape_dist_traveled": 3.522 + } + }, + { + "model": "gtfs.shape", + "pk": 296, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.94095071185347, + "shape_pt_lon": -84.044750328054, + "shape_pt_sequence": 144, + "shape_dist_traveled": 3.561 + } + }, + { + "model": "gtfs.shape", + "pk": 297, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.9410528605391, + "shape_pt_lon": -84.0446554341072, + "shape_pt_sequence": 145, + "shape_dist_traveled": 3.576 + } + }, + { + "model": "gtfs.shape", + "pk": 298, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.94157411286451, + "shape_pt_lon": -84.04469185811, + "shape_pt_sequence": 146, + "shape_dist_traveled": 3.634 + } + }, + { + "model": "gtfs.shape", + "pk": 299, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.94242227255298, + "shape_pt_lon": -84.0447474726987, + "shape_pt_sequence": 147, + "shape_dist_traveled": 3.728 + } + }, + { + "model": "gtfs.shape", + "pk": 300, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.94283107241787, + "shape_pt_lon": -84.0447699014639, + "shape_pt_sequence": 148, + "shape_dist_traveled": 3.773 + } + }, + { + "model": "gtfs.shape", + "pk": 301, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.94300697065598, + "shape_pt_lon": -84.0447350564938, + "shape_pt_sequence": 149, + "shape_dist_traveled": 3.793 + } + }, + { + "model": "gtfs.shape", + "pk": 302, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.94326009234421, + "shape_pt_lon": -84.0446544775012, + "shape_pt_sequence": 150, + "shape_dist_traveled": 3.823 + } + }, + { + "model": "gtfs.shape", + "pk": 303, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.94351468777105, + "shape_pt_lon": -84.0445407320727, + "shape_pt_sequence": 151, + "shape_dist_traveled": 3.853 + } + }, + { + "model": "gtfs.shape", + "pk": 304, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.94366913468646, + "shape_pt_lon": -84.0444710421328, + "shape_pt_sequence": 152, + "shape_dist_traveled": 3.872 + } + }, + { + "model": "gtfs.shape", + "pk": 305, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.9437999854876, + "shape_pt_lon": -84.0447541575134, + "shape_pt_sequence": 153, + "shape_dist_traveled": 3.906 + } + }, + { + "model": "gtfs.shape", + "pk": 306, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.94388149907578, + "shape_pt_lon": -84.0448848261506, + "shape_pt_sequence": 154, + "shape_dist_traveled": 3.923 + } + }, + { + "model": "gtfs.shape", + "pk": 307, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.94396600743452, + "shape_pt_lon": -84.0449552037605, + "shape_pt_sequence": 155, + "shape_dist_traveled": 3.935 + } + }, + { + "model": "gtfs.shape", + "pk": 308, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.94433419150155, + "shape_pt_lon": -84.0449932717292, + "shape_pt_sequence": 156, + "shape_dist_traveled": 3.976 + } + }, + { + "model": "gtfs.shape", + "pk": 309, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.94457398813642, + "shape_pt_lon": -84.0450138149367, + "shape_pt_sequence": 157, + "shape_dist_traveled": 4.003 + } + }, + { + "model": "gtfs.shape", + "pk": 310, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.94495221337372, + "shape_pt_lon": -84.045010504636, + "shape_pt_sequence": 158, + "shape_dist_traveled": 4.045 + } + }, + { + "model": "gtfs.shape", + "pk": 311, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.94503698779598, + "shape_pt_lon": -84.0450833311997, + "shape_pt_sequence": 159, + "shape_dist_traveled": 4.057 + } + }, + { + "model": "gtfs.shape", + "pk": 312, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.94506796311185, + "shape_pt_lon": -84.045389534011, + "shape_pt_sequence": 160, + "shape_dist_traveled": 4.091 + } + }, + { + "model": "gtfs.shape", + "pk": 313, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.94509404758507, + "shape_pt_lon": -84.0455020842335, + "shape_pt_sequence": 161, + "shape_dist_traveled": 4.104 + } + }, + { + "model": "gtfs.shape", + "pk": 314, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.94516741015652, + "shape_pt_lon": -84.0455418078417, + "shape_pt_sequence": 162, + "shape_dist_traveled": 4.113 + } + }, + { + "model": "gtfs.shape", + "pk": 315, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.94569411437748, + "shape_pt_lon": -84.0455036631251, + "shape_pt_sequence": 163, + "shape_dist_traveled": 4.171 + } + }, + { + "model": "gtfs.shape", + "pk": 316, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.94576235686358, + "shape_pt_lon": -84.0454645549726, + "shape_pt_sequence": 164, + "shape_dist_traveled": 4.18 + } + }, + { + "model": "gtfs.shape", + "pk": 317, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.94586939851089, + "shape_pt_lon": -84.0452550477597, + "shape_pt_sequence": 165, + "shape_dist_traveled": 4.206 + } + }, + { + "model": "gtfs.shape", + "pk": 318, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.94594554151604, + "shape_pt_lon": -84.0451777429595, + "shape_pt_sequence": 166, + "shape_dist_traveled": 4.218 + } + }, + { + "model": "gtfs.shape", + "pk": 319, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.94629085058927, + "shape_pt_lon": -84.0451530949856, + "shape_pt_sequence": 167, + "shape_dist_traveled": 4.256 + } + }, + { + "model": "gtfs.shape", + "pk": 320, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.94638848955421, + "shape_pt_lon": -84.0451636656039, + "shape_pt_sequence": 168, + "shape_dist_traveled": 4.267 + } + }, + { + "model": "gtfs.shape", + "pk": 321, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.94644918315917, + "shape_pt_lon": -84.0452028781838, + "shape_pt_sequence": 169, + "shape_dist_traveled": 4.275 + } + }, + { + "model": "gtfs.shape", + "pk": 322, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "shape_pt_lat": 9.94648865740507, + "shape_pt_lon": -84.0452462913844, + "shape_pt_sequence": 170, + "shape_dist_traveled": 4.281 + } + }, + { + "model": "gtfs.shape", + "pk": 323, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93551240308205, + "shape_pt_lon": -84.052232462037, + "shape_pt_sequence": 0, + "shape_dist_traveled": 0.0 + } + }, + { + "model": "gtfs.shape", + "pk": 324, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93553038682294, + "shape_pt_lon": -84.0523024805564, + "shape_pt_sequence": 1, + "shape_dist_traveled": 0.008 + } + }, + { + "model": "gtfs.shape", + "pk": 325, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93554317941351, + "shape_pt_lon": -84.0523354193901, + "shape_pt_sequence": 2, + "shape_dist_traveled": 0.012 + } + }, + { + "model": "gtfs.shape", + "pk": 326, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93560006968185, + "shape_pt_lon": -84.0523952582046, + "shape_pt_sequence": 3, + "shape_dist_traveled": 0.021 + } + }, + { + "model": "gtfs.shape", + "pk": 327, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93565298376728, + "shape_pt_lon": -84.0524284133704, + "shape_pt_sequence": 4, + "shape_dist_traveled": 0.028 + } + }, + { + "model": "gtfs.shape", + "pk": 328, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93571914349433, + "shape_pt_lon": -84.0524404498132, + "shape_pt_sequence": 5, + "shape_dist_traveled": 0.035 + } + }, + { + "model": "gtfs.shape", + "pk": 329, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93583719162457, + "shape_pt_lon": -84.0524171180445, + "shape_pt_sequence": 6, + "shape_dist_traveled": 0.049 + } + }, + { + "model": "gtfs.shape", + "pk": 330, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93594643029256, + "shape_pt_lon": -84.0523801266021, + "shape_pt_sequence": 7, + "shape_dist_traveled": 0.061 + } + }, + { + "model": "gtfs.shape", + "pk": 331, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93608834513962, + "shape_pt_lon": -84.0523343631691, + "shape_pt_sequence": 8, + "shape_dist_traveled": 0.078 + } + }, + { + "model": "gtfs.shape", + "pk": 332, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93620422239772, + "shape_pt_lon": -84.0522977078958, + "shape_pt_sequence": 9, + "shape_dist_traveled": 0.091 + } + }, + { + "model": "gtfs.shape", + "pk": 333, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.936293049843, + "shape_pt_lon": -84.0522711599884, + "shape_pt_sequence": 10, + "shape_dist_traveled": 0.101 + } + }, + { + "model": "gtfs.shape", + "pk": 334, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93639226353531, + "shape_pt_lon": -84.0522405229359, + "shape_pt_sequence": 11, + "shape_dist_traveled": 0.113 + } + }, + { + "model": "gtfs.shape", + "pk": 335, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93653093553953, + "shape_pt_lon": -84.0522367457551, + "shape_pt_sequence": 12, + "shape_dist_traveled": 0.128 + } + }, + { + "model": "gtfs.shape", + "pk": 336, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93659589447438, + "shape_pt_lon": -84.0522590055211, + "shape_pt_sequence": 13, + "shape_dist_traveled": 0.136 + } + }, + { + "model": "gtfs.shape", + "pk": 337, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93661615058734, + "shape_pt_lon": -84.0523412639074, + "shape_pt_sequence": 14, + "shape_dist_traveled": 0.145 + } + }, + { + "model": "gtfs.shape", + "pk": 338, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.9365876265418, + "shape_pt_lon": -84.0524260404882, + "shape_pt_sequence": 15, + "shape_dist_traveled": 0.155 + } + }, + { + "model": "gtfs.shape", + "pk": 339, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.9365355393877, + "shape_pt_lon": -84.0524499625703, + "shape_pt_sequence": 16, + "shape_dist_traveled": 0.161 + } + }, + { + "model": "gtfs.shape", + "pk": 340, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93644867420793, + "shape_pt_lon": -84.0524473462339, + "shape_pt_sequence": 17, + "shape_dist_traveled": 0.171 + } + }, + { + "model": "gtfs.shape", + "pk": 341, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93635813864212, + "shape_pt_lon": -84.0524384481957, + "shape_pt_sequence": 18, + "shape_dist_traveled": 0.181 + } + }, + { + "model": "gtfs.shape", + "pk": 342, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93632957313295, + "shape_pt_lon": -84.052426075736, + "shape_pt_sequence": 19, + "shape_dist_traveled": 0.184 + } + }, + { + "model": "gtfs.shape", + "pk": 343, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93630067737655, + "shape_pt_lon": -84.0524254379402, + "shape_pt_sequence": 20, + "shape_dist_traveled": 0.188 + } + }, + { + "model": "gtfs.shape", + "pk": 344, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.9361767385198, + "shape_pt_lon": -84.0524455386407, + "shape_pt_sequence": 21, + "shape_dist_traveled": 0.201 + } + }, + { + "model": "gtfs.shape", + "pk": 345, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93606938255121, + "shape_pt_lon": -84.0524692189919, + "shape_pt_sequence": 22, + "shape_dist_traveled": 0.214 + } + }, + { + "model": "gtfs.shape", + "pk": 346, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.9358662876061, + "shape_pt_lon": -84.0525134237392, + "shape_pt_sequence": 23, + "shape_dist_traveled": 0.237 + } + }, + { + "model": "gtfs.shape", + "pk": 347, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93580530982546, + "shape_pt_lon": -84.0525277028597, + "shape_pt_sequence": 24, + "shape_dist_traveled": 0.244 + } + }, + { + "model": "gtfs.shape", + "pk": 348, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93571720324209, + "shape_pt_lon": -84.0525351455981, + "shape_pt_sequence": 25, + "shape_dist_traveled": 0.253 + } + }, + { + "model": "gtfs.shape", + "pk": 349, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93562932790421, + "shape_pt_lon": -84.0525170973821, + "shape_pt_sequence": 26, + "shape_dist_traveled": 0.263 + } + }, + { + "model": "gtfs.shape", + "pk": 350, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93552958615174, + "shape_pt_lon": -84.0524334827489, + "shape_pt_sequence": 27, + "shape_dist_traveled": 0.278 + } + }, + { + "model": "gtfs.shape", + "pk": 351, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93545575661828, + "shape_pt_lon": -84.052350672979, + "shape_pt_sequence": 28, + "shape_dist_traveled": 0.29 + } + }, + { + "model": "gtfs.shape", + "pk": 352, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93541638163459, + "shape_pt_lon": -84.0522446182099, + "shape_pt_sequence": 29, + "shape_dist_traveled": 0.302 + } + }, + { + "model": "gtfs.shape", + "pk": 353, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93541236377893, + "shape_pt_lon": -84.0520977731443, + "shape_pt_sequence": 30, + "shape_dist_traveled": 0.318 + } + }, + { + "model": "gtfs.shape", + "pk": 354, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.9353609350822, + "shape_pt_lon": -84.0517673714683, + "shape_pt_sequence": 31, + "shape_dist_traveled": 0.355 + } + }, + { + "model": "gtfs.shape", + "pk": 355, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93533537431955, + "shape_pt_lon": -84.0515957473315, + "shape_pt_sequence": 32, + "shape_dist_traveled": 0.374 + } + }, + { + "model": "gtfs.shape", + "pk": 356, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93527832074849, + "shape_pt_lon": -84.0514578761312, + "shape_pt_sequence": 33, + "shape_dist_traveled": 0.39 + } + }, + { + "model": "gtfs.shape", + "pk": 357, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93537394568805, + "shape_pt_lon": -84.051051560594, + "shape_pt_sequence": 34, + "shape_dist_traveled": 0.436 + } + }, + { + "model": "gtfs.shape", + "pk": 358, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93548509593826, + "shape_pt_lon": -84.0506488451042, + "shape_pt_sequence": 35, + "shape_dist_traveled": 0.482 + } + }, + { + "model": "gtfs.shape", + "pk": 359, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93555656904013, + "shape_pt_lon": -84.0503446866737, + "shape_pt_sequence": 36, + "shape_dist_traveled": 0.516 + } + }, + { + "model": "gtfs.shape", + "pk": 360, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93560639042598, + "shape_pt_lon": -84.0501407351937, + "shape_pt_sequence": 37, + "shape_dist_traveled": 0.539 + } + }, + { + "model": "gtfs.shape", + "pk": 361, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93564014039442, + "shape_pt_lon": -84.0499188359838, + "shape_pt_sequence": 38, + "shape_dist_traveled": 0.564 + } + }, + { + "model": "gtfs.shape", + "pk": 362, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93555237106771, + "shape_pt_lon": -84.0495240741516, + "shape_pt_sequence": 39, + "shape_dist_traveled": 0.608 + } + }, + { + "model": "gtfs.shape", + "pk": 363, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.9355127171103, + "shape_pt_lon": -84.0493169635181, + "shape_pt_sequence": 40, + "shape_dist_traveled": 0.631 + } + }, + { + "model": "gtfs.shape", + "pk": 364, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93544759669272, + "shape_pt_lon": -84.0490255135247, + "shape_pt_sequence": 41, + "shape_dist_traveled": 0.664 + } + }, + { + "model": "gtfs.shape", + "pk": 365, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93538988817417, + "shape_pt_lon": -84.0487899823799, + "shape_pt_sequence": 42, + "shape_dist_traveled": 0.691 + } + }, + { + "model": "gtfs.shape", + "pk": 366, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93537301317815, + "shape_pt_lon": -84.0486447689264, + "shape_pt_sequence": 43, + "shape_dist_traveled": 0.707 + } + }, + { + "model": "gtfs.shape", + "pk": 367, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93527658461171, + "shape_pt_lon": -84.0486366108669, + "shape_pt_sequence": 44, + "shape_dist_traveled": 0.718 + } + }, + { + "model": "gtfs.shape", + "pk": 368, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93529274995559, + "shape_pt_lon": -84.0483784246656, + "shape_pt_sequence": 45, + "shape_dist_traveled": 0.746 + } + }, + { + "model": "gtfs.shape", + "pk": 369, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93524694618673, + "shape_pt_lon": -84.0481238929513, + "shape_pt_sequence": 46, + "shape_dist_traveled": 0.774 + } + }, + { + "model": "gtfs.shape", + "pk": 370, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93514165787212, + "shape_pt_lon": -84.0478057230236, + "shape_pt_sequence": 47, + "shape_dist_traveled": 0.811 + } + }, + { + "model": "gtfs.shape", + "pk": 371, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93500316815773, + "shape_pt_lon": -84.0473807827294, + "shape_pt_sequence": 48, + "shape_dist_traveled": 0.86 + } + }, + { + "model": "gtfs.shape", + "pk": 372, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93492049042863, + "shape_pt_lon": -84.0470859236543, + "shape_pt_sequence": 49, + "shape_dist_traveled": 0.894 + } + }, + { + "model": "gtfs.shape", + "pk": 373, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93479657132182, + "shape_pt_lon": -84.0464195689003, + "shape_pt_sequence": 50, + "shape_dist_traveled": 0.968 + } + }, + { + "model": "gtfs.shape", + "pk": 374, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93468604728109, + "shape_pt_lon": -84.0458857020311, + "shape_pt_sequence": 51, + "shape_dist_traveled": 1.028 + } + }, + { + "model": "gtfs.shape", + "pk": 375, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.9346124699569, + "shape_pt_lon": -84.0456137031377, + "shape_pt_sequence": 52, + "shape_dist_traveled": 1.059 + } + }, + { + "model": "gtfs.shape", + "pk": 376, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93481022852054, + "shape_pt_lon": -84.0456081393267, + "shape_pt_sequence": 53, + "shape_dist_traveled": 1.081 + } + }, + { + "model": "gtfs.shape", + "pk": 377, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93495379560579, + "shape_pt_lon": -84.0456083692307, + "shape_pt_sequence": 54, + "shape_dist_traveled": 1.096 + } + }, + { + "model": "gtfs.shape", + "pk": 378, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93502122053513, + "shape_pt_lon": -84.0455873976348, + "shape_pt_sequence": 55, + "shape_dist_traveled": 1.104 + } + }, + { + "model": "gtfs.shape", + "pk": 379, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93525069991888, + "shape_pt_lon": -84.0455815527507, + "shape_pt_sequence": 56, + "shape_dist_traveled": 1.13 + } + }, + { + "model": "gtfs.shape", + "pk": 380, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93533621207088, + "shape_pt_lon": -84.0455791055204, + "shape_pt_sequence": 57, + "shape_dist_traveled": 1.139 + } + }, + { + "model": "gtfs.shape", + "pk": 381, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.9355796939962, + "shape_pt_lon": -84.0455277100451, + "shape_pt_sequence": 58, + "shape_dist_traveled": 1.167 + } + }, + { + "model": "gtfs.shape", + "pk": 382, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93566141737569, + "shape_pt_lon": -84.0454545424224, + "shape_pt_sequence": 59, + "shape_dist_traveled": 1.179 + } + }, + { + "model": "gtfs.shape", + "pk": 383, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93593880374486, + "shape_pt_lon": -84.0454033749615, + "shape_pt_sequence": 60, + "shape_dist_traveled": 1.21 + } + }, + { + "model": "gtfs.shape", + "pk": 384, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93617987563359, + "shape_pt_lon": -84.0453561940705, + "shape_pt_sequence": 61, + "shape_dist_traveled": 1.237 + } + }, + { + "model": "gtfs.shape", + "pk": 385, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93629878421235, + "shape_pt_lon": -84.0453622217276, + "shape_pt_sequence": 62, + "shape_dist_traveled": 1.25 + } + }, + { + "model": "gtfs.shape", + "pk": 386, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93647074793075, + "shape_pt_lon": -84.0454544077961, + "shape_pt_sequence": 63, + "shape_dist_traveled": 1.272 + } + }, + { + "model": "gtfs.shape", + "pk": 387, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.9366470154013, + "shape_pt_lon": -84.0455491574187, + "shape_pt_sequence": 64, + "shape_dist_traveled": 1.294 + } + }, + { + "model": "gtfs.shape", + "pk": 388, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93667996169247, + "shape_pt_lon": -84.0455671051487, + "shape_pt_sequence": 65, + "shape_dist_traveled": 1.298 + } + }, + { + "model": "gtfs.shape", + "pk": 389, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93677076487081, + "shape_pt_lon": -84.0455923951325, + "shape_pt_sequence": 66, + "shape_dist_traveled": 1.308 + } + }, + { + "model": "gtfs.shape", + "pk": 390, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93685019478803, + "shape_pt_lon": -84.0455875957907, + "shape_pt_sequence": 67, + "shape_dist_traveled": 1.317 + } + }, + { + "model": "gtfs.shape", + "pk": 391, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93693939078323, + "shape_pt_lon": -84.0455459896891, + "shape_pt_sequence": 68, + "shape_dist_traveled": 1.328 + } + }, + { + "model": "gtfs.shape", + "pk": 392, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93708216879507, + "shape_pt_lon": -84.0454405657035, + "shape_pt_sequence": 69, + "shape_dist_traveled": 1.348 + } + }, + { + "model": "gtfs.shape", + "pk": 393, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.9372417505605, + "shape_pt_lon": -84.0452791956738, + "shape_pt_sequence": 70, + "shape_dist_traveled": 1.373 + } + }, + { + "model": "gtfs.shape", + "pk": 394, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93733175001592, + "shape_pt_lon": -84.0451437718914, + "shape_pt_sequence": 71, + "shape_dist_traveled": 1.391 + } + }, + { + "model": "gtfs.shape", + "pk": 395, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93747880276838, + "shape_pt_lon": -84.0448843455207, + "shape_pt_sequence": 72, + "shape_dist_traveled": 1.423 + } + }, + { + "model": "gtfs.shape", + "pk": 396, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93759383837854, + "shape_pt_lon": -84.0446848467803, + "shape_pt_sequence": 73, + "shape_dist_traveled": 1.449 + } + }, + { + "model": "gtfs.shape", + "pk": 397, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93775722150572, + "shape_pt_lon": -84.0443877220931, + "shape_pt_sequence": 74, + "shape_dist_traveled": 1.486 + } + }, + { + "model": "gtfs.shape", + "pk": 398, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93792650160209, + "shape_pt_lon": -84.0440980878075, + "shape_pt_sequence": 75, + "shape_dist_traveled": 1.523 + } + }, + { + "model": "gtfs.shape", + "pk": 399, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93809919166979, + "shape_pt_lon": -84.0437999865192, + "shape_pt_sequence": 76, + "shape_dist_traveled": 1.561 + } + }, + { + "model": "gtfs.shape", + "pk": 400, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93796097853527, + "shape_pt_lon": -84.0436147985756, + "shape_pt_sequence": 77, + "shape_dist_traveled": 1.586 + } + }, + { + "model": "gtfs.shape", + "pk": 401, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93791115773413, + "shape_pt_lon": -84.0434434787742, + "shape_pt_sequence": 78, + "shape_dist_traveled": 1.606 + } + }, + { + "model": "gtfs.shape", + "pk": 402, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.9378853721441, + "shape_pt_lon": -84.0432188653814, + "shape_pt_sequence": 79, + "shape_dist_traveled": 1.63 + } + }, + { + "model": "gtfs.shape", + "pk": 403, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93792474683056, + "shape_pt_lon": -84.0429382281456, + "shape_pt_sequence": 80, + "shape_dist_traveled": 1.661 + } + }, + { + "model": "gtfs.shape", + "pk": 404, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93798421082772, + "shape_pt_lon": -84.0425692976739, + "shape_pt_sequence": 81, + "shape_dist_traveled": 1.702 + } + }, + { + "model": "gtfs.shape", + "pk": 405, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93799717971221, + "shape_pt_lon": -84.0424760119919, + "shape_pt_sequence": 82, + "shape_dist_traveled": 1.713 + } + }, + { + "model": "gtfs.shape", + "pk": 406, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93813619639644, + "shape_pt_lon": -84.0421774270254, + "shape_pt_sequence": 83, + "shape_dist_traveled": 1.749 + } + }, + { + "model": "gtfs.shape", + "pk": 407, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93816151133474, + "shape_pt_lon": -84.0419972282554, + "shape_pt_sequence": 84, + "shape_dist_traveled": 1.769 + } + }, + { + "model": "gtfs.shape", + "pk": 408, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93815347569085, + "shape_pt_lon": -84.0418487515775, + "shape_pt_sequence": 85, + "shape_dist_traveled": 1.785 + } + }, + { + "model": "gtfs.shape", + "pk": 409, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93812695789198, + "shape_pt_lon": -84.0417223014224, + "shape_pt_sequence": 86, + "shape_dist_traveled": 1.799 + } + }, + { + "model": "gtfs.shape", + "pk": 410, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93807552975984, + "shape_pt_lon": -84.041649694696, + "shape_pt_sequence": 87, + "shape_dist_traveled": 1.809 + } + }, + { + "model": "gtfs.shape", + "pk": 411, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93801445884308, + "shape_pt_lon": -84.0416317469654, + "shape_pt_sequence": 88, + "shape_dist_traveled": 1.816 + } + }, + { + "model": "gtfs.shape", + "pk": 412, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93791897942971, + "shape_pt_lon": -84.0416350505556, + "shape_pt_sequence": 89, + "shape_dist_traveled": 1.827 + } + }, + { + "model": "gtfs.shape", + "pk": 413, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93789540463778, + "shape_pt_lon": -84.0410687729965, + "shape_pt_sequence": 90, + "shape_dist_traveled": 1.889 + } + }, + { + "model": "gtfs.shape", + "pk": 414, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93846102257875, + "shape_pt_lon": -84.0409278059346, + "shape_pt_sequence": 91, + "shape_dist_traveled": 1.953 + } + }, + { + "model": "gtfs.shape", + "pk": 415, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93868770509072, + "shape_pt_lon": -84.0409636843222, + "shape_pt_sequence": 92, + "shape_dist_traveled": 1.979 + } + }, + { + "model": "gtfs.shape", + "pk": 416, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93884702967763, + "shape_pt_lon": -84.0411317795776, + "shape_pt_sequence": 93, + "shape_dist_traveled": 2.004 + } + }, + { + "model": "gtfs.shape", + "pk": 417, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93915009329333, + "shape_pt_lon": -84.0416545090707, + "shape_pt_sequence": 94, + "shape_dist_traveled": 2.071 + } + }, + { + "model": "gtfs.shape", + "pk": 418, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93928437269097, + "shape_pt_lon": -84.0417940169538, + "shape_pt_sequence": 95, + "shape_dist_traveled": 2.092 + } + }, + { + "model": "gtfs.shape", + "pk": 419, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93942339095397, + "shape_pt_lon": -84.0418844077991, + "shape_pt_sequence": 96, + "shape_dist_traveled": 2.11 + } + }, + { + "model": "gtfs.shape", + "pk": 420, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93949992907343, + "shape_pt_lon": -84.0419066090587, + "shape_pt_sequence": 97, + "shape_dist_traveled": 2.119 + } + }, + { + "model": "gtfs.shape", + "pk": 421, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93949992907343, + "shape_pt_lon": -84.0422475569833, + "shape_pt_sequence": 98, + "shape_dist_traveled": 2.156 + } + }, + { + "model": "gtfs.shape", + "pk": 422, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.939437, + "shape_pt_lon": -84.043074, + "shape_pt_sequence": 99, + "shape_dist_traveled": 2.187 + } + }, + { + "model": "gtfs.shape", + "pk": 423, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.9394249524573, + "shape_pt_lon": -84.0433290766316, + "shape_pt_sequence": 100, + "shape_dist_traveled": 2.275 + } + }, + { + "model": "gtfs.shape", + "pk": 424, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93972312001197, + "shape_pt_lon": -84.0432616940963, + "shape_pt_sequence": 101, + "shape_dist_traveled": 2.309 + } + }, + { + "model": "gtfs.shape", + "pk": 425, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.9397847344284, + "shape_pt_lon": -84.0432938739159, + "shape_pt_sequence": 102, + "shape_dist_traveled": 2.317 + } + }, + { + "model": "gtfs.shape", + "pk": 426, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.9398186343525, + "shape_pt_lon": -84.0433818049407, + "shape_pt_sequence": 103, + "shape_dist_traveled": 2.327 + } + }, + { + "model": "gtfs.shape", + "pk": 427, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.93998824672434, + "shape_pt_lon": -84.0440308770623, + "shape_pt_sequence": 104, + "shape_dist_traveled": 2.401 + } + }, + { + "model": "gtfs.shape", + "pk": 428, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94015974971341, + "shape_pt_lon": -84.0446658158992, + "shape_pt_sequence": 105, + "shape_dist_traveled": 2.473 + } + }, + { + "model": "gtfs.shape", + "pk": 429, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94026910203425, + "shape_pt_lon": -84.0448245474961, + "shape_pt_sequence": 106, + "shape_dist_traveled": 2.494 + } + }, + { + "model": "gtfs.shape", + "pk": 430, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94036490303632, + "shape_pt_lon": -84.0451873514683, + "shape_pt_sequence": 107, + "shape_dist_traveled": 2.535 + } + }, + { + "model": "gtfs.shape", + "pk": 431, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94048769323097, + "shape_pt_lon": -84.0456290389484, + "shape_pt_sequence": 108, + "shape_dist_traveled": 2.586 + } + }, + { + "model": "gtfs.shape", + "pk": 432, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94063635155576, + "shape_pt_lon": -84.0455931434884, + "shape_pt_sequence": 109, + "shape_dist_traveled": 2.602 + } + }, + { + "model": "gtfs.shape", + "pk": 433, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94079234514589, + "shape_pt_lon": -84.0450690355552, + "shape_pt_sequence": 110, + "shape_dist_traveled": 2.662 + } + }, + { + "model": "gtfs.shape", + "pk": 434, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94094918383372, + "shape_pt_lon": -84.0447505513004, + "shape_pt_sequence": 111, + "shape_dist_traveled": 2.701 + } + }, + { + "model": "gtfs.shape", + "pk": 435, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94104532842372, + "shape_pt_lon": -84.0446520351469, + "shape_pt_sequence": 112, + "shape_dist_traveled": 2.717 + } + }, + { + "model": "gtfs.shape", + "pk": 436, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94113081479986, + "shape_pt_lon": -84.0446571934664, + "shape_pt_sequence": 113, + "shape_dist_traveled": 2.726 + } + }, + { + "model": "gtfs.shape", + "pk": 437, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94144321527622, + "shape_pt_lon": -84.0446770863329, + "shape_pt_sequence": 114, + "shape_dist_traveled": 2.761 + } + }, + { + "model": "gtfs.shape", + "pk": 438, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94195499816524, + "shape_pt_lon": -84.0447142198439, + "shape_pt_sequence": 115, + "shape_dist_traveled": 2.817 + } + }, + { + "model": "gtfs.shape", + "pk": 439, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94233948335795, + "shape_pt_lon": -84.0447371192727, + "shape_pt_sequence": 116, + "shape_dist_traveled": 2.86 + } + }, + { + "model": "gtfs.shape", + "pk": 440, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94270561942093, + "shape_pt_lon": -84.0447624203313, + "shape_pt_sequence": 117, + "shape_dist_traveled": 2.901 + } + }, + { + "model": "gtfs.shape", + "pk": 441, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94282741926446, + "shape_pt_lon": -84.0447662997461, + "shape_pt_sequence": 118, + "shape_dist_traveled": 2.914 + } + }, + { + "model": "gtfs.shape", + "pk": 442, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94300876520552, + "shape_pt_lon": -84.0447342405736, + "shape_pt_sequence": 119, + "shape_dist_traveled": 2.934 + } + }, + { + "model": "gtfs.shape", + "pk": 443, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94322619282253, + "shape_pt_lon": -84.044661630678, + "shape_pt_sequence": 120, + "shape_dist_traveled": 2.96 + } + }, + { + "model": "gtfs.shape", + "pk": 444, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94336188947768, + "shape_pt_lon": -84.0446070756693, + "shape_pt_sequence": 121, + "shape_dist_traveled": 2.976 + } + }, + { + "model": "gtfs.shape", + "pk": 445, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94366938860733, + "shape_pt_lon": -84.0444664621215, + "shape_pt_sequence": 122, + "shape_dist_traveled": 3.013 + } + }, + { + "model": "gtfs.shape", + "pk": 446, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94379763572232, + "shape_pt_lon": -84.0447499441632, + "shape_pt_sequence": 123, + "shape_dist_traveled": 3.047 + } + }, + { + "model": "gtfs.shape", + "pk": 447, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94387703073651, + "shape_pt_lon": -84.0448781808515, + "shape_pt_sequence": 124, + "shape_dist_traveled": 3.064 + } + }, + { + "model": "gtfs.shape", + "pk": 448, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94396544788927, + "shape_pt_lon": -84.0449496270056, + "shape_pt_sequence": 125, + "shape_dist_traveled": 3.077 + } + }, + { + "model": "gtfs.shape", + "pk": 449, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94454435151914, + "shape_pt_lon": -84.0450074182673, + "shape_pt_sequence": 126, + "shape_dist_traveled": 3.141 + } + }, + { + "model": "gtfs.shape", + "pk": 450, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94494922686726, + "shape_pt_lon": -84.0450098494603, + "shape_pt_sequence": 127, + "shape_dist_traveled": 3.186 + } + }, + { + "model": "gtfs.shape", + "pk": 451, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94503488859595, + "shape_pt_lon": -84.0450726102459, + "shape_pt_sequence": 128, + "shape_dist_traveled": 3.197 + } + }, + { + "model": "gtfs.shape", + "pk": 452, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94506635931216, + "shape_pt_lon": -84.0453994971357, + "shape_pt_sequence": 129, + "shape_dist_traveled": 3.233 + } + }, + { + "model": "gtfs.shape", + "pk": 453, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94509373573383, + "shape_pt_lon": -84.0454999143925, + "shape_pt_sequence": 130, + "shape_dist_traveled": 3.245 + } + }, + { + "model": "gtfs.shape", + "pk": 454, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94516587977827, + "shape_pt_lon": -84.0455384857143, + "shape_pt_sequence": 131, + "shape_dist_traveled": 3.254 + } + }, + { + "model": "gtfs.shape", + "pk": 455, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94569334489241, + "shape_pt_lon": -84.045501640108, + "shape_pt_sequence": 132, + "shape_dist_traveled": 3.312 + } + }, + { + "model": "gtfs.shape", + "pk": 456, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94576818120904, + "shape_pt_lon": -84.0454572011088, + "shape_pt_sequence": 133, + "shape_dist_traveled": 3.322 + } + }, + { + "model": "gtfs.shape", + "pk": 457, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94581918999885, + "shape_pt_lon": -84.0453571624431, + "shape_pt_sequence": 134, + "shape_dist_traveled": 3.334 + } + }, + { + "model": "gtfs.shape", + "pk": 458, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94586821736523, + "shape_pt_lon": -84.0452494124261, + "shape_pt_sequence": 135, + "shape_dist_traveled": 3.347 + } + }, + { + "model": "gtfs.shape", + "pk": 459, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94594549545337, + "shape_pt_lon": -84.0451749917014, + "shape_pt_sequence": 136, + "shape_dist_traveled": 3.359 + } + }, + { + "model": "gtfs.shape", + "pk": 460, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94628917517751, + "shape_pt_lon": -84.045149887399, + "shape_pt_sequence": 137, + "shape_dist_traveled": 3.397 + } + }, + { + "model": "gtfs.shape", + "pk": 461, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.946387887887, + "shape_pt_lon": -84.0451617577946, + "shape_pt_sequence": 138, + "shape_dist_traveled": 3.408 + } + }, + { + "model": "gtfs.shape", + "pk": 462, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94644528982524, + "shape_pt_lon": -84.0451994142665, + "shape_pt_sequence": 139, + "shape_dist_traveled": 3.416 + } + }, + { + "model": "gtfs.shape", + "pk": 463, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "shape_pt_lat": 9.94649012442296, + "shape_pt_lon": -84.0452511227568, + "shape_pt_sequence": 140, + "shape_dist_traveled": 3.423 + } + }, + { + "model": "gtfs.shape", + "pk": 464, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93551129613598, + "shape_pt_lon": -84.0522203008732, + "shape_pt_sequence": 0, + "shape_dist_traveled": 0.0 + } + }, + { + "model": "gtfs.shape", + "pk": 465, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.9355310767404, + "shape_pt_lon": -84.0522927059177, + "shape_pt_sequence": 1, + "shape_dist_traveled": 0.008 + } + }, + { + "model": "gtfs.shape", + "pk": 466, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93554722789095, + "shape_pt_lon": -84.0523347118824, + "shape_pt_sequence": 2, + "shape_dist_traveled": 0.013 + } + }, + { + "model": "gtfs.shape", + "pk": 467, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93559998927965, + "shape_pt_lon": -84.0523891977038, + "shape_pt_sequence": 3, + "shape_dist_traveled": 0.022 + } + }, + { + "model": "gtfs.shape", + "pk": 468, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93565665681396, + "shape_pt_lon": -84.0524266115309, + "shape_pt_sequence": 4, + "shape_dist_traveled": 0.029 + } + }, + { + "model": "gtfs.shape", + "pk": 469, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93572400544303, + "shape_pt_lon": -84.0524387877407, + "shape_pt_sequence": 5, + "shape_dist_traveled": 0.037 + } + }, + { + "model": "gtfs.shape", + "pk": 470, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93583791088976, + "shape_pt_lon": -84.0524163085106, + "shape_pt_sequence": 6, + "shape_dist_traveled": 0.049 + } + }, + { + "model": "gtfs.shape", + "pk": 471, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93589348533485, + "shape_pt_lon": -84.0524004247557, + "shape_pt_sequence": 7, + "shape_dist_traveled": 0.056 + } + }, + { + "model": "gtfs.shape", + "pk": 472, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93594773879152, + "shape_pt_lon": -84.0523801824105, + "shape_pt_sequence": 8, + "shape_dist_traveled": 0.062 + } + }, + { + "model": "gtfs.shape", + "pk": 473, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93618639604332, + "shape_pt_lon": -84.052302832233, + "shape_pt_sequence": 9, + "shape_dist_traveled": 0.09 + } + }, + { + "model": "gtfs.shape", + "pk": 474, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93639684624757, + "shape_pt_lon": -84.0522406782275, + "shape_pt_sequence": 10, + "shape_dist_traveled": 0.114 + } + }, + { + "model": "gtfs.shape", + "pk": 475, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93653551980098, + "shape_pt_lon": -84.0522361299255, + "shape_pt_sequence": 11, + "shape_dist_traveled": 0.13 + } + }, + { + "model": "gtfs.shape", + "pk": 476, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93673682209909, + "shape_pt_lon": -84.0523076585187, + "shape_pt_sequence": 12, + "shape_dist_traveled": 0.153 + } + }, + { + "model": "gtfs.shape", + "pk": 477, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93708559662569, + "shape_pt_lon": -84.05243186663, + "shape_pt_sequence": 13, + "shape_dist_traveled": 0.194 + } + }, + { + "model": "gtfs.shape", + "pk": 478, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93733577696727, + "shape_pt_lon": -84.0525288520072, + "shape_pt_sequence": 14, + "shape_dist_traveled": 0.224 + } + }, + { + "model": "gtfs.shape", + "pk": 479, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93757969853555, + "shape_pt_lon": -84.0526438746271, + "shape_pt_sequence": 15, + "shape_dist_traveled": 0.253 + } + }, + { + "model": "gtfs.shape", + "pk": 480, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.9377485826659, + "shape_pt_lon": -84.0527043524954, + "shape_pt_sequence": 16, + "shape_dist_traveled": 0.273 + } + }, + { + "model": "gtfs.shape", + "pk": 481, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93779188190045, + "shape_pt_lon": -84.0527107981436, + "shape_pt_sequence": 17, + "shape_dist_traveled": 0.278 + } + }, + { + "model": "gtfs.shape", + "pk": 482, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93787132360124, + "shape_pt_lon": -84.0527199326082, + "shape_pt_sequence": 18, + "shape_dist_traveled": 0.287 + } + }, + { + "model": "gtfs.shape", + "pk": 483, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93795076530203, + "shape_pt_lon": -84.0527243732062, + "shape_pt_sequence": 19, + "shape_dist_traveled": 0.296 + } + }, + { + "model": "gtfs.shape", + "pk": 484, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93802242474458, + "shape_pt_lon": -84.0527168419396, + "shape_pt_sequence": 20, + "shape_dist_traveled": 0.304 + } + }, + { + "model": "gtfs.shape", + "pk": 485, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93809408418712, + "shape_pt_lon": -84.0527036109785, + "shape_pt_sequence": 21, + "shape_dist_traveled": 0.312 + } + }, + { + "model": "gtfs.shape", + "pk": 486, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93815622170643, + "shape_pt_lon": -84.0526341385986, + "shape_pt_sequence": 22, + "shape_dist_traveled": 0.322 + } + }, + { + "model": "gtfs.shape", + "pk": 487, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93824866125399, + "shape_pt_lon": -84.0524441849862, + "shape_pt_sequence": 23, + "shape_dist_traveled": 0.345 + } + }, + { + "model": "gtfs.shape", + "pk": 488, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93840212874288, + "shape_pt_lon": -84.0521210493447, + "shape_pt_sequence": 24, + "shape_dist_traveled": 0.385 + } + }, + { + "model": "gtfs.shape", + "pk": 489, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93859022704029, + "shape_pt_lon": -84.0518711468269, + "shape_pt_sequence": 25, + "shape_dist_traveled": 0.419 + } + }, + { + "model": "gtfs.shape", + "pk": 490, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.9387164365478, + "shape_pt_lon": -84.0517146035903, + "shape_pt_sequence": 26, + "shape_dist_traveled": 0.441 + } + }, + { + "model": "gtfs.shape", + "pk": 491, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93883769238516, + "shape_pt_lon": -84.0515516901066, + "shape_pt_sequence": 27, + "shape_dist_traveled": 0.463 + } + }, + { + "model": "gtfs.shape", + "pk": 492, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93890538473733, + "shape_pt_lon": -84.0514467461262, + "shape_pt_sequence": 28, + "shape_dist_traveled": 0.477 + } + }, + { + "model": "gtfs.shape", + "pk": 493, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93897774723731, + "shape_pt_lon": -84.051298218969, + "shape_pt_sequence": 29, + "shape_dist_traveled": 0.495 + } + }, + { + "model": "gtfs.shape", + "pk": 494, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93901864778466, + "shape_pt_lon": -84.0511281313016, + "shape_pt_sequence": 30, + "shape_dist_traveled": 0.514 + } + }, + { + "model": "gtfs.shape", + "pk": 495, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93905404247567, + "shape_pt_lon": -84.0509181170952, + "shape_pt_sequence": 31, + "shape_dist_traveled": 0.538 + } + }, + { + "model": "gtfs.shape", + "pk": 496, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93908393146568, + "shape_pt_lon": -84.0503591447661, + "shape_pt_sequence": 32, + "shape_dist_traveled": 0.599 + } + }, + { + "model": "gtfs.shape", + "pk": 497, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93910272348104, + "shape_pt_lon": -84.0501183551865, + "shape_pt_sequence": 33, + "shape_dist_traveled": 0.626 + } + }, + { + "model": "gtfs.shape", + "pk": 498, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93910706388403, + "shape_pt_lon": -84.0499402779348, + "shape_pt_sequence": 34, + "shape_dist_traveled": 0.645 + } + }, + { + "model": "gtfs.shape", + "pk": 499, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93910711111161, + "shape_pt_lon": -84.0497648828928, + "shape_pt_sequence": 35, + "shape_dist_traveled": 0.664 + } + }, + { + "model": "gtfs.shape", + "pk": 500, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93906715286185, + "shape_pt_lon": -84.0496439745831, + "shape_pt_sequence": 36, + "shape_dist_traveled": 0.678 + } + }, + { + "model": "gtfs.shape", + "pk": 501, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93897699483947, + "shape_pt_lon": -84.0494999920866, + "shape_pt_sequence": 37, + "shape_dist_traveled": 0.697 + } + }, + { + "model": "gtfs.shape", + "pk": 502, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93879865248422, + "shape_pt_lon": -84.0492839130465, + "shape_pt_sequence": 38, + "shape_dist_traveled": 0.728 + } + }, + { + "model": "gtfs.shape", + "pk": 503, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93852631535243, + "shape_pt_lon": -84.0489259634067, + "shape_pt_sequence": 39, + "shape_dist_traveled": 0.777 + } + }, + { + "model": "gtfs.shape", + "pk": 504, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.9383125595628, + "shape_pt_lon": -84.0486415140485, + "shape_pt_sequence": 40, + "shape_dist_traveled": 0.817 + } + }, + { + "model": "gtfs.shape", + "pk": 505, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93816149920894, + "shape_pt_lon": -84.0484645585026, + "shape_pt_sequence": 41, + "shape_dist_traveled": 0.842 + } + }, + { + "model": "gtfs.shape", + "pk": 506, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93801276292967, + "shape_pt_lon": -84.0483041187788, + "shape_pt_sequence": 42, + "shape_dist_traveled": 0.866 + } + }, + { + "model": "gtfs.shape", + "pk": 507, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93767314890347, + "shape_pt_lon": -84.0479456361923, + "shape_pt_sequence": 43, + "shape_dist_traveled": 0.921 + } + }, + { + "model": "gtfs.shape", + "pk": 508, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93762896738312, + "shape_pt_lon": -84.0479035036496, + "shape_pt_sequence": 44, + "shape_dist_traveled": 0.927 + } + }, + { + "model": "gtfs.shape", + "pk": 509, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.9375818136517, + "shape_pt_lon": -84.0478664002497, + "shape_pt_sequence": 45, + "shape_dist_traveled": 0.934 + } + }, + { + "model": "gtfs.shape", + "pk": 510, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.9375407094932, + "shape_pt_lon": -84.0478370279249, + "shape_pt_sequence": 46, + "shape_dist_traveled": 0.94 + } + }, + { + "model": "gtfs.shape", + "pk": 511, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93749795410686, + "shape_pt_lon": -84.0478110083611, + "shape_pt_sequence": 47, + "shape_dist_traveled": 0.945 + } + }, + { + "model": "gtfs.shape", + "pk": 512, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93745496587906, + "shape_pt_lon": -84.0477901145765, + "shape_pt_sequence": 48, + "shape_dist_traveled": 0.95 + } + }, + { + "model": "gtfs.shape", + "pk": 513, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93736508273494, + "shape_pt_lon": -84.0477598330601, + "shape_pt_sequence": 49, + "shape_dist_traveled": 0.961 + } + }, + { + "model": "gtfs.shape", + "pk": 514, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93726069019733, + "shape_pt_lon": -84.047759267964, + "shape_pt_sequence": 50, + "shape_dist_traveled": 0.972 + } + }, + { + "model": "gtfs.shape", + "pk": 515, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93707479279145, + "shape_pt_lon": -84.047793713066, + "shape_pt_sequence": 51, + "shape_dist_traveled": 0.993 + } + }, + { + "model": "gtfs.shape", + "pk": 516, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93681544721791, + "shape_pt_lon": -84.0478715216077, + "shape_pt_sequence": 52, + "shape_dist_traveled": 1.023 + } + }, + { + "model": "gtfs.shape", + "pk": 517, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93657305173134, + "shape_pt_lon": -84.0479476285628, + "shape_pt_sequence": 53, + "shape_dist_traveled": 1.051 + } + }, + { + "model": "gtfs.shape", + "pk": 518, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93622234344519, + "shape_pt_lon": -84.0480642553351, + "shape_pt_sequence": 54, + "shape_dist_traveled": 1.092 + } + }, + { + "model": "gtfs.shape", + "pk": 519, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93602464016541, + "shape_pt_lon": -84.0481251956082, + "shape_pt_sequence": 55, + "shape_dist_traveled": 1.115 + } + }, + { + "model": "gtfs.shape", + "pk": 520, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93585590049247, + "shape_pt_lon": -84.0481829479595, + "shape_pt_sequence": 56, + "shape_dist_traveled": 1.135 + } + }, + { + "model": "gtfs.shape", + "pk": 521, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.9357089398831, + "shape_pt_lon": -84.0482522936584, + "shape_pt_sequence": 57, + "shape_dist_traveled": 1.153 + } + }, + { + "model": "gtfs.shape", + "pk": 522, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93563189742607, + "shape_pt_lon": -84.0482869664637, + "shape_pt_sequence": 58, + "shape_dist_traveled": 1.162 + } + }, + { + "model": "gtfs.shape", + "pk": 523, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93556048694849, + "shape_pt_lon": -84.0483531600847, + "shape_pt_sequence": 59, + "shape_dist_traveled": 1.173 + } + }, + { + "model": "gtfs.shape", + "pk": 524, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93549839086817, + "shape_pt_lon": -84.048435114092, + "shape_pt_sequence": 60, + "shape_dist_traveled": 1.184 + } + }, + { + "model": "gtfs.shape", + "pk": 525, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93546527295384, + "shape_pt_lon": -84.0485569944104, + "shape_pt_sequence": 61, + "shape_dist_traveled": 1.198 + } + }, + { + "model": "gtfs.shape", + "pk": 526, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.9354549236054, + "shape_pt_lon": -84.0486547088036, + "shape_pt_sequence": 62, + "shape_dist_traveled": 1.209 + } + }, + { + "model": "gtfs.shape", + "pk": 527, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93528001900853, + "shape_pt_lon": -84.048634745016, + "shape_pt_sequence": 63, + "shape_dist_traveled": 1.228 + } + }, + { + "model": "gtfs.shape", + "pk": 528, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93529761291067, + "shape_pt_lon": -84.0483794267626, + "shape_pt_sequence": 64, + "shape_dist_traveled": 1.256 + } + }, + { + "model": "gtfs.shape", + "pk": 529, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.9352527346308, + "shape_pt_lon": -84.0481286733116, + "shape_pt_sequence": 65, + "shape_dist_traveled": 1.284 + } + }, + { + "model": "gtfs.shape", + "pk": 530, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93512765815873, + "shape_pt_lon": -84.0477461762194, + "shape_pt_sequence": 66, + "shape_dist_traveled": 1.328 + } + }, + { + "model": "gtfs.shape", + "pk": 531, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93492703280895, + "shape_pt_lon": -84.0471055797031, + "shape_pt_sequence": 67, + "shape_dist_traveled": 1.402 + } + }, + { + "model": "gtfs.shape", + "pk": 532, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93478949058113, + "shape_pt_lon": -84.046354626689, + "shape_pt_sequence": 68, + "shape_dist_traveled": 1.486 + } + }, + { + "model": "gtfs.shape", + "pk": 533, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93469070939338, + "shape_pt_lon": -84.0458746565008, + "shape_pt_sequence": 69, + "shape_dist_traveled": 1.539 + } + }, + { + "model": "gtfs.shape", + "pk": 534, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93462060674132, + "shape_pt_lon": -84.0456143293, + "shape_pt_sequence": 70, + "shape_dist_traveled": 1.569 + } + }, + { + "model": "gtfs.shape", + "pk": 535, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93489289845325, + "shape_pt_lon": -84.0456070252698, + "shape_pt_sequence": 71, + "shape_dist_traveled": 1.599 + } + }, + { + "model": "gtfs.shape", + "pk": 536, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93495950947043, + "shape_pt_lon": -84.045606154414, + "shape_pt_sequence": 72, + "shape_dist_traveled": 1.606 + } + }, + { + "model": "gtfs.shape", + "pk": 537, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93502573261312, + "shape_pt_lon": -84.0455877894747, + "shape_pt_sequence": 73, + "shape_dist_traveled": 1.614 + } + }, + { + "model": "gtfs.shape", + "pk": 538, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93533984703067, + "shape_pt_lon": -84.0455793808645, + "shape_pt_sequence": 74, + "shape_dist_traveled": 1.649 + } + }, + { + "model": "gtfs.shape", + "pk": 539, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93553106245252, + "shape_pt_lon": -84.0455366983597, + "shape_pt_sequence": 75, + "shape_dist_traveled": 1.67 + } + }, + { + "model": "gtfs.shape", + "pk": 540, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93558489672501, + "shape_pt_lon": -84.0455256779408, + "shape_pt_sequence": 76, + "shape_dist_traveled": 1.677 + } + }, + { + "model": "gtfs.shape", + "pk": 541, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93566584972937, + "shape_pt_lon": -84.0454519050346, + "shape_pt_sequence": 77, + "shape_dist_traveled": 1.689 + } + }, + { + "model": "gtfs.shape", + "pk": 542, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93603020143902, + "shape_pt_lon": -84.0453870153627, + "shape_pt_sequence": 78, + "shape_dist_traveled": 1.73 + } + }, + { + "model": "gtfs.shape", + "pk": 543, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93619941008339, + "shape_pt_lon": -84.0453504149565, + "shape_pt_sequence": 79, + "shape_dist_traveled": 1.749 + } + }, + { + "model": "gtfs.shape", + "pk": 544, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93630011253566, + "shape_pt_lon": -84.0453617663184, + "shape_pt_sequence": 80, + "shape_dist_traveled": 1.76 + } + }, + { + "model": "gtfs.shape", + "pk": 545, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93651948121636, + "shape_pt_lon": -84.0454755016038, + "shape_pt_sequence": 81, + "shape_dist_traveled": 1.787 + } + }, + { + "model": "gtfs.shape", + "pk": 546, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93668368683727, + "shape_pt_lon": -84.0455653411938, + "shape_pt_sequence": 82, + "shape_dist_traveled": 1.808 + } + }, + { + "model": "gtfs.shape", + "pk": 547, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93677258981834, + "shape_pt_lon": -84.045589182648, + "shape_pt_sequence": 83, + "shape_dist_traveled": 1.818 + } + }, + { + "model": "gtfs.shape", + "pk": 548, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93685310570445, + "shape_pt_lon": -84.0455874796866, + "shape_pt_sequence": 84, + "shape_dist_traveled": 1.827 + } + }, + { + "model": "gtfs.shape", + "pk": 549, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93694508327091, + "shape_pt_lon": -84.0455437249918, + "shape_pt_sequence": 85, + "shape_dist_traveled": 1.838 + } + }, + { + "model": "gtfs.shape", + "pk": 550, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93708383542657, + "shape_pt_lon": -84.0454400845081, + "shape_pt_sequence": 86, + "shape_dist_traveled": 1.857 + } + }, + { + "model": "gtfs.shape", + "pk": 551, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93721635101928, + "shape_pt_lon": -84.045309807991, + "shape_pt_sequence": 87, + "shape_dist_traveled": 1.878 + } + }, + { + "model": "gtfs.shape", + "pk": 552, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93724819645461, + "shape_pt_lon": -84.0452761874456, + "shape_pt_sequence": 88, + "shape_dist_traveled": 1.883 + } + }, + { + "model": "gtfs.shape", + "pk": 553, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93734716375109, + "shape_pt_lon": -84.0451229209554, + "shape_pt_sequence": 89, + "shape_dist_traveled": 1.903 + } + }, + { + "model": "gtfs.shape", + "pk": 554, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93752119585777, + "shape_pt_lon": -84.0448187291416, + "shape_pt_sequence": 90, + "shape_dist_traveled": 1.941 + } + }, + { + "model": "gtfs.shape", + "pk": 555, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93767426097248, + "shape_pt_lon": -84.0445416760749, + "shape_pt_sequence": 91, + "shape_dist_traveled": 1.976 + } + }, + { + "model": "gtfs.shape", + "pk": 556, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93785833808635, + "shape_pt_lon": -84.0442186256065, + "shape_pt_sequence": 92, + "shape_dist_traveled": 2.017 + } + }, + { + "model": "gtfs.shape", + "pk": 557, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93810435753431, + "shape_pt_lon": -84.0437983732383, + "shape_pt_sequence": 93, + "shape_dist_traveled": 2.07 + } + }, + { + "model": "gtfs.shape", + "pk": 558, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93796632120651, + "shape_pt_lon": -84.0436125738981, + "shape_pt_sequence": 94, + "shape_dist_traveled": 2.096 + } + }, + { + "model": "gtfs.shape", + "pk": 559, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93791432144543, + "shape_pt_lon": -84.0434414999464, + "shape_pt_sequence": 95, + "shape_dist_traveled": 2.116 + } + }, + { + "model": "gtfs.shape", + "pk": 560, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93788832161072, + "shape_pt_lon": -84.0432184120559, + "shape_pt_sequence": 96, + "shape_dist_traveled": 2.14 + } + }, + { + "model": "gtfs.shape", + "pk": 561, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93792789506808, + "shape_pt_lon": -84.042939145496, + "shape_pt_sequence": 97, + "shape_dist_traveled": 2.171 + } + }, + { + "model": "gtfs.shape", + "pk": 562, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93799597108977, + "shape_pt_lon": -84.0425252959219, + "shape_pt_sequence": 98, + "shape_dist_traveled": 2.217 + } + }, + { + "model": "gtfs.shape", + "pk": 563, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93800488549925, + "shape_pt_lon": -84.0424724302894, + "shape_pt_sequence": 99, + "shape_dist_traveled": 2.223 + } + }, + { + "model": "gtfs.shape", + "pk": 564, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.9381395635656, + "shape_pt_lon": -84.0421750587842, + "shape_pt_sequence": 100, + "shape_dist_traveled": 2.259 + } + }, + { + "model": "gtfs.shape", + "pk": 565, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93816556338036, + "shape_pt_lon": -84.0419988023209, + "shape_pt_sequence": 101, + "shape_dist_traveled": 2.278 + } + }, + { + "model": "gtfs.shape", + "pk": 566, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93815877702913, + "shape_pt_lon": -84.0418468568672, + "shape_pt_sequence": 102, + "shape_dist_traveled": 2.295 + } + }, + { + "model": "gtfs.shape", + "pk": 567, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93812774499086, + "shape_pt_lon": -84.0417208377531, + "shape_pt_sequence": 103, + "shape_dist_traveled": 2.309 + } + }, + { + "model": "gtfs.shape", + "pk": 568, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93810465445374, + "shape_pt_lon": -84.0416827286396, + "shape_pt_sequence": 104, + "shape_dist_traveled": 2.314 + } + }, + { + "model": "gtfs.shape", + "pk": 569, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93807826146448, + "shape_pt_lon": -84.0416493133915, + "shape_pt_sequence": 105, + "shape_dist_traveled": 2.319 + } + }, + { + "model": "gtfs.shape", + "pk": 570, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93804738144964, + "shape_pt_lon": -84.0416349312544, + "shape_pt_sequence": 106, + "shape_dist_traveled": 2.323 + } + }, + { + "model": "gtfs.shape", + "pk": 571, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93801451996184, + "shape_pt_lon": -84.0416322837814, + "shape_pt_sequence": 107, + "shape_dist_traveled": 2.326 + } + }, + { + "model": "gtfs.shape", + "pk": 572, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93792436774485, + "shape_pt_lon": -84.0416346601389, + "shape_pt_sequence": 108, + "shape_dist_traveled": 2.336 + } + }, + { + "model": "gtfs.shape", + "pk": 573, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93790082410227, + "shape_pt_lon": -84.041067340985, + "shape_pt_sequence": 109, + "shape_dist_traveled": 2.399 + } + }, + { + "model": "gtfs.shape", + "pk": 574, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93846425290711, + "shape_pt_lon": -84.0409284047187, + "shape_pt_sequence": 110, + "shape_dist_traveled": 2.463 + } + }, + { + "model": "gtfs.shape", + "pk": 575, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93868651413261, + "shape_pt_lon": -84.0409624274215, + "shape_pt_sequence": 111, + "shape_dist_traveled": 2.488 + } + }, + { + "model": "gtfs.shape", + "pk": 576, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93885247660523, + "shape_pt_lon": -84.0411341586918, + "shape_pt_sequence": 112, + "shape_dist_traveled": 2.514 + } + }, + { + "model": "gtfs.shape", + "pk": 577, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93915539473273, + "shape_pt_lon": -84.0416474460876, + "shape_pt_sequence": 113, + "shape_dist_traveled": 2.579 + } + }, + { + "model": "gtfs.shape", + "pk": 578, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93928861127028, + "shape_pt_lon": -84.0417889786806, + "shape_pt_sequence": 114, + "shape_dist_traveled": 2.601 + } + }, + { + "model": "gtfs.shape", + "pk": 579, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.9394354239606, + "shape_pt_lon": -84.0418813247414, + "shape_pt_sequence": 115, + "shape_dist_traveled": 2.62 + } + }, + { + "model": "gtfs.shape", + "pk": 580, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93950244712471, + "shape_pt_lon": -84.0419056263361, + "shape_pt_sequence": 116, + "shape_dist_traveled": 2.628 + } + }, + { + "model": "gtfs.shape", + "pk": 581, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93950244613303, + "shape_pt_lon": -84.042239368576, + "shape_pt_sequence": 117, + "shape_dist_traveled": 2.664 + } + }, + { + "model": "gtfs.shape", + "pk": 582, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93949446718606, + "shape_pt_lon": -84.0425196469705, + "shape_pt_sequence": 118, + "shape_dist_traveled": 2.695 + } + }, + { + "model": "gtfs.shape", + "pk": 583, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93945457168453, + "shape_pt_lon": -84.0429991991022, + "shape_pt_sequence": 119, + "shape_dist_traveled": 2.748 + } + }, + { + "model": "gtfs.shape", + "pk": 584, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93942712460796, + "shape_pt_lon": -84.043331873611, + "shape_pt_sequence": 120, + "shape_dist_traveled": 2.784 + } + }, + { + "model": "gtfs.shape", + "pk": 585, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93972789866721, + "shape_pt_lon": -84.0432605742965, + "shape_pt_sequence": 121, + "shape_dist_traveled": 2.819 + } + }, + { + "model": "gtfs.shape", + "pk": 586, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93979051078508, + "shape_pt_lon": -84.0432941313524, + "shape_pt_sequence": 122, + "shape_dist_traveled": 2.826 + } + }, + { + "model": "gtfs.shape", + "pk": 587, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93982252793726, + "shape_pt_lon": -84.0433753940134, + "shape_pt_sequence": 123, + "shape_dist_traveled": 2.836 + } + }, + { + "model": "gtfs.shape", + "pk": 588, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.93991292983544, + "shape_pt_lon": -84.0437147893588, + "shape_pt_sequence": 124, + "shape_dist_traveled": 2.875 + } + }, + { + "model": "gtfs.shape", + "pk": 589, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.94002028140903, + "shape_pt_lon": -84.0441287509128, + "shape_pt_sequence": 125, + "shape_dist_traveled": 2.922 + } + }, + { + "model": "gtfs.shape", + "pk": 590, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.94016644833328, + "shape_pt_lon": -84.0446669802431, + "shape_pt_sequence": 126, + "shape_dist_traveled": 2.983 + } + }, + { + "model": "gtfs.shape", + "pk": 591, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.94027078687104, + "shape_pt_lon": -84.044823754755, + "shape_pt_sequence": 127, + "shape_dist_traveled": 3.003 + } + }, + { + "model": "gtfs.shape", + "pk": 592, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.94048864067421, + "shape_pt_lon": -84.0456295904777, + "shape_pt_sequence": 128, + "shape_dist_traveled": 3.095 + } + }, + { + "model": "gtfs.shape", + "pk": 593, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.9406416703034, + "shape_pt_lon": -84.045594280927, + "shape_pt_sequence": 129, + "shape_dist_traveled": 3.112 + } + }, + { + "model": "gtfs.shape", + "pk": 594, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.94079771456593, + "shape_pt_lon": -84.0450692602221, + "shape_pt_sequence": 130, + "shape_dist_traveled": 3.172 + } + }, + { + "model": "gtfs.shape", + "pk": 595, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.9409503711104, + "shape_pt_lon": -84.0447481499267, + "shape_pt_sequence": 131, + "shape_dist_traveled": 3.212 + } + }, + { + "model": "gtfs.shape", + "pk": 596, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.94105192700053, + "shape_pt_lon": -84.0446521079484, + "shape_pt_sequence": 132, + "shape_dist_traveled": 3.227 + } + }, + { + "model": "gtfs.shape", + "pk": 597, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.94171142158802, + "shape_pt_lon": -84.0446962954808, + "shape_pt_sequence": 133, + "shape_dist_traveled": 3.3 + } + }, + { + "model": "gtfs.shape", + "pk": 598, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.94281915936154, + "shape_pt_lon": -84.0447683576565, + "shape_pt_sequence": 134, + "shape_dist_traveled": 3.423 + } + }, + { + "model": "gtfs.shape", + "pk": 599, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.94301266464211, + "shape_pt_lon": -84.0447317924328, + "shape_pt_sequence": 135, + "shape_dist_traveled": 3.445 + } + }, + { + "model": "gtfs.shape", + "pk": 600, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.94326484610015, + "shape_pt_lon": -84.0446461368594, + "shape_pt_sequence": 136, + "shape_dist_traveled": 3.474 + } + }, + { + "model": "gtfs.shape", + "pk": 601, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.94367235170777, + "shape_pt_lon": -84.0444664659679, + "shape_pt_sequence": 137, + "shape_dist_traveled": 3.523 + } + }, + { + "model": "gtfs.shape", + "pk": 602, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.94380140312083, + "shape_pt_lon": -84.044752272012, + "shape_pt_sequence": 138, + "shape_dist_traveled": 3.558 + } + }, + { + "model": "gtfs.shape", + "pk": 603, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.9438796367465, + "shape_pt_lon": -84.0448814333755, + "shape_pt_sequence": 139, + "shape_dist_traveled": 3.574 + } + }, + { + "model": "gtfs.shape", + "pk": 604, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.94396952509255, + "shape_pt_lon": -84.0449503878825, + "shape_pt_sequence": 140, + "shape_dist_traveled": 3.587 + } + }, + { + "model": "gtfs.shape", + "pk": 605, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.94433433418409, + "shape_pt_lon": -84.044987908675, + "shape_pt_sequence": 141, + "shape_dist_traveled": 3.627 + } + }, + { + "model": "gtfs.shape", + "pk": 606, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.94457411376674, + "shape_pt_lon": -84.0450080280451, + "shape_pt_sequence": 142, + "shape_dist_traveled": 3.654 + } + }, + { + "model": "gtfs.shape", + "pk": 607, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.94495390060397, + "shape_pt_lon": -84.0450080280451, + "shape_pt_sequence": 143, + "shape_dist_traveled": 3.696 + } + }, + { + "model": "gtfs.shape", + "pk": 608, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.94504571713547, + "shape_pt_lon": -84.0450786471473, + "shape_pt_sequence": 144, + "shape_dist_traveled": 3.709 + } + }, + { + "model": "gtfs.shape", + "pk": 609, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.94507075688808, + "shape_pt_lon": -84.0453964329445, + "shape_pt_sequence": 145, + "shape_dist_traveled": 3.744 + } + }, + { + "model": "gtfs.shape", + "pk": 610, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.94509858007239, + "shape_pt_lon": -84.0454995368328, + "shape_pt_sequence": 146, + "shape_dist_traveled": 3.755 + } + }, + { + "model": "gtfs.shape", + "pk": 611, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.94517301639726, + "shape_pt_lon": -84.0455360879379, + "shape_pt_sequence": 147, + "shape_dist_traveled": 3.764 + } + }, + { + "model": "gtfs.shape", + "pk": 612, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.94569599438186, + "shape_pt_lon": -84.0455012141288, + "shape_pt_sequence": 148, + "shape_dist_traveled": 3.822 + } + }, + { + "model": "gtfs.shape", + "pk": 613, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.94576731883437, + "shape_pt_lon": -84.0454579354822, + "shape_pt_sequence": 149, + "shape_dist_traveled": 3.832 + } + }, + { + "model": "gtfs.shape", + "pk": 614, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.94587443785238, + "shape_pt_lon": -84.0452474905592, + "shape_pt_sequence": 150, + "shape_dist_traveled": 3.858 + } + }, + { + "model": "gtfs.shape", + "pk": 615, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.94594677794762, + "shape_pt_lon": -84.0451754590753, + "shape_pt_sequence": 151, + "shape_dist_traveled": 3.869 + } + }, + { + "model": "gtfs.shape", + "pk": 616, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.94629204599402, + "shape_pt_lon": -84.0451469719024, + "shape_pt_sequence": 152, + "shape_dist_traveled": 3.907 + } + }, + { + "model": "gtfs.shape", + "pk": 617, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.9463908179176, + "shape_pt_lon": -84.0451610957222, + "shape_pt_sequence": 153, + "shape_dist_traveled": 3.918 + } + }, + { + "model": "gtfs.shape", + "pk": 618, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.94645063751956, + "shape_pt_lon": -84.0451992300371, + "shape_pt_sequence": 154, + "shape_dist_traveled": 3.926 + } + }, + { + "model": "gtfs.shape", + "pk": 619, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "shape_pt_lat": 9.94649738913102, + "shape_pt_lon": -84.0452562192863, + "shape_pt_sequence": 155, + "shape_dist_traveled": 3.934 + } + }, + { + "model": "gtfs.shape", + "pk": 620, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94651450274987, + "shape_pt_lon": -84.0452709224469, + "shape_pt_sequence": 0, + "shape_dist_traveled": 0.0 + } + }, + { + "model": "gtfs.shape", + "pk": 621, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.9465713930344, + "shape_pt_lon": -84.0453586296957, + "shape_pt_sequence": 1, + "shape_dist_traveled": 0.011 + } + }, + { + "model": "gtfs.shape", + "pk": 622, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94670523135418, + "shape_pt_lon": -84.0455321860811, + "shape_pt_sequence": 2, + "shape_dist_traveled": 0.036 + } + }, + { + "model": "gtfs.shape", + "pk": 623, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94685977487793, + "shape_pt_lon": -84.0457428830683, + "shape_pt_sequence": 3, + "shape_dist_traveled": 0.064 + } + }, + { + "model": "gtfs.shape", + "pk": 624, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94692114024093, + "shape_pt_lon": -84.0458252584096, + "shape_pt_sequence": 4, + "shape_dist_traveled": 0.076 + } + }, + { + "model": "gtfs.shape", + "pk": 625, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94699848130395, + "shape_pt_lon": -84.045874911642, + "shape_pt_sequence": 5, + "shape_dist_traveled": 0.086 + } + }, + { + "model": "gtfs.shape", + "pk": 626, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94709174550324, + "shape_pt_lon": -84.0458702927366, + "shape_pt_sequence": 6, + "shape_dist_traveled": 0.096 + } + }, + { + "model": "gtfs.shape", + "pk": 627, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94733286724273, + "shape_pt_lon": -84.0456762984049, + "shape_pt_sequence": 7, + "shape_dist_traveled": 0.13 + } + }, + { + "model": "gtfs.shape", + "pk": 628, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94734992775087, + "shape_pt_lon": -84.0455816108455, + "shape_pt_sequence": 8, + "shape_dist_traveled": 0.141 + } + }, + { + "model": "gtfs.shape", + "pk": 629, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94731694409985, + "shape_pt_lon": -84.0454811496546, + "shape_pt_sequence": 9, + "shape_dist_traveled": 0.152 + } + }, + { + "model": "gtfs.shape", + "pk": 630, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94706331033958, + "shape_pt_lon": -84.0451520526366, + "shape_pt_sequence": 10, + "shape_dist_traveled": 0.198 + } + }, + { + "model": "gtfs.shape", + "pk": 631, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94695639770921, + "shape_pt_lon": -84.044934964086, + "shape_pt_sequence": 11, + "shape_dist_traveled": 0.225 + } + }, + { + "model": "gtfs.shape", + "pk": 632, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94685739750313, + "shape_pt_lon": -84.0447940381815, + "shape_pt_sequence": 12, + "shape_dist_traveled": 0.244 + } + }, + { + "model": "gtfs.shape", + "pk": 633, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94674934743632, + "shape_pt_lon": -84.0447120526121, + "shape_pt_sequence": 13, + "shape_dist_traveled": 0.259 + } + }, + { + "model": "gtfs.shape", + "pk": 634, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94663902259388, + "shape_pt_lon": -84.0446901128118, + "shape_pt_sequence": 14, + "shape_dist_traveled": 0.271 + } + }, + { + "model": "gtfs.shape", + "pk": 635, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94658480665502, + "shape_pt_lon": -84.0447036688627, + "shape_pt_sequence": 15, + "shape_dist_traveled": 0.277 + } + }, + { + "model": "gtfs.shape", + "pk": 636, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94652566341521, + "shape_pt_lon": -84.0447440842844, + "shape_pt_sequence": 16, + "shape_dist_traveled": 0.285 + } + }, + { + "model": "gtfs.shape", + "pk": 637, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94631063663281, + "shape_pt_lon": -84.0447956225084, + "shape_pt_sequence": 17, + "shape_dist_traveled": 0.31 + } + }, + { + "model": "gtfs.shape", + "pk": 638, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94607861289951, + "shape_pt_lon": -84.0448175623087, + "shape_pt_sequence": 18, + "shape_dist_traveled": 0.335 + } + }, + { + "model": "gtfs.shape", + "pk": 639, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94606268969643, + "shape_pt_lon": -84.0448198717614, + "shape_pt_sequence": 19, + "shape_dist_traveled": 0.337 + } + }, + { + "model": "gtfs.shape", + "pk": 640, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94607633849742, + "shape_pt_lon": -84.0451616705072, + "shape_pt_sequence": 20, + "shape_dist_traveled": 0.375 + } + }, + { + "model": "gtfs.shape", + "pk": 641, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94594816328299, + "shape_pt_lon": -84.0451794721398, + "shape_pt_sequence": 21, + "shape_dist_traveled": 0.389 + } + }, + { + "model": "gtfs.shape", + "pk": 642, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94587650883204, + "shape_pt_lon": -84.0452499104458, + "shape_pt_sequence": 22, + "shape_dist_traveled": 0.4 + } + }, + { + "model": "gtfs.shape", + "pk": 643, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94577755742257, + "shape_pt_lon": -84.0454566064596, + "shape_pt_sequence": 23, + "shape_dist_traveled": 0.425 + } + }, + { + "model": "gtfs.shape", + "pk": 644, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94570040854178, + "shape_pt_lon": -84.0455092507792, + "shape_pt_sequence": 24, + "shape_dist_traveled": 0.435 + } + }, + { + "model": "gtfs.shape", + "pk": 645, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94516698035057, + "shape_pt_lon": -84.0455392738468, + "shape_pt_sequence": 25, + "shape_dist_traveled": 0.494 + } + }, + { + "model": "gtfs.shape", + "pk": 646, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94508917283893, + "shape_pt_lon": -84.0455023654374, + "shape_pt_sequence": 26, + "shape_dist_traveled": 0.504 + } + }, + { + "model": "gtfs.shape", + "pk": 647, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94505732633557, + "shape_pt_lon": -84.045382273899, + "shape_pt_sequence": 27, + "shape_dist_traveled": 0.518 + } + }, + { + "model": "gtfs.shape", + "pk": 648, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94502889195332, + "shape_pt_lon": -84.0450808903258, + "shape_pt_sequence": 28, + "shape_dist_traveled": 0.551 + } + }, + { + "model": "gtfs.shape", + "pk": 649, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94495155042415, + "shape_pt_lon": -84.0450173803773, + "shape_pt_sequence": 29, + "shape_dist_traveled": 0.562 + } + }, + { + "model": "gtfs.shape", + "pk": 650, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94472000465252, + "shape_pt_lon": -84.045015769873, + "shape_pt_sequence": 30, + "shape_dist_traveled": 0.587 + } + }, + { + "model": "gtfs.shape", + "pk": 651, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94425679788889, + "shape_pt_lon": -84.0449868892884, + "shape_pt_sequence": 31, + "shape_dist_traveled": 0.639 + } + }, + { + "model": "gtfs.shape", + "pk": 652, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94389594579139, + "shape_pt_lon": -84.0449568041774, + "shape_pt_sequence": 32, + "shape_dist_traveled": 0.679 + } + }, + { + "model": "gtfs.shape", + "pk": 653, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.9433847319748, + "shape_pt_lon": -84.0449197895004, + "shape_pt_sequence": 33, + "shape_dist_traveled": 0.736 + } + }, + { + "model": "gtfs.shape", + "pk": 654, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94261500079999, + "shape_pt_lon": -84.0448773383005, + "shape_pt_sequence": 34, + "shape_dist_traveled": 0.821 + } + }, + { + "model": "gtfs.shape", + "pk": 655, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94204155986042, + "shape_pt_lon": -84.0448390343892, + "shape_pt_sequence": 35, + "shape_dist_traveled": 0.884 + } + }, + { + "model": "gtfs.shape", + "pk": 656, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94137698645447, + "shape_pt_lon": -84.0448024388483, + "shape_pt_sequence": 36, + "shape_dist_traveled": 0.958 + } + }, + { + "model": "gtfs.shape", + "pk": 657, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94096102380372, + "shape_pt_lon": -84.0447771566035, + "shape_pt_sequence": 37, + "shape_dist_traveled": 1.004 + } + }, + { + "model": "gtfs.shape", + "pk": 658, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94082181962447, + "shape_pt_lon": -84.0450446175143, + "shape_pt_sequence": 38, + "shape_dist_traveled": 1.037 + } + }, + { + "model": "gtfs.shape", + "pk": 659, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94065523781238, + "shape_pt_lon": -84.0456053336701, + "shape_pt_sequence": 39, + "shape_dist_traveled": 1.101 + } + }, + { + "model": "gtfs.shape", + "pk": 660, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94048314593914, + "shape_pt_lon": -84.045634999557, + "shape_pt_sequence": 40, + "shape_dist_traveled": 1.121 + } + }, + { + "model": "gtfs.shape", + "pk": 661, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.9403780406827, + "shape_pt_lon": -84.0452283043053, + "shape_pt_sequence": 41, + "shape_dist_traveled": 1.167 + } + }, + { + "model": "gtfs.shape", + "pk": 662, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.9402703855621, + "shape_pt_lon": -84.04482278961, + "shape_pt_sequence": 42, + "shape_dist_traveled": 1.213 + } + }, + { + "model": "gtfs.shape", + "pk": 663, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94016328794055, + "shape_pt_lon": -84.0446641785108, + "shape_pt_sequence": 43, + "shape_dist_traveled": 1.234 + } + }, + { + "model": "gtfs.shape", + "pk": 664, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.94010181117775, + "shape_pt_lon": -84.0444165990228, + "shape_pt_sequence": 44, + "shape_dist_traveled": 1.262 + } + }, + { + "model": "gtfs.shape", + "pk": 665, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93971666992378, + "shape_pt_lon": -84.0445263287881, + "shape_pt_sequence": 45, + "shape_dist_traveled": 1.306 + } + }, + { + "model": "gtfs.shape", + "pk": 666, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93932936015097, + "shape_pt_lon": -84.0446221116145, + "shape_pt_sequence": 46, + "shape_dist_traveled": 1.35 + } + }, + { + "model": "gtfs.shape", + "pk": 667, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93920408915902, + "shape_pt_lon": -84.0446545394456, + "shape_pt_sequence": 47, + "shape_dist_traveled": 1.364 + } + }, + { + "model": "gtfs.shape", + "pk": 668, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.9391568243881, + "shape_pt_lon": -84.0446456512568, + "shape_pt_sequence": 48, + "shape_dist_traveled": 1.37 + } + }, + { + "model": "gtfs.shape", + "pk": 669, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93912509354336, + "shape_pt_lon": -84.0446159514984, + "shape_pt_sequence": 49, + "shape_dist_traveled": 1.375 + } + }, + { + "model": "gtfs.shape", + "pk": 670, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93911021843789, + "shape_pt_lon": -84.0445637722231, + "shape_pt_sequence": 50, + "shape_dist_traveled": 1.381 + } + }, + { + "model": "gtfs.shape", + "pk": 671, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93919615665697, + "shape_pt_lon": -84.0443354246074, + "shape_pt_sequence": 51, + "shape_dist_traveled": 1.407 + } + }, + { + "model": "gtfs.shape", + "pk": 672, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.939024, + "shape_pt_lon": -84.043697, + "shape_pt_sequence": 52, + "shape_dist_traveled": 1.459 + } + }, + { + "model": "gtfs.shape", + "pk": 673, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.9389589108528, + "shape_pt_lon": -84.0434647440871, + "shape_pt_sequence": 53, + "shape_dist_traveled": 1.506 + } + }, + { + "model": "gtfs.shape", + "pk": 674, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93927926961302, + "shape_pt_lon": -84.0433689657322, + "shape_pt_sequence": 54, + "shape_dist_traveled": 1.543 + } + }, + { + "model": "gtfs.shape", + "pk": 675, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.9394214266361, + "shape_pt_lon": -84.0433251613281, + "shape_pt_sequence": 55, + "shape_dist_traveled": 1.56 + } + }, + { + "model": "gtfs.shape", + "pk": 676, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.939438, + "shape_pt_lon": -84.043078, + "shape_pt_sequence": 56, + "shape_dist_traveled": 1.597 + } + }, + { + "model": "gtfs.shape", + "pk": 677, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93949676004582, + "shape_pt_lon": -84.0424704121516, + "shape_pt_sequence": 57, + "shape_dist_traveled": 1.654 + } + }, + { + "model": "gtfs.shape", + "pk": 678, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93950197815545, + "shape_pt_lon": -84.0423387592283, + "shape_pt_sequence": 58, + "shape_dist_traveled": 1.668 + } + }, + { + "model": "gtfs.shape", + "pk": 679, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93950471943605, + "shape_pt_lon": -84.042195874555, + "shape_pt_sequence": 59, + "shape_dist_traveled": 1.684 + } + }, + { + "model": "gtfs.shape", + "pk": 680, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93950937287681, + "shape_pt_lon": -84.0420595652431, + "shape_pt_sequence": 60, + "shape_dist_traveled": 1.699 + } + }, + { + "model": "gtfs.shape", + "pk": 681, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93950560510053, + "shape_pt_lon": -84.0419237588459, + "shape_pt_sequence": 61, + "shape_dist_traveled": 1.714 + } + }, + { + "model": "gtfs.shape", + "pk": 682, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93932694656827, + "shape_pt_lon": -84.0418526043861, + "shape_pt_sequence": 62, + "shape_dist_traveled": 1.735 + } + }, + { + "model": "gtfs.shape", + "pk": 683, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93916441674404, + "shape_pt_lon": -84.0416871226965, + "shape_pt_sequence": 63, + "shape_dist_traveled": 1.761 + } + }, + { + "model": "gtfs.shape", + "pk": 684, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93904364750639, + "shape_pt_lon": -84.0415030389796, + "shape_pt_sequence": 64, + "shape_dist_traveled": 1.785 + } + }, + { + "model": "gtfs.shape", + "pk": 685, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93882652989536, + "shape_pt_lon": -84.0411360631089, + "shape_pt_sequence": 65, + "shape_dist_traveled": 1.832 + } + }, + { + "model": "gtfs.shape", + "pk": 686, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93877761093714, + "shape_pt_lon": -84.0410711382821, + "shape_pt_sequence": 66, + "shape_dist_traveled": 1.841 + } + }, + { + "model": "gtfs.shape", + "pk": 687, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93872439879922, + "shape_pt_lon": -84.0410192892248, + "shape_pt_sequence": 67, + "shape_dist_traveled": 1.849 + } + }, + { + "model": "gtfs.shape", + "pk": 688, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93860739420377, + "shape_pt_lon": -84.0409548622543, + "shape_pt_sequence": 68, + "shape_dist_traveled": 1.863 + } + }, + { + "model": "gtfs.shape", + "pk": 689, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93847712489684, + "shape_pt_lon": -84.0409464827492, + "shape_pt_sequence": 69, + "shape_dist_traveled": 1.878 + } + }, + { + "model": "gtfs.shape", + "pk": 690, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93831748290179, + "shape_pt_lon": -84.0409847362632, + "shape_pt_sequence": 70, + "shape_dist_traveled": 1.896 + } + }, + { + "model": "gtfs.shape", + "pk": 691, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93790526804534, + "shape_pt_lon": -84.0410975311932, + "shape_pt_sequence": 71, + "shape_dist_traveled": 1.943 + } + }, + { + "model": "gtfs.shape", + "pk": 692, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93791543483811, + "shape_pt_lon": -84.0413721007657, + "shape_pt_sequence": 72, + "shape_dist_traveled": 1.973 + } + }, + { + "model": "gtfs.shape", + "pk": 693, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93792971313351, + "shape_pt_lon": -84.0416234000621, + "shape_pt_sequence": 73, + "shape_dist_traveled": 2.001 + } + }, + { + "model": "gtfs.shape", + "pk": 694, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93801943406157, + "shape_pt_lon": -84.0416214268987, + "shape_pt_sequence": 74, + "shape_dist_traveled": 2.011 + } + }, + { + "model": "gtfs.shape", + "pk": 695, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93808013647371, + "shape_pt_lon": -84.0416385167757, + "shape_pt_sequence": 75, + "shape_dist_traveled": 2.018 + } + }, + { + "model": "gtfs.shape", + "pk": 696, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.9381333560273, + "shape_pt_lon": -84.0417143841426, + "shape_pt_sequence": 76, + "shape_dist_traveled": 2.028 + } + }, + { + "model": "gtfs.shape", + "pk": 697, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.9381491692212, + "shape_pt_lon": -84.0417661717713, + "shape_pt_sequence": 77, + "shape_dist_traveled": 2.034 + } + }, + { + "model": "gtfs.shape", + "pk": 698, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93816498245021, + "shape_pt_lon": -84.0418402279053, + "shape_pt_sequence": 78, + "shape_dist_traveled": 2.042 + } + }, + { + "model": "gtfs.shape", + "pk": 699, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93817110369939, + "shape_pt_lon": -84.041955196169, + "shape_pt_sequence": 79, + "shape_dist_traveled": 2.055 + } + }, + { + "model": "gtfs.shape", + "pk": 700, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93816447211196, + "shape_pt_lon": -84.0420620743374, + "shape_pt_sequence": 80, + "shape_dist_traveled": 2.067 + } + }, + { + "model": "gtfs.shape", + "pk": 701, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93814558312971, + "shape_pt_lon": -84.042172549653, + "shape_pt_sequence": 81, + "shape_dist_traveled": 2.079 + } + }, + { + "model": "gtfs.shape", + "pk": 702, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93806546361139, + "shape_pt_lon": -84.0423590295751, + "shape_pt_sequence": 82, + "shape_dist_traveled": 2.101 + } + }, + { + "model": "gtfs.shape", + "pk": 703, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93800868895506, + "shape_pt_lon": -84.0424754995415, + "shape_pt_sequence": 83, + "shape_dist_traveled": 2.116 + } + }, + { + "model": "gtfs.shape", + "pk": 704, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93798455282835, + "shape_pt_lon": -84.0426277550985, + "shape_pt_sequence": 84, + "shape_dist_traveled": 2.132 + } + }, + { + "model": "gtfs.shape", + "pk": 705, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93793303246509, + "shape_pt_lon": -84.0429680898401, + "shape_pt_sequence": 85, + "shape_dist_traveled": 2.17 + } + }, + { + "model": "gtfs.shape", + "pk": 706, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93789255913571, + "shape_pt_lon": -84.0431865014681, + "shape_pt_sequence": 86, + "shape_dist_traveled": 2.195 + } + }, + { + "model": "gtfs.shape", + "pk": 707, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93792278510311, + "shape_pt_lon": -84.0434262188335, + "shape_pt_sequence": 87, + "shape_dist_traveled": 2.221 + } + }, + { + "model": "gtfs.shape", + "pk": 708, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93793612530689, + "shape_pt_lon": -84.0435140997635, + "shape_pt_sequence": 88, + "shape_dist_traveled": 2.231 + } + }, + { + "model": "gtfs.shape", + "pk": 709, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93796843588535, + "shape_pt_lon": -84.0436045719397, + "shape_pt_sequence": 89, + "shape_dist_traveled": 2.241 + } + }, + { + "model": "gtfs.shape", + "pk": 710, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93811029202329, + "shape_pt_lon": -84.0437946545471, + "shape_pt_sequence": 90, + "shape_dist_traveled": 2.267 + } + }, + { + "model": "gtfs.shape", + "pk": 711, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93796317506452, + "shape_pt_lon": -84.044044224914, + "shape_pt_sequence": 91, + "shape_dist_traveled": 2.299 + } + }, + { + "model": "gtfs.shape", + "pk": 712, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93778888741941, + "shape_pt_lon": -84.0443497474269, + "shape_pt_sequence": 92, + "shape_dist_traveled": 2.338 + } + }, + { + "model": "gtfs.shape", + "pk": 713, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93759056212761, + "shape_pt_lon": -84.0447040111923, + "shape_pt_sequence": 93, + "shape_dist_traveled": 2.383 + } + }, + { + "model": "gtfs.shape", + "pk": 714, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93743889754011, + "shape_pt_lon": -84.0449773758339, + "shape_pt_sequence": 94, + "shape_dist_traveled": 2.417 + } + }, + { + "model": "gtfs.shape", + "pk": 715, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93734106177819, + "shape_pt_lon": -84.0451442319336, + "shape_pt_sequence": 95, + "shape_dist_traveled": 2.438 + } + }, + { + "model": "gtfs.shape", + "pk": 716, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93725220134541, + "shape_pt_lon": -84.0452700748287, + "shape_pt_sequence": 96, + "shape_dist_traveled": 2.455 + } + }, + { + "model": "gtfs.shape", + "pk": 717, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93710383236486, + "shape_pt_lon": -84.0454232410009, + "shape_pt_sequence": 97, + "shape_dist_traveled": 2.479 + } + }, + { + "model": "gtfs.shape", + "pk": 718, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93703302156643, + "shape_pt_lon": -84.045480287002, + "shape_pt_sequence": 98, + "shape_dist_traveled": 2.489 + } + }, + { + "model": "gtfs.shape", + "pk": 719, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93692669580576, + "shape_pt_lon": -84.0455559204937, + "shape_pt_sequence": 99, + "shape_dist_traveled": 2.503 + } + }, + { + "model": "gtfs.shape", + "pk": 720, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93685320196694, + "shape_pt_lon": -84.0455868138288, + "shape_pt_sequence": 100, + "shape_dist_traveled": 2.512 + } + }, + { + "model": "gtfs.shape", + "pk": 721, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93677214106483, + "shape_pt_lon": -84.045591032246, + "shape_pt_sequence": 101, + "shape_dist_traveled": 2.521 + } + }, + { + "model": "gtfs.shape", + "pk": 722, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93667892839703, + "shape_pt_lon": -84.0455673986725, + "shape_pt_sequence": 102, + "shape_dist_traveled": 2.531 + } + }, + { + "model": "gtfs.shape", + "pk": 723, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93652937757293, + "shape_pt_lon": -84.0454873867401, + "shape_pt_sequence": 103, + "shape_dist_traveled": 2.55 + } + }, + { + "model": "gtfs.shape", + "pk": 724, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93646683969579, + "shape_pt_lon": -84.0454491600057, + "shape_pt_sequence": 104, + "shape_dist_traveled": 2.558 + } + }, + { + "model": "gtfs.shape", + "pk": 725, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93640033885562, + "shape_pt_lon": -84.0454129449283, + "shape_pt_sequence": 105, + "shape_dist_traveled": 2.567 + } + }, + { + "model": "gtfs.shape", + "pk": 726, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93634297166293, + "shape_pt_lon": -84.0453776127618, + "shape_pt_sequence": 106, + "shape_dist_traveled": 2.574 + } + }, + { + "model": "gtfs.shape", + "pk": 727, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93629576054226, + "shape_pt_lon": -84.0453623778292, + "shape_pt_sequence": 107, + "shape_dist_traveled": 2.579 + } + }, + { + "model": "gtfs.shape", + "pk": 728, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93624363287526, + "shape_pt_lon": -84.0453512637102, + "shape_pt_sequence": 108, + "shape_dist_traveled": 2.585 + } + }, + { + "model": "gtfs.shape", + "pk": 729, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.9361862212533, + "shape_pt_lon": -84.0453538959122, + "shape_pt_sequence": 109, + "shape_dist_traveled": 2.592 + } + }, + { + "model": "gtfs.shape", + "pk": 730, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93603883510741, + "shape_pt_lon": -84.0453890269646, + "shape_pt_sequence": 110, + "shape_dist_traveled": 2.608 + } + }, + { + "model": "gtfs.shape", + "pk": 731, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93580414505913, + "shape_pt_lon": -84.0454308854351, + "shape_pt_sequence": 111, + "shape_dist_traveled": 2.635 + } + }, + { + "model": "gtfs.shape", + "pk": 732, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93565385732093, + "shape_pt_lon": -84.0454587046985, + "shape_pt_sequence": 112, + "shape_dist_traveled": 2.652 + } + }, + { + "model": "gtfs.shape", + "pk": 733, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93558390036268, + "shape_pt_lon": -84.0455252542674, + "shape_pt_sequence": 113, + "shape_dist_traveled": 2.662 + } + }, + { + "model": "gtfs.shape", + "pk": 734, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93547184500151, + "shape_pt_lon": -84.0455798539966, + "shape_pt_sequence": 114, + "shape_dist_traveled": 2.676 + } + }, + { + "model": "gtfs.shape", + "pk": 735, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93533906172064, + "shape_pt_lon": -84.0456377473207, + "shape_pt_sequence": 115, + "shape_dist_traveled": 2.692 + } + }, + { + "model": "gtfs.shape", + "pk": 736, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93501118853525, + "shape_pt_lon": -84.0456383288227, + "shape_pt_sequence": 116, + "shape_dist_traveled": 2.728 + } + }, + { + "model": "gtfs.shape", + "pk": 737, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93495718975151, + "shape_pt_lon": -84.0456086223286, + "shape_pt_sequence": 117, + "shape_dist_traveled": 2.735 + } + }, + { + "model": "gtfs.shape", + "pk": 738, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93465006354252, + "shape_pt_lon": -84.0456168978697, + "shape_pt_sequence": 118, + "shape_dist_traveled": 2.769 + } + }, + { + "model": "gtfs.shape", + "pk": 739, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93477095640989, + "shape_pt_lon": -84.0461340991613, + "shape_pt_sequence": 119, + "shape_dist_traveled": 2.827 + } + }, + { + "model": "gtfs.shape", + "pk": 740, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93490403346722, + "shape_pt_lon": -84.0468176973466, + "shape_pt_sequence": 120, + "shape_dist_traveled": 2.904 + } + }, + { + "model": "gtfs.shape", + "pk": 741, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93495932029753, + "shape_pt_lon": -84.0471113963055, + "shape_pt_sequence": 121, + "shape_dist_traveled": 2.937 + } + }, + { + "model": "gtfs.shape", + "pk": 742, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93505827498137, + "shape_pt_lon": -84.0474601236579, + "shape_pt_sequence": 122, + "shape_dist_traveled": 2.976 + } + }, + { + "model": "gtfs.shape", + "pk": 743, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93519897363926, + "shape_pt_lon": -84.0478899692808, + "shape_pt_sequence": 123, + "shape_dist_traveled": 3.026 + } + }, + { + "model": "gtfs.shape", + "pk": 744, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93527449143981, + "shape_pt_lon": -84.0481284685146, + "shape_pt_sequence": 124, + "shape_dist_traveled": 3.053 + } + }, + { + "model": "gtfs.shape", + "pk": 745, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93531543817006, + "shape_pt_lon": -84.0483778894022, + "shape_pt_sequence": 125, + "shape_dist_traveled": 3.081 + } + }, + { + "model": "gtfs.shape", + "pk": 746, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93529755715117, + "shape_pt_lon": -84.0486249437023, + "shape_pt_sequence": 126, + "shape_dist_traveled": 3.108 + } + }, + { + "model": "gtfs.shape", + "pk": 747, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.93545425079317, + "shape_pt_lon": -84.0486430566726, + "shape_pt_sequence": 127, + "shape_dist_traveled": 3.126 + } + }, + { + "model": "gtfs.shape", + "pk": 748, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.9354703595261, + "shape_pt_lon": -84.0488000764969, + "shape_pt_sequence": 128, + "shape_dist_traveled": 3.143 + } + }, + { + "model": "gtfs.shape", + "pk": 749, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "shape_pt_lat": 9.9355323422866, + "shape_pt_lon": -84.0490437766179, + "shape_pt_sequence": 129, + "shape_dist_traveled": 3.171 + } + }, + { + "model": "gtfs.shape", + "pk": 750, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94651439468106, + "shape_pt_lon": -84.0452793145875, + "shape_pt_sequence": 0, + "shape_dist_traveled": 0.0 + } + }, + { + "model": "gtfs.shape", + "pk": 751, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94656979269062, + "shape_pt_lon": -84.0453635889366, + "shape_pt_sequence": 1, + "shape_dist_traveled": 0.011 + } + }, + { + "model": "gtfs.shape", + "pk": 752, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94668819013391, + "shape_pt_lon": -84.0455133598416, + "shape_pt_sequence": 2, + "shape_dist_traveled": 0.032 + } + }, + { + "model": "gtfs.shape", + "pk": 753, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94677813595565, + "shape_pt_lon": -84.0456333624982, + "shape_pt_sequence": 3, + "shape_dist_traveled": 0.049 + } + }, + { + "model": "gtfs.shape", + "pk": 754, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94692110409536, + "shape_pt_lon": -84.0458288226395, + "shape_pt_sequence": 4, + "shape_dist_traveled": 0.075 + } + }, + { + "model": "gtfs.shape", + "pk": 755, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94699667079666, + "shape_pt_lon": -84.0458784281265, + "shape_pt_sequence": 5, + "shape_dist_traveled": 0.085 + } + }, + { + "model": "gtfs.shape", + "pk": 756, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94709290535486, + "shape_pt_lon": -84.0458729567443, + "shape_pt_sequence": 6, + "shape_dist_traveled": 0.096 + } + }, + { + "model": "gtfs.shape", + "pk": 757, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94722193423012, + "shape_pt_lon": -84.0457747817661, + "shape_pt_sequence": 7, + "shape_dist_traveled": 0.114 + } + }, + { + "model": "gtfs.shape", + "pk": 758, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94733469552996, + "shape_pt_lon": -84.0456766067879, + "shape_pt_sequence": 8, + "shape_dist_traveled": 0.13 + } + }, + { + "model": "gtfs.shape", + "pk": 759, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94735240267321, + "shape_pt_lon": -84.0455812484176, + "shape_pt_sequence": 9, + "shape_dist_traveled": 0.141 + } + }, + { + "model": "gtfs.shape", + "pk": 760, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94731698838683, + "shape_pt_lon": -84.0454835451677, + "shape_pt_sequence": 10, + "shape_dist_traveled": 0.152 + } + }, + { + "model": "gtfs.shape", + "pk": 761, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94706401578786, + "shape_pt_lon": -84.045155482603, + "shape_pt_sequence": 11, + "shape_dist_traveled": 0.198 + } + }, + { + "model": "gtfs.shape", + "pk": 762, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94695753981341, + "shape_pt_lon": -84.0449388905875, + "shape_pt_sequence": 12, + "shape_dist_traveled": 0.224 + } + }, + { + "model": "gtfs.shape", + "pk": 763, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94685591607748, + "shape_pt_lon": -84.0447927265256, + "shape_pt_sequence": 13, + "shape_dist_traveled": 0.244 + } + }, + { + "model": "gtfs.shape", + "pk": 764, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94674691466528, + "shape_pt_lon": -84.0447132911805, + "shape_pt_sequence": 14, + "shape_dist_traveled": 0.259 + } + }, + { + "model": "gtfs.shape", + "pk": 765, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94663836196663, + "shape_pt_lon": -84.0446929689046, + "shape_pt_sequence": 15, + "shape_dist_traveled": 0.271 + } + }, + { + "model": "gtfs.shape", + "pk": 766, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.9465853910728, + "shape_pt_lon": -84.0447054750041, + "shape_pt_sequence": 16, + "shape_dist_traveled": 0.277 + } + }, + { + "model": "gtfs.shape", + "pk": 767, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94652457073993, + "shape_pt_lon": -84.0447469011822, + "shape_pt_sequence": 17, + "shape_dist_traveled": 0.285 + } + }, + { + "model": "gtfs.shape", + "pk": 768, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94630948675802, + "shape_pt_lon": -84.0447977068717, + "shape_pt_sequence": 18, + "shape_dist_traveled": 0.31 + } + }, + { + "model": "gtfs.shape", + "pk": 769, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94606507414992, + "shape_pt_lon": -84.0448235005163, + "shape_pt_sequence": 19, + "shape_dist_traveled": 0.337 + } + }, + { + "model": "gtfs.shape", + "pk": 770, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94607893196729, + "shape_pt_lon": -84.0451642894519, + "shape_pt_sequence": 20, + "shape_dist_traveled": 0.374 + } + }, + { + "model": "gtfs.shape", + "pk": 771, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94594726623906, + "shape_pt_lon": -84.0451842895768, + "shape_pt_sequence": 21, + "shape_dist_traveled": 0.389 + } + }, + { + "model": "gtfs.shape", + "pk": 772, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94587566747948, + "shape_pt_lon": -84.0452538542911, + "shape_pt_sequence": 22, + "shape_dist_traveled": 0.4 + } + }, + { + "model": "gtfs.shape", + "pk": 773, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94577795917383, + "shape_pt_lon": -84.0454601695233, + "shape_pt_sequence": 23, + "shape_dist_traveled": 0.425 + } + }, + { + "model": "gtfs.shape", + "pk": 774, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94569943146, + "shape_pt_lon": -84.0455125384658, + "shape_pt_sequence": 24, + "shape_dist_traveled": 0.435 + } + }, + { + "model": "gtfs.shape", + "pk": 775, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94545154684154, + "shape_pt_lon": -84.0455252458136, + "shape_pt_sequence": 25, + "shape_dist_traveled": 0.463 + } + }, + { + "model": "gtfs.shape", + "pk": 776, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94516751299271, + "shape_pt_lon": -84.0455414357082, + "shape_pt_sequence": 26, + "shape_dist_traveled": 0.494 + } + }, + { + "model": "gtfs.shape", + "pk": 777, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94508849180003, + "shape_pt_lon": -84.0455037479672, + "shape_pt_sequence": 27, + "shape_dist_traveled": 0.504 + } + }, + { + "model": "gtfs.shape", + "pk": 778, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94505511036374, + "shape_pt_lon": -84.0453835472561, + "shape_pt_sequence": 28, + "shape_dist_traveled": 0.518 + } + }, + { + "model": "gtfs.shape", + "pk": 779, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94502739484005, + "shape_pt_lon": -84.045084965639, + "shape_pt_sequence": 29, + "shape_dist_traveled": 0.55 + } + }, + { + "model": "gtfs.shape", + "pk": 780, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94499479036127, + "shape_pt_lon": -84.0450504044021, + "shape_pt_sequence": 30, + "shape_dist_traveled": 0.556 + } + }, + { + "model": "gtfs.shape", + "pk": 781, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94494963682908, + "shape_pt_lon": -84.0450208723069, + "shape_pt_sequence": 31, + "shape_dist_traveled": 0.562 + } + }, + { + "model": "gtfs.shape", + "pk": 782, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94467428591231, + "shape_pt_lon": -84.0450154011338, + "shape_pt_sequence": 32, + "shape_dist_traveled": 0.592 + } + }, + { + "model": "gtfs.shape", + "pk": 783, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94435778151253, + "shape_pt_lon": -84.0450041637077, + "shape_pt_sequence": 33, + "shape_dist_traveled": 0.627 + } + }, + { + "model": "gtfs.shape", + "pk": 784, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94347268380579, + "shape_pt_lon": -84.0449287137552, + "shape_pt_sequence": 34, + "shape_dist_traveled": 0.725 + } + }, + { + "model": "gtfs.shape", + "pk": 785, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94295817880508, + "shape_pt_lon": -84.0448982678798, + "shape_pt_sequence": 35, + "shape_dist_traveled": 0.782 + } + }, + { + "model": "gtfs.shape", + "pk": 786, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94230048632557, + "shape_pt_lon": -84.0448587644203, + "shape_pt_sequence": 36, + "shape_dist_traveled": 0.855 + } + }, + { + "model": "gtfs.shape", + "pk": 787, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94171228683352, + "shape_pt_lon": -84.0448222996627, + "shape_pt_sequence": 37, + "shape_dist_traveled": 0.92 + } + }, + { + "model": "gtfs.shape", + "pk": 788, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94096530647596, + "shape_pt_lon": -84.0447760219723, + "shape_pt_sequence": 38, + "shape_dist_traveled": 1.003 + } + }, + { + "model": "gtfs.shape", + "pk": 789, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94090663320268, + "shape_pt_lon": -84.0448740739734, + "shape_pt_sequence": 39, + "shape_dist_traveled": 1.016 + } + }, + { + "model": "gtfs.shape", + "pk": 790, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94084406020503, + "shape_pt_lon": -84.0449871934796, + "shape_pt_sequence": 40, + "shape_dist_traveled": 1.03 + } + }, + { + "model": "gtfs.shape", + "pk": 791, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94077751897418, + "shape_pt_lon": -84.0452171289551, + "shape_pt_sequence": 41, + "shape_dist_traveled": 1.056 + } + }, + { + "model": "gtfs.shape", + "pk": 792, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94072156165138, + "shape_pt_lon": -84.0453974813657, + "shape_pt_sequence": 42, + "shape_dist_traveled": 1.077 + } + }, + { + "model": "gtfs.shape", + "pk": 793, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94066022328121, + "shape_pt_lon": -84.0456042948351, + "shape_pt_sequence": 43, + "shape_dist_traveled": 1.101 + } + }, + { + "model": "gtfs.shape", + "pk": 794, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94049309734092, + "shape_pt_lon": -84.0456331735173, + "shape_pt_sequence": 44, + "shape_dist_traveled": 1.119 + } + }, + { + "model": "gtfs.shape", + "pk": 795, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94043960234258, + "shape_pt_lon": -84.0454384499972, + "shape_pt_sequence": 45, + "shape_dist_traveled": 1.142 + } + }, + { + "model": "gtfs.shape", + "pk": 796, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94037244769911, + "shape_pt_lon": -84.0451953028132, + "shape_pt_sequence": 46, + "shape_dist_traveled": 1.169 + } + }, + { + "model": "gtfs.shape", + "pk": 797, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94027492444419, + "shape_pt_lon": -84.0448203307503, + "shape_pt_sequence": 47, + "shape_dist_traveled": 1.212 + } + }, + { + "model": "gtfs.shape", + "pk": 798, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94022435173391, + "shape_pt_lon": -84.0447437519701, + "shape_pt_sequence": 48, + "shape_dist_traveled": 1.222 + } + }, + { + "model": "gtfs.shape", + "pk": 799, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94016681408322, + "shape_pt_lon": -84.0446621944019, + "shape_pt_sequence": 49, + "shape_dist_traveled": 1.233 + } + }, + { + "model": "gtfs.shape", + "pk": 800, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.94010200702146, + "shape_pt_lon": -84.044417503094, + "shape_pt_sequence": 50, + "shape_dist_traveled": 1.261 + } + }, + { + "model": "gtfs.shape", + "pk": 801, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93987745974345, + "shape_pt_lon": -84.0444809655781, + "shape_pt_sequence": 51, + "shape_dist_traveled": 1.286 + } + }, + { + "model": "gtfs.shape", + "pk": 802, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93971459423953, + "shape_pt_lon": -84.0445245874922, + "shape_pt_sequence": 52, + "shape_dist_traveled": 1.305 + } + }, + { + "model": "gtfs.shape", + "pk": 803, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93927560616025, + "shape_pt_lon": -84.0446392902696, + "shape_pt_sequence": 53, + "shape_dist_traveled": 1.355 + } + }, + { + "model": "gtfs.shape", + "pk": 804, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93920545121652, + "shape_pt_lon": -84.0446560771702, + "shape_pt_sequence": 54, + "shape_dist_traveled": 1.363 + } + }, + { + "model": "gtfs.shape", + "pk": 805, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93916110643307, + "shape_pt_lon": -84.0446448875091, + "shape_pt_sequence": 55, + "shape_dist_traveled": 1.368 + } + }, + { + "model": "gtfs.shape", + "pk": 806, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93912385292449, + "shape_pt_lon": -84.0446191813258, + "shape_pt_sequence": 56, + "shape_dist_traveled": 1.373 + } + }, + { + "model": "gtfs.shape", + "pk": 807, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93911625815432, + "shape_pt_lon": -84.0445525134932, + "shape_pt_sequence": 57, + "shape_dist_traveled": 1.38 + } + }, + { + "model": "gtfs.shape", + "pk": 808, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93919941590806, + "shape_pt_lon": -84.0443337547524, + "shape_pt_sequence": 58, + "shape_dist_traveled": 1.406 + } + }, + { + "model": "gtfs.shape", + "pk": 809, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93911055274011, + "shape_pt_lon": -84.044006444136, + "shape_pt_sequence": 59, + "shape_dist_traveled": 1.443 + } + }, + { + "model": "gtfs.shape", + "pk": 810, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.9390190082839, + "shape_pt_lon": -84.0436747724812, + "shape_pt_sequence": 60, + "shape_dist_traveled": 1.481 + } + }, + { + "model": "gtfs.shape", + "pk": 811, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93895911426052, + "shape_pt_lon": -84.0434673567427, + "shape_pt_sequence": 61, + "shape_dist_traveled": 1.505 + } + }, + { + "model": "gtfs.shape", + "pk": 812, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.9392879865273, + "shape_pt_lon": -84.0433689432454, + "shape_pt_sequence": 62, + "shape_dist_traveled": 1.543 + } + }, + { + "model": "gtfs.shape", + "pk": 813, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93942115014918, + "shape_pt_lon": -84.0433274860744, + "shape_pt_sequence": 63, + "shape_dist_traveled": 1.558 + } + }, + { + "model": "gtfs.shape", + "pk": 814, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93944755512195, + "shape_pt_lon": -84.0429942406062, + "shape_pt_sequence": 64, + "shape_dist_traveled": 1.595 + } + }, + { + "model": "gtfs.shape", + "pk": 815, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93946810072644, + "shape_pt_lon": -84.0427365454686, + "shape_pt_sequence": 65, + "shape_dist_traveled": 1.623 + } + }, + { + "model": "gtfs.shape", + "pk": 816, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93949017843466, + "shape_pt_lon": -84.0424561880641, + "shape_pt_sequence": 66, + "shape_dist_traveled": 1.654 + } + }, + { + "model": "gtfs.shape", + "pk": 817, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93949896641922, + "shape_pt_lon": -84.0421337910545, + "shape_pt_sequence": 67, + "shape_dist_traveled": 1.689 + } + }, + { + "model": "gtfs.shape", + "pk": 818, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93950631475532, + "shape_pt_lon": -84.0419274245262, + "shape_pt_sequence": 68, + "shape_dist_traveled": 1.712 + } + }, + { + "model": "gtfs.shape", + "pk": 819, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93932958005353, + "shape_pt_lon": -84.0418524186819, + "shape_pt_sequence": 69, + "shape_dist_traveled": 1.733 + } + }, + { + "model": "gtfs.shape", + "pk": 820, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93916814008368, + "shape_pt_lon": -84.041691039804, + "shape_pt_sequence": 70, + "shape_dist_traveled": 1.758 + } + }, + { + "model": "gtfs.shape", + "pk": 821, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93900519121203, + "shape_pt_lon": -84.0414413521148, + "shape_pt_sequence": 71, + "shape_dist_traveled": 1.791 + } + }, + { + "model": "gtfs.shape", + "pk": 822, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93882565486029, + "shape_pt_lon": -84.0411391429389, + "shape_pt_sequence": 72, + "shape_dist_traveled": 1.83 + } + }, + { + "model": "gtfs.shape", + "pk": 823, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93878072700935, + "shape_pt_lon": -84.0410728454411, + "shape_pt_sequence": 73, + "shape_dist_traveled": 1.839 + } + }, + { + "model": "gtfs.shape", + "pk": 824, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93872490109004, + "shape_pt_lon": -84.0410213000932, + "shape_pt_sequence": 74, + "shape_dist_traveled": 1.847 + } + }, + { + "model": "gtfs.shape", + "pk": 825, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93861004710345, + "shape_pt_lon": -84.0409544792739, + "shape_pt_sequence": 75, + "shape_dist_traveled": 1.862 + } + }, + { + "model": "gtfs.shape", + "pk": 826, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93847396797512, + "shape_pt_lon": -84.0409494403816, + "shape_pt_sequence": 76, + "shape_dist_traveled": 1.877 + } + }, + { + "model": "gtfs.shape", + "pk": 827, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93814652860348, + "shape_pt_lon": -84.0410341635524, + "shape_pt_sequence": 77, + "shape_dist_traveled": 1.914 + } + }, + { + "model": "gtfs.shape", + "pk": 828, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93790671250708, + "shape_pt_lon": -84.0411014405278, + "shape_pt_sequence": 78, + "shape_dist_traveled": 1.942 + } + }, + { + "model": "gtfs.shape", + "pk": 829, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93791663555238, + "shape_pt_lon": -84.0413834314017, + "shape_pt_sequence": 79, + "shape_dist_traveled": 1.973 + } + }, + { + "model": "gtfs.shape", + "pk": 830, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93793079347671, + "shape_pt_lon": -84.0416285810649, + "shape_pt_sequence": 80, + "shape_dist_traveled": 1.999 + } + }, + { + "model": "gtfs.shape", + "pk": 831, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93801967154644, + "shape_pt_lon": -84.0416254546011, + "shape_pt_sequence": 81, + "shape_dist_traveled": 2.009 + } + }, + { + "model": "gtfs.shape", + "pk": 832, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93807996226397, + "shape_pt_lon": -84.0416431189912, + "shape_pt_sequence": 82, + "shape_dist_traveled": 2.016 + } + }, + { + "model": "gtfs.shape", + "pk": 833, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93810791480517, + "shape_pt_lon": -84.0416788253891, + "shape_pt_sequence": 83, + "shape_dist_traveled": 2.021 + } + }, + { + "model": "gtfs.shape", + "pk": 834, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93813256489417, + "shape_pt_lon": -84.0417178845482, + "shape_pt_sequence": 84, + "shape_dist_traveled": 2.026 + } + }, + { + "model": "gtfs.shape", + "pk": 835, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.9381630635316, + "shape_pt_lon": -84.0418440755105, + "shape_pt_sequence": 85, + "shape_dist_traveled": 2.041 + } + }, + { + "model": "gtfs.shape", + "pk": 836, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93816840355805, + "shape_pt_lon": -84.0419580950124, + "shape_pt_sequence": 86, + "shape_dist_traveled": 2.053 + } + }, + { + "model": "gtfs.shape", + "pk": 837, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93816233402513, + "shape_pt_lon": -84.0420632597521, + "shape_pt_sequence": 87, + "shape_dist_traveled": 2.065 + } + }, + { + "model": "gtfs.shape", + "pk": 838, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93814321123235, + "shape_pt_lon": -84.0421742120474, + "shape_pt_sequence": 88, + "shape_dist_traveled": 2.077 + } + }, + { + "model": "gtfs.shape", + "pk": 839, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93803086770445, + "shape_pt_lon": -84.042431585693, + "shape_pt_sequence": 89, + "shape_dist_traveled": 2.108 + } + }, + { + "model": "gtfs.shape", + "pk": 840, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93800811636062, + "shape_pt_lon": -84.0424780922361, + "shape_pt_sequence": 90, + "shape_dist_traveled": 2.113 + } + }, + { + "model": "gtfs.shape", + "pk": 841, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93798034157711, + "shape_pt_lon": -84.0426586032431, + "shape_pt_sequence": 91, + "shape_dist_traveled": 2.134 + } + }, + { + "model": "gtfs.shape", + "pk": 842, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93791715763552, + "shape_pt_lon": -84.0430584128099, + "shape_pt_sequence": 92, + "shape_dist_traveled": 2.178 + } + }, + { + "model": "gtfs.shape", + "pk": 843, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93789378213828, + "shape_pt_lon": -84.0431955755255, + "shape_pt_sequence": 93, + "shape_dist_traveled": 2.193 + } + }, + { + "model": "gtfs.shape", + "pk": 844, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.9379228858361, + "shape_pt_lon": -84.0434355505527, + "shape_pt_sequence": 94, + "shape_dist_traveled": 2.22 + } + }, + { + "model": "gtfs.shape", + "pk": 845, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93793324365073, + "shape_pt_lon": -84.0435100147268, + "shape_pt_sequence": 95, + "shape_dist_traveled": 2.228 + } + }, + { + "model": "gtfs.shape", + "pk": 846, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93796925623814, + "shape_pt_lon": -84.0436073742708, + "shape_pt_sequence": 96, + "shape_dist_traveled": 2.239 + } + }, + { + "model": "gtfs.shape", + "pk": 847, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93811129632628, + "shape_pt_lon": -84.0437957690067, + "shape_pt_sequence": 97, + "shape_dist_traveled": 2.265 + } + }, + { + "model": "gtfs.shape", + "pk": 848, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93796149488666, + "shape_pt_lon": -84.0440534496211, + "shape_pt_sequence": 98, + "shape_dist_traveled": 2.298 + } + }, + { + "model": "gtfs.shape", + "pk": 849, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93777133769974, + "shape_pt_lon": -84.0443836171542, + "shape_pt_sequence": 99, + "shape_dist_traveled": 2.34 + } + }, + { + "model": "gtfs.shape", + "pk": 850, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.9375818272445, + "shape_pt_lon": -84.0447196978834, + "shape_pt_sequence": 100, + "shape_dist_traveled": 2.382 + } + }, + { + "model": "gtfs.shape", + "pk": 851, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93745018852863, + "shape_pt_lon": -84.0449635706007, + "shape_pt_sequence": 101, + "shape_dist_traveled": 2.413 + } + }, + { + "model": "gtfs.shape", + "pk": 852, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93734180767617, + "shape_pt_lon": -84.0451463546949, + "shape_pt_sequence": 102, + "shape_dist_traveled": 2.436 + } + }, + { + "model": "gtfs.shape", + "pk": 853, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93725372200282, + "shape_pt_lon": -84.0452714142582, + "shape_pt_sequence": 103, + "shape_dist_traveled": 2.453 + } + }, + { + "model": "gtfs.shape", + "pk": 854, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.937108322267, + "shape_pt_lon": -84.0454262175884, + "shape_pt_sequence": 104, + "shape_dist_traveled": 2.476 + } + }, + { + "model": "gtfs.shape", + "pk": 855, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93692719931924, + "shape_pt_lon": -84.0455586526682, + "shape_pt_sequence": 105, + "shape_dist_traveled": 2.501 + } + }, + { + "model": "gtfs.shape", + "pk": 856, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93685401442958, + "shape_pt_lon": -84.0455873611916, + "shape_pt_sequence": 106, + "shape_dist_traveled": 2.51 + } + }, + { + "model": "gtfs.shape", + "pk": 857, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93677373653686, + "shape_pt_lon": -84.0455923110153, + "shape_pt_sequence": 107, + "shape_dist_traveled": 2.519 + } + }, + { + "model": "gtfs.shape", + "pk": 858, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93668019604487, + "shape_pt_lon": -84.0455680674162, + "shape_pt_sequence": 108, + "shape_dist_traveled": 2.529 + } + }, + { + "model": "gtfs.shape", + "pk": 859, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93646480148586, + "shape_pt_lon": -84.0454482787829, + "shape_pt_sequence": 109, + "shape_dist_traveled": 2.556 + } + }, + { + "model": "gtfs.shape", + "pk": 860, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93636588688585, + "shape_pt_lon": -84.0453892763726, + "shape_pt_sequence": 110, + "shape_dist_traveled": 2.569 + } + }, + { + "model": "gtfs.shape", + "pk": 861, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93632308831075, + "shape_pt_lon": -84.0453697036442, + "shape_pt_sequence": 111, + "shape_dist_traveled": 2.574 + } + }, + { + "model": "gtfs.shape", + "pk": 862, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93629762770389, + "shape_pt_lon": -84.0453615303045, + "shape_pt_sequence": 112, + "shape_dist_traveled": 2.577 + } + }, + { + "model": "gtfs.shape", + "pk": 863, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93624652235345, + "shape_pt_lon": -84.0453532765511, + "shape_pt_sequence": 113, + "shape_dist_traveled": 2.583 + } + }, + { + "model": "gtfs.shape", + "pk": 864, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93618732594838, + "shape_pt_lon": -84.0453570927397, + "shape_pt_sequence": 114, + "shape_dist_traveled": 2.59 + } + }, + { + "model": "gtfs.shape", + "pk": 865, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93603538344972, + "shape_pt_lon": -84.0453927689936, + "shape_pt_sequence": 115, + "shape_dist_traveled": 2.607 + } + }, + { + "model": "gtfs.shape", + "pk": 866, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93577991764324, + "shape_pt_lon": -84.045437957483, + "shape_pt_sequence": 116, + "shape_dist_traveled": 2.636 + } + }, + { + "model": "gtfs.shape", + "pk": 867, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93565154581259, + "shape_pt_lon": -84.0454621421002, + "shape_pt_sequence": 117, + "shape_dist_traveled": 2.65 + } + }, + { + "model": "gtfs.shape", + "pk": 868, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93558482499322, + "shape_pt_lon": -84.0455294509499, + "shape_pt_sequence": 118, + "shape_dist_traveled": 2.66 + } + }, + { + "model": "gtfs.shape", + "pk": 869, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93533787082614, + "shape_pt_lon": -84.0456405554627, + "shape_pt_sequence": 119, + "shape_dist_traveled": 2.69 + } + }, + { + "model": "gtfs.shape", + "pk": 870, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.9350109333037, + "shape_pt_lon": -84.0456410811815, + "shape_pt_sequence": 120, + "shape_dist_traveled": 2.727 + } + }, + { + "model": "gtfs.shape", + "pk": 871, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93495968412818, + "shape_pt_lon": -84.0456087998837, + "shape_pt_sequence": 121, + "shape_dist_traveled": 2.733 + } + }, + { + "model": "gtfs.shape", + "pk": 872, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93464858697721, + "shape_pt_lon": -84.0456196757956, + "shape_pt_sequence": 122, + "shape_dist_traveled": 2.768 + } + }, + { + "model": "gtfs.shape", + "pk": 873, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93480225304748, + "shape_pt_lon": -84.046294734079, + "shape_pt_sequence": 123, + "shape_dist_traveled": 2.844 + } + }, + { + "model": "gtfs.shape", + "pk": 874, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93495610721508, + "shape_pt_lon": -84.0470992295944, + "shape_pt_sequence": 124, + "shape_dist_traveled": 2.933 + } + }, + { + "model": "gtfs.shape", + "pk": 875, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93514466639919, + "shape_pt_lon": -84.047738281775, + "shape_pt_sequence": 125, + "shape_dist_traveled": 3.007 + } + }, + { + "model": "gtfs.shape", + "pk": 876, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93527584609242, + "shape_pt_lon": -84.048128961463, + "shape_pt_sequence": 126, + "shape_dist_traveled": 3.052 + } + }, + { + "model": "gtfs.shape", + "pk": 877, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93531583349863, + "shape_pt_lon": -84.0483847176419, + "shape_pt_sequence": 127, + "shape_dist_traveled": 3.08 + } + }, + { + "model": "gtfs.shape", + "pk": 878, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93529983825585, + "shape_pt_lon": -84.0486296483808, + "shape_pt_sequence": 128, + "shape_dist_traveled": 3.107 + } + }, + { + "model": "gtfs.shape", + "pk": 879, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93545520267059, + "shape_pt_lon": -84.0486491888617, + "shape_pt_sequence": 129, + "shape_dist_traveled": 3.124 + } + }, + { + "model": "gtfs.shape", + "pk": 880, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.9354703980085, + "shape_pt_lon": -84.0488055127148, + "shape_pt_sequence": 130, + "shape_dist_traveled": 3.142 + } + }, + { + "model": "gtfs.shape", + "pk": 881, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93553667972237, + "shape_pt_lon": -84.0490832368349, + "shape_pt_sequence": 131, + "shape_dist_traveled": 3.173 + } + }, + { + "model": "gtfs.shape", + "pk": 882, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.9355977604479, + "shape_pt_lon": -84.0493162487417, + "shape_pt_sequence": 132, + "shape_dist_traveled": 3.199 + } + }, + { + "model": "gtfs.shape", + "pk": 883, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93570243695239, + "shape_pt_lon": -84.0495918083302, + "shape_pt_sequence": 133, + "shape_dist_traveled": 3.232 + } + }, + { + "model": "gtfs.shape", + "pk": 884, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93571038517426, + "shape_pt_lon": -84.0496787768477, + "shape_pt_sequence": 134, + "shape_dist_traveled": 3.241 + } + }, + { + "model": "gtfs.shape", + "pk": 885, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93571038484225, + "shape_pt_lon": -84.0499696558076, + "shape_pt_sequence": 135, + "shape_dist_traveled": 3.273 + } + }, + { + "model": "gtfs.shape", + "pk": 886, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93570321714193, + "shape_pt_lon": -84.0500954158227, + "shape_pt_sequence": 136, + "shape_dist_traveled": 3.287 + } + }, + { + "model": "gtfs.shape", + "pk": 887, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93566700857604, + "shape_pt_lon": -84.0503419760518, + "shape_pt_sequence": 137, + "shape_dist_traveled": 3.314 + } + }, + { + "model": "gtfs.shape", + "pk": 888, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93560674646944, + "shape_pt_lon": -84.0506470296121, + "shape_pt_sequence": 138, + "shape_dist_traveled": 3.348 + } + }, + { + "model": "gtfs.shape", + "pk": 889, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93553343216217, + "shape_pt_lon": -84.0510737676674, + "shape_pt_sequence": 139, + "shape_dist_traveled": 3.396 + } + }, + { + "model": "gtfs.shape", + "pk": 890, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93549263100849, + "shape_pt_lon": -84.0513075140395, + "shape_pt_sequence": 140, + "shape_dist_traveled": 3.422 + } + }, + { + "model": "gtfs.shape", + "pk": 891, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93546272803463, + "shape_pt_lon": -84.0515459542782, + "shape_pt_sequence": 141, + "shape_dist_traveled": 3.448 + } + }, + { + "model": "gtfs.shape", + "pk": 892, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93544955548966, + "shape_pt_lon": -84.0516525931019, + "shape_pt_sequence": 142, + "shape_dist_traveled": 3.46 + } + }, + { + "model": "gtfs.shape", + "pk": 893, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93544794162221, + "shape_pt_lon": -84.0517605730299, + "shape_pt_sequence": 143, + "shape_dist_traveled": 3.472 + } + }, + { + "model": "gtfs.shape", + "pk": 894, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93547169143514, + "shape_pt_lon": -84.0519830595855, + "shape_pt_sequence": 144, + "shape_dist_traveled": 3.496 + } + }, + { + "model": "gtfs.shape", + "pk": 895, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93548892832953, + "shape_pt_lon": -84.0521081889526, + "shape_pt_sequence": 145, + "shape_dist_traveled": 3.51 + } + }, + { + "model": "gtfs.shape", + "pk": 896, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "shape_pt_lat": 9.93550175796293, + "shape_pt_lon": -84.0521827017793, + "shape_pt_sequence": 146, + "shape_dist_traveled": 3.519 + } + }, + { + "model": "gtfs.geoshape", + "pk": 1, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_sin_milla", + "geometry": "SRID=4326;LINESTRING(-84.04899295728595 9.935610136323218, -84.04537504744147 9.935903915437937, -84.04467644300775 9.937467311441507, -84.04237892478906 9.938029607676915, -84.04307776266035 9.939451647823137, -84.04450675690296 9.940155168862551, -84.04468346245408 9.943761220391434, -84.0451915613564 9.946441050827925)", + "has_altitude": false + } + }, + { + "model": "gtfs.geoshape", + "pk": 2, + "fields": { + "feed": "1", + "shape_id": "desde_educacion_con_milla", + "geometry": "SRID=4326;LINESTRING(-84.04899295728595 9.935610136323218, -84.0517499001992 9.93860832346218, -84.04876049840074 9.93832361909286, -84.04537504744147 9.935903915437937, -84.04467644300775 9.937467311441507, -84.04237892478906 9.938029607676915, -84.04307776266035 9.939461647823137, -84.04450675690296 9.940155168862551, -84.04475066837327 9.94119204389136, -84.04488346245408 9.943413920391434, -84.0451915613564 9.946441050827925)", + "has_altitude": false + } + }, + { + "model": "gtfs.geoshape", + "pk": 3, + "fields": { + "feed": "1", + "shape_id": "desde_artes_sin_milla", + "geometry": "SRID=4326;LINESTRING(-84.05217559901489 9.935501598287884, -84.04537504744147 9.935903915437937, -84.04467644300775 9.937467311441507, -84.04237892478906 9.938029607676915, -84.04307776266035 9.939461647823137, -84.04450675690296 9.940155168862551, -84.04475066837327 9.94119204389136, -84.04488346245408 9.943413920391434, -84.0451915613564 9.946441050827925)", + "has_altitude": false + } + }, + { + "model": "gtfs.geoshape", + "pk": 4, + "fields": { + "feed": "1", + "shape_id": "desde_artes_con_milla", + "geometry": "SRID=4326;LINESTRING(-84.05217559901489 9.935501598287884, -84.0517499001992 9.93860832346218, -84.04876049840074 9.93832361909286, -84.04537504744147 9.935903915437937, -84.04467644300775 9.937467311441507, -84.04237892478906 9.938029607676915, -84.04307776266035 9.939461647823137, -84.04450675690296 9.940155168862551, -84.04475066837327 9.94119204389136, -84.04488346245408 9.943413920391434, -84.0451915613564 9.946441050827925)", + "has_altitude": false + } + }, + { + "model": "gtfs.geoshape", + "pk": 5, + "fields": { + "feed": "1", + "shape_id": "hacia_artes", + "geometry": "SRID=4326;LINESTRING(-84.0451915613564 9.946441050827925, -84.04495180739714 9.943381444081362, -84.04483991497501 9.941220574743566, -84.04468654565294 9.939134591559855, -84.0436758508172 9.938980381389706, -84.042189216776 9.939472792042086, -84.04229551510366 9.938130529026141, -84.04501822768842 9.937468669419962, -84.04546950911886 9.93589305371453, -84.05217559901489 9.935501598287884)", + "has_altitude": false + } + }, + { + "model": "gtfs.geoshape", + "pk": 6, + "fields": { + "feed": "1", + "shape_id": "hacia_educacion", + "geometry": "SRID=4326;LINESTRING(-84.0451915613564 9.946441050827925, -84.04495180739714 9.943381444081362, -84.04483991497501 9.941220574743566, -84.04468654565294 9.939134591559855, -84.0436758508172 9.938980381389706, -84.042189216776 9.939472792042086, -84.04229551510366 9.938130529026141, -84.04501822768842 9.937468669419962, -84.04546950911886 9.93589305371453, -84.04899295728595 9.935610136323218)", + "has_altitude": false + } + }, + { + "model": "gtfs.gtfsprovider", + "pk": 1, + "fields": { + "code": "bUCR", + "name": "bUCR", + "description": "Bus de la UCR", + "website": "https://bucr.digital", + "schedule_url": null, + "trip_updates_url": null, + "vehicle_positions_url": null, + "service_alerts_url": null, + "timezone": "America/costa_rica", + "is_active": true + } + }, + { + "model": "gtfs.feed", + "pk": 1, + "fields": { + "feed_publisher": 1, + "http_etag": null, + "http_last_modified": "2024-07-11T00:00:00Z", + "is_current": true, + "retrieved_at": "2024-07-11T04:28:41.332Z" + } + } +] diff --git a/backend/feed/models.py b/backend/feed/models.py index add6071..71ec9e0 100644 --- a/backend/feed/models.py +++ b/backend/feed/models.py @@ -1,4 +1,4 @@ -"""GTFS Schedule Django models, plus GTFSProvider/Feed for feed versioning.""" +"""GTFS Schedule Django models, plus FeedPublisher/Feed for feed versioning.""" import re from typing import TYPE_CHECKING, Any @@ -33,57 +33,78 @@ def validate_no_spaces_or_special_symbols(value: str) -> None: ) -class GTFSProvider(models.Model): - """A provider provides transportation services GTFS data. +class TransitSystem(models.Model): + """A transit system is a collection of GTFS providers that serve a common purpose, for example, the public transportation system of a city or country.""" - It might or might not be the same as the agency in the GTFS feed. A GTFS provider can serve multiple agencies. - """ - - provider_id = models.BigAutoField(primary_key=True) + name = models.CharField(max_length=255, help_text="Name of the transit system.") code = models.CharField( max_length=31, - help_text="Código (típicamente el acrónimo) de la empresa. No debe tener espacios ni símbolos especiales.", + help_text="Transit system code (typically its acronym). It must not contain spaces or special characters.", validators=[validate_no_spaces_or_special_symbols], + unique=True, ) - name = models.CharField(max_length=255, help_text="Nombre de la empresa.") description = models.TextField( - blank=True, null=True, help_text="Descripción de la institución o empresa." + blank=True, null=True, help_text="Description of the transit system." ) - website = models.URLField( - blank=True, null=True, help_text="Sitio web de la empresa." + is_active = models.BooleanField( + default=False, help_text="Whether the transit system is active." ) - schedule_url = models.URLField( - blank=True, - null=True, - help_text="URL del suministro (Feed) de GTFS Schedule (.zip).", + + def __str__(self): + """Return the transit system code and name.""" + return f"{self.code}: {self.name}" + + +class FeedPublisher(models.Model): + """Represent a GTFS data publisher for one transit system, potentially distinct from and serving multiple feed agencies, with schedule and realtime endpoints.""" + + transit_system = models.ForeignKey( + TransitSystem, + help_text="Transit system served by the feed publisher.", + on_delete=models.CASCADE, ) - trip_updates_url = models.URLField( + code = models.CharField( + max_length=31, + help_text="Company code (typically its acronym). It must not contain spaces or special characters.", + validators=[validate_no_spaces_or_special_symbols], + unique=True, + ) + name = models.CharField(max_length=255, help_text="Name of the company.") + description = models.TextField( + blank=True, null=True, help_text="Description of the institution or company." + ) + lang = models.CharField( + max_length=15, blank=True, null=True, - help_text="URL del suministro (FeedMessage) de la entidad GTFS Realtime TripUpdates (.pb).", + help_text="Language of the data provided by the publisher, in ISO 639-1 alpha-2 or alpha-3 format. Examples: es, en, fr.", ) - vehicle_positions_url = models.URLField( + contact_email = models.EmailField( blank=True, null=True, - help_text="URL del suministro (FeedMessage) de la entidad GTFS Realtime VehiclePositions (.pb).", + help_text="Contact email address for the data publisher.", + ) + contact_url = models.URLField( + blank=True, null=True, help_text="Contact URL for the data publisher." ) - service_alerts_url = models.URLField( + website = models.URLField(blank=True, null=True, help_text="Company website.") + schedule_url = models.URLField( blank=True, null=True, - help_text="URL del suministro (FeedMessage) de la entidad GTFS Realtime ServiceAlerts (.pb).", + help_text="URL of the GTFS Schedule feed (.zip).", ) timezone = models.CharField( max_length=63, - help_text="Zona horaria del proveedor de datos (asume misma zona horaria para todas las agencias). Ejemplo: America/Costa_Rica.", + help_text="Time zone of the data publisher (assumed to be the same for all agencies). Example: America/Costa_Rica.", ) is_active = models.BooleanField( default=False, - help_text="¿Está activo el proveedor de datos? Si no, no se importarán los datos de este proveedor.", + help_text="Whether the data publisher is active. If inactive, data from this publisher will not be imported.", ) - def __str__(self) -> str: - """Return the provider's display name and code.""" - return f"{self.name} ({self.code})" + def __str__(self): + """Return a string representation of the GTFS provider.""" + return f"{self.transit_system.code}: {self.name} ({self.code})" # ------------- @@ -105,8 +126,8 @@ class Feed(models.Model): # type: ignore[django-manager-missing] """One retrieved version of a GTFS Schedule feed from a provider.""" feed_id = models.CharField(max_length=100, primary_key=True, unique=True) - gtfs_provider = models.ForeignKey( - GTFSProvider, on_delete=models.SET_NULL, blank=True, null=True + feed_publisher = models.ForeignKey( + FeedPublisher, on_delete=models.SET_NULL, blank=True, null=True ) http_etag = models.CharField(max_length=1023, blank=True, null=True) http_last_modified = models.DateTimeField(blank=True, null=True) @@ -637,8 +658,8 @@ class FeedMessage(models.Model): ) feed_message_id = models.CharField(max_length=63, primary_key=True) - provider = models.ForeignKey( - GTFSProvider, on_delete=models.SET_NULL, blank=True, null=True + feed_publisher = models.ForeignKey( + FeedPublisher, on_delete=models.SET_NULL, blank=True, null=True ) entity_type = models.CharField(max_length=63, choices=ENTITY_TYPE_CHOICES) timestamp = models.DateTimeField(auto_now=True) diff --git a/backend/feed/schedule/importer.py b/backend/feed/schedule/importer.py index c7586f1..461f52a 100644 --- a/backend/feed/schedule/importer.py +++ b/backend/feed/schedule/importer.py @@ -1,7 +1,7 @@ """GTFS Schedule zip importer. Ported from infobús's ``save_schedule_to_database``, adapted for databús's -``GTFSProvider``/``Feed`` schema. HEAD-checks a provider's upstream +``FeedPublisher``/``Feed`` schema. HEAD-checks a provider's upstream ``schedule_url`` ETag; if it differs from the current ``Feed``'s, downloads and bulk-imports the new GTFS zip table-by-table, flips ``is_current``, and returns ``True``. @@ -34,7 +34,7 @@ CalendarDate, Feed, FeedInfo, - GTFSProvider, + FeedPublisher, Route, Shape, Stop, @@ -104,7 +104,8 @@ def _importable_fields(model: type[db_models.Model]) -> list[db_models.Field]: return [ field for field in model._meta.local_fields - if field.name not in _EXCLUDE_FIELD_NAMES and not field.name.startswith("linked_") + if field.name not in _EXCLUDE_FIELD_NAMES + and not field.name.startswith("linked_") ] @@ -123,14 +124,18 @@ def _empty_value_for(field: db_models.Field) -> object: """ if field.has_default(): return field.get_default() - if isinstance(field, (db_models.IntegerField, db_models.FloatField, db_models.DecimalField)): + if isinstance( + field, (db_models.IntegerField, db_models.FloatField, db_models.DecimalField) + ): return 0 if isinstance(field, (db_models.CharField, db_models.TextField)): return "" return None -def _coerce_row(model: type[db_models.Model], row: dict[str, object]) -> dict[str, object]: +def _coerce_row( + model: type[db_models.Model], row: dict[str, object] +) -> dict[str, object]: """Normalize one CSV row's raw string values into model constructor kwargs. Iterates *model*'s full importable field set -- not just the columns @@ -149,7 +154,11 @@ def _coerce_row(model: type[db_models.Model], row: dict[str, object]) -> dict[st value: object if column in row: raw_value = row[column] - value = gtfs_date(raw_value) if column in date_fields else normalize_gtfs_value(raw_value) + value = ( + gtfs_date(raw_value) + if column in date_fields + else normalize_gtfs_value(raw_value) + ) else: value = None @@ -169,7 +178,9 @@ def _build_stop_point(row: dict[str, object]) -> Point | None: try: return Point(float(lon), float(lat)) except (TypeError, ValueError) as exc: - logger.warning("Skipping stop_point for row with bad lat/lon (%s, %s): %s", lat, lon, exc) + logger.warning( + "Skipping stop_point for row with bad lat/lon (%s, %s): %s", lat, lon, exc + ) return None @@ -182,7 +193,9 @@ def _import_table( return 0 fields = _model_fields(model) - table = pd.read_csv(zf.open(filename), dtype=str, keep_default_na=False, na_values="") + table = pd.read_csv( + zf.open(filename), dtype=str, keep_default_na=False, na_values="" + ) columns = [c for c in fields if c in table.columns] table = table[columns] @@ -222,23 +235,25 @@ def _parse_last_modified(resp: requests.Response) -> datetime: if not raw: return datetime.now(timezone.utc) try: - return datetime.strptime(raw, "%a, %d %b %Y %H:%M:%S %Z").replace(tzinfo=timezone.utc) + return datetime.strptime(raw, "%a, %d %b %Y %H:%M:%S %Z").replace( + tzinfo=timezone.utc + ) except ValueError: logger.warning("Unparseable Last-Modified header %r; using now()", raw) return datetime.now(timezone.utc) -def import_schedule_if_changed(provider: GTFSProvider) -> bool: +def import_schedule_if_changed(provider: FeedPublisher) -> bool: """Import *provider*'s GTFS Schedule zip when its upstream ETag changed. Returns True if a new Feed was imported, False if unchanged or on error. """ if not provider.schedule_url: - logger.warning("GTFSProvider %s has no schedule_url; skipping", provider.code) + logger.warning("FeedPublisher %s has no schedule_url; skipping", provider.code) return False current_feed = ( - Feed.objects.filter(gtfs_provider=provider, is_current=True) + Feed.objects.filter(feed_publisher=provider, is_current=True) .order_by("-retrieved_at") .first() ) @@ -260,8 +275,10 @@ def import_schedule_if_changed(provider: GTFSProvider) -> bool: get_resp = requests.get(provider.schedule_url, timeout=_REQUEST_TIMEOUT) get_resp.raise_for_status() schedule_zip = zipfile.ZipFile(io.BytesIO(get_resp.content)) - except (requests.RequestException, zipfile.BadZipFile): - logger.exception("Failed to download/parse schedule zip for provider %s", provider.code) + except requests.RequestException, zipfile.BadZipFile: + logger.exception( + "Failed to download/parse schedule zip for provider %s", provider.code + ) return False last_modified = _parse_last_modified(head_resp) @@ -284,12 +301,14 @@ def import_schedule_if_changed(provider: GTFSProvider) -> bool: http_etag=new_tag, http_last_modified=last_modified, is_current=True, - gtfs_provider=provider, + feed_publisher=provider, ) for table_name, model in _TABLES: count = _import_table(table_name, model, schedule_zip, feed) - logger.info("Imported %d rows into %s for feed %s", count, table_name, feed_id) + logger.info( + "Imported %d rows into %s for feed %s", count, table_name, feed_id + ) except Exception: logger.exception( "Import failed for provider %s; rolled back feed %s", provider.code, feed_id diff --git a/backend/feed/tests/test_schedule_importer.py b/backend/feed/tests/test_schedule_importer.py index 57db1f2..05bd2a6 100644 --- a/backend/feed/tests/test_schedule_importer.py +++ b/backend/feed/tests/test_schedule_importer.py @@ -16,7 +16,7 @@ Calendar, CalendarDate, Feed, - GTFSProvider, + FeedPublisher, Route, Shape, Stop, @@ -66,9 +66,7 @@ def _build_gtfs_zip_bytes(*, lean_stop_times: bool = False) -> bytes: "start_date,end_date\n" "WD,1,1,1,1,1,0,0,20260101,20261231\n" ), - "calendar_dates.txt": ( - "service_id,date,exception_type\nWD,20260101,2\n" - ), + "calendar_dates.txt": ("service_id,date,exception_type\nWD,20260101,2\n"), "routes.txt": ( "route_id,agency_id,route_short_name,route_long_name,route_type\n" "R1,A1,1,Route One,3\n" @@ -90,7 +88,9 @@ def _build_gtfs_zip_bytes(*, lean_stop_times: bool = False) -> bytes: return buf.getvalue() -def _mock_head_response(etag: str | None = '"abc123"', last_modified: str | None = None) -> Mock: +def _mock_head_response( + etag: str | None = '"abc123"', last_modified: str | None = None +) -> Mock: headers = {} if etag is not None: headers["ETag"] = etag @@ -112,7 +112,7 @@ def _mock_get_response(content: bytes) -> Mock: class TestImportScheduleIfChanged(TestCase): """Cover new-import, unchanged, and missing-header cases for import_schedule_if_changed.""" - def _provider(self, **kwargs: object) -> GTFSProvider: + def _provider(self, **kwargs: object) -> FeedPublisher: defaults: dict[str, object] = { "code": "TESTP", "name": "Test Provider", @@ -121,7 +121,7 @@ def _provider(self, **kwargs: object) -> GTFSProvider: "is_active": True, } defaults.update(kwargs) - return GTFSProvider.objects.create(**defaults) + return FeedPublisher.objects.create(**defaults) @patch("feed.schedule.importer.requests.get") @patch("feed.schedule.importer.requests.head") @@ -135,7 +135,7 @@ def test_new_etag_imports_and_populates_tables( result = import_schedule_if_changed(provider) self.assertTrue(result) - feeds = Feed.objects.filter(gtfs_provider=provider, is_current=True) + feeds = Feed.objects.filter(feed_publisher=provider, is_current=True) self.assertEqual(feeds.count(), 1) feed = feeds.first() self.assertEqual(feed.http_etag, '"new-etag"') @@ -179,12 +179,14 @@ def test_lean_stop_times_missing_pickup_drop_off_columns_imports_as_zero( """ provider = self._provider() mock_head.return_value = _mock_head_response(etag='"lean-etag"') - mock_get.return_value = _mock_get_response(_build_gtfs_zip_bytes(lean_stop_times=True)) + mock_get.return_value = _mock_get_response( + _build_gtfs_zip_bytes(lean_stop_times=True) + ) result = import_schedule_if_changed(provider) self.assertTrue(result) - feed = Feed.objects.filter(gtfs_provider=provider, is_current=True).first() + feed = Feed.objects.filter(feed_publisher=provider, is_current=True).first() self.assertIsNotNone(feed) stop_times = StopTime.objects.filter(feed=feed) self.assertEqual(stop_times.count(), 2) @@ -198,7 +200,7 @@ def test_same_etag_skips_import(self, mock_head: Mock, mock_get: Mock) -> None: provider = self._provider() current_feed = Feed.objects.create( feed_id="TESTP (existing)", - gtfs_provider=provider, + feed_publisher=provider, http_etag='"same-etag"', is_current=True, ) @@ -220,7 +222,7 @@ def test_changed_etag_flips_previous_current_feed( provider = self._provider() old_feed = Feed.objects.create( feed_id="TESTP (old)", - gtfs_provider=provider, + feed_publisher=provider, http_etag='"old-etag"', is_current=True, ) @@ -242,7 +244,7 @@ def test_missing_etag_header_falls_back_and_still_imports( provider = self._provider() Feed.objects.create( feed_id="TESTP (existing)", - gtfs_provider=provider, + feed_publisher=provider, http_etag=None, is_current=True, ) @@ -289,7 +291,7 @@ class TestFetchScheduleTask(TestCase): """Cover the fetch_schedule Celery task's provider iteration.""" def test_no_active_providers_returns_message(self) -> None: - GTFSProvider.objects.create( + FeedPublisher.objects.create( code="INACTIVE", name="Inactive Provider", schedule_url="https://example.com/gtfs.zip", @@ -302,8 +304,10 @@ def test_no_active_providers_returns_message(self) -> None: @patch("feed.schedule.importer.requests.get") @patch("feed.schedule.importer.requests.head") - def test_active_provider_gets_updated(self, mock_head: Mock, mock_get: Mock) -> None: - provider = GTFSProvider.objects.create( + def test_active_provider_gets_updated( + self, mock_head: Mock, mock_get: Mock + ) -> None: + provider = FeedPublisher.objects.create( code="ACTIVEP", name="Active Provider", schedule_url="https://example.com/gtfs.zip", @@ -318,5 +322,5 @@ def test_active_provider_gets_updated(self, mock_head: Mock, mock_get: Mock) -> self.assertIn("ACTIVEP", result) self.assertIn("updated=", result) self.assertEqual( - Feed.objects.filter(gtfs_provider=provider, is_current=True).count(), 1 + Feed.objects.filter(feed_publisher=provider, is_current=True).count(), 1 ) diff --git a/backend/gtfs-eta b/backend/gtfs-eta deleted file mode 120000 index c6e8846..0000000 --- a/backend/gtfs-eta +++ /dev/null @@ -1 +0,0 @@ -../../gtfs-eta \ No newline at end of file diff --git a/backend/gtfs-eta b/backend/gtfs-eta new file mode 160000 index 0000000..7381efa --- /dev/null +++ b/backend/gtfs-eta @@ -0,0 +1 @@ +Subproject commit 7381efa3dcfa5351c9068ee875ee8d29520b59e2 diff --git a/backend/schedule_engine/tasks.py b/backend/schedule_engine/tasks.py index 81ea88c..03684d9 100644 --- a/backend/schedule_engine/tasks.py +++ b/backend/schedule_engine/tasks.py @@ -147,25 +147,37 @@ def fetch_schedule() -> str: logger = logging.getLogger(__name__) - from feed.models import GTFSProvider + from feed.models import TransitSystem, FeedPublisher from feed.schedule.importer import import_schedule_if_changed - providers = list(GTFSProvider.objects.filter(is_active=True)) - if not providers: - logger.warning("fetch_schedule: no active GTFSProvider rows found") - return "fetch_schedule: no active providers" + transit_systems = list(TransitSystem.objects.filter(is_active=True)) + if not transit_systems: + logger.warning("fetch_schedule: no active TransitSystem rows found") + return "fetch_schedule: no active transit systems" updated: list[str] = [] unchanged: list[str] = [] errored: list[str] = [] - for provider in providers: - try: - if import_schedule_if_changed(provider): - updated.append(provider.code) - else: - unchanged.append(provider.code) - except Exception: - logger.exception("fetch_schedule: error importing provider %s", provider.code) - errored.append(provider.code) + for transit_system in transit_systems: + providers = list( + FeedPublisher.objects.filter(is_active=True, transit_system=transit_system) + ) + if not providers: + logger.warning( + "fetch_schedule: no active FeedPublisher rows found for TransitSystem %s", + transit_system.code, + ) + return f"fetch_schedule: no active feed providers for TransitSystem {transit_system.code}" + for provider in providers: + try: + if import_schedule_if_changed(provider): + updated.append(provider.code) + else: + unchanged.append(provider.code) + except Exception: + logger.exception( + "fetch_schedule: error importing provider %s", provider.code + ) + errored.append(provider.code) return f"fetch_schedule: updated={updated} unchanged={unchanged} errored={errored}" diff --git a/backend/uv.lock b/backend/uv.lock index e581da1..cb69c41 100644 --- a/backend/uv.lock +++ b/backend/uv.lock @@ -1250,6 +1250,9 @@ requires-dist = [ ] provides-extras = ["train", "collect", "viz", "all"] +[package.metadata.requires-dev] +bucr = [{ name = "etaval", directory = "etaval" }] + [[package]] name = "gtfs-io" version = "0.0.1" diff --git a/docs/content/data-model/django-models.md b/docs/content/data-model/django-models.md index 2702df1..4a08639 100644 --- a/docs/content/data-model/django-models.md +++ b/docs/content/data-model/django-models.md @@ -15,21 +15,21 @@ following apps each own their model layer. All apps live under `backend/`. The central domain entity. One row per real-world trip execution. -| Field | Type | Notes | -| --- | --- | --- | -| `id` | `UUIDField` (primary key) | Auto-generated with `uuid.uuid7` | -| `vehicle` | `ManyToManyField(Vehicle)` | Typically one vehicle per run | -| `operator` | `ManyToManyField(Operator)` | Typically one operator per run | -| `route_id` | `CharField` | GTFS route_id | -| `trip_id` | `CharField` | GTFS trip_id | -| `direction_id` | `PositiveSmallIntegerField` | GTFS direction_id | -| `shape_id` | `CharField` | GTFS shape_id | -| `request_timestamp` | `DateTimeField` | Auto-set at creation | -| `start_date` | `DateField` | Service date | -| `start_time` | `DurationField` | Scheduled start time | -| `schedule_relationship` | `CharField` | SCHEDULED / ADDED / UNSCHEDULED / CANCELED / DUPLICATED / DELETED | -| `run_lifecycle_state` | `CharField` | Current FSM state; choices from `RunLifecycleStates` | -| `last_event_at` | `DateTimeField` | Timestamp of last lifecycle transition | +| Field | Type | Notes | +| ----------------------- | --------------------------- | ----------------------------------------------------------------- | +| `id` | `UUIDField` (primary key) | Auto-generated with `uuid.uuid7` | +| `vehicle` | `ManyToManyField(Vehicle)` | Typically one vehicle per run | +| `operator` | `ManyToManyField(Operator)` | Typically one operator per run | +| `route_id` | `CharField` | GTFS route_id | +| `trip_id` | `CharField` | GTFS trip_id | +| `direction_id` | `PositiveSmallIntegerField` | GTFS direction_id | +| `shape_id` | `CharField` | GTFS shape_id | +| `request_timestamp` | `DateTimeField` | Auto-set at creation | +| `start_date` | `DateField` | Service date | +| `start_time` | `DurationField` | Scheduled start time | +| `schedule_relationship` | `CharField` | SCHEDULED / ADDED / UNSCHEDULED / CANCELED / DUPLICATED / DELETED | +| `run_lifecycle_state` | `CharField` | Current FSM state; choices from `RunLifecycleStates` | +| `last_event_at` | `DateTimeField` | Timestamp of last lifecycle transition | The `run_lifecycle_state` field mirrors the in-memory state. On run creation it defaults to `RunLifecycleStates.REQUESTED`. The lifecycle service updates @@ -41,17 +41,17 @@ Immutable audit record written by the lifecycle service before any external side-effect. Because it is written before actions run, the log is authoritative even if a downstream action later fails. -| Field | Notes | -| --- | --- | -| `id` | UUID7 primary key | -| `run` | ForeignKey to `Run` (CASCADE) | +| Field | Notes | +| ------------ | ------------------------------------------------ | +| `id` | UUID7 primary key | +| `run` | ForeignKey to `Run` (CASCADE) | | `event_name` | Event string (e.g., `run_confirmed_by_operator`) | -| `from_state` | State before transition | -| `to_state` | State after transition | -| `guards` | JSONField — results of guard checks | -| `actions` | JSONField — results of actions executed | -| `timestamp` | Logical event time | -| `created_at` | Row insertion time | +| `from_state` | State before transition | +| `to_state` | State after transition | +| `guards` | JSONField — results of guard checks | +| `actions` | JSONField — results of actions executed | +| `timestamp` | Logical event time | +| `created_at` | Row insertion time | Indexed on `(run, timestamp)` and `event_name`. @@ -59,16 +59,16 @@ The `GET /api/runs//history/` endpoint returns this log ordered by `(timestamp, created_at)`. !!! note "`RunProgressEvent` does not exist in current code" - The single checked-in migration (`runs/migrations/0001_initial.py`) - defines a `RunProgressEvent` model, but it is **not** present in the - current `backend/runs/models.py`. Do not document or rely on it — the - model file is the source of truth, not the migration. +The single checked-in migration (`runs/migrations/0001_initial.py`) +defines a `RunProgressEvent` model, but it is **not** present in the +current `backend/runs/models.py`. Do not document or rely on it — the +model file is the source of truth, not the migration. ### `Position`, `VehicleStopStatus`, `CongestionLevel`, `OccupancyStatus` Normalized GTFS-RT entity tables intended for durable persistence and -analytics, separate from the Redis keys (Redis holds the *live* snapshot; -these models would hold the *historical trace*). All four are defined in +analytics, separate from the Redis keys (Redis holds the _live_ snapshot; +these models would hold the _historical trace_). All four are defined in `backend/runs/models.py` and exposed read-only-in-practice through DRF ViewSets in `backend/api/views.py`, but **no current code path writes rows into them** — a repo-wide search finds no `.objects.create(...)` call for any @@ -87,34 +87,34 @@ Operational domain: companies, operators, vehicles, equipment. Wrapper for a transit agency. Linked one-to-one to a `feed.Agency`. -| Field | Notes | -| --- | --- | -| `id` | CharField primary key | -| `linked_agency` | OneToOneField to `feed.Agency` | -| `name`, `description`, `phone`, `email`, `website` | Contact info | -| `location` | PointField | +| Field | Notes | +| -------------------------------------------------- | ------------------------------ | +| `id` | CharField primary key | +| `linked_agency` | OneToOneField to `feed.Agency` | +| `name`, `description`, `phone`, `email`, `website` | Contact info | +| `location` | PointField | ### `Operator` A person who drives or dispatches runs. Linked one-to-one to a Django `User`. -| Field | Notes | -| --- | --- | -| `id` | CharField primary key | -| `user` | OneToOneField to `auth.User` | -| `company` | ManyToManyField to `Company` | -| `phone`, `photo` | Contact info | +| Field | Notes | +| ---------------- | ---------------------------- | +| `id` | CharField primary key | +| `user` | OneToOneField to `auth.User` | +| `company` | ManyToManyField to `Company` | +| `phone`, `photo` | Contact info | ### `Vehicle` A physical vehicle that can be assigned to a run. -| Field | Notes | -| --- | --- | -| `id` | CharField primary key | -| `company` | ForeignKey to `Company` | -| `label` | Human-readable identifier | -| `license_plate` | Plate number | +| Field | Notes | +| ----------------------- | ------------------------------------------------------------------------- | +| `id` | CharField primary key | +| `company` | ForeignKey to `Company` | +| `label` | Human-readable identifier | +| `license_plate` | Plate number | | `wheelchair_accessible` | Enum (NO_VALUE / UNKNOWN / WHEELCHAIR_ACCESIBLE / WHEELCHAIR_INACCESIBLE) | ### `DataProvider`, `Equipment`, `EquipmentLog` @@ -130,15 +130,15 @@ A logical telemetry feed (of one or more data types) registered on a piece of against `equipment`, `equipment.vehicle`, and the `source_*` fields all being absent. -| Field | Notes | -| --- | --- | -| `id` | UUID primary key | -| `equipment` | ForeignKey to `Equipment` (nullable) | -| `provides_position`, `provides_occupancy`, `provides_vehicle`, … | Booleans flagging which data types this sensor supplies | -| `source_type` | `mqtt` / `http` / `both` (nullable) | -| `source_http_url` | URL polled by the `"http"` adapter when `source_type` is `http` or `both` | -| `source_json_mapping` | JSONField describing how to extract `lat`/`lon`/`speed`/`odometer`/`timestamp`/`vehicle_id` from the endpoint's response | -| `status` | `ACTIVE` / `INACTIVE` | +| Field | Notes | +| ---------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------ | +| `id` | UUID primary key | +| `equipment` | ForeignKey to `Equipment` (nullable) | +| `provides_position`, `provides_occupancy`, `provides_vehicle`, … | Booleans flagging which data types this sensor supplies | +| `source_type` | `mqtt` / `http` / `both` (nullable) | +| `source_http_url` | URL polled by the `"http"` adapter when `source_type` is `http` or `both` | +| `source_json_mapping` | JSONField describing how to extract `lat`/`lon`/`speed`/`odometer`/`timestamp`/`vehicle_id` from the endpoint's response | +| `status` | `ACTIVE` / `INACTIVE` | `realtime_engine.tasks.fetch_positions` (every 10 s) queries `ACTIVE` sensors with `provides_position=True` and `source_type` in `["http", "both"]`, fetches @@ -156,42 +156,42 @@ models. All extend abstract base classes from the `gtfs` submodule: -| Model | Extends | GTFS file | -| --- | --- | --- | -| `Agency` | `BaseAgency` | `agency.txt` | -| `Stop` | `BaseStop` | `stops.txt` | -| `Route` | `BaseRoute` | `routes.txt` | -| `Calendar` | `BaseCalendar` | `calendar.txt` | -| `CalendarDate` | `BaseCalendarDate` | `calendar_dates.txt` | -| `Shape` | `BaseShape` | `shapes.txt` | -| `Trip` | `BaseTrip` | `trips.txt` | -| `StopTime` | `BaseStopTime` | `stop_times.txt` | +| Model | Extends | GTFS file | +| --------------- | ------------------- | --------------------- | +| `Agency` | `BaseAgency` | `agency.txt` | +| `Stop` | `BaseStop` | `stops.txt` | +| `Route` | `BaseRoute` | `routes.txt` | +| `Calendar` | `BaseCalendar` | `calendar.txt` | +| `CalendarDate` | `BaseCalendarDate` | `calendar_dates.txt` | +| `Shape` | `BaseShape` | `shapes.txt` | +| `Trip` | `BaseTrip` | `trips.txt` | +| `StopTime` | `BaseStopTime` | `stop_times.txt` | | `FareAttribute` | `BaseFareAttribute` | `fare_attributes.txt` | -| `FareRule` | `BaseFareRule` | `fare_rules.txt` | -| `FeedInfo` | `BaseFeedInfo` | `feed_info.txt` | +| `FareRule` | `BaseFareRule` | `fare_rules.txt` | +| `FeedInfo` | `BaseFeedInfo` | `feed_info.txt` | All are scoped to a `Feed` (identified by `feed_id`) via a ForeignKey. The `is_current` flag on `Feed` identifies the active dataset. Additional Databús-specific models: -| Model | Purpose | -| --- | --- | -| `GeoShape` | PostGIS `LineStringField` geometry for route shapes — used by map-matching | -| `RouteStop` | Stop sequence per route + shape + direction | -| `TripDuration` | Trip duration metadata for scheduling | -| `TripTime` | Departure times at timepoints (for the run-scheduling UI) | -| `GTFSProvider` | Registry of GTFS data providers and feed URLs | +| Model | Purpose | +| --------------- | -------------------------------------------------------------------------- | +| `GeoShape` | PostGIS `LineStringField` geometry for route shapes — used by map-matching | +| `RouteStop` | Stop sequence per route + shape + direction | +| `TripDuration` | Trip duration metadata for scheduling | +| `TripTime` | Departure times at timepoints (for the run-scheduling UI) | +| `FeedPublisher` | Registry of GTFS data providers and feed URLs | ### GTFS Realtime persistence models -| Model | Maps to | -| --- | --- | -| `FeedMessage` | GTFS-RT FeedMessage header | -| `VehiclePosition` | Normalized VehiclePosition entity | -| `TripUpdate` | Normalized TripUpdate entity | -| `StopTimeUpdate` | Normalized StopTimeUpdate per TripUpdate | -| `Alert` | Draft Alert model (TODO: align with GTFS-RT Alert schema) | +| Model | Maps to | +| ----------------- | --------------------------------------------------------- | +| `FeedMessage` | GTFS-RT FeedMessage header | +| `VehiclePosition` | Normalized VehiclePosition entity | +| `TripUpdate` | Normalized TripUpdate entity | +| `StopTimeUpdate` | Normalized StopTimeUpdate per TripUpdate | +| `Alert` | Draft Alert model (TODO: align with GTFS-RT Alert schema) | --- From 47803cc02a847d52320e91e125df17ddc51b1ea1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabi=C3=A1n=20Abarca=20Calder=C3=B3n?= Date: Fri, 4 Sep 2026 18:45:20 -0300 Subject: [PATCH 68/68] feat(cors): add django-cors-headers to settings and configure CORS allowed origins --- backend/databus/settings.py | 7 + backend/operations/fixtures/operations.json | 680 +++++++++++++++----- backend/operations/models.py | 11 +- backend/pyproject.toml | 6 +- backend/uv.lock | 15 + 5 files changed, 553 insertions(+), 166 deletions(-) diff --git a/backend/databus/settings.py b/backend/databus/settings.py index 166379e..39ba373 100644 --- a/backend/databus/settings.py +++ b/backend/databus/settings.py @@ -36,6 +36,7 @@ INSTALLED_APPS = [ "gtfs", + "corsheaders", "feed.apps.FeedConfig", "schedule_engine.apps.ScheduleEngineConfig", "realtime_engine.apps.RealtimeEngineConfig", @@ -62,6 +63,7 @@ MIDDLEWARE = [ "django.middleware.security.SecurityMiddleware", + "corsheaders.middleware.CorsMiddleware", "django.contrib.sessions.middleware.SessionMiddleware", "django.middleware.common.CommonMiddleware", "django.middleware.csrf.CsrfViewMiddleware", @@ -136,6 +138,11 @@ REDIS_PORT = config("REDIS_PORT") REDIS_PASSWORD = config("REDIS_PASSWORD", default="") +# Browser origins permitted to call the API from separate frontend dev servers. +CORS_ALLOWED_ORIGINS = config( + "CORS_ALLOWED_ORIGINS", cast=Csv(), default="http://localhost:5173" +) + # RabbitMQ settings RABBITMQ_HOST = config("RABBITMQ_HOST") diff --git a/backend/operations/fixtures/operations.json b/backend/operations/fixtures/operations.json index d2f8ede..f494db8 100644 --- a/backend/operations/fixtures/operations.json +++ b/backend/operations/fixtures/operations.json @@ -1,247 +1,615 @@ [ { - "model": "operation.dataprovider", - "pk": "1964", + "model": "operations.company", + "pk": "ST", "fields": { - "name": "EIE", - "description": "Escuela de Ingeniería Eléctrica", - "agency": [] + "name": "Sección Transportes", + "description": "Sección Transportes de la Oficina de Servicios Generales de la Universidad de Costa Rica", + "legal_id": null, + "phone": null, + "email": null, + "website": null, + "location": "SRID=4326;POINT (-84.06167418885983 9.953682854982432)", + "logo": "", + "linked_agency": [2] } }, { - "model": "operation.company", - "pk": "OSG", + "model": "operations.operator", + "pk": "123456", "fields": { - "agency": 1, - "name": "Sección Transportes", - "description": "", + "user": 1, + "phone": null, + "photo": "", + "is_driver": true, + "is_dispatcher": true, + "is_administrator": true, + "company": ["ST"] + } + }, + { + "model": "operations.dataprovider", + "pk": "navsat", + "fields": { + "name": "NavSat", + "description": "NavSat", + "email": "navsat@navsat.com", "phone": null, - "email": null, - "website": null, - "location": "SRID=4326;POINT (-84.04256870656747 9.943725615890358)", "logo": "" } }, { - "model": "operation.vehicle", - "pk": "SJB1234", + "model": "operations.vehicle", + "pk": "299-1014", + "fields": { + "company": "ST", + "label": "299-1014", + "license_plate": "299-1014", + "wheelchair_accessible": "NO_VALUE", + "wifi": "NO_VALUE", + "air_conditioning": "NO_VALUE", + "mobile_charging": "NO_VALUE", + "bike_rack": "NO_VALUE", + "has_screen": false, + "has_headsign_screen": false, + "has_audio": false, + "status": "IN_SERVICE" + } + }, + { + "model": "operations.vehicle", + "pk": "299-1015", + "fields": { + "company": "ST", + "label": "299-1015", + "license_plate": "299-1015", + "wheelchair_accessible": "NO_VALUE", + "wifi": "NO_VALUE", + "air_conditioning": "NO_VALUE", + "mobile_charging": "NO_VALUE", + "bike_rack": "NO_VALUE", + "has_screen": false, + "has_headsign_screen": false, + "has_audio": false, + "status": "IN_SERVICE" + } + }, + { + "model": "operations.vehicle", + "pk": "299-604", "fields": { - "agency": 1, - "label": "SJB1234", - "license_plate": "SJB1234", - "wheelchair_accessible": "WHEELCHAIR_ACCESIBLE", + "company": "ST", + "label": "299-604", + "license_plate": "299-604", + "wheelchair_accessible": "NO_VALUE", "wifi": "NO_VALUE", - "air_conditioning": "UNKNOWN", - "mobile_charging": "AVAILABLE", - "bike_rack": "UNAVAILABLE", + "air_conditioning": "NO_VALUE", + "mobile_charging": "NO_VALUE", + "bike_rack": "NO_VALUE", "has_screen": false, "has_headsign_screen": false, - "has_audio": false + "has_audio": false, + "status": "IN_SERVICE" } }, { - "model": "operation.vehicle", - "pk": "SJB5678", + "model": "operations.vehicle", + "pk": "299-921", "fields": { - "agency": 1, - "label": "SJB5678", - "license_plate": "SJB5678", - "wheelchair_accessible": "UNKNOWN", - "wifi": "AVAILABLE", + "company": "ST", + "label": "299-921", + "license_plate": "299-921", + "wheelchair_accessible": "NO_VALUE", + "wifi": "NO_VALUE", "air_conditioning": "NO_VALUE", - "mobile_charging": "UNAVAILABLE", - "bike_rack": "UNKNOWN", + "mobile_charging": "NO_VALUE", + "bike_rack": "NO_VALUE", "has_screen": false, - "has_headsign_screen": true, - "has_audio": false + "has_headsign_screen": false, + "has_audio": false, + "status": "IN_SERVICE" + } + }, + { + "model": "operations.vehicle", + "pk": "299-922", + "fields": { + "company": "ST", + "label": "299-922", + "license_plate": "299-922", + "wheelchair_accessible": "NO_VALUE", + "wifi": "NO_VALUE", + "air_conditioning": "NO_VALUE", + "mobile_charging": "NO_VALUE", + "bike_rack": "NO_VALUE", + "has_screen": false, + "has_headsign_screen": false, + "has_audio": false, + "status": "IN_SERVICE" + } + }, + { + "model": "operations.vehicle", + "pk": "299-987", + "fields": { + "company": "ST", + "label": "299-987", + "license_plate": "299-987", + "wheelchair_accessible": "NO_VALUE", + "wifi": "NO_VALUE", + "air_conditioning": "NO_VALUE", + "mobile_charging": "NO_VALUE", + "bike_rack": "NO_VALUE", + "has_screen": false, + "has_headsign_screen": false, + "has_audio": false, + "status": "IN_SERVICE" + } + }, + { + "model": "operations.equipment", + "pk": "0c50dc1b-0773-42e2-b5cf-514eaf192cdb", + "fields": { + "data_provider": "navsat", + "name": "OBE 299-922", + "vehicle": "299-922", + "serial_number": null, + "brand": null, + "model": null, + "os_version": null, + "app_version": null, + "status": "ACTIVE", + "created_at": "2026-09-04T19:00:40.817Z", + "updated_at": "2026-09-04T19:00:40.817Z" + } + }, + { + "model": "operations.equipment", + "pk": "2cec183d-d037-402a-9f88-0da4aed5ff05", + "fields": { + "data_provider": "navsat", + "name": "OBE 299-987", + "vehicle": "299-987", + "serial_number": null, + "brand": null, + "model": null, + "os_version": null, + "app_version": null, + "status": "ACTIVE", + "created_at": "2026-09-04T19:01:28.274Z", + "updated_at": "2026-09-04T19:01:28.274Z" + } + }, + { + "model": "operations.equipment", + "pk": "3b3ff721-be7c-40b7-85ac-a631b6216cb1", + "fields": { + "data_provider": "navsat", + "name": "OBE 299-604", + "vehicle": "299-604", + "serial_number": null, + "brand": null, + "model": null, + "os_version": null, + "app_version": null, + "status": "ACTIVE", + "created_at": "2026-09-04T19:01:09.234Z", + "updated_at": "2026-09-04T19:01:09.234Z" + } + }, + { + "model": "operations.equipment", + "pk": "5dc3b2f3-067f-424c-8f17-a74fcfc74bcd", + "fields": { + "data_provider": "navsat", + "name": "OBE 299-921", + "vehicle": "299-921", + "serial_number": null, + "brand": null, + "model": null, + "os_version": null, + "app_version": null, + "status": "ACTIVE", + "created_at": "2026-09-04T19:00:53.877Z", + "updated_at": "2026-09-04T19:00:53.877Z" } }, { - "model": "operation.equipment", - "pk": "16736b9e-43d6-49f0-a269-6f71573d7730", + "model": "operations.equipment", + "pk": "7cc8495d-8440-4024-a334-6d1cadc09e87", "fields": { - "data_provider": "1964", - "vehicle": "SJB5678", - "serial_number": "H4939GNE9", - "brand": "Hertz", - "model": "LM741", - "software_version": "v2.4", + "data_provider": "navsat", + "name": "OBE 299-1014", + "vehicle": "299-1014", + "serial_number": null, + "brand": null, + "model": null, + "os_version": null, + "app_version": null, + "status": "ACTIVE", + "created_at": "2026-09-04T18:58:15.732Z", + "updated_at": "2026-09-04T18:59:25.025Z" + } + }, + { + "model": "operations.equipment", + "pk": "b444a3e6-80c6-4f5f-9783-ae4919bb473e", + "fields": { + "data_provider": "navsat", + "name": "OBE 299-1015", + "vehicle": "299-1015", + "serial_number": null, + "brand": null, + "model": null, + "os_version": null, + "app_version": null, + "status": "ACTIVE", + "created_at": "2026-09-04T19:00:21.463Z", + "updated_at": "2026-09-04T19:00:21.463Z" + } + }, + { + "model": "operations.sensor", + "pk": "43e5c5f3-5205-450c-8b90-95acdd8c6cd1", + "fields": { + "name": "GPS 299-987", + "equipment": "2cec183d-d037-402a-9f88-0da4aed5ff05", "provides_vehicle": true, - "provides_operator": true, - "provides_run": true, + "provides_operator": false, + "provides_run": false, "provides_position": true, - "provides_progression": true, - "provides_occupancy": true, + "provides_progression": false, + "provides_occupancy": false, "provides_conditions": false, "provides_emissions": false, "provides_travelers": false, "provides_authorizations": false, "provides_fares": false, "provides_transfers": false, - "provides_alerts": true, - "created_at": "2024-08-29T19:43:20.404Z", - "updated_at": "2024-08-29T19:43:20.404Z" + "provides_alerts": false, + "source_type": "http", + "source_http_url": "https://wsclientes.navsat.com/ws/navsatbi/laststatenavmi/rcu/bdxFtpLuYSfi/114700/0/todos", + "source_json_mapping": { + "type": "array", + "paths": { + "lat": "latitude", + "lon": "longitude", + "speed": "speed", + "odometer": "odometer", + "timestamp": "crDateTime", + "vehicle_id": "plateNumber" + }, + "units": { "speed": "kmh", "odometer": "km" }, + "timestamp": { + "tz": "America/Costa_Rica", + "format": "%Y-%m-%d %H:%M:%S" + } + }, + "status": "ACTIVE", + "created_at": "2026-09-04T19:10:02.406Z", + "updated_at": "2026-09-04T19:10:02.406Z" } }, { - "model": "operation.equipment", - "pk": "2d01a00e-6287-4bfe-8a2b-7bc8a4e2aa5c", + "model": "operations.sensor", + "pk": "a816095d-f9b3-4572-8970-4faa9edf0f93", "fields": { - "data_provider": "1964", - "vehicle": "SJB1234", - "serial_number": "JE3984GW9", - "brand": "Faraday", - "model": "555", - "software_version": "v1.2", + "name": "GPS 299-1014", + "equipment": "7cc8495d-8440-4024-a334-6d1cadc09e87", "provides_vehicle": true, - "provides_operator": true, - "provides_run": true, + "provides_operator": false, + "provides_run": false, "provides_position": true, - "provides_progression": true, - "provides_occupancy": true, + "provides_progression": false, + "provides_occupancy": false, "provides_conditions": false, "provides_emissions": false, "provides_travelers": false, "provides_authorizations": false, "provides_fares": false, "provides_transfers": false, - "provides_alerts": true, - "created_at": "2024-08-27T17:52:29.271Z", - "updated_at": "2024-08-27T17:52:29.271Z" + "provides_alerts": false, + "source_type": "http", + "source_http_url": "https://wsclientes.navsat.com/ws/navsatbi/laststatenavmi/rcu/bdxFtpLuYSfi/114700/0/todos", + "source_json_mapping": { + "type": "array", + "paths": { + "lat": "latitude", + "lon": "longitude", + "speed": "speed", + "odometer": "odometer", + "timestamp": "crDateTime", + "vehicle_id": "plateNumber" + }, + "units": { "speed": "kmh", "odometer": "km" }, + "timestamp": { + "tz": "America/Costa_Rica", + "format": "%Y-%m-%d %H:%M:%S" + } + }, + "status": "ACTIVE", + "created_at": "2026-09-04T19:06:57.212Z", + "updated_at": "2026-09-04T19:06:57.212Z" } }, { - "model": "operation.operator", - "pk": "1-1234-5678", + "model": "operations.sensor", + "pk": "cad09daa-8782-45b0-87e6-13063df4e6dd", "fields": { - "user": 2, - "vehicle": null, - "equipment": null, - "phone": "87654321", - "photo": "", - "agency": [1, 2], - "data_provider": [] + "name": "GPS 299-604", + "equipment": "3b3ff721-be7c-40b7-85ac-a631b6216cb1", + "provides_vehicle": true, + "provides_operator": false, + "provides_run": false, + "provides_position": true, + "provides_progression": false, + "provides_occupancy": false, + "provides_conditions": false, + "provides_emissions": false, + "provides_travelers": false, + "provides_authorizations": false, + "provides_fares": false, + "provides_transfers": false, + "provides_alerts": false, + "source_type": "http", + "source_http_url": "https://wsclientes.navsat.com/ws/navsatbi/laststatenavmi/rcu/bdxFtpLuYSfi/114700/0/todos", + "source_json_mapping": { + "type": "array", + "paths": { + "lat": "latitude", + "lon": "longitude", + "speed": "speed", + "odometer": "odometer", + "timestamp": "crDateTime", + "vehicle_id": "plateNumber" + }, + "units": { "speed": "kmh", "odometer": "km" }, + "timestamp": { + "tz": "America/Costa_Rica", + "format": "%Y-%m-%d %H:%M:%S" + } + }, + "status": "ACTIVE", + "created_at": "2026-09-04T19:09:04.324Z", + "updated_at": "2026-09-04T19:09:04.324Z" } }, { - "model": "operation.operator", - "pk": "2-1234-5678", + "model": "operations.sensor", + "pk": "d50d1fb4-607c-4497-b226-9c40cea9c4d6", "fields": { - "user": 3, - "vehicle": null, - "equipment": null, - "phone": "87654321", - "photo": "", - "agency": [1, 2], - "data_provider": [] + "name": "GPS 299-921", + "equipment": "5dc3b2f3-067f-424c-8f17-a74fcfc74bcd", + "provides_vehicle": true, + "provides_operator": false, + "provides_run": false, + "provides_position": true, + "provides_progression": false, + "provides_occupancy": false, + "provides_conditions": false, + "provides_emissions": false, + "provides_travelers": false, + "provides_authorizations": false, + "provides_fares": false, + "provides_transfers": false, + "provides_alerts": false, + "source_type": "http", + "source_http_url": "https://wsclientes.navsat.com/ws/navsatbi/laststatenavmi/rcu/bdxFtpLuYSfi/114700/0/todos", + "source_json_mapping": { + "type": "array", + "paths": { + "lat": "latitude", + "lon": "longitude", + "speed": "speed", + "odometer": "odometer", + "timestamp": "crDateTime", + "vehicle_id": "plateNumber" + }, + "units": { "speed": "kmh", "odometer": "km" }, + "timestamp": { + "tz": "America/Costa_Rica", + "format": "%Y-%m-%d %H:%M:%S" + } + }, + "status": "ACTIVE", + "created_at": "2026-09-04T19:08:34.591Z", + "updated_at": "2026-09-04T19:08:34.591Z" } }, { - "model": "operation.run", - "pk": 2, + "model": "operations.sensor", + "pk": "d74ce819-6d3f-4d7a-9ddc-a76c2dc0ecd0", "fields": { - "equipment": "2d01a00e-6287-4bfe-8a2b-7bc8a4e2aa5c", - "vehicle": "SJB1234", - "operator": "1-1234-5678", - "route_id": "bUCR_L1", - "trip_id": "desde_educacion_con_milla_entresemana_13:30", - "direction_id": 0, - "shape_id": "desde_educacion_con_milla", - "start_date": "2024-08-29", - "start_time": "13:30:06", - "schedule_relationship": "SCHEDULED", - "run_lifecycle_state": "IN_PROGRESS" + "name": "GPS 299-922", + "equipment": "0c50dc1b-0773-42e2-b5cf-514eaf192cdb", + "provides_vehicle": true, + "provides_operator": false, + "provides_run": false, + "provides_position": true, + "provides_progression": false, + "provides_occupancy": false, + "provides_conditions": false, + "provides_emissions": false, + "provides_travelers": false, + "provides_authorizations": false, + "provides_fares": false, + "provides_transfers": false, + "provides_alerts": false, + "source_type": "http", + "source_http_url": "https://wsclientes.navsat.com/ws/navsatbi/laststatenavmi/rcu/bdxFtpLuYSfi/114700/0/todos", + "source_json_mapping": { + "type": "array", + "paths": { + "lat": "latitude", + "lon": "longitude", + "speed": "speed", + "odometer": "odometer", + "timestamp": "crDateTime", + "vehicle_id": "plateNumber" + }, + "units": { "speed": "kmh", "odometer": "km" }, + "timestamp": { + "tz": "America/Costa_Rica", + "format": "%Y-%m-%d %H:%M:%S" + } + }, + "status": "ACTIVE", + "created_at": "2026-09-04T19:08:05.563Z", + "updated_at": "2026-09-04T19:08:05.563Z" } }, { - "model": "operation.run", - "pk": 3, + "model": "operations.sensor", + "pk": "f530dd7c-59d6-41a5-bae0-a45744776401", "fields": { - "equipment": "16736b9e-43d6-49f0-a269-6f71573d7730", - "vehicle": "SJB5678", - "operator": "2-1234-5678", - "route_id": "bUCR_L2", - "trip_id": "desde_educacion_sin_milla_entresemana_13:35", - "direction_id": 0, - "shape_id": "desde_educacion_sin_milla", - "start_date": "2024-08-29", - "start_time": "13:35:12", - "schedule_relationship": "SCHEDULED", - "run_lifecycle_state": "IN_PROGRESS" + "name": "GPS 299-1015", + "equipment": "b444a3e6-80c6-4f5f-9783-ae4919bb473e", + "provides_vehicle": true, + "provides_operator": false, + "provides_run": false, + "provides_position": true, + "provides_progression": false, + "provides_occupancy": false, + "provides_conditions": false, + "provides_emissions": false, + "provides_travelers": false, + "provides_authorizations": false, + "provides_fares": false, + "provides_transfers": false, + "provides_alerts": false, + "source_type": "http", + "source_http_url": "https://wsclientes.navsat.com/ws/navsatbi/laststatenavmi/rcu/bdxFtpLuYSfi/114700/0/todos", + "source_json_mapping": { + "type": "array", + "paths": { + "lat": "latitude", + "lon": "longitude", + "speed": "speed", + "odometer": "odometer", + "timestamp": "crDateTime", + "vehicle_id": "plateNumber" + }, + "units": { "speed": "kmh", "odometer": "km" }, + "timestamp": { + "tz": "America/Costa_Rica", + "format": "%Y-%m-%d %H:%M:%S" + } + }, + "status": "ACTIVE", + "created_at": "2026-09-04T19:07:36.065Z", + "updated_at": "2026-09-04T19:07:36.065Z" } }, { - "model": "operation.position", + "model": "operations.equipmentlog", "pk": 2, "fields": { - "run": 2, - "timestamp": "2024-08-29T19:35:48Z", - "point": "SRID=4326;POINT (-84.04555530733563 9.93540698388418)", - "altitude": null, - "speed": 12.0, - "bearing": 0.0, - "odometer": 9.0 + "equipment": "7cc8495d-8440-4024-a334-6d1cadc09e87", + "data_provider": "navsat", + "vehicle": "299-1014", + "serial_number": null, + "brand": null, + "model": null, + "os_version": null, + "app_version": null, + "status": "ACTIVE", + "updated_at": "2026-09-04T18:58:15.733Z" } }, { - "model": "operation.position", + "model": "operations.equipmentlog", "pk": 3, "fields": { - "run": 3, - "timestamp": "2024-08-29T19:35:52Z", - "point": "SRID=4326;POINT (-84.05215754678477 9.935495431066292)", - "altitude": null, - "speed": 25.0, - "bearing": 75.0, - "odometer": 479.0 + "equipment": "7cc8495d-8440-4024-a334-6d1cadc09e87", + "data_provider": "navsat", + "vehicle": "299-1014", + "serial_number": null, + "brand": null, + "model": null, + "os_version": null, + "app_version": null, + "status": "ACTIVE", + "updated_at": "2026-09-04T18:59:25.026Z" } }, { - "model": "operation.progression", - "pk": 2, + "model": "operations.equipmentlog", + "pk": 4, "fields": { - "run": 2, - "timestamp": "2024-08-29T20:03:29.055Z", - "current_stop_sequence": 3, - "stop_id": "bUCR_0_04", - "current_status": "INCOMING_AT", - "congestion_level": "RUNNING_SMOOTHLY" + "equipment": "b444a3e6-80c6-4f5f-9783-ae4919bb473e", + "data_provider": "navsat", + "vehicle": "299-1015", + "serial_number": null, + "brand": null, + "model": null, + "os_version": null, + "app_version": null, + "status": "ACTIVE", + "updated_at": "2026-09-04T19:00:21.463Z" } }, { - "model": "operation.progression", - "pk": 3, + "model": "operations.equipmentlog", + "pk": 5, "fields": { - "run": 3, - "timestamp": "2024-08-29T20:03:57.208Z", - "current_stop_sequence": 1, - "stop_id": "bUCR_0_04", - "current_status": "IN_TRANSIT_TO", - "congestion_level": "STOP_AND_GO" + "equipment": "0c50dc1b-0773-42e2-b5cf-514eaf192cdb", + "data_provider": "navsat", + "vehicle": "299-922", + "serial_number": null, + "brand": null, + "model": null, + "os_version": null, + "app_version": null, + "status": "ACTIVE", + "updated_at": "2026-09-04T19:00:40.818Z" } }, { - "model": "operation.occupancy", - "pk": 2, + "model": "operations.equipmentlog", + "pk": 6, "fields": { - "run": 2, - "timestamp": "2024-08-29T20:04:44.101Z", - "occupancy_status": "CRUSHED_STANDING_ROOM_ONLY", - "occupancy_percentage": 90, - "occupancy_count": 43, - "is_wheelchair_accesible": "WHEELCHAIR_INACCESIBLE" + "equipment": "5dc3b2f3-067f-424c-8f17-a74fcfc74bcd", + "data_provider": "navsat", + "vehicle": "299-921", + "serial_number": null, + "brand": null, + "model": null, + "os_version": null, + "app_version": null, + "status": "ACTIVE", + "updated_at": "2026-09-04T19:00:53.878Z" } }, { - "model": "operation.occupancy", - "pk": 3, + "model": "operations.equipmentlog", + "pk": 7, + "fields": { + "equipment": "3b3ff721-be7c-40b7-85ac-a631b6216cb1", + "data_provider": "navsat", + "vehicle": "299-604", + "serial_number": null, + "brand": null, + "model": null, + "os_version": null, + "app_version": null, + "status": "ACTIVE", + "updated_at": "2026-09-04T19:01:09.234Z" + } + }, + { + "model": "operations.equipmentlog", + "pk": 8, "fields": { - "run": 3, - "timestamp": "2024-08-29T20:05:09.166Z", - "occupancy_status": "MANY_SEATS_AVAILABLE", - "occupancy_percentage": 60, - "occupancy_count": 26, - "is_wheelchair_accesible": "WHEELCHAIR_ACCESIBLE" + "equipment": "2cec183d-d037-402a-9f88-0da4aed5ff05", + "data_provider": "navsat", + "vehicle": "299-987", + "serial_number": null, + "brand": null, + "model": null, + "os_version": null, + "app_version": null, + "status": "ACTIVE", + "updated_at": "2026-09-04T19:01:28.274Z" } } ] diff --git a/backend/operations/models.py b/backend/operations/models.py index 0a3324e..94fc92b 100644 --- a/backend/operations/models.py +++ b/backend/operations/models.py @@ -61,7 +61,6 @@ class DataProvider(models.Model): """ id = models.CharField(max_length=127, primary_key=True) - company = models.ManyToManyField(Company, blank=True) name = models.CharField(max_length=255) description = models.TextField(blank=True, null=True) email = models.EmailField(blank=True, null=True) @@ -146,8 +145,8 @@ class Equipment(models.Model): ) # Hardware/firmware information serial_number = models.CharField(max_length=100, blank=True, null=True) - brand = models.CharField(max_length=100) - model = models.CharField(max_length=100) + brand = models.CharField(max_length=100, blank=True, null=True) + model = models.CharField(max_length=100, blank=True, null=True) os_version = models.CharField(max_length=100, blank=True, null=True) app_version = models.CharField(max_length=100, blank=True, null=True) @@ -176,7 +175,7 @@ def save(self, *args: Any, **kwargs: Any) -> None: def __str__(self) -> str: """Return the equipment's data provider, brand, model, and ID.""" - return f"{self.data_provider}: {self.brand} {self.model} ({self.id})" + return f"{self.data_provider}: {self.name} ({self.id})" class Sensor(models.Model): @@ -236,8 +235,8 @@ class EquipmentLog(models.Model): ) # Equipment information serial_number = models.CharField(max_length=100, blank=True, null=True) - brand = models.CharField(max_length=100) - model = models.CharField(max_length=100) + brand = models.CharField(max_length=100, blank=True, null=True) + model = models.CharField(max_length=100, blank=True, null=True) os_version = models.CharField(max_length=100, blank=True, null=True) app_version = models.CharField(max_length=100, blank=True, null=True) status = models.CharField( diff --git a/backend/pyproject.toml b/backend/pyproject.toml index 87e53ef..6115069 100644 --- a/backend/pyproject.toml +++ b/backend/pyproject.toml @@ -10,6 +10,7 @@ dependencies = [ "channels-redis>=4.3.0", "daphne>=4.2.1", "django==6.0.4", + "django-cors-headers>=4.9.0", "django-celery-beat>=2.8.1", "django-celery-results>=2.6.0", "django-filter>=25.1", @@ -103,10 +104,7 @@ DJANGO_SETTINGS_MODULE = "databus.settings" addopts = "--ignore=gtfs-eta" [tool.uv.workspace] -members = [ - "gtfs-io", - "gtfs-django", -] +members = ["gtfs-io", "gtfs-django"] [tool.uv.sources] # gtfs-eta lives in the sibling repo (simovilab/gtfs-eta), not in this diff --git a/backend/uv.lock b/backend/uv.lock index cb69c41..9898686 100644 --- a/backend/uv.lock +++ b/backend/uv.lock @@ -689,6 +689,7 @@ dependencies = [ { name = "django" }, { name = "django-celery-beat" }, { name = "django-celery-results" }, + { name = "django-cors-headers" }, { name = "django-filter" }, { name = "djangorestframework" }, { name = "djangorestframework-gis" }, @@ -732,6 +733,7 @@ requires-dist = [ { name = "django", specifier = "==6.0.4" }, { name = "django-celery-beat", specifier = ">=2.8.1" }, { name = "django-celery-results", specifier = ">=2.6.0" }, + { name = "django-cors-headers", specifier = ">=4.9.0" }, { name = "django-filter", specifier = ">=25.1" }, { name = "djangorestframework", specifier = ">=3.16.1" }, { name = "djangorestframework-gis", specifier = ">=1.2.0" }, @@ -843,6 +845,19 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/2c/da/70f0f3c5364735344c4bc89e53413bcaae95b4fc1de4e98a7a3b9fb70c88/django_celery_results-2.6.0-py3-none-any.whl", hash = "sha256:b9ccdca2695b98c7cbbb8dea742311ba9a92773d71d7b4944a676e69a7df1c73", size = 38351, upload-time = "2025-04-10T08:23:49.965Z" }, ] +[[package]] +name = "django-cors-headers" +version = "4.9.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "asgiref" }, + { name = "django" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/21/39/55822b15b7ec87410f34cd16ce04065ff390e50f9e29f31d6d116fc80456/django_cors_headers-4.9.0.tar.gz", hash = "sha256:fe5d7cb59fdc2c8c646ce84b727ac2bca8912a247e6e68e1fb507372178e59e8", size = 21458, upload-time = "2025-09-18T10:40:52.326Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/30/d8/19ed1e47badf477d17fb177c1c19b5a21da0fd2d9f093f23be3fb86c5fab/django_cors_headers-4.9.0-py3-none-any.whl", hash = "sha256:15c7f20727f90044dcee2216a9fd7303741a864865f0c3657e28b7056f61b449", size = 12809, upload-time = "2025-09-18T10:40:50.843Z" }, +] + [[package]] name = "django-debug-toolbar" version = "6.3.0"