From a1d589c1a0d5a5010e5fe4e8a1ec403ffafb289f Mon Sep 17 00:00:00 2001 From: Ariel Costas Guerrero Date: Sun, 7 Dec 2025 23:33:10 +0100 Subject: Implement Renfe data source --- Taskfile.yml | 4 +- .../Configuration/AppConfiguration.cs | 3 +- .../Controllers/VigoController.Legacy.cs | 2 +- .../Controllers/VigoController.cs | 371 +- .../Extensions/StopScheduleExtensions.cs | 58 + src/Costasdev.Busurbano.Backend/Program.cs | 4 + .../Services/Providers/ITransitProvider.cs | 8 + .../Services/Providers/RenfeTransitProvider.cs | 76 + .../Services/Providers/VitrasaTransitProvider.cs | 304 + .../Services/ShapeTraversalService.cs | 2 +- src/frontend/app/components/StopItemSkeleton.tsx | 2 +- src/frontend/app/components/StopSummarySheet.tsx | 2 +- src/frontend/app/data/StopDataProvider.ts | 127 +- src/frontend/app/routes/map.tsx | 28 +- src/frontend/app/routes/stops-$id.tsx | 49 +- src/frontend/public/maps/spritesheet/sprite.json | 16 +- src/frontend/public/maps/spritesheet/sprite.png | Bin 2987 -> 3973 bytes .../public/maps/spritesheet/sprite@2x.json | 16 +- src/frontend/public/maps/spritesheet/sprite@2x.png | Bin 7056 -> 7751 bytes src/frontend/public/stops/vigo.json | 16576 ++++++++++--------- src/gtfs_vigo_stops/src/stops.py | 14 +- src/stop_downloader/vigo/download-stops.py | 92 +- src/stop_downloader/vigo/overrides/amenities.yaml | 12 +- .../vigo/overrides/fix-gregorio-espino.yaml | 10 +- .../vigo/overrides/hide-virtual-stops.yaml | 16 +- .../vigo/overrides/improve-coordinates-misc.yaml | 19 +- 26 files changed, 9185 insertions(+), 8626 deletions(-) create mode 100644 src/Costasdev.Busurbano.Backend/Extensions/StopScheduleExtensions.cs create mode 100644 src/Costasdev.Busurbano.Backend/Services/Providers/ITransitProvider.cs create mode 100644 src/Costasdev.Busurbano.Backend/Services/Providers/RenfeTransitProvider.cs create mode 100644 src/Costasdev.Busurbano.Backend/Services/Providers/VitrasaTransitProvider.cs diff --git a/Taskfile.yml b/Taskfile.yml index 0e91e78..747c018 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -42,10 +42,10 @@ tasks: gen-stop-report: desc: Generate stop-based JSON reports for specified dates or date ranges. cmds: - - uv --directory ./src/gtfs_vigo_stops run ./stop_report.py --output-dir ./output --feed-url https://datos.vigo.org/data/transporte/gtfs_vigo.zip --force + - uv --directory ./src/gtfs_vigo_stops run ./stop_report.py --output-dir ./output/vitrasa --feed-url https://datos.vigo.org/data/transporte/gtfs_vigo.zip --force --provider vitrasa + - uv --directory ./src/gtfs_vigo_stops run ./stop_report.py --output-dir ./output/renfe --feed-url https://ssl.renfe.com/gtransit/Fichero_AV_LD/google_transit.zip --force --provider renfe gen-stop-json: desc: Generate stop-based JSON files for specified dates or date ranges. cmds: - uv --directory ./src/stop_downloader/vigo run ./download-stops.py - - uv --directory ./src/stop_downloader/santiago run ./download-stops.py diff --git a/src/Costasdev.Busurbano.Backend/Configuration/AppConfiguration.cs b/src/Costasdev.Busurbano.Backend/Configuration/AppConfiguration.cs index 9fa5e75..49c001f 100644 --- a/src/Costasdev.Busurbano.Backend/Configuration/AppConfiguration.cs +++ b/src/Costasdev.Busurbano.Backend/Configuration/AppConfiguration.cs @@ -2,5 +2,6 @@ namespace Costasdev.Busurbano.Backend.Configuration; public class AppConfiguration { - public required string ScheduleBasePath { get; set; } + public required string VitrasaScheduleBasePath { get; set; } + public required string RenfeScheduleBasePath { get; set; } } diff --git a/src/Costasdev.Busurbano.Backend/Controllers/VigoController.Legacy.cs b/src/Costasdev.Busurbano.Backend/Controllers/VigoController.Legacy.cs index 3bb9930..d006e38 100644 --- a/src/Costasdev.Busurbano.Backend/Controllers/VigoController.Legacy.cs +++ b/src/Costasdev.Busurbano.Backend/Controllers/VigoController.Legacy.cs @@ -53,7 +53,7 @@ public partial class VigoController : ControllerBase try { - var file = Path.Combine(_configuration.ScheduleBasePath, effectiveDate, stopId + ".json"); + var file = Path.Combine(_configuration.VitrasaScheduleBasePath, effectiveDate, stopId + ".json"); if (!SysFile.Exists(file)) { throw new FileNotFoundException(); diff --git a/src/Costasdev.Busurbano.Backend/Controllers/VigoController.cs b/src/Costasdev.Busurbano.Backend/Controllers/VigoController.cs index 288cc98..642cccb 100644 --- a/src/Costasdev.Busurbano.Backend/Controllers/VigoController.cs +++ b/src/Costasdev.Busurbano.Backend/Controllers/VigoController.cs @@ -1,13 +1,9 @@ -using System.Globalization; -using System.Text; using Costasdev.Busurbano.Backend.Configuration; using Costasdev.Busurbano.Backend.Services; -using Costasdev.Busurbano.Backend.Types; +using Costasdev.Busurbano.Backend.Services.Providers; using Costasdev.VigoTransitApi; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Options; -using static Costasdev.Busurbano.Backend.Types.StopArrivals.Types; -using SysFile = System.IO.File; namespace Costasdev.Busurbano.Backend.Controllers; @@ -19,13 +15,23 @@ public partial class VigoController : ControllerBase private readonly VigoTransitApiClient _api; private readonly AppConfiguration _configuration; private readonly ShapeTraversalService _shapeService; - - public VigoController(HttpClient http, IOptions options, ILogger logger, ShapeTraversalService shapeService) + private readonly VitrasaTransitProvider _vitrasaProvider; + private readonly RenfeTransitProvider _renfeProvider; + + public VigoController( + HttpClient http, + IOptions options, + ILogger logger, + ShapeTraversalService shapeService, + VitrasaTransitProvider vitrasaProvider, + RenfeTransitProvider renfeProvider) { _logger = logger; _api = new VigoTransitApiClient(http); _configuration = options.Value; _shapeService = shapeService; + _vitrasaProvider = vitrasaProvider; + _renfeProvider = renfeProvider; } [HttpGet("GetShape")] @@ -108,355 +114,34 @@ public partial class VigoController : ControllerBase [HttpGet("GetConsolidatedCirculations")] public async Task GetConsolidatedCirculations( - [FromQuery] int stopId + [FromQuery] string stopId ) { // Use Europe/Madrid timezone consistently to avoid UTC/local skew var tz = TimeZoneInfo.FindSystemTimeZoneById("Europe/Madrid"); var nowLocal = TimeZoneInfo.ConvertTime(DateTime.UtcNow, tz); - var realtimeTask = _api.GetStopEstimates(stopId); - var todayDate = nowLocal.Date.ToString("yyyy-MM-dd"); - - // Load both today's and tomorrow's schedules to handle night services - var timetableTask = LoadStopArrivalsProto(stopId.ToString(), todayDate); - - // Wait for real-time data and today's schedule (required) - await Task.WhenAll(realtimeTask, timetableTask); + ITransitProvider provider; + string effectiveStopId; - var realTimeEstimates = realtimeTask.Result.Estimates; - - // Handle case where schedule file doesn't exist - return realtime-only data - if (timetableTask.Result == null) + if (stopId.StartsWith("renfe:")) { - _logger.LogWarning("No schedule data available for stop {StopId} on {Date}, returning realtime-only data", stopId, todayDate); - - var realtimeOnlyCirculations = realTimeEstimates.Select(estimate => new ConsolidatedCirculation - { - Line = estimate.Line, - Route = estimate.Route, - Schedule = null, - RealTime = new RealTimeData - { - Minutes = estimate.Minutes, - Distance = estimate.Meters - } - }).OrderBy(c => c.RealTime!.Minutes).ToList(); - - return Ok(realtimeOnlyCirculations); + provider = _renfeProvider; + effectiveStopId = stopId.Substring("renfe:".Length); } - - var timetable = timetableTask.Result.Arrivals - .Where(c => c.StartingDateTime(nowLocal.Date) != null && c.CallingDateTime(nowLocal.Date) != null) - .ToList(); - - var stopLocation = timetableTask.Result.Location; - - var now = nowLocal.AddSeconds(60 - nowLocal.Second); - // Define the scope end as the time of the last realtime arrival (no extra buffer) - var scopeEnd = realTimeEstimates.Count > 0 - ? now.AddMinutes(Math.Min(realTimeEstimates.Max(e => e.Minutes) + 5, 75)) - : now.AddMinutes(60); // If no estimates, show next hour of scheduled only - - List consolidatedCirculations = []; - var usedTripIds = new HashSet(); - - foreach (var estimate in realTimeEstimates) + else if (stopId.StartsWith("vitrasa:")) { - var estimatedArrivalTime = now.AddMinutes(estimate.Minutes); - - var possibleCirculations = timetable - .Where(c => - { - // Match by line number - if (c.Line.Trim() != estimate.Line.Trim()) - return false; - - // Match by route (destination) - compare with both Route field and Terminus stop name - // Normalize both sides: remove non-ASCII-alnum characters and lowercase - var estimateRoute = NormalizeRouteName(estimate.Route); - var scheduleRoute = NormalizeRouteName(c.Route); - var scheduleTerminus = NormalizeRouteName(c.TerminusName); - - return scheduleRoute == estimateRoute || scheduleTerminus == estimateRoute; - }) - .OrderBy(c => c.CallingDateTime(nowLocal.Date)!.Value) - .ToArray(); - - ScheduledArrival? closestCirculation = null; - - // Matching strategy: - // 1) Filter trips that are not "too early" (TimeDiff <= 7). - // TimeDiff = Schedule - Realtime. - // If TimeDiff > 7, bus is > 7 mins early. Reject. - // 2) From the valid trips, pick the one with smallest Abs(TimeDiff). - // This handles "as late as it gets" (large negative TimeDiff) by preferring smaller delays if available, - // but accepting large delays if that's the only option (and better than an invalid early trip). - const int maxEarlyArrivalMinutes = 7; - - var bestMatch = possibleCirculations - .Select(c => new - { - Circulation = c, - TimeDiff = (c.CallingDateTime(nowLocal.Date)!.Value - estimatedArrivalTime).TotalMinutes - }) - .Where(x => x.TimeDiff <= maxEarlyArrivalMinutes) - .OrderBy(x => Math.Abs(x.TimeDiff)) - .FirstOrDefault(); - - if (bestMatch != null) - { - closestCirculation = bestMatch.Circulation; - } - - if (closestCirculation == null) - { - // No scheduled match: include realtime-only entry - _logger.LogWarning("No schedule match for realtime line {Line} towards {Route} in {Minutes} minutes (tried matching {NormalizedRoute})", estimate.Line, estimate.Route, estimate.Minutes, NormalizeRouteName(estimate.Route)); - consolidatedCirculations.Add(new ConsolidatedCirculation - { - Line = estimate.Line, - Route = estimate.Route, - Schedule = null, - RealTime = new RealTimeData - { - Minutes = estimate.Minutes, - Distance = estimate.Meters - } - }); - - continue; - } - - // Ensure each scheduled trip is only matched once to a realtime estimate - if (usedTripIds.Contains(closestCirculation.TripId)) - { - _logger.LogInformation("Skipping duplicate realtime match for TripId {TripId}", closestCirculation.TripId); - continue; - } - - var isRunning = closestCirculation.StartingDateTime(nowLocal.Date)!.Value <= now; - Position? currentPosition = null; - int? stopShapeIndex = null; - bool usePreviousShape = false; - - // Calculate bus position for realtime trips - if (!string.IsNullOrEmpty(closestCirculation.ShapeId)) - { - // Check if we are likely on the previous trip - // If the bus is further away than the distance from the start of the trip to the stop, - // it implies the bus is on the previous trip (or earlier). - double distOnPrevTrip = estimate.Meters - closestCirculation.ShapeDistTraveled; - usePreviousShape = !isRunning && - !string.IsNullOrEmpty(closestCirculation.PreviousTripShapeId) && - distOnPrevTrip > 0; - - if (usePreviousShape) - { - var prevShape = await _shapeService.LoadShapeAsync(closestCirculation.PreviousTripShapeId); - if (prevShape != null && prevShape.Points.Count > 0) - { - // The bus is on the previous trip. - // We treat the end of the previous shape as the "stop" for the purpose of calculation. - // The distance to traverse backwards from the end of the previous shape is 'distOnPrevTrip'. - var lastPoint = prevShape.Points[prevShape.Points.Count - 1]; - var result = _shapeService.GetBusPosition(prevShape, lastPoint, (int)distOnPrevTrip); - currentPosition = result.BusPosition; - stopShapeIndex = result.StopIndex; - } - } - else - { - // Normal case: bus is on the current trip shape - var shape = await _shapeService.LoadShapeAsync(closestCirculation.ShapeId); - if (shape != null && stopLocation != null) - { - var result = _shapeService.GetBusPosition(shape, stopLocation, estimate.Meters); - currentPosition = result.BusPosition; - stopShapeIndex = result.StopIndex; - } - } - } - - consolidatedCirculations.Add(new ConsolidatedCirculation - { - Line = estimate.Line, - Route = estimate.Route == closestCirculation.TerminusName ? closestCirculation.Route : estimate.Route, - NextStreets = [.. closestCirculation.NextStreets], - Schedule = new ScheduleData - { - Running = isRunning, - Minutes = (int)(closestCirculation.CallingDateTime(nowLocal.Date)!.Value - now).TotalMinutes, - TripId = closestCirculation.TripId, - ServiceId = closestCirculation.ServiceId, - ShapeId = closestCirculation.ShapeId, - }, - RealTime = new RealTimeData - { - Minutes = estimate.Minutes, - Distance = estimate.Meters - }, - CurrentPosition = currentPosition, - StopShapeIndex = stopShapeIndex, - IsPreviousTrip = usePreviousShape, - PreviousTripShapeId = usePreviousShape ? closestCirculation.PreviousTripShapeId : null - }); - - usedTripIds.Add(closestCirculation.TripId); + provider = _vitrasaProvider; + effectiveStopId = stopId.Substring("vitrasa:".Length); } - - // Add scheduled-only circulations between now and the last realtime arrival - if (scopeEnd > now) + else { - var matchedTripIds = new HashSet(usedTripIds); - - var scheduledWindow = timetable - .Where(c => c.CallingDateTime(nowLocal.Date)!.Value >= now && c.CallingDateTime(nowLocal.Date)!.Value <= scopeEnd) - .OrderBy(c => c.CallingDateTime(nowLocal.Date)!.Value); - - foreach (var sched in scheduledWindow) - { - if (matchedTripIds.Contains(sched.TripId)) - { - continue; // already represented via a matched realtime - } - - var minutes = (int)(sched.CallingDateTime(nowLocal.Date)!.Value - now).TotalMinutes; - if (minutes == 0) - { - continue; - } - - consolidatedCirculations.Add(new ConsolidatedCirculation - { - Line = sched.Line, - Route = sched.Route, - Schedule = new ScheduleData - { - Running = sched.StartingDateTime(nowLocal.Date)!.Value <= now, - Minutes = minutes, - TripId = sched.TripId, - ServiceId = sched.ServiceId, - ShapeId = sched.ShapeId, - }, - RealTime = null - }); - } + // Legacy/Default + provider = _vitrasaProvider; + effectiveStopId = stopId; } - // Sort by ETA (RealTime minutes if present; otherwise Schedule minutes) - var sorted = consolidatedCirculations - .OrderBy(c => c.RealTime?.Minutes ?? c.Schedule!.Minutes) - .Select(LineFormatterService.Format) - .ToList(); - - return Ok(sorted); - } - - private async Task LoadStopArrivalsProto(string stopId, string dateString) - { - var file = Path.Combine(_configuration.ScheduleBasePath, dateString, stopId + ".pb"); - if (!SysFile.Exists(file)) - { - _logger.LogWarning("Stop arrivals proto file not found: {File}", file); - return null; - } - - var contents = await SysFile.ReadAllBytesAsync(file); - var stopArrivals = StopArrivals.Parser.ParseFrom(contents); - return stopArrivals; - } - - private async Task LoadShapeProto(string shapeId) - { - var file = Path.Combine(_configuration.ScheduleBasePath, shapeId + ".pb"); - if (!SysFile.Exists(file)) - { - throw new FileNotFoundException(); - } - - var contents = await SysFile.ReadAllBytesAsync(file); - var shape = Shape.Parser.ParseFrom(contents); - return shape; - } - - private static string NormalizeRouteName(string route) - { - var normalized = route.Trim().ToLowerInvariant(); - // Remove diacritics/accents first, then filter to alphanumeric - normalized = RemoveDiacritics(normalized); - return new string(normalized.Where(char.IsLetterOrDigit).ToArray()); - } - - private static string RemoveDiacritics(string text) - { - var normalizedString = text.Normalize(NormalizationForm.FormD); - var stringBuilder = new StringBuilder(); - - foreach (var c in normalizedString) - { - var unicodeCategory = CharUnicodeInfo.GetUnicodeCategory(c); - if (unicodeCategory != UnicodeCategory.NonSpacingMark) - { - stringBuilder.Append(c); - } - } - - return stringBuilder.ToString().Normalize(NormalizationForm.FormC); - } -} - -public static class StopScheduleExtensions -{ - public static DateTime? StartingDateTime(this ScheduledArrival stop, DateTime baseDate) - { - return ParseGtfsTime(stop.StartingTime, baseDate); - } - - public static DateTime? CallingDateTime(this ScheduledArrival stop, DateTime baseDate) - { - return ParseGtfsTime(stop.CallingTime, baseDate); - } - - /// - /// Parse GTFS time format (HH:MM:SS) which can have hours >= 24 for services past midnight - /// - private static DateTime? ParseGtfsTime(string timeStr, DateTime baseDate) - { - if (string.IsNullOrWhiteSpace(timeStr)) - { - return null; - } - - var parts = timeStr.Split(':'); - if (parts.Length != 3) - { - return null; - } - - if (!int.TryParse(parts[0], out var hours) || - !int.TryParse(parts[1], out var minutes) || - !int.TryParse(parts[2], out var seconds)) - { - return null; - } - - // Handle GTFS times that exceed 24 hours (e.g., 25:30:00 for 1:30 AM next day) - var days = hours / 24; - var normalizedHours = hours % 24; - - try - { - var dt = baseDate - .AddDays(days) - .AddHours(normalizedHours) - .AddMinutes(minutes) - .AddSeconds(seconds); - return dt.AddSeconds(60 - dt.Second); - } - catch - { - return null; - } + var result = await provider.GetCirculationsAsync(effectiveStopId, nowLocal); + return Ok(result); } } diff --git a/src/Costasdev.Busurbano.Backend/Extensions/StopScheduleExtensions.cs b/src/Costasdev.Busurbano.Backend/Extensions/StopScheduleExtensions.cs new file mode 100644 index 0000000..b435158 --- /dev/null +++ b/src/Costasdev.Busurbano.Backend/Extensions/StopScheduleExtensions.cs @@ -0,0 +1,58 @@ +using static Costasdev.Busurbano.Backend.Types.StopArrivals.Types; + +namespace Costasdev.Busurbano.Backend.Extensions; + +public static class StopScheduleExtensions +{ + public static DateTime? StartingDateTime(this ScheduledArrival stop, DateTime baseDate) + { + return ParseGtfsTime(stop.StartingTime, baseDate); + } + + public static DateTime? CallingDateTime(this ScheduledArrival stop, DateTime baseDate) + { + return ParseGtfsTime(stop.CallingTime, baseDate); + } + + /// + /// Parse GTFS time format (HH:MM:SS) which can have hours >= 24 for services past midnight + /// + private static DateTime? ParseGtfsTime(string timeStr, DateTime baseDate) + { + if (string.IsNullOrWhiteSpace(timeStr)) + { + return null; + } + + var parts = timeStr.Split(':'); + if (parts.Length != 3) + { + return null; + } + + if (!int.TryParse(parts[0], out var hours) || + !int.TryParse(parts[1], out var minutes) || + !int.TryParse(parts[2], out var seconds)) + { + return null; + } + + // Handle GTFS times that exceed 24 hours (e.g., 25:30:00 for 1:30 AM next day) + var days = hours / 24; + var normalizedHours = hours % 24; + + try + { + var dt = baseDate + .AddDays(days) + .AddHours(normalizedHours) + .AddMinutes(minutes) + .AddSeconds(seconds); + return dt.AddSeconds(60 - dt.Second); + } + catch + { + return null; + } + } +} diff --git a/src/Costasdev.Busurbano.Backend/Program.cs b/src/Costasdev.Busurbano.Backend/Program.cs index 46f2595..959e114 100644 --- a/src/Costasdev.Busurbano.Backend/Program.cs +++ b/src/Costasdev.Busurbano.Backend/Program.cs @@ -1,5 +1,6 @@ using Costasdev.Busurbano.Backend.Configuration; using Costasdev.Busurbano.Backend.Services; +using Costasdev.Busurbano.Backend.Services.Providers; var builder = WebApplication.CreateBuilder(args); @@ -10,6 +11,9 @@ builder.Services.AddHttpClient(); builder.Services.AddMemoryCache(); builder.Services.AddSingleton(); +builder.Services.AddScoped(); +builder.Services.AddScoped(); + var app = builder.Build(); app.MapControllers(); diff --git a/src/Costasdev.Busurbano.Backend/Services/Providers/ITransitProvider.cs b/src/Costasdev.Busurbano.Backend/Services/Providers/ITransitProvider.cs new file mode 100644 index 0000000..f0440e4 --- /dev/null +++ b/src/Costasdev.Busurbano.Backend/Services/Providers/ITransitProvider.cs @@ -0,0 +1,8 @@ +using Costasdev.Busurbano.Backend.Types; + +namespace Costasdev.Busurbano.Backend.Services.Providers; + +public interface ITransitProvider +{ + Task> GetCirculationsAsync(string stopId, DateTime now); +} diff --git a/src/Costasdev.Busurbano.Backend/Services/Providers/RenfeTransitProvider.cs b/src/Costasdev.Busurbano.Backend/Services/Providers/RenfeTransitProvider.cs new file mode 100644 index 0000000..55e880f --- /dev/null +++ b/src/Costasdev.Busurbano.Backend/Services/Providers/RenfeTransitProvider.cs @@ -0,0 +1,76 @@ +using Costasdev.Busurbano.Backend.Configuration; +using Costasdev.Busurbano.Backend.Extensions; +using Costasdev.Busurbano.Backend.Types; +using Microsoft.Extensions.Options; +using SysFile = System.IO.File; + +namespace Costasdev.Busurbano.Backend.Services.Providers; + +public class RenfeTransitProvider : ITransitProvider +{ + private readonly AppConfiguration _configuration; + private readonly ILogger _logger; + + public RenfeTransitProvider(IOptions options, ILogger logger) + { + _configuration = options.Value; + _logger = logger; + } + + public async Task> GetCirculationsAsync(string stopId, DateTime nowLocal) + { + var todayDate = nowLocal.Date.ToString("yyyy-MM-dd"); + var stopArrivals = await LoadStopArrivalsProto(stopId, todayDate); + + if (stopArrivals == null) + { + return []; + } + + var now = nowLocal.AddSeconds(60 - nowLocal.Second); + var scopeEnd = now.AddMinutes(300); + + var scheduledWindow = stopArrivals.Arrivals + .Where(c => c.CallingDateTime(nowLocal.Date) != null) + .Where(c => c.CallingDateTime(nowLocal.Date)!.Value >= now && c.CallingDateTime(nowLocal.Date)!.Value <= scopeEnd) + .OrderBy(c => c.CallingDateTime(nowLocal.Date)!.Value); + + var consolidatedCirculations = new List(); + + foreach (var sched in scheduledWindow) + { + var minutes = (int)(sched.CallingDateTime(nowLocal.Date)!.Value - now).TotalMinutes; + + consolidatedCirculations.Add(new ConsolidatedCirculation + { + Line = sched.Line, + Route = sched.Route, + Schedule = new ScheduleData + { + Running = sched.StartingDateTime(nowLocal.Date)!.Value <= now, + Minutes = minutes, + TripId = sched.TripId, + ServiceId = sched.ServiceId, + ShapeId = sched.ShapeId, + }, + RealTime = null + }); + } + + return consolidatedCirculations; + } + + private async Task LoadStopArrivalsProto(string stopId, string dateString) + { + var file = Path.Combine(_configuration.RenfeScheduleBasePath, dateString, stopId + ".pb"); + if (!SysFile.Exists(file)) + { + _logger.LogWarning("Stop arrivals proto file not found: {File}", file); + return null; + } + + var contents = await SysFile.ReadAllBytesAsync(file); + var stopArrivals = StopArrivals.Parser.ParseFrom(contents); + return stopArrivals; + } +} diff --git a/src/Costasdev.Busurbano.Backend/Services/Providers/VitrasaTransitProvider.cs b/src/Costasdev.Busurbano.Backend/Services/Providers/VitrasaTransitProvider.cs new file mode 100644 index 0000000..079d510 --- /dev/null +++ b/src/Costasdev.Busurbano.Backend/Services/Providers/VitrasaTransitProvider.cs @@ -0,0 +1,304 @@ +using System.Globalization; +using System.Text; +using Costasdev.Busurbano.Backend.Configuration; +using Costasdev.Busurbano.Backend.Extensions; +using Costasdev.Busurbano.Backend.Types; +using Costasdev.VigoTransitApi; +using Microsoft.Extensions.Options; +using static Costasdev.Busurbano.Backend.Types.StopArrivals.Types; +using SysFile = System.IO.File; + +namespace Costasdev.Busurbano.Backend.Services.Providers; + +public class VitrasaTransitProvider : ITransitProvider +{ + private readonly VigoTransitApiClient _api; + private readonly AppConfiguration _configuration; + private readonly ShapeTraversalService _shapeService; + private readonly ILogger _logger; + + public VitrasaTransitProvider(HttpClient http, IOptions options, ShapeTraversalService shapeService, ILogger logger) + { + _api = new VigoTransitApiClient(http); + _configuration = options.Value; + _shapeService = shapeService; + _logger = logger; + } + + public async Task> GetCirculationsAsync(string stopId, DateTime nowLocal) + { + // Vitrasa stop IDs are integers, but we receive string "vitrasa:1234" or just "1234" if legacy + // The caller (Controller) should probably strip the prefix, but let's handle it here just in case or assume it's stripped. + // The user said: "Routing the request to one or tthe other will just work with the prefix. For example calling `/api/GetConsolidatedCirculations?stopId=vitrasa:1400` will call the vitrasa driver with stop 1400." + // So I should expect the ID part only here? Or the full ID? + // Usually providers take the ID they understand. I'll assume the controller strips the prefix. + + if (!int.TryParse(stopId, out var numericStopId)) + { + _logger.LogError("Invalid Vitrasa stop ID: {StopId}", stopId); + return []; + } + + var realtimeTask = _api.GetStopEstimates(numericStopId); + var todayDate = nowLocal.Date.ToString("yyyy-MM-dd"); + + // Load both today's and tomorrow's schedules to handle night services + var timetableTask = LoadStopArrivalsProto(stopId, todayDate); + + // Wait for real-time data and today's schedule (required) + await Task.WhenAll(realtimeTask, timetableTask); + + var realTimeEstimates = realtimeTask.Result.Estimates; + + // Handle case where schedule file doesn't exist - return realtime-only data + if (timetableTask.Result == null) + { + _logger.LogWarning("No schedule data available for stop {StopId} on {Date}, returning realtime-only data", stopId, todayDate); + + var realtimeOnlyCirculations = realTimeEstimates.Select(estimate => new ConsolidatedCirculation + { + Line = estimate.Line, + Route = estimate.Route, + Schedule = null, + RealTime = new RealTimeData + { + Minutes = estimate.Minutes, + Distance = estimate.Meters + } + }).OrderBy(c => c.RealTime!.Minutes).ToList(); + + return realtimeOnlyCirculations; + } + + var timetable = timetableTask.Result.Arrivals + .Where(c => c.StartingDateTime(nowLocal.Date) != null && c.CallingDateTime(nowLocal.Date) != null) + .ToList(); + + var stopLocation = timetableTask.Result.Location; + + var now = nowLocal.AddSeconds(60 - nowLocal.Second); + // Define the scope end as the time of the last realtime arrival (no extra buffer) + var scopeEnd = realTimeEstimates.Count > 0 + ? now.AddMinutes(Math.Min(realTimeEstimates.Max(e => e.Minutes) + 5, 75)) + : now.AddMinutes(60); // If no estimates, show next hour of scheduled only + + List consolidatedCirculations = []; + var usedTripIds = new HashSet(); + + foreach (var estimate in realTimeEstimates) + { + var estimatedArrivalTime = now.AddMinutes(estimate.Minutes); + + var possibleCirculations = timetable + .Where(c => + { + // Match by line number + if (c.Line.Trim() != estimate.Line.Trim()) + return false; + + // Match by route (destination) - compare with both Route field and Terminus stop name + // Normalize both sides: remove non-ASCII-alnum characters and lowercase + var estimateRoute = NormalizeRouteName(estimate.Route); + var scheduleRoute = NormalizeRouteName(c.Route); + var scheduleTerminus = NormalizeRouteName(c.TerminusName); + + return scheduleRoute == estimateRoute || scheduleTerminus == estimateRoute; + }) + .OrderBy(c => c.CallingDateTime(nowLocal.Date)!.Value) + .ToArray(); + + ScheduledArrival? closestCirculation = null; + + const int maxEarlyArrivalMinutes = 7; + + var bestMatch = possibleCirculations + .Select(c => new + { + Circulation = c, + TimeDiff = (c.CallingDateTime(nowLocal.Date)!.Value - estimatedArrivalTime).TotalMinutes + }) + .Where(x => x.TimeDiff <= maxEarlyArrivalMinutes) + .OrderBy(x => Math.Abs(x.TimeDiff)) + .FirstOrDefault(); + + if (bestMatch != null) + { + closestCirculation = bestMatch.Circulation; + } + + if (closestCirculation == null) + { + // No scheduled match: include realtime-only entry + _logger.LogWarning("No schedule match for realtime line {Line} towards {Route} in {Minutes} minutes (tried matching {NormalizedRoute})", estimate.Line, estimate.Route, estimate.Minutes, NormalizeRouteName(estimate.Route)); + consolidatedCirculations.Add(new ConsolidatedCirculation + { + Line = estimate.Line, + Route = estimate.Route, + Schedule = null, + RealTime = new RealTimeData + { + Minutes = estimate.Minutes, + Distance = estimate.Meters + } + }); + + continue; + } + + // Ensure each scheduled trip is only matched once to a realtime estimate + if (usedTripIds.Contains(closestCirculation.TripId)) + { + _logger.LogInformation("Skipping duplicate realtime match for TripId {TripId}", closestCirculation.TripId); + continue; + } + + var isRunning = closestCirculation.StartingDateTime(nowLocal.Date)!.Value <= now; + Position? currentPosition = null; + int? stopShapeIndex = null; + bool usePreviousShape = false; + + // Calculate bus position for realtime trips + if (!string.IsNullOrEmpty(closestCirculation.ShapeId)) + { + double distOnPrevTrip = estimate.Meters - closestCirculation.ShapeDistTraveled; + usePreviousShape = !isRunning && + !string.IsNullOrEmpty(closestCirculation.PreviousTripShapeId) && + distOnPrevTrip > 0; + + if (usePreviousShape) + { + var prevShape = await _shapeService.LoadShapeAsync(closestCirculation.PreviousTripShapeId); + if (prevShape != null && prevShape.Points.Count > 0) + { + var lastPoint = prevShape.Points[prevShape.Points.Count - 1]; + var result = _shapeService.GetBusPosition(prevShape, lastPoint, (int)distOnPrevTrip); + currentPosition = result.BusPosition; + stopShapeIndex = result.StopIndex; + } + } + else + { + var shape = await _shapeService.LoadShapeAsync(closestCirculation.ShapeId); + if (shape != null && stopLocation != null) + { + var result = _shapeService.GetBusPosition(shape, stopLocation, estimate.Meters); + currentPosition = result.BusPosition; + stopShapeIndex = result.StopIndex; + } + } + } + + consolidatedCirculations.Add(new ConsolidatedCirculation + { + Line = estimate.Line, + Route = estimate.Route == closestCirculation.TerminusName ? closestCirculation.Route : estimate.Route, + NextStreets = [.. closestCirculation.NextStreets], + Schedule = new ScheduleData + { + Running = isRunning, + Minutes = (int)(closestCirculation.CallingDateTime(nowLocal.Date)!.Value - now).TotalMinutes, + TripId = closestCirculation.TripId, + ServiceId = closestCirculation.ServiceId, + ShapeId = closestCirculation.ShapeId, + }, + RealTime = new RealTimeData + { + Minutes = estimate.Minutes, + Distance = estimate.Meters + }, + CurrentPosition = currentPosition, + StopShapeIndex = stopShapeIndex, + IsPreviousTrip = usePreviousShape, + PreviousTripShapeId = usePreviousShape ? closestCirculation.PreviousTripShapeId : null + }); + + usedTripIds.Add(closestCirculation.TripId); + } + + // Add scheduled-only circulations between now and the last realtime arrival + if (scopeEnd > now) + { + var matchedTripIds = new HashSet(usedTripIds); + + var scheduledWindow = timetable + .Where(c => c.CallingDateTime(nowLocal.Date)!.Value >= now && c.CallingDateTime(nowLocal.Date)!.Value <= scopeEnd) + .OrderBy(c => c.CallingDateTime(nowLocal.Date)!.Value); + + foreach (var sched in scheduledWindow) + { + if (matchedTripIds.Contains(sched.TripId)) + { + continue; // already represented via a matched realtime + } + + var minutes = (int)(sched.CallingDateTime(nowLocal.Date)!.Value - now).TotalMinutes; + if (minutes == 0) + { + continue; + } + + consolidatedCirculations.Add(new ConsolidatedCirculation + { + Line = sched.Line, + Route = sched.Route, + Schedule = new ScheduleData + { + Running = sched.StartingDateTime(nowLocal.Date)!.Value <= now, + Minutes = minutes, + TripId = sched.TripId, + ServiceId = sched.ServiceId, + ShapeId = sched.ShapeId, + }, + RealTime = null + }); + } + } + + // Sort by ETA (RealTime minutes if present; otherwise Schedule minutes) + var sorted = consolidatedCirculations + .OrderBy(c => c.RealTime?.Minutes ?? c.Schedule!.Minutes) + .Select(LineFormatterService.Format) + .ToList(); + + return sorted; + } + + private async Task LoadStopArrivalsProto(string stopId, string dateString) + { + var file = Path.Combine(_configuration.VitrasaScheduleBasePath, dateString, stopId + ".pb"); + if (!SysFile.Exists(file)) + { + _logger.LogWarning("Stop arrivals proto file not found: {File}", file); + return null; + } + + var contents = await SysFile.ReadAllBytesAsync(file); + var stopArrivals = StopArrivals.Parser.ParseFrom(contents); + return stopArrivals; + } + + private static string NormalizeRouteName(string route) + { + var normalized = route.Trim().ToLowerInvariant(); + // Remove diacritics/accents first, then filter to alphanumeric + normalized = RemoveDiacritics(normalized); + return new string(normalized.Where(char.IsLetterOrDigit).ToArray()); + } + + private static string RemoveDiacritics(string text) + { + var normalizedString = text.Normalize(NormalizationForm.FormD); + var stringBuilder = new StringBuilder(); + + foreach (var c in normalizedString) + { + var unicodeCategory = CharUnicodeInfo.GetUnicodeCategory(c); + if (unicodeCategory != UnicodeCategory.NonSpacingMark) + { + stringBuilder.Append(c); + } + } + + return stringBuilder.ToString().Normalize(NormalizationForm.FormC); + } +} diff --git a/src/Costasdev.Busurbano.Backend/Services/ShapeTraversalService.cs b/src/Costasdev.Busurbano.Backend/Services/ShapeTraversalService.cs index 928c173..63f4a2e 100644 --- a/src/Costasdev.Busurbano.Backend/Services/ShapeTraversalService.cs +++ b/src/Costasdev.Busurbano.Backend/Services/ShapeTraversalService.cs @@ -40,7 +40,7 @@ public class ShapeTraversalService /// public async Task LoadShapeAsync(string shapeId) { - var file = Path.Combine(_configuration.ScheduleBasePath, "shapes", shapeId + ".pb"); + var file = Path.Combine(_configuration.VitrasaScheduleBasePath, "shapes", shapeId + ".pb"); if (!SysFile.Exists(file)) { _logger.LogWarning("Shape file not found: {ShapeId}", shapeId); diff --git a/src/frontend/app/components/StopItemSkeleton.tsx b/src/frontend/app/components/StopItemSkeleton.tsx index 68172fd..778b5e1 100644 --- a/src/frontend/app/components/StopItemSkeleton.tsx +++ b/src/frontend/app/components/StopItemSkeleton.tsx @@ -4,7 +4,7 @@ import "react-loading-skeleton/dist/skeleton.css"; interface StopItemSkeletonProps { showId?: boolean; - stopId?: number; + stopId?: string; } const StopItemSkeleton: React.FC = ({ diff --git a/src/frontend/app/components/StopSummarySheet.tsx b/src/frontend/app/components/StopSummarySheet.tsx index 17c0afd..e85dda3 100644 --- a/src/frontend/app/components/StopSummarySheet.tsx +++ b/src/frontend/app/components/StopSummarySheet.tsx @@ -26,7 +26,7 @@ interface ErrorInfo { } const loadConsolidatedData = async ( - stopId: number + stopId: string ): Promise => { const resp = await fetch( `${REGION_DATA.consolidatedCirculationsEndpoint}?stopId=${stopId}`, diff --git a/src/frontend/app/data/StopDataProvider.ts b/src/frontend/app/data/StopDataProvider.ts index abe7123..920c7e1 100644 --- a/src/frontend/app/data/StopDataProvider.ts +++ b/src/frontend/app/data/StopDataProvider.ts @@ -11,7 +11,8 @@ export type StopName = { }; export interface Stop { - stopId: number; + stopId: string; + type?: 'bus' | 'train'; name: StopName; latitude?: number; longitude?: number; @@ -27,29 +28,46 @@ export interface Stop { // In-memory cache and lookup map per region const cachedStopsByRegion: Record = {}; -const stopsMapByRegion: Record> = {}; +const stopsMapByRegion: Record> = {}; // Custom names loaded from localStorage per region -const customNamesByRegion: Record> = {}; +const customNamesByRegion: Record> = {}; + +// Helper to normalize ID +function normalizeId(id: number | string): string { + const s = String(id); + if (s.includes(':')) return s; + return `vitrasa:${s}`; +} // Initialize cachedStops and customNames once per region async function initStops() { if (!cachedStopsByRegion[REGION_DATA.id]) { const response = await fetch(REGION_DATA.stopsEndpoint); - const stops = (await response.json()) as Stop[]; + const rawStops = (await response.json()) as any[]; + // build array and map stopsMapByRegion[REGION_DATA.id] = {}; - cachedStopsByRegion[REGION_DATA.id] = stops.map((stop) => { - const entry = { ...stop, favourite: false } as Stop; - stopsMapByRegion[REGION_DATA.id][stop.stopId] = entry; + cachedStopsByRegion[REGION_DATA.id] = rawStops.map((raw) => { + const id = normalizeId(raw.stopId); + const entry = { + ...raw, + stopId: id, + type: raw.type || (id.startsWith('renfe:') ? 'train' : 'bus'), + favourite: false + } as Stop; + stopsMapByRegion[REGION_DATA.id][id] = entry; return entry; }); + // load custom names const rawCustom = localStorage.getItem(`customStopNames_${REGION_DATA.id}`); if (rawCustom) { - customNamesByRegion[REGION_DATA.id] = JSON.parse(rawCustom) as Record< - number, - string - >; + const parsed = JSON.parse(rawCustom); + const normalized: Record = {}; + for (const [key, value] of Object.entries(parsed)) { + normalized[normalizeId(key)] = value as string; + } + customNamesByRegion[REGION_DATA.id] = normalized; } else { customNamesByRegion[REGION_DATA.id] = {}; } @@ -60,7 +78,8 @@ async function getStops(): Promise { await initStops(); // update favourites const rawFav = localStorage.getItem("favouriteStops_vigo"); - const favouriteStops = rawFav ? (JSON.parse(rawFav) as number[]) : []; + const favouriteStops = rawFav ? (JSON.parse(rawFav) as (number|string)[]).map(normalizeId) : []; + cachedStopsByRegion["vigo"]!.forEach( (stop) => (stop.favourite = favouriteStops.includes(stop.stopId)) ); @@ -69,14 +88,15 @@ async function getStops(): Promise { // New: get single stop by id async function getStopById( - stopId: number + stopId: string | number ): Promise { await initStops(); - const stop = stopsMapByRegion[REGION_DATA.id]?.[stopId]; + const id = normalizeId(stopId); + const stop = stopsMapByRegion[REGION_DATA.id]?.[id]; if (stop) { const rawFav = localStorage.getItem(`favouriteStops_${REGION_DATA.id}`); - const favouriteStops = rawFav ? (JSON.parse(rawFav) as number[]) : []; - stop.favourite = favouriteStops.includes(stopId); + const favouriteStops = rawFav ? (JSON.parse(rawFav) as (number|string)[]).map(normalizeId) : []; + stop.favourite = favouriteStops.includes(id); } return stop; } @@ -90,20 +110,22 @@ function getDisplayName(stop: Stop): string { } // New: set or remove custom names -function setCustomName(stopId: number, label: string) { +function setCustomName(stopId: string | number, label: string) { + const id = normalizeId(stopId); if (!customNamesByRegion[REGION_DATA.id]) { customNamesByRegion[REGION_DATA.id] = {}; } - customNamesByRegion[REGION_DATA.id][stopId] = label; + customNamesByRegion[REGION_DATA.id][id] = label; localStorage.setItem( `customStopNames_${REGION_DATA.id}`, JSON.stringify(customNamesByRegion[REGION_DATA.id]) ); } -function removeCustomName(stopId: number) { - if (customNamesByRegion[REGION_DATA.id]?.[stopId]) { - delete customNamesByRegion[REGION_DATA.id][stopId]; +function removeCustomName(stopId: string | number) { + const id = normalizeId(stopId); + if (customNamesByRegion[REGION_DATA.id]?.[id]) { + delete customNamesByRegion[REGION_DATA.id][id]; localStorage.setItem( `customStopNames_${REGION_DATA.id}`, JSON.stringify(customNamesByRegion[REGION_DATA.id]) @@ -112,19 +134,21 @@ function removeCustomName(stopId: number) { } // New: get custom label for a stop -function getCustomName(stopId: number): string | undefined { - return customNamesByRegion[REGION_DATA.id]?.[stopId]; +function getCustomName(stopId: string | number): string | undefined { + const id = normalizeId(stopId); + return customNamesByRegion[REGION_DATA.id]?.[id]; } -function addFavourite(stopId: number) { +function addFavourite(stopId: string | number) { + const id = normalizeId(stopId); const rawFavouriteStops = localStorage.getItem(`favouriteStops_vigo`); - let favouriteStops: number[] = []; + let favouriteStops: string[] = []; if (rawFavouriteStops) { - favouriteStops = JSON.parse(rawFavouriteStops) as number[]; + favouriteStops = (JSON.parse(rawFavouriteStops) as (number|string)[]).map(normalizeId); } - if (!favouriteStops.includes(stopId)) { - favouriteStops.push(stopId); + if (!favouriteStops.includes(id)) { + favouriteStops.push(id); localStorage.setItem( `favouriteStops_vigo`, JSON.stringify(favouriteStops) @@ -132,42 +156,45 @@ function addFavourite(stopId: number) { } } -function removeFavourite(stopId: number) { +function removeFavourite(stopId: string | number) { + const id = normalizeId(stopId); const rawFavouriteStops = localStorage.getItem(`favouriteStops_vigo`); - let favouriteStops: number[] = []; + let favouriteStops: string[] = []; if (rawFavouriteStops) { - favouriteStops = JSON.parse(rawFavouriteStops) as number[]; + favouriteStops = (JSON.parse(rawFavouriteStops) as (number|string)[]).map(normalizeId); } - const newFavouriteStops = favouriteStops.filter((id) => id !== stopId); + const newFavouriteStops = favouriteStops.filter((sid) => sid !== id); localStorage.setItem( `favouriteStops_vigo`, JSON.stringify(newFavouriteStops) ); } -function isFavourite(stopId: number): boolean { +function isFavourite(stopId: string | number): boolean { + const id = normalizeId(stopId); const rawFavouriteStops = localStorage.getItem(`favouriteStops_vigo`); if (rawFavouriteStops) { - const favouriteStops = JSON.parse(rawFavouriteStops) as number[]; - return favouriteStops.includes(stopId); + const favouriteStops = (JSON.parse(rawFavouriteStops) as (number|string)[]).map(normalizeId); + return favouriteStops.includes(id); } return false; } const RECENT_STOPS_LIMIT = 10; -function pushRecent(stopId: number) { +function pushRecent(stopId: string | number) { + const id = normalizeId(stopId); const rawRecentStops = localStorage.getItem(`recentStops_vigo`); - let recentStops: Set = new Set(); + let recentStops: Set = new Set(); if (rawRecentStops) { - recentStops = new Set(JSON.parse(rawRecentStops) as number[]); + recentStops = new Set((JSON.parse(rawRecentStops) as (number|string)[]).map(normalizeId)); } - recentStops.add(stopId); + recentStops.add(id); if (recentStops.size > RECENT_STOPS_LIMIT) { const iterator = recentStops.values(); - const val = iterator.next().value as number; + const val = iterator.next().value as string; recentStops.delete(val); } @@ -177,18 +204,18 @@ function pushRecent(stopId: number) { ); } -function getRecent(): number[] { +function getRecent(): string[] { const rawRecentStops = localStorage.getItem(`recentStops_vigo`); if (rawRecentStops) { - return JSON.parse(rawRecentStops) as number[]; + return (JSON.parse(rawRecentStops) as (number|string)[]).map(normalizeId); } return []; } -function getFavouriteIds(): number[] { +function getFavouriteIds(): string[] { const rawFavouriteStops = localStorage.getItem(`favouriteStops_vigo`); if (rawFavouriteStops) { - return JSON.parse(rawFavouriteStops) as number[]; + return (JSON.parse(rawFavouriteStops) as (number|string)[]).map(normalizeId); } return []; } @@ -196,8 +223,16 @@ function getFavouriteIds(): number[] { // New function to load stops from network async function loadStopsFromNetwork(): Promise { const response = await fetch(REGION_DATA.stopsEndpoint); - const stops = (await response.json()) as Stop[]; - return stops.map((stop) => ({ ...stop, favourite: false }) as Stop); + const rawStops = (await response.json()) as any[]; + return rawStops.map((raw) => { + const id = normalizeId(raw.stopId); + return { + ...raw, + stopId: id, + type: raw.type || (id.startsWith('renfe:') ? 'train' : 'bus'), + favourite: false + } as Stop; + }); } export default { diff --git a/src/frontend/app/routes/map.tsx b/src/frontend/app/routes/map.tsx index 461e891..402bf60 100644 --- a/src/frontend/app/routes/map.tsx +++ b/src/frontend/app/routes/map.tsx @@ -35,7 +35,7 @@ export default function StopMap() { const [stops, setStops] = useState< GeoJsonFeature< Point, - { stopId: number; name: string; lines: string[]; cancelled?: boolean } + { stopId: string; name: string; lines: string[]; cancelled?: boolean, prefix: string } >[] >([]); const [selectedStop, setSelectedStop] = useState(null); @@ -65,7 +65,7 @@ export default function StopMap() { StopDataProvider.getStops().then((data) => { const features: GeoJsonFeature< Point, - { stopId: number; name: string; lines: string[]; cancelled?: boolean } + { stopId: string; name: string; lines: string[]; cancelled?: boolean, prefix: string } >[] = data.map((s) => ({ type: "Feature", geometry: { @@ -77,6 +77,7 @@ export default function StopMap() { name: s.name.original, lines: s.lines, cancelled: s.cancelled ?? false, + prefix: s.stopId.startsWith("renfe:") ? "stop-renfe" : (s.cancelled ? "stop-vitrasa-cancelled" : "stop-vitrasa"), }, })); setStops(features); @@ -152,7 +153,7 @@ export default function StopMap() { return; } - const stopId = parseInt(props.stopId, 10); + const stopId = props.stopId; // fetch full stop to get lines array StopDataProvider.getStopById(stopId) @@ -200,25 +201,23 @@ export default function StopMap() { (undefined); const [stopData, setStopData] = useState(undefined); @@ -98,8 +123,8 @@ export default function Estimates() { if (customName) return customName; if (stopData?.name.intersect) return stopData.name.intersect; if (stopData?.name.original) return stopData.name.original; - return `Parada ${stopIdNum}`; - }, [customName, stopData, stopIdNum]); + return `Parada ${stopId}`; + }, [customName, stopData, stopId]); usePageTitle(getStopDisplayName()); @@ -128,21 +153,21 @@ export default function Estimates() { try { setDataError(null); - const body = await loadConsolidatedData(params.id!); + const body = await loadConsolidatedData(stopId); setData(body); setDataDate(new Date()); // Load stop data from StopDataProvider - const stop = await StopDataProvider.getStopById(stopIdNum); + const stop = await StopDataProvider.getStopById(stopId); setStopData(stop); - setCustomName(StopDataProvider.getCustomName(stopIdNum)); + setCustomName(StopDataProvider.getCustomName(stopId)); } catch (error) { console.error("Error loading consolidated data:", error); setDataError(parseError(error)); setData(null); setDataDate(null); } - }, [params.id, stopIdNum]); + }, [stopId]); const refreshData = useCallback(async () => { await Promise.all([loadData()]); @@ -170,19 +195,19 @@ export default function Estimates() { setDataLoading(true); loadData(); - StopDataProvider.pushRecent(parseInt(params.id ?? "")); + StopDataProvider.pushRecent(stopId); setFavourited( - StopDataProvider.isFavourite(parseInt(params.id ?? "")) + StopDataProvider.isFavourite(stopId) ); setDataLoading(false); - }, [params.id, loadData]); + }, [stopId, loadData]); const toggleFavourite = () => { if (favourited) { - StopDataProvider.removeFavourite(stopIdNum); + StopDataProvider.removeFavourite(stopId); setFavourited(false); } else { - StopDataProvider.addFavourite(stopIdNum); + StopDataProvider.addFavourite(stopId); setFavourited(true); } }; diff --git a/src/frontend/public/maps/spritesheet/sprite.json b/src/frontend/public/maps/spritesheet/sprite.json index 504ff07..46a525b 100644 --- a/src/frontend/public/maps/spritesheet/sprite.json +++ b/src/frontend/public/maps/spritesheet/sprite.json @@ -1,14 +1,22 @@ { - "stop-vigo": { - "id": "stop-vigo", + "stop-vitrasa": { + "id": "stop-vitrasa", "x": 0, "y": 0, "width": 32, "height": 32, "pixelRatio": 1 }, - "stop-vigo-cancelled": { - "id": "stop-vigo-cancelled", + "stop-vitrasa-cancelled": { + "id": "stop-vitrasa-cancelled", + "x": 32, + "y": 0, + "width": 32, + "height": 32, + "pixelRatio": 1 + }, + "stop-renfe": { + "id": "stop-renfe", "x": 64, "y": 0, "width": 32, diff --git a/src/frontend/public/maps/spritesheet/sprite.png b/src/frontend/public/maps/spritesheet/sprite.png index 5c46a13..272b490 100644 Binary files a/src/frontend/public/maps/spritesheet/sprite.png and b/src/frontend/public/maps/spritesheet/sprite.png differ diff --git a/src/frontend/public/maps/spritesheet/sprite@2x.json b/src/frontend/public/maps/spritesheet/sprite@2x.json index 0586f5b..02e05d5 100644 --- a/src/frontend/public/maps/spritesheet/sprite@2x.json +++ b/src/frontend/public/maps/spritesheet/sprite@2x.json @@ -1,14 +1,22 @@ { - "stop-vigo": { - "id": "stop-vigo", + "stop-vitrasa": { + "id": "stop-vitrasa", "x": 0, "y": 0, "width": 64, "height": 64, "pixelRatio": 2 }, - "stop-vigo-cancelled": { - "id": "stop-vigo-cancelled", + "stop-vitrasa-cancelled": { + "id": "stop-vitrasa-cancelled", + "x": 64, + "y": 0, + "width": 64, + "height": 64, + "pixelRatio": 2 + }, + "stop-renfe": { + "id": "stop-renfe", "x": 128, "y": 0, "width": 64, diff --git a/src/frontend/public/maps/spritesheet/sprite@2x.png b/src/frontend/public/maps/spritesheet/sprite@2x.png index 4101224..8979128 100644 Binary files a/src/frontend/public/maps/spritesheet/sprite@2x.png and b/src/frontend/public/maps/spritesheet/sprite@2x.png differ diff --git a/src/frontend/public/stops/vigo.json b/src/frontend/public/stops/vigo.json index 37b4876..1adc57b 100644 --- a/src/frontend/public/stops/vigo.json +++ b/src/frontend/public/stops/vigo.json @@ -1,14237 +1,14357 @@ [ { - "stopId": 20, + "stopId": "renfe:08223", "name": { - "original": "Rúa do Abade Juan de Bastos (fronte Asociación Veciños)" + "original": "VIGO URZAIZ" }, - "latitude": 42.187593499, - "longitude": -8.741246641, - "lines": [ - "17" - ] + "latitude": 42.2344784, + "longitude": -8.7130987, + "lines": [] }, { - "stopId": 40, + "stopId": "renfe:08224", "name": { - "original": "Rúa do Abade Juan de Bastos (cruce Baixada da Moo)" + "original": "REDONDELA-AV" }, - "latitude": 42.192126677, - "longitude": -8.72901589, - "lines": [ - "17" - ] + "latitude": 42.284533, + "longitude": -8.603713, + "lines": [] }, { - "stopId": 50, + "stopId": "renfe:22103", "name": { - "original": "Rúa do Abade Juan de Bastos, 24" + "original": "FILGUEIRA" }, - "latitude": 42.19287042, - "longitude": -8.727513924, - "lines": [ - "17" - ] + "latitude": 42.2199566, + "longitude": -8.1848025, + "lines": [] }, { - "stopId": 70, + "stopId": "renfe:22104", "name": { - "original": "Rúa da Lagoa (cruce Camiño do Casmarcelo)" + "original": "FRIEIRA" }, - "latitude": 42.20020175, - "longitude": -8.700621608, - "lines": [ - "18A", - "18B" - ] + "latitude": 42.154972, + "longitude": -8.2001702, + "lines": [] }, { - "stopId": 80, + "stopId": "renfe:22105", "name": { - "original": "Rúa da Lagoa, 46" + "original": "POUSA-CRECENTE" }, - "latitude": 42.200132216, - "longitude": -8.700535777, - "lines": [ - "18A", - "18B" - ] + "latitude": 42.1366863, + "longitude": -8.2348913, + "lines": [] }, { - "stopId": 90, + "stopId": "renfe:22106", "name": { - "original": "Aeroporto de Peinador" + "original": "ARBO" }, - "latitude": 42.225956918, - "longitude": -8.63286469, - "lines": [ - "A" - ] + "latitude": 42.1069927, + "longitude": -8.3002144, + "lines": [] }, { - "stopId": 100, + "stopId": "renfe:22107", "name": { - "original": "Avda. do Alcalde Lavadores, 125" + "original": "SELA" }, - "latitude": 42.219008975, - "longitude": -8.69606935, - "lines": [ - "6" - ] + "latitude": 42.0920451, + "longitude": -8.3559662, + "lines": [] }, { - "stopId": 110, + "stopId": "renfe:22108", "name": { - "original": "Avda. do Alcalde Lavadores, 171" + "original": "AS NEVES" }, - "latitude": 42.215074591, - "longitude": -8.696738405, - "lines": [ - "6" - ] + "latitude": 42.0754353, + "longitude": -8.4201118, + "lines": [] }, { - "stopId": 120, + "stopId": "renfe:22109", "name": { - "original": "Avda. do Alcalde Lavadores, 8" + "original": "SALVATERRA" }, - "latitude": 42.223288295, - "longitude": -8.700954873, - "lines": [ - "6" - ] + "latitude": 42.0816074, + "longitude": -8.4952202, + "lines": [] }, { - "stopId": 130, + "stopId": "renfe:22110", "name": { - "original": "Avda. do Alcalde Lavadores, 102" + "original": "CALDELAS" }, - "latitude": 42.219001694, - "longitude": -8.696198267, - "lines": [ - "6" - ] + "latitude": 42.0557889, + "longitude": -8.566391, + "lines": [] }, { - "stopId": 140, + "stopId": "renfe:22200", "name": { - "original": "Avda. do Alcalde Lavadores, 29" + "original": "GUILLAREI" }, - "latitude": 42.223444913, - "longitude": -8.700801996, - "lines": [ - "6" - ] + "latitude": 42.0656748, + "longitude": -8.6225614, + "lines": [] }, { - "stopId": 150, + "stopId": "renfe:22201", "name": { - "original": "Avda. do Alcalde Lavadores, 48" + "original": "O PORRIÑO" }, - "latitude": 42.222636676, - "longitude": -8.697201413, - "lines": [ - "6" - ] + "latitude": 42.1640956, + "longitude": -8.6220121, + "lines": [] }, { - "stopId": 160, + "stopId": "renfe:22300", "name": { - "original": "Avda. do Alcalde Lavadores, 67" + "original": "REDONDELA" }, - "latitude": 42.222830286, - "longitude": -8.697231476, - "lines": [ - "6" - ] + "latitude": 42.2860395, + "longitude": -8.6194152, + "lines": [] }, { - "stopId": 170, + "stopId": "renfe:22308", "name": { - "original": "Avda. do Alcalde Lavadores, 152" + "original": "VIGO-GUIXAR" }, - "latitude": 42.215084316, - "longitude": -8.696854931, - "lines": [ - "6" - ] + "latitude": 42.2394426820947, + "longitude": -8.712087821668435, + "lines": [] }, { - "stopId": 180, + "stopId": "renfe:22401", "name": { - "original": "Estrada de Valadares, 451" + "original": "TUI" }, - "latitude": 42.166144986, - "longitude": -8.720162371, - "lines": [ - "7" - ] + "latitude": 42.0565541, + "longitude": -8.6430108, + "lines": [] }, { - "stopId": 190, + "stopId": "renfe:23000", "name": { - "original": "Rúa de Ángel de Lema, 58" + "original": "REDONDELA-PICOTA" }, - "latitude": 42.250539537, - "longitude": -8.685179363, - "lines": [ - "C3i", - "10" - ] + "latitude": 42.2867756, + "longitude": -8.60741, + "lines": [] }, { - "stopId": 195, + "stopId": "renfe:23001", "name": { - "original": "Rúa de Ángel de Lema, 247" + "original": "CESANTES" }, - "latitude": 42.256624708, - "longitude": -8.677490797, - "lines": [ - "C3d", - "10" - ] + "latitude": 42.3101953, + "longitude": -8.6164619, + "lines": [] }, { - "stopId": 200, + "stopId": "renfe:23002", "name": { - "original": "Rúa de Ángel de Lema, 100" + "original": "ARCADE" }, - "latitude": 42.252115803, - "longitude": -8.683374373, - "lines": [ - "C3i", - "10" - ] + "latitude": 42.3404447, + "longitude": -8.6104633, + "lines": [] }, { - "stopId": 210, + "stopId": "renfe:23004", "name": { - "original": "Rúa de Ángel de Lema, 140" + "original": "PONTEVEDRA" }, - "latitude": 42.255798748, - "longitude": -8.678507526, - "lines": [ - "C3i", - "10" - ] + "latitude": 42.42164, + "longitude": -8.63583, + "lines": [] }, { - "stopId": 220, + "stopId": "renfe:23005", "name": { - "original": "Rúa de Ángel de Lema, 163" + "original": "PORTELA" }, - "latitude": 42.252694363, - "longitude": -8.68302903, - "lines": [ - "C3d", - "10" - ] + "latitude": 42.5177336, + "longitude": -8.6545656, + "lines": [] }, { - "stopId": 230, + "stopId": "renfe:23008", "name": { - "original": "Rúa de Ángel de Lema, 14" + "original": "VILAGARCIA DE AROUSA" }, - "latitude": 42.248041601, - "longitude": -8.691024475, - "lines": [ - "C3i", - "10" - ] + "latitude": 42.6019751, + "longitude": -8.7622662, + "lines": [] }, { - "stopId": 240, + "stopId": "renfe:23009", "name": { - "original": "Rúa de Ángel de Lema, 19" + "original": "CATOIRA" }, - "latitude": 42.247513476, - "longitude": -8.691874301, - "lines": [ - "C3d", - "10" - ] + "latitude": 42.6722202, + "longitude": -8.7253854, + "lines": [] }, { - "stopId": 250, + "stopId": "renfe:23010", "name": { - "original": "Rúa de Ángel de Lema, 221" + "original": "PONTECESURES" }, - "latitude": 42.255252085, - "longitude": -8.679480662, - "lines": [ - "C3d", - "10" - ] + "latitude": 42.7229746, + "longitude": -8.6521346, + "lines": [] }, { - "stopId": 260, + "stopId": "renfe:23018", "name": { - "original": "Rúa de Ángel de Lema, 91" + "original": "PONTEVEDRA-UNIVERSIDAD" }, - "latitude": 42.250421216, - "longitude": -8.685464716, - "lines": [ - "C3d", - "10" - ] + "latitude": 42.4388295, + "longitude": -8.6303782, + "lines": [] }, { - "stopId": 270, + "stopId": "renfe:31308", "name": { - "original": "Rúa de Desiderio Pernas Arquitecto, 1" + "original": "LALIN" }, - "latitude": 42.18920151, - "longitude": -8.810340862, - "lines": [ - "C3d", - "10" - ] + "latitude": 42.6325351, + "longitude": -8.1426426, + "lines": [] }, { - "stopId": 280, + "stopId": "vitrasa:100", "name": { - "original": "Rúa do Arquitecto Antonio Cominges, 38" + "original": "Avda. do Alcalde Lavadores, 125" }, - "latitude": 42.189490674, - "longitude": -8.808107114, + "latitude": 42.219008975, + "longitude": -8.69606935, "lines": [ - "C3d", - "10" + "6" ] }, { - "stopId": 290, + "stopId": "vitrasa:1000", "name": { - "original": "Rúa do Arquitecto Gómez Román, 37" + "original": "Avda. da Atlántida, 109" }, - "latitude": 42.190149471, - "longitude": -8.803788225, + "latitude": 42.221220508, + "longitude": -8.767194468, "lines": [ - "C3d", - "10" + "10", + "15B", + "15C" ] }, { - "stopId": 310, + "stopId": "vitrasa:10061", "name": { - "original": "Rúa do Arquitecto Antonio Cominges, 4" + "original": "Estrada de San Xoán, 193" }, - "latitude": 42.190850463, - "longitude": -8.80358845, + "latitude": 42.185277472, + "longitude": -8.741558953, "lines": [ - "C3d", - "10" + "17" ] }, { - "stopId": 320, + "stopId": "vitrasa:1010", "name": { - "original": "Rúa do Arquitecto Antonio Cominges, 70" + "original": "Avda. da Atlántida, 136" }, - "latitude": 42.189221331, - "longitude": -8.811730246, + "latitude": 42.221479642, + "longitude": -8.767482698, "lines": [ - "C3d", - "10" + "10", + "15B", + "15C", + "N1" ] }, { - "stopId": 330, + "stopId": "vitrasa:1020", "name": { - "original": "Rúa do Arquitecto Antonio Cominges, 90" + "original": "Avda. da Atlántida, 150" }, - "latitude": 42.187213169, - "longitude": -8.813069201, + "latitude": 42.222764778, + "longitude": -8.769405842, "lines": [ - "C3d", - "10" + "10", + "15B", + "15C", + "N1" ] }, { - "stopId": 340, + "stopId": "vitrasa:1030", "name": { - "original": "Rúa de Aragón, 116" + "original": "Avda. da Atlántida, 25" }, - "latitude": 42.238036494, - "longitude": -8.700921187, + "latitude": 42.223219677, + "longitude": -8.754753277, "lines": [ - "4A", - "H3" + "10", + "15B", + "15C" ] }, { - "stopId": 350, + "stopId": "vitrasa:1040", "name": { - "original": "Rúa de Aragón, 162" + "original": "Avda. da Atlántida, 32" }, - "latitude": 42.240488915, - "longitude": -8.700357923, + "latitude": 42.223237503, + "longitude": -8.755707801, "lines": [ - "4A", - "H3" + "10", + "15B", + "15C", + "N1" ] }, { - "stopId": 360, + "stopId": "vitrasa:1050", "name": { - "original": "Rúa de Aragón, 193" + "original": "Avda. da Atlántida, 71" }, - "latitude": 42.24013184, - "longitude": -8.700947033, + "latitude": 42.221875354, + "longitude": -8.760935381, "lines": [ - "4A", - "H3" + "10", + "15B", + "15C" ] }, { - "stopId": 370, + "stopId": "vitrasa:1060", "name": { - "original": "Rúa de Aragón, 212" + "original": "Avda. da Atlántida, 84" }, - "latitude": 42.242101304, - "longitude": -8.698394546, + "latitude": 42.221789505, + "longitude": -8.759905458, "lines": [ - "4A", - "H3" + "10", + "15B", + "15C", + "N1" ] }, { - "stopId": 380, + "stopId": "vitrasa:1070", "name": { - "original": "Rúa de Aragón, 221" + "original": "Avda. da Atlántida, 114" }, - "latitude": 42.242091376, - "longitude": -8.698668131, + "latitude": 42.221148357, + "longitude": -8.764660969, "lines": [ - "4A", - "H3" + "10", + "15B", + "15C", + "N1" ] }, { - "stopId": 390, + "stopId": "vitrasa:110", "name": { - "original": "Rúa de Aragón, 26" + "original": "Avda. do Alcalde Lavadores, 171" }, - "latitude": 42.233174046, - "longitude": -8.702380309, + "latitude": 42.215074591, + "longitude": -8.696738405, "lines": [ - "4A", - "H3" + "6" ] }, { - "stopId": 400, + "stopId": "vitrasa:1110", "name": { - "original": "Rúa de Aragón, 91" + "original": "Praza Ribeira do Berbés" }, - "latitude": 42.235598195, - "longitude": -8.701426538, + "latitude": 42.237821273, + "longitude": -8.729666379, "lines": [ - "4A", - "H3" + "A", + "5B", + "9B", + "11" ] }, { - "stopId": 410, + "stopId": "vitrasa:1120", "name": { - "original": "Rúa de Aragón, 82" + "original": "Avda. de Beiramar (fronte Casa do Mar)" }, - "latitude": 42.235524387, - "longitude": -8.701248417, + "latitude": 42.23416729, + "longitude": -8.733331094, "lines": [ - "4A", - "H3" + "6", + "9B", + "15B", + "28" ] }, { - "stopId": 420, + "stopId": "vitrasa:1130", "name": { - "original": "Rúa de Aragón, 147" + "original": "Avda. de Beiramar (Peiraos auxiliares)" }, - "latitude": 42.238092485, - "longitude": -8.701156245, + "latitude": 42.231238831, + "longitude": -8.735255297, "lines": [ - "4A", - "H3" + "6", + "9B", + "15B", + "28" ] }, { - "stopId": 530, + "stopId": "vitrasa:1140", "name": { - "original": "Avda. de Ricardo Mella (Estación Coruxo)" + "original": "Avda. de Beiramar (Freire)" }, - "latitude": 42.193562859, - "longitude": -8.78173994, + "latitude": 42.225068475, + "longitude": -8.74774586, "lines": [ - "12A" + "6", + "9B" ] }, { - "stopId": 540, + "stopId": "vitrasa:1150", "name": { - "original": "Avda. de Ricardo Mella (fronte 223)" + "original": "Rúa da Ribeira do Berbés" }, - "latitude": 42.189424424, - "longitude": -8.790733064, + "latitude": 42.237384264, + "longitude": -8.729603006, "lines": [ - "12A" + "C1", + "C3d", + "A", + "5A", + "9B", + "10", + "15B", + "15C", + "28", + "N4", + "H1" ] }, { - "stopId": 560, + "stopId": "vitrasa:1160", "name": { - "original": "Avda. de Ricardo Mella, 518" + "original": "Avda. de Beiramar (Sto. Domingo)" }, - "latitude": 42.181015915, - "longitude": -8.807696921, + "latitude": 42.225759663, + "longitude": -8.743239749, "lines": [ - "10" + "6", + "9B" ] }, { - "stopId": 570, + "stopId": "vitrasa:120", "name": { - "original": "Avda. de Ricardo Mella, 250" + "original": "Avda. do Alcalde Lavadores, 8" }, - "latitude": 42.195225102, - "longitude": -8.775226375, + "latitude": 42.223288295, + "longitude": -8.700954873, "lines": [ - "12A" + "6" ] }, { - "stopId": 572, + "stopId": "vitrasa:1200", "name": { - "original": "Estrada de Madrid, 210" + "original": "Avda. de Beiramar, 51" }, - "latitude": 42.214058797, - "longitude": -8.672946954, + "latitude": 42.234233798, + "longitude": -8.73312316, "lines": [ - "12B", - "15B", - "15C", - "U2" + "10", + "15B" ] }, { - "stopId": 580, + "stopId": "vitrasa:1210", "name": { - "original": "Avda. de Ricardo Mella, 135" + "original": "Avda. de Beiramar, 61" }, - "latitude": 42.195766012, - "longitude": -8.773648966, + "latitude": 42.230811976, + "longitude": -8.735364934, "lines": [ - "12A" + "10", + "15B" ] }, { - "stopId": 600, + "stopId": "vitrasa:1220", "name": { - "original": "Avda. de Ricardo Mella, 273" + "original": "Avda. de Buenos Aires, 46" }, - "latitude": 42.189927171, - "longitude": -8.800634184, + "latitude": 42.247097055, + "longitude": -8.693109251, "lines": [ - "C3d", + "5A", "10", - "12A" + "31", + "U2", + "H2", + "H3", + "PSA 1" ] }, { - "stopId": 620, + "stopId": "vitrasa:1230", "name": { - "original": "Avda. de Ricado Mella, 165" + "original": "Avda. de Buenos Aires, 49" }, - "latitude": 42.1935678, - "longitude": -8.781529566, + "latitude": 42.247251925, + "longitude": -8.693122662, "lines": [ - "12A" + "5B", + "10", + "N1", + "H3", + "VTS" ] }, { - "stopId": 630, + "stopId": "vitrasa:1240", "name": { - "original": "Avda. de Ricardo Mella, 223" + "original": "Avda. de Buenos Aires, 8" }, - "latitude": 42.189304527, - "longitude": -8.79068363, + "latitude": 42.249128205, + "longitude": -8.69514773, "lines": [ - "12A" + "5A", + "10", + "31", + "U2", + "H2", + "H3", + "PSA 1" ] }, { - "stopId": 650, + "stopId": "vitrasa:1250", "name": { - "original": "Avda. de Ricardo Mella, 289" + "original": "Avda. de Castelao, 16" }, - "latitude": 42.181065441, - "longitude": -8.807509871, + "latitude": 42.219730396, + "longitude": -8.737456513, "lines": [ "C3d", + "4A", + "4C", + "5B", "10", - "12A" + "12A", + "13", + "15A", + "PSA 1", + "PSA 4" ] }, { - "stopId": 660, + "stopId": "vitrasa:1260", "name": { - "original": "Avda. do Alcalde Portanet, 34" + "original": "Avda. de Castelao, 21" }, - "latitude": 42.211494566, - "longitude": -8.736022397, + "latitude": 42.219775977, + "longitude": -8.736255523, "lines": [ - "7", - "12B", - "17", - "H1", - "VTS" + "C3i", + "4A", + "4C", + "5B", + "10", + "11", + "12A", + "15A", + "N1", + "U1" ] }, { - "stopId": 680, + "stopId": "vitrasa:1270", "name": { - "original": "Avda. do Aeroporto (Aeroclub)" + "original": "Avda. de Castelao, 50" }, - "latitude": 42.229005723, - "longitude": -8.634356866, + "latitude": 42.218704937, + "longitude": -8.74254446, "lines": [ - "A" + "C3d", + "4A", + "4C", + "5B", + "10", + "12A", + "13", + "15A", + "PSA 1", + "PSA 4" ] }, { - "stopId": 690, + "stopId": "vitrasa:1280", "name": { - "original": "Avda. do Aeroporto, 656" + "original": "Avda. de Castelao, 41" }, - "latitude": 42.233064093, - "longitude": -8.642742935, + "latitude": 42.218523315, + "longitude": -8.74223465, "lines": [ - "A", - "25" + "C3i", + "4A", + "4C", + "10", + "11", + "12A", + "15A", + "N1", + "U1" ] }, { - "stopId": 700, + "stopId": "vitrasa:1290", "name": { - "original": "Avda. do Aeroporto (Colexio)" + "original": "Avda. de Castelao, 54" }, - "latitude": 42.228674047, - "longitude": -8.633340309, + "latitude": 42.218158263, + "longitude": -8.745797727, "lines": [ - "A" + "C3d", + "4A", + "4C", + "5B", + "10", + "12A", + "13", + "15A", + "N4", + "PSA 1", + "PSA 4" ] }, { - "stopId": 710, + "stopId": "vitrasa:130", "name": { - "original": "Rúa de Aragón (Instituto)" + "original": "Avda. do Alcalde Lavadores, 102" }, - "latitude": 42.232478958, - "longitude": -8.701988706, + "latitude": 42.219001694, + "longitude": -8.696198267, "lines": [ - "A", - "4A", - "9B", - "24", - "27", - "28" + "6" ] }, { - "stopId": 720, + "stopId": "vitrasa:1300", "name": { - "original": "Avda. do Aeroporto, 215" + "original": "Avda. de Castelao, 68" }, - "latitude": 42.235739016, - "longitude": -8.684254232, + "latitude": 42.217466378, + "longitude": -8.751245499, "lines": [ - "A", - "9B", - "27" + "C3d", + "4A", + "4C", + "5B", + "10", + "12A", + "13", + "15A", + "N4", + "PSA 1", + "PSA 4" ] }, { - "stopId": 730, + "stopId": "vitrasa:1310", "name": { - "original": "Avda. do Aeroporto, 130" + "original": "Avda. de Castelao, 73" }, - "latitude": 42.231109162, - "longitude": -8.690501398, + "latitude": 42.217705528, + "longitude": -8.747753325, "lines": [ - "A", - "9B", - "27" + "C3i", + "4A", + "4C", + "10", + "11", + "12A", + "15A", + "N1", + "N4", + "U1" ] }, { - "stopId": 740, + "stopId": "vitrasa:1320", "name": { - "original": "Avda. do Aeroporto, 181" + "original": "Avda. de Castelao, 87" }, - "latitude": 42.233560754, - "longitude": -8.686937524, + "latitude": 42.217302224, + "longitude": -8.751104752, "lines": [ - "A", - "9B", - "27" + "C3i", + "10", + "12A", + "N1", + "U1" ] }, { - "stopId": 750, + "stopId": "vitrasa:1330", "name": { - "original": "Avda. do Aeroporto, 184" + "original": "Avda. de Castrelos (Pavillón)" }, - "latitude": 42.233103986, - "longitude": -8.68716283, + "latitude": 42.219553947, + "longitude": -8.732509436, "lines": [ "A", - "9B", - "27" + "16", + "23", + "27", + "H2" ] }, { - "stopId": 760, + "stopId": "vitrasa:1340", "name": { - "original": "Avda. do Aeroporto, 240" + "original": "Avda. de Castrelos (Parque)" }, - "latitude": 42.236775611, - "longitude": -8.683736566, + "latitude": 42.212870645, + "longitude": -8.732131792, "lines": [ - "A", - "9B", - "27" + "27", + "H2" ] }, { - "stopId": 770, + "stopId": "vitrasa:1350", "name": { - "original": "Avda. do Aeroporto, 273" + "original": "Avda. de Castrelos, 121" }, - "latitude": 42.238939528, - "longitude": -8.681422497, + "latitude": 42.208026488, + "longitude": -8.7312098, "lines": [ - "A", - "9B", + "7", + "12B", + "17", "27" ] }, { - "stopId": 780, + "stopId": "vitrasa:1360", "name": { - "original": "Avda. do Aeroporto, 298" + "original": "Avda. de Castrelos, 16" }, - "latitude": 42.238554288, - "longitude": -8.680663432, + "latitude": 42.219613217, + "longitude": -8.732629194, "lines": [ - "A", - "9B", - "27" + "7", + "12B", + "17", + "27", + "H2", + "VTS", + "PTL" ] }, { - "stopId": 790, + "stopId": "vitrasa:1380", "name": { - "original": "Avda. do Aeroporto, 325" + "original": "Avda. de Castrelos, 179" }, - "latitude": 42.237426811, - "longitude": -8.675474476, + "latitude": 42.20533568, + "longitude": -8.730078621, "lines": [ - "A", - "9B", - "27" + "7", + "12B", + "17", + "U1" ] }, { - "stopId": 800, + "stopId": "vitrasa:1390", "name": { - "original": "Avda. do Aeroporto, 328" + "original": "Avda. de Castrelos, 186" }, - "latitude": 42.237801674, - "longitude": -8.676524783, + "latitude": 42.212735556, + "longitude": -8.732314182, "lines": [ "A", - "9B", - "27" + "7", + "12B", + "17", + "27", + "U1", + "H2", + "H", + "VTS", + "PTL" ] }, { - "stopId": 810, + "stopId": "vitrasa:140", "name": { - "original": "Avda. do Aeroporto, 350" + "original": "Avda. do Alcalde Lavadores, 29" }, - "latitude": 42.235521261, - "longitude": -8.67465521, + "latitude": 42.223444913, + "longitude": -8.700801996, "lines": [ - "A", - "9B", - "27" + "6" ] }, { - "stopId": 820, + "stopId": "vitrasa:1400", "name": { - "original": "Avda. do Aeroporto, 377" + "original": "Avda. de Castrelos, 202" }, - "latitude": 42.234766626, - "longitude": -8.671305131, + "latitude": 42.210706683, + "longitude": -8.732237372, "lines": [ "A", - "9B" + "7", + "12B", + "17", + "27", + "U1", + "H1", + "H2", + "H", + "PTL" ] }, { - "stopId": 830, + "stopId": "vitrasa:1410", "name": { - "original": "Avda. do Aeroporto, 378" + "original": "Avda. de Castrelos, 13" }, - "latitude": 42.234673289, - "longitude": -8.671348046, + "latitude": 42.218060161, + "longitude": -8.732450427, "lines": [ "A", - "9B", - "27" + "16", + "23", + "27", + "H2" ] }, { - "stopId": 840, + "stopId": "vitrasa:14101", "name": { - "original": "Avda. do Aeroporto, 43" + "original": "Estrada da Garrida, 165" }, - "latitude": 42.234904325, - "longitude": -8.699245802, + "latitude": 42.168008539, + "longitude": -8.710415438, "lines": [ - "A", - "4A", - "9B", - "24", - "27", - "28" + "7" ] }, { - "stopId": 850, + "stopId": "vitrasa:14102", "name": { - "original": "Avda. do Aeroporto, 423" + "original": "Estrada da Garrida, 108" }, - "latitude": 42.23630176, - "longitude": -8.665791599, + "latitude": 42.168282882, + "longitude": -8.710066751, "lines": [ - "A", - "9B" + "7" ] }, { - "stopId": 860, + "stopId": "vitrasa:14105", "name": { - "original": "Avda. do Aeroporto, 446" + "original": "Ciencias Xurídicas (CUVI)" }, - "latitude": 42.235612667, - "longitude": -8.666529207, + "latitude": 42.167237978, + "longitude": -8.681135704, "lines": [ "A", - "9B", - "27" + "15C", + "U1", + "U2" ] }, { - "stopId": 870, + "stopId": "vitrasa:14106", "name": { - "original": "Avda. do Aeroporto, 447" + "original": "Avda. do Aeroporto, 92" }, - "latitude": 42.23543058, - "longitude": -8.66197943, + "latitude": 42.234161582, + "longitude": -8.695074564, "lines": [ "A", - "9B" + "9B", + "27" ] }, { - "stopId": 880, + "stopId": "vitrasa:14107", "name": { - "original": "Avda. do Aeroporto, 484" + "original": "Camiño Padín (Rotonda Autoestrada)" }, - "latitude": 42.23544051, - "longitude": -8.662354939, + "latitude": 42.257847205, + "longitude": -8.677696507, "lines": [ - "A", - "9B", - "27" + "10" ] }, { - "stopId": 890, + "stopId": "vitrasa:14108", "name": { - "original": "Avda. do Aeroporto, 491" + "original": "Avda. da Ponte (antes desvío Autovía)" }, - "latitude": 42.232066419, - "longitude": -8.653842977, + "latitude": 42.21401741, + "longitude": -8.67133083, "lines": [ - "A" + "15B", + "15C" ] }, { - "stopId": 900, + "stopId": "vitrasa:14111", "name": { - "original": "Avda. do Aeroporto, 531" + "original": "Estrada de Bembrive (Centro Saúde)" }, - "latitude": 42.233527998, - "longitude": -8.648237616, + "latitude": 42.204262657, + "longitude": -8.684801801, "lines": [ - "A" + "6", + "14" ] }, { - "stopId": 910, + "stopId": "vitrasa:14112", "name": { - "original": "Avda. do Aeroporto, 54" + "original": "Estrada de Bembrive (Alameda)" }, - "latitude": 42.234679919, - "longitude": -8.699623994, + "latitude": 42.204047198, + "longitude": -8.684697288, "lines": [ - "A", - "4A", - "9B", - "24", - "27", - "28" + "6", + "14" ] }, { - "stopId": 920, + "stopId": "vitrasa:14113", "name": { - "original": "Avda. do Aeroporto (cruce Camiño das Cereixeiras)" + "original": "Estrada da Coutada, 20" }, - "latitude": 42.233499069, - "longitude": -8.643325214, + "latitude": 42.193458577, + "longitude": -8.702065856, "lines": [ - "A" + "6", + "27" ] }, { - "stopId": 930, + "stopId": "vitrasa:14117", "name": { - "original": "Avda. do Aeroporto, 570" + "original": "Rúa do Couto de San Honorato, 26" }, - "latitude": 42.231979036, - "longitude": -8.65372496, + "latitude": 42.228574702, + "longitude": -8.712864548, "lines": [ - "A" + "H2" ] }, { - "stopId": 940, + "stopId": "vitrasa:14119", "name": { - "original": "Avda. do Aeroporto, 605" + "original": "Rúa do Couto de San Honorato, 80" }, - "latitude": 42.230493878, - "longitude": -8.638023273, + "latitude": 42.229320789, + "longitude": -8.710390551, + "lines": [ + "H2" + ] + }, + { + "stopId": "vitrasa:14121", + "name": { + "original": "Rúa da Reconquista, 2" + }, + "latitude": 42.238625474, + "longitude": -8.723242095, "lines": [ "A" ] }, { - "stopId": 950, + "stopId": "vitrasa:14122", "name": { - "original": "Avda. do Aeroporto, 614" + "original": "Avda. do Alcalde Gregorio Espino, 9" }, - "latitude": 42.233626818, - "longitude": -8.647811163, + "latitude": 42.231584097, + "longitude": -8.706968521, "lines": [ - "A", - "25" + "4C", + "23", + "31", + "H2", + "PSA 4" ] }, { - "stopId": 960, + "stopId": "vitrasa:14123", "name": { - "original": "Avda. do Aeroporto, 686" + "original": "Rúa do Porriño, 9" }, - "latitude": 42.230918888, - "longitude": -8.638532893, + "latitude": 42.214127819, + "longitude": -8.752027594, "lines": [ - "A" + "C3d", + "C3i", + "4A", + "4C", + "5B", + "11", + "15A", + "15B", + "N4", + "U1" ] }, { - "stopId": 970, + "stopId": "vitrasa:14124", "name": { - "original": "Avda. do Aeroporto, 91" + "original": "Rúa de Eduardo Cabello (fronte Igrexa)" }, - "latitude": 42.232787318, - "longitude": -8.693473285, + "latitude": 42.226569499, + "longitude": -8.752773946, "lines": [ - "A", - "9B", - "27" + "C3d", + "C3i", + "6" ] }, { - "stopId": 980, + "stopId": "vitrasa:14125", "name": { - "original": "Avda. da Atlántida, 99" + "original": "Rúa do Porriño (fronte 9)" }, - "latitude": 42.221170087, - "longitude": -8.763656977, + "latitude": 42.213869651, + "longitude": -8.751990789, "lines": [ - "10", - "15B", - "15C" + "C3d", + "C3i", + "4A", + "4C", + "15A", + "PSA 1", + "PSA 4" ] }, { - "stopId": 990, + "stopId": "vitrasa:14126", "name": { - "original": "Avda. da Atlántida (fronte 148)" + "original": "Rúa da Travesía de Vigo, 194" }, - "latitude": 42.222451366, - "longitude": -8.769134894, + "latitude": 42.242494425, + "longitude": -8.699249038, "lines": [ - "10", - "15B", - "15C" + "C3i", + "5A", + "N1", + "VTS" ] }, { - "stopId": 1000, + "stopId": "vitrasa:14127", "name": { - "original": "Avda. da Atlántida, 109" + "original": "Avda. de Buenos Aires, 13" }, - "latitude": 42.221220508, - "longitude": -8.767194468, + "latitude": 42.249306896, + "longitude": -8.695179916, "lines": [ + "5B", "10", - "15B", - "15C" + "N1", + "H3", + "VTS" ] }, { - "stopId": 1010, + "stopId": "vitrasa:14128", "name": { - "original": "Avda. da Atlántida, 136" + "original": "Camiño do Caramuxo (fronte 9)" }, - "latitude": 42.221479642, - "longitude": -8.767482698, + "latitude": 42.20733292, + "longitude": -8.752159103, "lines": [ - "10", - "15B", - "15C", - "N1" + "5A" ] }, { - "stopId": 1020, + "stopId": "vitrasa:14129", "name": { - "original": "Avda. da Atlántida, 150" + "original": "Camiño do Caramuxo, 11" }, - "latitude": 42.222764778, - "longitude": -8.769405842, + "latitude": 42.20723039, + "longitude": -8.752592351, "lines": [ - "10", - "15B", - "15C", - "N1" + "5A" ] }, { - "stopId": 1030, + "stopId": "vitrasa:14131", "name": { - "original": "Avda. da Atlántida, 25" + "original": "Rúa de Tomás Paredes, 4" }, - "latitude": 42.223219677, - "longitude": -8.754753277, + "latitude": 42.221948768, + "longitude": -8.753171211, "lines": [ - "10", - "15B", - "15C" + "C3i", + "10" ] }, { - "stopId": 1040, + "stopId": "vitrasa:14132", "name": { - "original": "Avda. da Atlántida, 32" + "original": "Rúa de Sanjurjo Badía, 252" }, - "latitude": 42.223237503, - "longitude": -8.755707801, + "latitude": 42.249307631, + "longitude": -8.696542008, "lines": [ + "C3d", + "5A", + "5B", "10", - "15B", - "15C", - "N1" + "17", + "31", + "U2", + "H2", + "H3", + "PSA 1" ] }, { - "stopId": 1050, + "stopId": "vitrasa:14133", "name": { - "original": "Avda. da Atlántida, 71" + "original": "Avda. de Galicia, 37" }, - "latitude": 42.221875354, - "longitude": -8.760935381, + "latitude": 42.250977575, + "longitude": -8.694471881, "lines": [ - "10", - "15B", - "15C" + "C3i", + "17" ] }, { - "stopId": 1060, + "stopId": "vitrasa:14134", "name": { - "original": "Avda. da Atlántida, 84" + "original": "Avda. de Galicia, 182" }, - "latitude": 42.221789505, - "longitude": -8.759905458, + "latitude": 42.253208793, + "longitude": -8.686995591, "lines": [ - "10", - "15B", - "15C", - "N1" + "C3d" ] }, { - "stopId": 1070, + "stopId": "vitrasa:14135", "name": { - "original": "Avda. da Atlántida, 114" + "original": "Rúa de Santo Amaro (Praza de España)" }, - "latitude": 42.221148357, - "longitude": -8.764660969, + "latitude": 42.229174145, + "longitude": -8.720143055, "lines": [ - "10", - "15B", - "15C", - "N1" + "C1" ] }, { - "stopId": 1110, + "stopId": "vitrasa:14136", "name": { - "original": "Praza Ribeira do Berbés" + "original": "Avda. de Galicia, 18" }, - "latitude": 42.237821273, - "longitude": -8.729666379, + "latitude": 42.250484372, + "longitude": -8.694878804, "lines": [ - "A", - "5B", - "9B", - "11" + "C3d", + "17" ] }, { - "stopId": 1120, + "stopId": "vitrasa:14137", "name": { - "original": "Avda. de Beiramar (fronte Casa do Mar)" + "original": "Estrada Matamá Pazo (Igrexa)" }, - "latitude": 42.23416729, - "longitude": -8.733331094, + "latitude": 42.200003406, + "longitude": -8.753169, "lines": [ - "6", - "9B", - "15B", - "28" + "29" ] }, { - "stopId": 1130, + "stopId": "vitrasa:14138", "name": { - "original": "Avda. de Beiramar (Peiraos auxiliares)" + "original": "Estrada de Madrid (Campo de Fútbol)" }, - "latitude": 42.231238831, - "longitude": -8.735255297, + "latitude": 42.216459201, + "longitude": -8.678591709, "lines": [ - "6", - "9B", + "12B", "15B", - "28" + "15C" ] }, { - "stopId": 1140, + "stopId": "vitrasa:14139", "name": { - "original": "Avda. de Beiramar (Freire)" + "original": "Avda. de E. Martínez Garrido, 27" }, - "latitude": 42.225068475, - "longitude": -8.74774586, + "latitude": 42.227492758, + "longitude": -8.700413366, "lines": [ "6", - "9B" + "25", + "31" ] }, { - "stopId": 1150, + "stopId": "vitrasa:14140", "name": { - "original": "Rúa da Ribeira do Berbés" + "original": "Avda. de E. Martínez Garrido, 30" }, - "latitude": 42.237384264, - "longitude": -8.729603006, - "lines": [ - "C1", - "C3d", - "A", - "5A", - "9B", - "10", - "15B", - "15C", - "28", + "latitude": 42.228210877, + "longitude": -8.699999354, + "lines": [ + "4C", + "6", + "23", + "25", + "31", "N4", - "H1" + "PSA 4", + "VTS" ] }, { - "stopId": 1160, + "stopId": "vitrasa:14141", "name": { - "original": "Avda. de Beiramar (Sto. Domingo)" + "original": "Rúa de Jenaro de la Fuente, 43" }, - "latitude": 42.225759663, - "longitude": -8.743239749, + "latitude": 42.231379202, + "longitude": -8.699876213, "lines": [ - "6", - "9B" + "11", + "15A", + "15B", + "15C", + "H3" ] }, { - "stopId": 1200, + "stopId": "vitrasa:14142", "name": { - "original": "Avda. de Beiramar, 51" + "original": "Avda. da Hispanidade, 22" }, - "latitude": 42.234233798, - "longitude": -8.73312316, + "latitude": 42.231463434, + "longitude": -8.728844425, "lines": [ - "10", - "15B" + "16" ] }, { - "stopId": 1210, + "stopId": "vitrasa:14143", "name": { - "original": "Avda. de Beiramar, 61" + "original": "Avda. da Hispanidade, 38" }, - "latitude": 42.230811976, - "longitude": -8.735364934, + "latitude": 42.229753483, + "longitude": -8.729002675, "lines": [ - "10", - "15B" + "16" ] }, { - "stopId": 1220, + "stopId": "vitrasa:14144", "name": { - "original": "Avda. de Buenos Aires, 46" + "original": "Avda. da Hispanidade, 82" }, - "latitude": 42.247097055, - "longitude": -8.693109251, + "latitude": 42.226760436, + "longitude": -8.727385303, "lines": [ - "5A", - "10", - "31", - "U2", - "H2", - "H3", - "PSA 1" + "16" ] }, { - "stopId": 1230, + "stopId": "vitrasa:14150", "name": { - "original": "Avda. de Buenos Aires, 49" + "original": "Rúa do Padre Don Rúa, 1" }, - "latitude": 42.247251925, - "longitude": -8.693122662, + "latitude": 42.232076561, + "longitude": -8.719055236, "lines": [ - "5B", - "10", - "N1", - "H3", - "VTS" + "14", + "18A" ] }, { - "stopId": 1240, + "stopId": "vitrasa:14152", "name": { - "original": "Avda. de Buenos Aires, 8" + "original": "Rúa do Monte Calvario, 4" }, - "latitude": 42.249128205, - "longitude": -8.69514773, + "latitude": 42.204815402, + "longitude": -8.687168969, "lines": [ - "5A", - "10", - "31", - "U2", - "H2", - "H3", - "PSA 1" + "14" ] }, { - "stopId": 1250, + "stopId": "vitrasa:14153", "name": { - "original": "Avda. de Castelao, 16" + "original": "Estrada de Bembrive, 173" }, - "latitude": 42.219730396, - "longitude": -8.737456513, + "latitude": 42.205357233, + "longitude": -8.692495739, "lines": [ - "C3d", - "4A", - "4C", - "5B", - "10", - "12A", - "13", - "15A", - "PSA 1", - "PSA 4" + "6", + "14" ] }, { - "stopId": 1260, + "stopId": "vitrasa:14154", "name": { - "original": "Avda. de Castelao, 21" + "original": "Rúa das Chans (fronte 56)" }, - "latitude": 42.219775977, - "longitude": -8.736255523, + "latitude": 42.19360258, + "longitude": -8.677258993, "lines": [ - "C3i", - "4A", - "4C", - "5B", - "10", - "11", - "12A", - "15A", - "N1", - "U1" + "14" ] }, { - "stopId": 1270, + "stopId": "vitrasa:14156", "name": { - "original": "Avda. de Castelao, 50" + "original": "Rúa de Xeme (cruce Camiño da Carballeira)" }, - "latitude": 42.218704937, - "longitude": -8.74254446, + "latitude": 42.203378431, + "longitude": -8.696666863, "lines": [ - "C3d", - "4A", - "4C", - "5B", - "10", - "12A", - "13", - "15A", - "PSA 1", - "PSA 4" + "14" ] }, { - "stopId": 1280, + "stopId": "vitrasa:14157", "name": { - "original": "Avda. de Castelao, 41" + "original": "Rúa do Xeme (cruce Rúa de Eifonso)" }, - "latitude": 42.218523315, - "longitude": -8.74223465, + "latitude": 42.202979066, + "longitude": -8.694065121, "lines": [ - "C3i", - "4A", - "4C", - "10", - "11", - "12A", - "15A", - "N1", - "U1" + "14" ] }, { - "stopId": 1290, + "stopId": "vitrasa:14161", "name": { - "original": "Avda. de Castelao, 54" + "original": "Rúa de López Mora, 62" }, - "latitude": 42.218158263, - "longitude": -8.745797727, + "latitude": 42.224130699, + "longitude": -8.732568248, "lines": [ - "C3d", - "4A", - "4C", - "5B", - "10", - "12A", - "13", - "15A", - "N4", - "PSA 1", - "PSA 4" + "VTS" ] }, { - "stopId": 1300, + "stopId": "vitrasa:14162", "name": { - "original": "Avda. de Castelao, 68" + "original": "Avda. da Florida, 82" }, - "latitude": 42.217466378, - "longitude": -8.751245499, + "latitude": 42.211371871, + "longitude": -8.746523782, "lines": [ - "C3d", - "4A", - "4C", - "5B", - "10", - "12A", - "13", - "15A", - "N4", - "PSA 1", - "PSA 4" + "5A", + "11", + "29", + "VTS" ] }, { - "stopId": 1310, + "stopId": "vitrasa:14163", "name": { - "original": "Avda. de Castelao, 73" + "original": "Avda. da Florida (fronte 82)" }, - "latitude": 42.217705528, - "longitude": -8.747753325, + "latitude": 42.211442202, + "longitude": -8.746227469, "lines": [ - "C3i", - "4A", - "4C", - "10", + "5A", "11", - "12A", - "15A", - "N1", - "N4", - "U1" + "29" ] }, { - "stopId": 1320, + "stopId": "vitrasa:14164", "name": { - "original": "Avda. de Castelao, 87" + "original": "Rúa de Tomás A. Alonso, 136" }, - "latitude": 42.217302224, - "longitude": -8.751104752, + "latitude": 42.225172437, + "longitude": -8.744777354, "lines": [ "C3i", - "10", - "12A", - "N1", - "U1" + "15B", + "15C", + "N1" ] }, { - "stopId": 1330, + "stopId": "vitrasa:14165", "name": { - "original": "Avda. de Castrelos (Pavillón)" + "original": "Rúa de Tomás A. Alonso, 193" }, - "latitude": 42.219553947, - "longitude": -8.732509436, + "latitude": 42.224905029, + "longitude": -8.745285775, "lines": [ - "A", - "16", - "23", - "27", - "H2" + "C3d", + "13", + "15B", + "15C", + "U1", + "H" ] }, { - "stopId": 1340, + "stopId": "vitrasa:14166", "name": { - "original": "Avda. de Castrelos (Parque)" + "original": "Avda. das Camelias, 114" }, - "latitude": 42.212870645, - "longitude": -8.732131792, - "lines": [ - "27", - "H2" - ] - }, - { - "stopId": 1350, - "name": { - "original": "Avda. de Castrelos, 121" - }, - "latitude": 42.208026488, - "longitude": -8.7312098, + "latitude": 42.225142981, + "longitude": -8.729707944, "lines": [ + "4A", + "4C", + "5B", "7", + "12A", "12B", "17", - "27" + "27", + "PSA 4" ] }, { - "stopId": 1360, + "stopId": "vitrasa:14167", "name": { - "original": "Avda. de Castrelos, 16" + "original": "Beiramar - Pescadores" }, - "latitude": 42.219613217, - "longitude": -8.732629194, + "latitude": 42.225279021, + "longitude": -8.751908648, "lines": [ - "7", - "12B", - "17", - "27", - "H2", - "VTS", - "PTL" + "6", + "9B", + "28" ] }, { - "stopId": 1380, + "stopId": "vitrasa:14168", "name": { - "original": "Avda. de Castrelos, 179" + "original": "Avda. das Camelias, 113" }, - "latitude": 42.20533568, - "longitude": -8.730078621, + "latitude": 42.224928285, + "longitude": -8.729631509, "lines": [ - "7", + "4A", + "4C", + "11", "12B", "17", - "U1" + "27", + "N1" ] }, { - "stopId": 1390, + "stopId": "vitrasa:14169", "name": { - "original": "Avda. de Castrelos, 186" + "original": "Avda. das Camelias, 136" }, - "latitude": 42.212735556, - "longitude": -8.732314182, + "latitude": 42.22244224, + "longitude": -8.731271052, "lines": [ - "A", + "C1", + "4A", + "4C", + "5B", "7", + "12A", "12B", + "16", "17", "27", - "U1", - "H2", - "H", - "VTS", - "PTL" + "LZH", + "PSA 4" ] }, { - "stopId": 1400, + "stopId": "vitrasa:14170", "name": { - "original": "Avda. de Castrelos, 202" + "original": "Avda. de Samil (Praia da Punta)" }, - "latitude": 42.210706683, - "longitude": -8.732237372, + "latitude": 42.218831744, + "longitude": -8.77571001, "lines": [ - "A", - "7", - "12B", - "17", - "27", - "U1", - "H1", - "H2", - "H", - "PTL" + "10", + "15B", + "15C", + "N1" ] }, { - "stopId": 1410, + "stopId": "vitrasa:14171", "name": { - "original": "Avda. de Castrelos, 13" + "original": "Avda. de Samil (fronte Praia da Punta)" }, - "latitude": 42.218060161, - "longitude": -8.732450427, + "latitude": 42.218844713, + "longitude": -8.775459221, "lines": [ - "A", - "16", - "23", - "27", - "H2" + "10", + "15B", + "15C" ] }, { - "stopId": 1420, + "stopId": "vitrasa:14173", "name": { - "original": "Avda. de Castrelos, 297" + "original": "Rúa do Gaiteiro de Ricardo Portela (fronte Pavillón)" }, - "latitude": 42.201440099, - "longitude": -8.726409762, + "latitude": 42.235900754, + "longitude": -8.731391435, "lines": [ - "7" + "C1", + "C3d", + "A", + "5A", + "9B", + "15C", + "N4", + "H1" ] }, { - "stopId": 1430, + "stopId": "vitrasa:14174", "name": { - "original": "Avda. de Castrelos, 318" + "original": "Rúa do Padre Seixas (Parque da Bouza)" }, - "latitude": 42.203408408, - "longitude": -8.728817983, + "latitude": 42.211844516, + "longitude": -8.749287921, "lines": [ - "7", - "U1" + "11", + "16" ] }, { - "stopId": 1440, + "stopId": "vitrasa:14175", "name": { - "original": "Avda. de Castrelos, 339" + "original": "Rúa do Padre Seixas, 32" }, - "latitude": 42.198480135, - "longitude": -8.723827649, + "latitude": 42.211792864, + "longitude": -8.749617832, "lines": [ - "7" + "16" ] }, { - "stopId": 1450, + "stopId": "vitrasa:14177", "name": { - "original": "Avda. de Castrelos, 366" + "original": "Rúa de Fernando Conde (cruce Avda. da Gran Vía)" }, - "latitude": 42.201044695, - "longitude": -8.726112037, + "latitude": 42.22985125, + "longitude": -8.71972059, "lines": [ "7", - "U1" + "12A", + "12B", + "14", + "18A", + "27" ] }, { - "stopId": 1460, + "stopId": "vitrasa:14178", "name": { - "original": "Avda. de Castrelos, 396" + "original": "Rúa do Marqués de Alcedo (Parque)" }, - "latitude": 42.198867605, - "longitude": -8.72460549, + "latitude": 42.233009005, + "longitude": -8.724497604, "lines": [ "7", - "U1" + "12A", + "12B", + "27" ] }, { - "stopId": 1470, + "stopId": "vitrasa:14179", "name": { - "original": "Avda. de Castrelos, 399" + "original": "Rúa da Costa, 4" }, - "latitude": 42.194996678, - "longitude": -8.72097155, + "latitude": 42.213260612, + "longitude": -8.722562576, "lines": [ - "7" + "A", + "18B", + "18H" ] }, { - "stopId": 1480, + "stopId": "vitrasa:14180", "name": { - "original": "Avda. de Castrelos, 526" + "original": "Avda. de E. Martínez Garrido, 108" }, - "latitude": 42.19015727, - "longitude": -8.72109012, + "latitude": 42.224749197, + "longitude": -8.707320585, "lines": [ - "7", - "U1" + "4C", + "23", + "31", + "N4", + "PSA 4", + "VTS" ] }, { - "stopId": 1490, + "stopId": "vitrasa:14181", "name": { - "original": "Avda. de Castrelos, 67" + "original": "Camiño da Corredoura (Igrexa)" }, - "latitude": 42.210613294, - "longitude": -8.732057664, + "latitude": 42.210954716, + "longitude": -8.727776522, "lines": [ - "7", - "12B", - "17", - "27", - "H1", - "H2" + "A" ] }, { - "stopId": 1500, + "stopId": "vitrasa:14182", "name": { - "original": "Avda. de Castrelos, 58" + "original": "Rúa da Costa, 39" }, - "latitude": 42.217084821, - "longitude": -8.732530893, + "latitude": 42.211618245, + "longitude": -8.72147159, "lines": [ - "7", - "12B", - "17", - "27", - "H2", - "VTS", - "PTL" + "A", + "18B", + "18H" ] }, { - "stopId": 1510, + "stopId": "vitrasa:14183", "name": { - "original": "Avda. da Ponte, 80" + "original": "Rúa do Xalón (Colexio)" }, - "latitude": 42.215203365, - "longitude": -8.670416197, + "latitude": 42.220622235, + "longitude": -8.654888024, "lines": [ - "15B", - "15C" + "11" ] }, { - "stopId": 1520, + "stopId": "vitrasa:14184", "name": { - "original": "Avda. da Ponte, 83" + "original": "Rúa do Xalón, 5" }, - "latitude": 42.215400704, - "longitude": -8.671308533, + "latitude": 42.217384986, + "longitude": -8.657082399, "lines": [ - "15B", - "15C" + "11" ] }, { - "stopId": 1530, + "stopId": "vitrasa:14185", "name": { - "original": "Avda. da Ponte (fronte Grupo S. Gorxal)" + "original": "Rúa da Becerreira, 81" }, - "latitude": 42.212814417, - "longitude": -8.670537674, + "latitude": 42.219667098, + "longitude": -8.659470523, "lines": [ - "15B", - "15C" + "11" ] }, { - "stopId": 1540, + "stopId": "vitrasa:14186", "name": { - "original": "Avda. da Ponte, 15" + "original": "Rúa da Becerreira (fronte 64)" }, - "latitude": 42.221677429, - "longitude": -8.66978207, + "latitude": 42.218044517, + "longitude": -8.662618478, "lines": [ - "11", - "15A", - "15B", - "15C", - "VTS" + "11" ] }, { - "stopId": 1550, + "stopId": "vitrasa:14187", "name": { - "original": "Avda. da Ponte, 18" + "original": "Rúa da Becerreira, 1" }, - "latitude": 42.221299207, - "longitude": -8.670013709, + "latitude": 42.221588029, + "longitude": -8.662035851, "lines": [ - "11", - "15A", - "15B", - "15C" + "11" ] }, { - "stopId": 1560, + "stopId": "vitrasa:14188", "name": { - "original": "Avda. da Ponte, 31" + "original": "Rúa da Becerreira, 41" }, - "latitude": 42.219388605, - "longitude": -8.669172606, + "latitude": 42.217595578, + "longitude": -8.661414166, "lines": [ - "15A", - "15B", - "VTS" + "11" ] }, { - "stopId": 1570, + "stopId": "vitrasa:14189", "name": { - "original": "Avda. da Ponte, 47" + "original": "Rúa Molais, 84" }, - "latitude": 42.217957539, - "longitude": -8.669369577, + "latitude": 42.226081487, + "longitude": -8.654133203, "lines": [ - "15B", - "15C" + "11" ] }, { - "stopId": 1580, + "stopId": "vitrasa:14190", "name": { - "original": "Avda. da Ponte, 54" + "original": "Rúa de Severino Cobas, 196" }, - "latitude": 42.218393587, - "longitude": -8.669480106, + "latitude": 42.225080876, + "longitude": -8.683314171, "lines": [ - "15B", - "15C" + "25" ] }, { - "stopId": 1590, + "stopId": "vitrasa:14191", "name": { - "original": "Avda. de Galicia (Parque Riouxa)" + "original": "Camiño da Bouciña, 76" }, - "latitude": 42.256667905, - "longitude": -8.682575386, + "latitude": 42.223737557, + "longitude": -8.682141153, "lines": [ - "C3i" + "25" ] }, { - "stopId": 1600, + "stopId": "vitrasa:14192", "name": { - "original": "Avda. de Galicia, 103" + "original": "Rúa das Figueiras, 282" }, - "latitude": 42.251389209, - "longitude": -8.689369833, + "latitude": 42.231625599, + "longitude": -8.652046516, "lines": [ - "C3i" + "25" ] }, { - "stopId": 1610, + "stopId": "vitrasa:14193", "name": { - "original": "Avda. de Galicia, 146" + "original": "Avda. de Santa Mariña, 443" }, - "latitude": 42.251376198, - "longitude": -8.68920404, + "latitude": 42.230916628, + "longitude": -8.641628816, "lines": [ - "C3d" + "25" ] }, { - "stopId": 1620, + "stopId": "vitrasa:14194", "name": { - "original": "Avda. de Galicia, 139" + "original": "Avda. de Santa Mariña, 425" }, - "latitude": 42.253987165, - "longitude": -8.686196616, + "latitude": 42.228639377, + "longitude": -8.640978361, "lines": [ - "C3i" + "25" ] }, { - "stopId": 1630, + "stopId": "vitrasa:14195", "name": { - "original": "Avda. de Galicia, 165" + "original": "Avda. de Santa Mariña, 249" }, - "latitude": 42.255177674, - "longitude": -8.684734482, + "latitude": 42.226263256, + "longitude": -8.644091084, "lines": [ - "C3i" + "25" ] }, { - "stopId": 1640, + "stopId": "vitrasa:14196", "name": { - "original": "Avda. de Galicia, 200" + "original": "Avda. de Santa Mariña, 229" }, - "latitude": 42.254950083, - "longitude": -8.684862748, + "latitude": 42.225296, + "longitude": -8.649527921, "lines": [ - "C3d" + "25" ] }, { - "stopId": 1650, + "stopId": "vitrasa:14197", "name": { - "original": "Avda. de Galicia, 238" + "original": "Rúa Molais (cruce Rúa das Carballas)" }, - "latitude": 42.256910715, - "longitude": -8.68201353, + "latitude": 42.225912491, + "longitude": -8.653698801, "lines": [ - "C3d" + "25" ] }, { - "stopId": 1660, + "stopId": "vitrasa:14198", "name": { - "original": "Avda. de Galicia, 280" + "original": "Rúa do Riomao, 21" }, - "latitude": 42.259217959, - "longitude": -8.679666503, + "latitude": 42.227231301, + "longitude": -8.659997969, "lines": [ - "C3d" + "15A", + "25" ] }, { - "stopId": 1670, + "stopId": "vitrasa:14199", "name": { - "original": "Avda. de Galicia, 285" + "original": "Camiño da Bouciña, 79" }, - "latitude": 42.258365967, - "longitude": -8.680508997, + "latitude": 42.223755464, + "longitude": -8.682041911, "lines": [ - "C3i" + "25" ] }, { - "stopId": 1680, + "stopId": "vitrasa:1420", "name": { - "original": "Avda. de Galicia (Parque Cruce Balbarda)" + "original": "Avda. de Castrelos, 297" }, - "latitude": 42.251327471, - "longitude": -8.69260735, + "latitude": 42.201440099, + "longitude": -8.726409762, "lines": [ - "C3d" + "7" ] }, { - "stopId": 1690, + "stopId": "vitrasa:14200", "name": { - "original": "Avda. de Galicia, 71" + "original": "Rúa de Severino Cobas, 119" }, - "latitude": 42.251420909, - "longitude": -8.692153216, + "latitude": 42.225112655, + "longitude": -8.683402684, "lines": [ - "C3i" + "25" ] }, { - "stopId": 1710, + "stopId": "vitrasa:14201", "name": { - "original": "Avda. de Vigo, 6" + "original": "Avda. de Santa Mariña (cruce Avda. do Tranvía)" }, - "latitude": 42.274450823, - "longitude": -8.667138233, + "latitude": 42.226291056, + "longitude": -8.641647591, "lines": [ - "C3i" + "25" ] }, { - "stopId": 1720, + "stopId": "vitrasa:14202", "name": { - "original": "Avda. de Vigo, 95" + "original": "Rúa de Jenaro de la Fuente, 58" }, - "latitude": 42.270480988, - "longitude": -8.667726374, + "latitude": 42.231273786, + "longitude": -8.700145645, "lines": [ - "C3d" + "11", + "15A", + "15B", + "15C", + "H3" ] }, { - "stopId": 1730, + "stopId": "vitrasa:14203", "name": { - "original": "Avda. de Vigo, 129" + "original": "Avda. do Tranvía S/N (despois Camiño Lugar)" }, - "latitude": 42.267833798, - "longitude": -8.671345739, + "latitude": 42.226524401, + "longitude": -8.661251786, "lines": [ - "C3d" + "11", + "15A" ] }, { - "stopId": 1740, + "stopId": "vitrasa:14204", "name": { - "original": "Avda. de Vigo, 120" + "original": "Rúa de Manuel Álvarez, 151" }, - "latitude": 42.27068743, - "longitude": -8.668057842, + "latitude": 42.22312688, + "longitude": -8.681864633, "lines": [ - "C3i" + "25", + "31", + "H3" ] }, { - "stopId": 1750, + "stopId": "vitrasa:14205", "name": { - "original": "Avda. de Vigo, 161" + "original": "Estrada do Freixo (Cemiterio)" }, - "latitude": 42.266305919, - "longitude": -8.672818918, + "latitude": 42.178408629, + "longitude": -8.733198549, "lines": [ - "C3d" + "7" ] }, { - "stopId": 1760, + "stopId": "vitrasa:14206", "name": { - "original": "Avda. de Vigo, 201" + "original": "Avda. da Gran Vía (Instituto)" }, - "latitude": 42.26408966, - "longitude": -8.674082239, + "latitude": 42.220514043, + "longitude": -8.731700217, "lines": [ - "C3d" + "C3i", + "7", + "11", + "13", + "15A", + "16", + "23", + "29", + "H2" ] }, { - "stopId": 1770, + "stopId": "vitrasa:14207", "name": { - "original": "Avda. de Vigo (Alameda de Rosalía de Castro)" + "original": "Camiño do Pinal, 19" }, - "latitude": 42.26785896, - "longitude": -8.671440263, + "latitude": 42.161212162, + "longitude": -8.716377433, "lines": [ - "C3i" + "7" ] }, { - "stopId": 1780, + "stopId": "vitrasa:14208", "name": { - "original": "Avda. de Vigo, 230" + "original": "Estrada de Valadares, 452" }, - "latitude": 42.266245291, - "longitude": -8.672965754, + "latitude": 42.162237207, + "longitude": -8.71885531, "lines": [ - "C3i" + "7" ] }, { - "stopId": 1790, + "stopId": "vitrasa:14209", "name": { - "original": "Avda. de Vigo, 261 (Cuatro Puentes)" + "original": "Estrada da Garrida, 263" }, - "latitude": 42.261621089, - "longitude": -8.677207279, + "latitude": 42.173333822, + "longitude": -8.705439803, "lines": [ - "C3d" + "7" ] }, { - "stopId": 1800, + "stopId": "vitrasa:14210", "name": { - "original": "Avda. de Vigo, 266" + "original": "Estrada da Garrida (frente 243)" }, - "latitude": 42.263995234, - "longitude": -8.674224503, + "latitude": 42.173077394, + "longitude": -8.705659744, "lines": [ - "C3i" + "7" ] }, { - "stopId": 1810, + "stopId": "vitrasa:14211", "name": { - "original": "Avda. de Vigo, 320" + "original": "Estrada do Monte Alba, 32" }, - "latitude": 42.262068498, - "longitude": -8.676736193, + "latitude": 42.165479162, + "longitude": -8.721775005, "lines": [ - "C3i" + "7" ] }, { - "stopId": 1820, + "stopId": "vitrasa:14212", "name": { - "original": "Avda. de Vigo, 49" + "original": "Estrada do Monte Alba, 54" }, - "latitude": 42.271878394, - "longitude": -8.666356304, + "latitude": 42.164694101, + "longitude": -8.724472962, "lines": [ - "C3d" + "7" ] }, { - "stopId": 1830, + "stopId": "vitrasa:14213", "name": { - "original": "Avda. de Vigo, 11" + "original": "Estrada do Freixo (Campo Fútbol)" }, - "latitude": 42.274038501, - "longitude": -8.666949932, + "latitude": 42.169153241, + "longitude": -8.729001464, "lines": [ - "C3d" + "7" ] }, { - "stopId": 1840, + "stopId": "vitrasa:14214", "name": { - "original": "Avda. de Vigo, 72" + "original": "Estrada do Freixo, 191" }, - "latitude": 42.27159436, - "longitude": -8.666389735, + "latitude": 42.175760907, + "longitude": -8.734516924, "lines": [ - "C3i" + "7" ] }, { - "stopId": 1850, + "stopId": "vitrasa:14215", "name": { - "original": "Avda. de Europa (antes Camiño Freixeiro)" + "original": "Estrada do Freixo, 90" }, - "latitude": 42.216135691, - "longitude": -8.759632243, + "latitude": 42.175592169, + "longitude": -8.734477788, "lines": [ - "C3d", - "C3i", - "4A", - "12A", - "15A" + "7" ] }, { - "stopId": 1860, + "stopId": "vitrasa:14216", "name": { - "original": "Avda. de Europa (cruce Rúa da Pardaíña)" + "original": "Estrada do Freixo (fronte Campo Fútbol)" }, - "latitude": 42.216741568, - "longitude": -8.757129742, + "latitude": 42.169143301, + "longitude": -8.729076566, "lines": [ - "C3d", - "C3i", - "4A", - "12A", - "15A" + "7" ] }, { - "stopId": 1870, + "stopId": "vitrasa:14217", "name": { - "original": "Avda. de Europa, 102" + "original": "Estrada do Monte Alba (frente 54)" }, - "latitude": 42.211235082, - "longitude": -8.773459294, + "latitude": 42.164570839, + "longitude": -8.724561475, "lines": [ - "C3d", - "C3i", - "15A" + "7" ] }, { - "stopId": 1880, + "stopId": "vitrasa:14218", "name": { - "original": "Avda. de Europa (cruce Rúa das Teixugueiras)" + "original": "Estrada do Monte Alba, 21" }, - "latitude": 42.216687933, - "longitude": -8.756794466, + "latitude": 42.165288305, + "longitude": -8.721367309, "lines": [ - "C3d", - "C3i", - "4A", - "4C", - "12A", - "15A", - "N1" + "7" ] }, { - "stopId": 1890, + "stopId": "vitrasa:14219", "name": { - "original": "Avda. de Europa, 23" + "original": "Camiño do Pinal, 59" }, - "latitude": 42.215913672, - "longitude": -8.759904797, + "latitude": 42.159500512, + "longitude": -8.718247279, "lines": [ - "C3d", - "C3i", - "4A", - "4C", - "12A", - "15A", - "N1" + "7" ] }, { - "stopId": 1900, + "stopId": "vitrasa:14220", "name": { - "original": "Avda. de Europa (cruce Rúa do Bravo)" + "original": "Camiño da Bouciña, 14" }, - "latitude": 42.211855119, - "longitude": -8.766755158, + "latitude": 42.225657321, + "longitude": -8.681467666, "lines": [ - "C3d", - "C3i", - "4C", - "15A", - "N1" + "25" ] }, { - "stopId": 1910, + "stopId": "vitrasa:14221", "name": { - "original": "Avda. de Europa (fronte cruce Rúa do Bravo)" + "original": "Camiño da Bouciña, 3" }, - "latitude": 42.211905694, - "longitude": -8.766999036, + "latitude": 42.225809218, + "longitude": -8.681652991, "lines": [ - "C3d", - "C3i", - "15A" + "25" ] }, { - "stopId": 1920, + "stopId": "vitrasa:14222", "name": { - "original": "Avda. de Europa, 101" + "original": "Camiño do Pinal, 5" }, - "latitude": 42.211066417, - "longitude": -8.772953743, + "latitude": 42.162959525, + "longitude": -8.716541365, "lines": [ - "C3d", - "C3i", - "4C", - "15A", - "N1" + "7" ] }, { - "stopId": 1930, + "stopId": "vitrasa:14223", "name": { - "original": "Estrada de Madrid (fronte Seminario)" + "original": "Avda. Beiramar Porto Pesqueiro Berbés" }, - "latitude": 42.21474886, - "longitude": -8.69897918, + "latitude": 42.236685153, + "longitude": -8.731609303, "lines": [ - "12A", - "12B", - "13", - "U2" + "C3i", + "A", + "5A", + "5B", + "10", + "11", + "15C", + "N1", + "N4", + "H1", + "VTS" ] }, { - "stopId": 1940, + "stopId": "vitrasa:14224", "name": { - "original": "Avda. de Madrid, 136" + "original": "Rúa do Conde de Torrecedeira, 16" }, - "latitude": 42.218338954, - "longitude": -8.703817429, + "latitude": 42.234285927, + "longitude": -8.731266507, "lines": [ - "12A", - "12B", - "13" + "C3i", + "A", + "5A", + "5B", + "10", + "11", + "15C", + "N1", + "N4", + "H1", + "VTS" ] }, { - "stopId": 1950, + "stopId": "vitrasa:14225", "name": { - "original": "Avda. de Madrid, 124" + "original": "Rúa do Conde de Torrecedeira, 50" }, - "latitude": 42.220567154, - "longitude": -8.706419628, + "latitude": 42.231716574, + "longitude": -8.732308737, "lines": [ - "12A", - "12B", - "13" + "C3i", + "A", + "5A", + "5B", + "10", + "11", + "15C", + "N1", + "N4", + "H1", + "VTS" ] }, { - "stopId": 1960, + "stopId": "vitrasa:14226", "name": { - "original": "Avda. de Madrid, 62" + "original": "Rúa do Conde de Torrecedeira, 70" }, - "latitude": 42.224676782, - "longitude": -8.711832326, + "latitude": 42.229574859, + "longitude": -8.733073973, "lines": [ - "12A", - "12B", - "13", - "U2", - "H2" + "C3i", + "A", + "5A", + "5B", + "10", + "11", + "15C", + "N1", + "N4", + "H1", + "VTS" ] }, { - "stopId": 1970, + "stopId": "vitrasa:14227", "name": { - "original": "Avda. de Madrid, 57" + "original": "Rúa do Conde de Torrecedeira, 86" }, - "latitude": 42.223965709, - "longitude": -8.710062068, + "latitude": 42.22696657, + "longitude": -8.734559706, "lines": [ - "12A", - "12B", - "13" + "C3i", + "A", + "5A", + "5B", + "10", + "11", + "15C", + "N1", + "N4", + "H1", + "VTS" ] }, { - "stopId": 1980, + "stopId": "vitrasa:14228", "name": { - "original": "Estrada de Madrid (Seminario)" + "original": "Avda. de Peinador, 100" }, - "latitude": 42.214703324, - "longitude": -8.699378397, + "latitude": 42.221696342, + "longitude": -8.632840997, "lines": [ - "12A", - "12B", - "13", - "U2" + "A" ] }, { - "stopId": 1990, + "stopId": "vitrasa:14231", "name": { - "original": "Avda. de Madrid, 110" + "original": "Rúa da Rabadeira, 39" }, - "latitude": 42.222130198, - "longitude": -8.708300774, + "latitude": 42.235542066, + "longitude": -8.652196565, "lines": [ - "12A", - "12B", - "13", - "U2" + "9B" ] }, { - "stopId": 2000, + "stopId": "vitrasa:14232", "name": { - "original": "Avda. de Madrid, 133" + "original": "Rúa da Rabadeira (fronte 33)" }, - "latitude": 42.220728012, - "longitude": -8.70612292, + "latitude": 42.235317662, + "longitude": -8.652094641, "lines": [ - "12A", - "12B", - "13" + "9B", + "27" ] }, { - "stopId": 2010, + "stopId": "vitrasa:14233", "name": { - "original": "Avda. de Madrid, 195" + "original": "Rúa San Cristobo, 90" }, - "latitude": 42.218213283, - "longitude": -8.703163426, + "latitude": 42.241037275, + "longitude": -8.668947597, "lines": [ - "12A", - "12B", - "13" + "9B", + "28" ] }, { - "stopId": 2020, + "stopId": "vitrasa:14236", "name": { - "original": "Avda. de Madrid, 2" + "original": "Rúa de Manuel Cominges (fronte 112)" }, - "latitude": 42.228518615, - "longitude": -8.719214126, + "latitude": 42.196308523, + "longitude": -8.723526935, "lines": [ - "12A", - "12B", - "13", - "U2" + "12B" ] }, { - "stopId": 2030, + "stopId": "vitrasa:14237", "name": { - "original": "Avda. de Madrid, 28" + "original": "Rúa de Manuel Cominges, 134" }, - "latitude": 42.226744428, - "longitude": -8.716268699, + "latitude": 42.196119748, + "longitude": -8.723457198, "lines": [ - "12A", - "12B", - "13", - "H2" + "12B" ] }, { - "stopId": 2040, + "stopId": "vitrasa:14238", "name": { - "original": "Avda. de Madrid (trasera Colexio Hogar)" + "original": "Rúa da Saa do Monte, 5" }, - "latitude": 42.226835791, - "longitude": -8.715823453, - "lines": [ - "12A", - "12B", - "13" - ] - }, - { - "stopId": 2060, - "name": { - "original": "Avda. de Redondela, 122" - }, - "latitude": 42.259945558, - "longitude": -8.672608434, + "latitude": 42.20458802, + "longitude": -8.714617309, "lines": [ - "C3d" + "18B" ] }, { - "stopId": 2070, + "stopId": "vitrasa:14240", "name": { - "original": "Avda. de Redondela, 109" + "original": "Rúa das Chabarras, 21" }, - "latitude": 42.259481393, - "longitude": -8.67292487, + "latitude": 42.197985091, + "longitude": -8.714523201, "lines": [ - "C3i" + "18B" ] }, { - "stopId": 2080, + "stopId": "vitrasa:14241", "name": { - "original": "Avda. de Redondela, 19" + "original": "Rúa das Chabarras, 60" }, - "latitude": 42.266569717, - "longitude": -8.667160768, + "latitude": 42.197842023, + "longitude": -8.71471632, "lines": [ - "C3i" + "18B" ] }, { - "stopId": 2090, + "stopId": "vitrasa:14242", "name": { - "original": "Avda. de Redondela, 32" + "original": "Rúa das Chabarras (cruce Camiño dos Pasais)" }, - "latitude": 42.272074281, - "longitude": -8.664593691, + "latitude": 42.196378259, + "longitude": -8.716979043, "lines": [ - "C3d" + "18B" ] }, { - "stopId": 2100, + "stopId": "vitrasa:14243", "name": { - "original": "Avda. de Redondela, 47" + "original": "Rúa das Chabarras, 24" }, - "latitude": 42.263186001, - "longitude": -8.668939094, + "latitude": 42.196539214, + "longitude": -8.716874437, "lines": [ - "C3i" + "18B" ] }, { - "stopId": 2110, + "stopId": "vitrasa:14244", "name": { - "original": "Avda. de Redondela, 70" + "original": "Rúa de Macal, 60" }, - "latitude": 42.263286688, - "longitude": -8.668985036, + "latitude": 42.198216234, + "longitude": -8.721498041, "lines": [ - "C3d" + "18B", + "18H", + "27" ] }, { - "stopId": 2130, + "stopId": "vitrasa:14245", "name": { - "original": "Avda. de Redondela (Instituto)" + "original": "Avda. de García Barbón, 43" }, - "latitude": 42.266758811, - "longitude": -8.667247828, + "latitude": 42.23691728, + "longitude": -8.716743143, "lines": [ - "C3d" + "C3i", + "A", + "5B", + "10", + "16", + "17", + "24", + "N1", + "VTS" ] }, { - "stopId": 2140, + "stopId": "vitrasa:14247", "name": { - "original": "Avda. de Samil (Verbum)" + "original": "Camiño dos Muíños, 69" }, - "latitude": 42.21323221, - "longitude": -8.774382415, + "latitude": 42.200511179, + "longitude": -8.769110573, "lines": [ - "C3i", - "10", - "15B", - "15C", - "TUR" + "12A" ] }, { - "stopId": 2150, + "stopId": "vitrasa:14248", "name": { - "original": "Avda. de Samil (fronte Praia da Fonte)" + "original": "Camiño dos Muíños, 74" }, - "latitude": 42.221416498, - "longitude": -8.773724153, + "latitude": 42.200580723, + "longitude": -8.76911862, "lines": [ - "10", - "15B", - "15C" + "12A" ] }, { - "stopId": 2160, + "stopId": "vitrasa:14249", "name": { - "original": "Avda. de Samil, 15" + "original": "Avda. de Cesáreo Vázquez, 5" }, - "latitude": 42.215860796, - "longitude": -8.774720144, + "latitude": 42.177662554, + "longitude": -8.800157923, "lines": [ - "10", - "15B", - "15C" + "12A" ] }, { - "stopId": 2170, + "stopId": "vitrasa:14250", "name": { - "original": "Avda. de Samil, 35" + "original": "Avda. do Aeroporto, 463" }, - "latitude": 42.210171416, - "longitude": -8.774585056, + "latitude": 42.234914814, + "longitude": -8.658983411, "lines": [ - "C3d", - "4C", - "10" + "A", + "9B" ] }, { - "stopId": 2180, + "stopId": "vitrasa:14251", "name": { - "original": "Avda. de Samil, 67" + "original": "Avda. do Aeroporto (fronte 463)" }, - "latitude": 42.206809895, - "longitude": -8.776206766, + "latitude": 42.234817602, + "longitude": -8.65882027, "lines": [ - "C3d", - "4C", - "10" + "A", + "9B", + "27" ] }, { - "stopId": 2190, + "stopId": "vitrasa:14252", "name": { - "original": "Avda. de Samil, 81" + "original": "Estrada Clara Campoamor (Instituto)" }, - "latitude": 42.205147646, - "longitude": -8.77674534, + "latitude": 42.165934208, + "longitude": -8.707243001, "lines": [ - "C3d", - "4C", - "10" + "A", + "U1" ] }, { - "stopId": 2200, + "stopId": "vitrasa:14253", "name": { - "original": "Avda. de Santa Mariña, 110" + "original": "Estrada Clara Campoamor (cruce Rúa do Padrón do Couto)" }, - "latitude": 42.22271748, - "longitude": -8.656176614, + "latitude": 42.164455564, + "longitude": -8.707223843, "lines": [ - "11" + "A", + "U1" ] }, { - "stopId": 2210, + "stopId": "vitrasa:14255", "name": { - "original": "Avda. de Santa Mariña, 137" + "original": "Rúa do Pintor Colmeiro (Parque do Pintor Colmeiro)" }, - "latitude": 42.222538699, - "longitude": -8.656616496, + "latitude": 42.225111918, + "longitude": -8.726733526, "lines": [ - "11" + "16" ] }, { - "stopId": 2220, + "stopId": "vitrasa:14256", "name": { - "original": "Avda. de Santa Mariña, 17" + "original": "Rúa de Zamora, 89" }, - "latitude": 42.220338634, - "longitude": -8.668666271, + "latitude": 42.222198901, + "longitude": -8.728317834, "lines": [ - "11" + "16" ] }, { - "stopId": 2230, + "stopId": "vitrasa:14257", "name": { - "original": "Avda. de Santa Mariña, 52" + "original": "Rúa de Zamora, 71" }, - "latitude": 42.222347963, - "longitude": -8.662841482, + "latitude": 42.223448271, + "longitude": -8.725547112, "lines": [ - "11" + "16" ] }, { - "stopId": 2240, + "stopId": "vitrasa:14258", "name": { - "original": "Avda. de Santa Mariña, 77" + "original": "Rúa de Zamora, 51" }, - "latitude": 42.222432209, - "longitude": -8.662773458, + "latitude": 42.224870416, + "longitude": -8.723632015, "lines": [ - "11" + "16" ] }, { - "stopId": 2250, + "stopId": "vitrasa:14259", "name": { - "original": "Avda. de Santa Mariña (cruce Camiño do Narxo)" + "original": "Rúa de Zamora, 31" }, - "latitude": 42.220826115, - "longitude": -8.659651094, + "latitude": 42.227088982, + "longitude": -8.721545256, "lines": [ - "11" + "16" ] }, { - "stopId": 2260, + "stopId": "vitrasa:14260", "name": { - "original": "Avda. de Santa Mariña, 18" + "original": "Avda. da Gran Vía (fronte Avda. de Madrid)" }, - "latitude": 42.220504663, - "longitude": -8.668053014, + "latitude": 42.228741057, + "longitude": -8.71961914, "lines": [ - "11" + "A", + "7", + "14", + "16", + "18A", + "18B", + "18H", + "H2" ] }, { - "stopId": 2270, + "stopId": "vitrasa:14261", "name": { - "original": "Avda. de Santa Mariña, 103" + "original": "Rúa de Zamora, 1" }, - "latitude": 42.22113201, - "longitude": -8.658591621, + "latitude": 42.228644118, + "longitude": -8.720692314, "lines": [ - "11" + "16" ] }, { - "stopId": 2280, + "stopId": "vitrasa:14264", "name": { - "original": "Baixada á Laxe, 31" + "original": "Rúa de Urzáiz - Príncipe" }, - "latitude": 42.21650849, - "longitude": -8.719175368, + "latitude": 42.235873545, + "longitude": -8.720083317, "lines": [ + "C1", + "A", + "4A", + "4C", + "5A", + "7", + "9B", + "12B", + "14", + "15B", + "15C", + "16", + "17", "18A", "18B", - "18H" + "18H", + "24", + "28", + "N1", + "N4" + ], + "amenities": [ + "shelter", + "display" ] }, { - "stopId": 2290, + "stopId": "vitrasa:14267", "name": { - "original": "Baixada á Laxe, 44" + "original": "Avda. da Atlántida, 64" }, - "latitude": 42.216415126, - "longitude": -8.719355076, + "latitude": 42.221892792, + "longitude": -8.758191526, "lines": [ - "18A", - "18B", - "18H" + "10", + "15B", + "15C", + "N1" ] }, { - "stopId": 2300, + "stopId": "vitrasa:14268", "name": { - "original": "Baixada á Ponte Nova, 13" + "original": "Avda. da Atlántida, 49" }, - "latitude": 42.22078735, - "longitude": -8.722722261, + "latitude": 42.221731945, + "longitude": -8.758417175, "lines": [ - "18A" + "10", + "15B", + "15C" ] }, { - "stopId": 2310, + "stopId": "vitrasa:14270", "name": { - "original": "Baixada á Praia (fronte 187)" + "original": "Estrada da Balsa, 67" }, - "latitude": 42.173398721, - "longitude": -8.811050666, + "latitude": 42.196619218, + "longitude": -8.743240048, "lines": [ - "C3d", - "10", - "12A" + "17" ] }, { - "stopId": 2320, + "stopId": "vitrasa:14271", "name": { - "original": "Baixada á Praia, 121" + "original": "Estrada da Balsa, 103" }, - "latitude": 42.172541892, - "longitude": -8.809133287, + "latitude": 42.196050474, + "longitude": -8.745105715, "lines": [ - "10" + "17" ] }, { - "stopId": 2330, + "stopId": "vitrasa:14273", "name": { - "original": "Avda. de Ricardo Mella, 357" + "original": "Rúa do Xalón, 41" }, - "latitude": 42.173316968, - "longitude": -8.81100291, + "latitude": 42.219274062, + "longitude": -8.656419893, "lines": [ - "10" + "11" ] }, { - "stopId": 2340, + "stopId": "vitrasa:14277", "name": { - "original": "Baixada á Praia, 44" + "original": "Avda. da Mariña Española, 8" }, - "latitude": 42.167981444, - "longitude": -8.806504239, + "latitude": 42.251776399, + "longitude": -8.69414009, "lines": [ - "C3d", - "10", - "12A" + "17" ] }, { - "stopId": 2350, + "stopId": "vitrasa:14278", "name": { - "original": "Baixada á Praia, 74" + "original": "Avda. da Mariña Española, 44" }, - "latitude": 42.169850316, - "longitude": -8.808861828, + "latitude": 42.25430173, + "longitude": -8.692915616, "lines": [ - "C3d", - "10", - "12A" + "17" ] }, { - "stopId": 2360, + "stopId": "vitrasa:14279", "name": { - "original": "Baixada á Praia (Parque C.Cívico)" + "original": "Riós (Rotonda)" }, - "latitude": 42.167825345, - "longitude": -8.806386831, + "latitude": 42.257069093, + "longitude": -8.690786611, "lines": [ - "10" + "17" ] }, { - "stopId": 2370, + "stopId": "vitrasa:14280", "name": { - "original": "Baixada á Praia, 94" + "original": "Avda. da Mariña Española (ETEA)" }, - "latitude": 42.172705652, - "longitude": -8.809114415, + "latitude": 42.254604716, + "longitude": -8.692539681, "lines": [ - "C3d", - "10", - "12A" + "17" ] }, { - "stopId": 2380, + "stopId": "vitrasa:14281", "name": { - "original": "Baixada á Praia, 101" + "original": "Avda. da Mariña Española (Praia de Ríos)" }, - "latitude": 42.169719111, - "longitude": -8.808832324, + "latitude": 42.251596707, + "longitude": -8.69420171, "lines": [ - "10" + "17" ] }, { - "stopId": 2390, + "stopId": "vitrasa:14287", "name": { - "original": "Baixada á Salgueira, 49" + "original": "Rúa Santa Tegra, 67" }, - "latitude": 42.224020371, - "longitude": -8.716787891, + "latitude": 42.25020334, + "longitude": -8.701924083, "lines": [ - "18A" + "17" ] }, { - "stopId": 2410, + "stopId": "vitrasa:14288", "name": { - "original": "Baixada ao Río, 31" + "original": "Avda. de Guixar (fronte 28)" }, - "latitude": 42.209020914, - "longitude": -8.702331689, + "latitude": 42.249218849, + "longitude": -8.704807605, "lines": [ - "14" + "17" ] }, { - "stopId": 2420, + "stopId": "vitrasa:14289", "name": { - "original": "Rúa do Cacheno (Lavadero)" + "original": "Rúa de Xulián Estévez (fronte 58)" }, - "latitude": 42.208468606, - "longitude": -8.702143934, + "latitude": 42.246484972, + "longitude": -8.705864005, "lines": [ - "14" + "17" ] }, { - "stopId": 2430, + "stopId": "vitrasa:14290", "name": { - "original": "Rúa de Barcelona, 64" + "original": "Rúa de Xulián Estévez (fronte 18)" }, - "latitude": 42.223917068, - "longitude": -8.726168827, + "latitude": 42.244107542, + "longitude": -8.706343638, "lines": [ - "C1" + "17" ] }, { - "stopId": 2440, + "stopId": "vitrasa:14291", "name": { - "original": "Rúa de Barcelona, 2" + "original": "Avda. da Ponte (Vigo Memorial)" }, - "latitude": 42.228315534, - "longitude": -8.721741958, + "latitude": 42.209935219, + "longitude": -8.671464542, "lines": [ - "C1" + "12B", + "15B", + "15C", + "U2" ] }, { - "stopId": 2450, + "stopId": "vitrasa:14294", "name": { - "original": "Rúa de Barcelona, 32" + "original": "Avda. de Ricardo Mella, 406" }, - "latitude": 42.226024692, - "longitude": -8.723390804, + "latitude": 42.190684424876565, + "longitude": -8.799308812770041, "lines": [ - "C1" + "12A" ] }, { - "stopId": 2460, + "stopId": "vitrasa:14295", "name": { - "original": "Rúa de Xeme, 59" + "original": "Rúa de Pi i Margall, 121" }, - "latitude": 42.203300943, - "longitude": -8.696320858, + "latitude": 42.230436358, + "longitude": -8.731437473, "lines": [ - "14" + "5B", + "12A" ] }, { - "stopId": 2490, + "stopId": "vitrasa:14296", "name": { - "original": "Rúa das Coutadas, 57" + "original": "Praza dos Leóns (Vigozoo)" }, - "latitude": 42.194635725, - "longitude": -8.699504032, + "latitude": 42.248375604, + "longitude": -8.675578666, "lines": [ - "6", - "27" + "28" ] }, { - "stopId": 2500, + "stopId": "vitrasa:14298", "name": { - "original": "Rúa de Ramiro Pascual (Igrexa)" + "original": "Avda. de Samil (fronte 15)" }, - "latitude": 42.191950062, - "longitude": -8.707193511, + "latitude": 42.215865535, + "longitude": -8.774911658, "lines": [ - "27" + "15C" ] }, { - "stopId": 2510, + "stopId": "vitrasa:14299", "name": { - "original": "Avda. de Castrelos, 439" + "original": "Avda. de Samil (frente Verbum)" }, - "latitude": 42.191323803, - "longitude": -8.721049887, + "latitude": 42.213777217, + "longitude": -8.774600284, "lines": [ - "7" + "C3i", + "15A", + "15B", + "15C", + "N1" ] }, { - "stopId": 2520, + "stopId": "vitrasa:1430", "name": { - "original": "Estrada de Bembrive, 238" + "original": "Avda. de Castrelos, 318" }, - "latitude": 42.204563665, - "longitude": -8.687025359, + "latitude": 42.203408408, + "longitude": -8.728817983, "lines": [ - "6", - "14" + "7", + "U1" ] }, { - "stopId": 2540, + "stopId": "vitrasa:14300", "name": { - "original": "Bouzas (Rotonda de Las Anclas)" + "original": "Avda. da Florida, 30" }, - "latitude": 42.22513153, - "longitude": -8.751597027, + "latitude": 42.217907548, + "longitude": -8.73707436, "lines": [ - "6", - "9B" + "5A", + "11", + "29", + "VTS" ] }, { - "stopId": 2550, + "stopId": "vitrasa:14301", "name": { - "original": "Camiño da Brea, 10" + "original": "Avda. da Florida, 47" }, - "latitude": 42.204086577, - "longitude": -8.704832445, + "latitude": 42.218257459, + "longitude": -8.736328798, "lines": [ - "18A", - "18B" + "5A", + "11", + "29" ] }, { - "stopId": 2551, + "stopId": "vitrasa:14302", "name": { - "original": "Camiño da Brea, 40" + "original": "Estrada Vella de Madrid, 7" }, - "latitude": 42.205779861, - "longitude": -8.704885101, + "latitude": 42.214542094, + "longitude": -8.696431619, "lines": [ - "18B" + "12A", + "12B", + "13", + "H3" ] }, { - "stopId": 2560, + "stopId": "vitrasa:14304", "name": { - "original": "Camiño da Brea, 37" + "original": "Estrada Vella de Madrid, 145" }, - "latitude": 42.204297185, - "longitude": -8.704942415, + "latitude": 42.221313975, + "longitude": -8.681944471, "lines": [ - "18A", - "18B" + "12A", + "12B", + "13", + "31" ] }, { - "stopId": 2580, + "stopId": "vitrasa:14307", "name": { - "original": "Camiño da Brea, 69" + "original": "Rúa do Pintor Colmeiro, 11" }, - "latitude": 42.207235488, - "longitude": -8.704631381, + "latitude": 42.224464416, + "longitude": -8.727967343, "lines": [ - "18A", - "18B" + "16" ] }, { - "stopId": 2590, + "stopId": "vitrasa:14308", "name": { - "original": "Rúa da Cabalaría, 94" + "original": "Camiño do Pinal, 6" }, - "latitude": 42.232442621, - "longitude": -8.689558541, + "latitude": 42.16328558, + "longitude": -8.716707662, "lines": [ - "28" + "7" ] }, { - "stopId": 2600, + "stopId": "vitrasa:14309", "name": { - "original": "Rúa da Cabalaría, 153" + "original": "Camiño do Pinal, 28" }, - "latitude": 42.235437997, - "longitude": -8.689019794, + "latitude": 42.161067029, + "longitude": -8.716468628, "lines": [ - "27", - "28" + "7" ] }, { - "stopId": 2610, + "stopId": "vitrasa:14310", "name": { - "original": "Rúa da Cabalaría, 14" + "original": "Camiño do Pinal (fronte 57)" }, - "latitude": 42.233426101, - "longitude": -8.693298639, - "lines": [ - "28" - ] - }, - { - "stopId": 2620, - "name": { - "original": "Rúa da Cabalaría, 186" - }, - "latitude": 42.235420737, - "longitude": -8.68894034, + "latitude": 42.159564137, + "longitude": -8.718295559, "lines": [ - "28" + "7" ] }, { - "stopId": 2630, + "stopId": "vitrasa:14311", "name": { - "original": "Rúa da Cabalaría (cruce Subida ao Rosal Florido)" + "original": "Estrada de Valadares, 505" }, - "latitude": 42.233483693, - "longitude": -8.693266452, + "latitude": 42.162720337, + "longitude": -8.718900908, "lines": [ - "27", - "28" + "7" ] }, { - "stopId": 2640, + "stopId": "vitrasa:14314", "name": { - "original": "Rúa da Cabalaría, 67" + "original": "Rúa das Mantelas (cruce Avda. da Gran Vía)" }, - "latitude": 42.232559793, - "longitude": -8.689848219, + "latitude": 42.227212568, + "longitude": -8.720183032, "lines": [ - "27", - "28" + "18A" ] }, { - "stopId": 2735, + "stopId": "vitrasa:14315", "name": { - "original": "Rúa da Cachamuíña (Concello)" + "original": "Rúa das Mantelas, 92" }, - "latitude": 42.235033314, - "longitude": -8.727202198, + "latitude": 42.22393338, + "longitude": -8.716924148, "lines": [ - "5B", - "12A" + "18A" ] }, { - "stopId": 2740, + "stopId": "vitrasa:14317", "name": { - "original": "Rúa do Cacheno, 75" + "original": "Rúa da Salgueira Entrada (Igrexa)" }, - "latitude": 42.207451401, - "longitude": -8.701194432, + "latitude": 42.222723933, + "longitude": -8.719150283, "lines": [ - "14" + "18A" ] }, { - "stopId": 2750, + "stopId": "vitrasa:14318", "name": { - "original": "Rúa do Cacheno, 28" + "original": "Rúa da Salguera Entrada (fronte 5)" }, - "latitude": 42.20671834, - "longitude": -8.699160127, + "latitude": 42.222591256, + "longitude": -8.717753486, "lines": [ - "14" + "18A" ] }, { - "stopId": 2760, + "stopId": "vitrasa:14319", "name": { - "original": "Rúa do Cacheno, 66" + "original": "Rúa das Coutadas (Fonte)" }, - "latitude": 42.208194443, - "longitude": -8.701518979, + "latitude": 42.221002214, + "longitude": -8.72027208, "lines": [ - "14" + "18A" ] }, { - "stopId": 2770, + "stopId": "vitrasa:14320", "name": { - "original": "Rúa do Cacheno, 49" + "original": "Rúa do Miradoiro (Rotonda Centro Comercial)" }, - "latitude": 42.20648703, - "longitude": -8.698760561, + "latitude": 42.220799025, + "longitude": -8.723345356, "lines": [ - "14" + "18A" ] }, { - "stopId": 2780, + "stopId": "vitrasa:14321", "name": { - "original": "Avda. das Camelias, 135" + "original": "Camiño do Freixeiro, 74" }, - "latitude": 42.222387178, - "longitude": -8.731207698, + "latitude": 42.218131641, + "longitude": -8.723120057, "lines": [ - "4A", - "4C", - "5A", - "5B", - "11", - "12A", - "12B", - "16", - "17", - "27", - "N1", - "LZH" + "18A" ] }, { - "stopId": 2790, + "stopId": "vitrasa:14322", "name": { - "original": "Avda. das Camelias, 37" + "original": "Rúa da Fonte Santa, 4" }, - "latitude": 42.230566426, - "longitude": -8.730086804, + "latitude": 42.217813814, + "longitude": -8.721352482, "lines": [ - "4A", - "4C", - "11", - "12B", - "17", - "27", - "N1" + "18A" ] }, { - "stopId": 2800, + "stopId": "vitrasa:14323", "name": { - "original": "Avda. das Camelias, 46" + "original": "Rúa Finca dos Aires (cruce Rúa da Fonte Santa)" }, - "latitude": 42.230291959, - "longitude": -8.730279255, + "latitude": 42.217059742, + "longitude": -8.720340235, "lines": [ - "4A", - "4C", - "5B", - "7", - "12A", - "12B", - "17", - "27", - "PSA 4" + "18A" ] }, { - "stopId": 2810, + "stopId": "vitrasa:14324", "name": { - "original": "Avda. das Camelias, 80" + "original": "Rúa Finca dos Aires (Urbanización)" }, - "latitude": 42.227601839, - "longitude": -8.730236339, + "latitude": 42.217256401, + "longitude": -8.720101519, "lines": [ - "4A", - "4C", - "5B", - "7", - "12A", - "12B", - "17", - "27", - "PSA 4" + "18A" ] }, { - "stopId": 2820, + "stopId": "vitrasa:14325", "name": { - "original": "Avda. das Camelias (Praza 8 de Marzo)" + "original": "Rúa da Fonte Santa (fronte 4)" }, - "latitude": 42.227403959, - "longitude": -8.729948584, + "latitude": 42.217848286, + "longitude": -8.7214811, "lines": [ - "4A", - "4C", - "11", - "12B", - "17", - "27", - "N1" + "18A" ] }, { - "stopId": 2830, + "stopId": "vitrasa:14326", "name": { - "original": "Rúa de Camilo Veiga, 33" + "original": "Baixada á Ponte Nova, 61" }, - "latitude": 42.22243855, - "longitude": -8.751978552, + "latitude": 42.218038279, + "longitude": -8.722489738, "lines": [ - "C3d", - "13", - "15B", - "15C", - "U1", - "H" + "18A" ] }, { - "stopId": 2840, + "stopId": "vitrasa:14328", "name": { - "original": "Rúa da Goleta, 3" + "original": "Citroën - PSA" }, - "latitude": 42.241698248, - "longitude": -8.665209215, + "latitude": 42.208988415, + "longitude": -8.746151897, "lines": [ - "9B", - "27", - "28" + "LZH", + "PSA 1", + "PSA 4" ] }, { - "stopId": 2850, + "stopId": "vitrasa:14329", "name": { - "original": "Rúa da Goleta, 2" + "original": "Citroën (Puerta Principal)" }, - "latitude": 42.241676405, - "longitude": -8.665026825, + "latitude": 42.210124372, + "longitude": -8.741139991, "lines": [ - "9B", - "28" + "LZH", + "PSA 1", + "PSA 4" ] }, { - "stopId": 2870, + "stopId": "vitrasa:14330", "name": { - "original": "Rúa de Cantabria (Compañía Suministradora de Auga)" + "original": "Subida ás Chans (fronte cruce Rúa Senra)" }, - "latitude": 42.237397409, - "longitude": -8.694169154, + "latitude": 42.198072667, + "longitude": -8.682624653, "lines": [ - "4A", - "24" + "14" ] }, { - "stopId": 2880, + "stopId": "vitrasa:14331", "name": { - "original": "Rúa de Cantabria, 148" + "original": "Rúa de Álvaro Cunqueiro, 30" }, - "latitude": 42.239331582, - "longitude": -8.692983618, + "latitude": 42.223769828, + "longitude": -8.728938728, "lines": [ "4A", - "24" + "4C", + "5A", + "5B", + "11", + "12A", + "12B", + "17", + "27", + "N1", + "LZH" ] }, { - "stopId": 2910, + "stopId": "vitrasa:14333", "name": { - "original": "Rúa de Cantabria, 212" + "original": "Rúa de Cánovas del Castillo, 18" }, - "latitude": 42.241655974, - "longitude": -8.692827561, + "latitude": 42.240189011, + "longitude": -8.726765331, "lines": [ - "4A", - "24" + "C1", + "C3d", + "A", + "5A", + "9B", + "10", + "15B", + "15C", + "28", + "N4", + "H1" ] }, { - "stopId": 2920, + "stopId": "vitrasa:14335", "name": { - "original": "Rúa de Cantabria, 45" + "original": "Camiño do Arieiro (Residencia de Maiores)" }, - "latitude": 42.235852081, - "longitude": -8.695592417, + "latitude": 42.212692269, + "longitude": -8.675661599, "lines": [ - "4A", - "24" + "31" ] }, { - "stopId": 2930, + "stopId": "vitrasa:14336", "name": { - "original": "Rúa de Cantabria, 58" + "original": "Rúa das Teixugueiras, 8" }, - "latitude": 42.235377808, - "longitude": -8.695695331, + "latitude": 42.21447626, + "longitude": -8.75600551, "lines": [ - "4A", - "24" + "13", + "15A" ] }, { - "stopId": 2950, + "stopId": "vitrasa:14337", "name": { - "original": "Rúa dos Canteiros, 4" + "original": "Rúa do Limpiño (Rotonda Rúa Teixugueiras)" }, - "latitude": 42.204307169, - "longitude": -8.729719236, - "lines": [ - "12B", - "17" + "latitude": 42.213080218, + "longitude": -8.754660224, + "lines": [ + "5A", + "5B", + "13", + "15A", + "15B", + "N4", + "U1", + "H", + "PSA 1", + "PSA 4" ] }, { - "stopId": 2960, + "stopId": "vitrasa:14345", "name": { - "original": "Rúa dos Canteiros, 101" + "original": "Rúa do Areiro, 49" }, - "latitude": 42.20073699, - "longitude": -8.738895516, + "latitude": 42.237269816, + "longitude": -8.685138009, "lines": [ - "12B", - "17" + "28" ] }, { - "stopId": 2970, + "stopId": "vitrasa:14346", "name": { - "original": "Rúa dos Canteiros, 116" + "original": "Rúa do Areiro, 52" }, - "latitude": 42.201317829, - "longitude": -8.735636365, + "latitude": 42.237287688, + "longitude": -8.685019992, "lines": [ - "12B", - "17" + "28" ] }, { - "stopId": 2980, + "stopId": "vitrasa:14347", "name": { - "original": "Rúa dos Canteiros, 164" + "original": "Rúa do Areiro (cruce Salcides)" }, - "latitude": 42.200758846, - "longitude": -8.739043037, + "latitude": 42.23913765, + "longitude": -8.683873934, "lines": [ - "12B", - "17" + "28" ] }, { - "stopId": 2990, + "stopId": "vitrasa:14348", "name": { - "original": "Rúa dos Canteiros, 9" + "original": "Rúa do Areiro, 76" }, - "latitude": 42.203792573, - "longitude": -8.729630723, + "latitude": 42.238950988, + "longitude": -8.683793467, "lines": [ - "12B", - "17" + "28" ] }, { - "stopId": 3000, + "stopId": "vitrasa:14349", "name": { - "original": "Rúa dos Canteiros, 49" + "original": "Rúa do Areiro (Campo de Fútbol)" }, - "latitude": 42.201188677, - "longitude": -8.733208966, + "latitude": 42.244717312, + "longitude": -8.678473607, "lines": [ - "12B", - "17" + "28" ] }, { - "stopId": 3010, + "stopId": "vitrasa:14350", "name": { - "original": "Rúa dos Canteiros, 73" + "original": "Rúa do Areiro (fronte Campo de Fútbol)" }, - "latitude": 42.20121252, - "longitude": -8.735711467, + "latitude": 42.244849353, + "longitude": -8.678366319, "lines": [ - "12B", - "17" + "28" ] }, { - "stopId": 3020, + "stopId": "vitrasa:14353", "name": { - "original": "Rúa dos Canteiros, 76" + "original": "Praza dos Leóns (fronte Vigozoo)" }, - "latitude": 42.201218481, - "longitude": -8.733509374, + "latitude": 42.248151648, + "longitude": -8.675976097, "lines": [ - "12B", - "17" + "28" ] }, { - "stopId": 3030, + "stopId": "vitrasa:14354", "name": { - "original": "Avda. de Castrelos, 458" + "original": "Avda. de Ramón Nieto (fronte Igrexa)" }, - "latitude": 42.194702579, - "longitude": -8.721025195, + "latitude": 42.225911433, + "longitude": -8.675526243, "lines": [ - "7", - "U1" + "11", + "15A", + "15B", + "15C", + "31", + "H3" ] }, { - "stopId": 3050, + "stopId": "vitrasa:14355", "name": { - "original": "Estrada de Casás (cruce Camiño da Pedra Branca)" + "original": "Avda. de Ramón Nieto, 409" }, - "latitude": 42.192360267, - "longitude": -8.756680959, + "latitude": 42.226638363, + "longitude": -8.676135104, "lines": [ - "29" + "11", + "15A", + "15B", + "15C", + "31", + "H3", + "VTS" ] }, { - "stopId": 3052, + "stopId": "vitrasa:14356", "name": { - "original": "Avda. Arquitecto Antonio Palacios (cruce Rúa Ricardo Torres)" + "original": "Avda. de Ricardo Mella, 314" }, - "latitude": 42.216966631, - "longitude": -8.729813845, + "latitude": 42.192009114, + "longitude": -8.783993123, "lines": [ - "A" + "12A" ] }, { - "stopId": 3060, + "stopId": "vitrasa:14357", "name": { - "original": "Rúa da Ceboleira, 30" + "original": "Avda. de Ricardo Mella (cruce Camiño do Río)" }, - "latitude": 42.224698049, - "longitude": -8.701749123, + "latitude": 42.191796473, + "longitude": -8.784014088, "lines": [ - "6" + "12A" ] }, { - "stopId": 3070, + "stopId": "vitrasa:14358", "name": { - "original": "Rúa da Ceboleira, 49" + "original": "Rúa das Teixugueiras, 28" }, - "latitude": 42.224816342, - "longitude": -8.701565998, + "latitude": 42.209054557, + "longitude": -8.75715865, "lines": [ - "6" + "5A", + "5B", + "13", + "N4" ] }, { - "stopId": 3080, + "stopId": "vitrasa:14359", "name": { - "original": "Avda. de Cesáreo Vázquez, 136" + "original": "Rúa das Teixugueiras, 16-Portal 2" }, - "latitude": 42.1873653089623, - "longitude": -8.800886236766305, + "latitude": 42.212235738, + "longitude": -8.755011746, "lines": [ - "11" + "5A", + "5B", + "13", + "N4" ] }, { - "stopId": 3090, + "stopId": "vitrasa:14360", "name": { - "original": "Avda. de Cesáreo Vázquez, 182" + "original": "Rúa das Teixugueiras, 19-Portal 5" }, - "latitude": 42.191019711713736, - "longitude": -8.799628565094565, + "latitude": 42.208965857, + "longitude": -8.757020567, "lines": [ - "C3d", - "10", - "11" + "5A", + "5B", + "13", + "N4", + "U1", + "H", + "PSA 1", + "PSA 4" ] }, { - "stopId": 3100, + "stopId": "vitrasa:14361", "name": { - "original": "Avda. de Cesáreo Vázquez, 99" + "original": "Rúa das Teixugueiras, 17" }, - "latitude": 42.184766843, - "longitude": -8.802180879, + "latitude": 42.209770472, + "longitude": -8.755295907, "lines": [ - "11", - "12A" + "5A", + "5B", + "13", + "15A", + "N4", + "U1", + "H", + "PSA 1", + "PSA 4" ] }, { - "stopId": 3110, + "stopId": "vitrasa:14362", "name": { - "original": "Avda. de Cesáreo Vázquez, 74" + "original": "Avda. de Samil, 101" }, - "latitude": 42.184416675, - "longitude": -8.802179713, + "latitude": 42.202937872, + "longitude": -8.776830486, "lines": [ - "11" + "C3d", + "4C", + "10" ] }, { - "stopId": 3120, + "stopId": "vitrasa:14364", "name": { - "original": "Avda. de Cesáreo Vázquez, 141" + "original": "Estrada das Plantas (fronte Cidade Deportiva)" }, - "latitude": 42.187488521491225, - "longitude": -8.801226626055183, + "latitude": 42.175757186, + "longitude": -8.671074371, "lines": [ - "11", - "12A" + "15C" ] }, { - "stopId": 3130, + "stopId": "vitrasa:14365", "name": { - "original": "Avda. de Cesáreo Vázquez, 169" + "original": "Estrada das Plantas (Viveiros)" }, - "latitude": 42.191024803868736, - "longitude": -8.799397387002196, + "latitude": 42.181650197, + "longitude": -8.667515723, "lines": [ - "11" + "15C" ] }, { - "stopId": 3140, + "stopId": "vitrasa:14372", "name": { - "original": "Estrada De Zamáns, 255" + "original": "Barrio da Salgueira, 22" }, - "latitude": 42.15800346, - "longitude": -8.686134691, + "latitude": 42.221887526, + "longitude": -8.720011371, "lines": [ - "7" + "18A" ] }, { - "stopId": 3150, + "stopId": "vitrasa:14376", "name": { - "original": "Estrada de Zamáns (cruce Igrexa)" + "original": "Rúa da Pateira, 20" }, - "latitude": 42.157661469, - "longitude": -8.685973759, + "latitude": 42.226612651, + "longitude": -8.699658408, "lines": [ - "7" + "25" ] }, { - "stopId": 3160, + "stopId": "vitrasa:14377", "name": { - "original": "Camiño da Falcoa, 10" + "original": "Rúa da Pateira, 5" }, - "latitude": 42.206593246, - "longitude": -8.721651793, + "latitude": 42.226582661, + "longitude": -8.700385762, "lines": [ - "18B", - "18H" + "25" ] }, { - "stopId": 3170, + "stopId": "vitrasa:14378", "name": { - "original": "Rúa das Coutadas, 76" + "original": "Rúa Molais, 83" }, - "latitude": 42.220968446, - "longitude": -8.720400826, + "latitude": 42.22396201, + "longitude": -8.653340726, "lines": [ - "18A" + "25" ] }, { - "stopId": 3180, + "stopId": "vitrasa:14381", "name": { - "original": "Camiño de Quirós, 106" + "original": "Rúa do Abade Juan de Bastos, 6" }, - "latitude": 42.21955863, - "longitude": -8.711410119, + "latitude": 42.195647685, + "longitude": -8.728974153, "lines": [ - "18B", - "18H" + "17" ] }, { - "stopId": 3190, + "stopId": "vitrasa:14383", "name": { - "original": "Camiño de Quirós (cruce Rúa de Dona Cristina)" + "original": "Estrada Clara Campoamor (cruce Estrada do Portal)" }, - "latitude": 42.219681782, - "longitude": -8.711385979, + "latitude": 42.174718265, + "longitude": -8.713684656, "lines": [ - "18B", - "18H" - ] - }, - { - "stopId": 3230, - "name": { - "original": "Rúa de Colón, 27" - }, - "latitude": 42.236471452, - "longitude": -8.720164905, - "lines": [ - "11", - "16" + "A", + "U1" ] }, { - "stopId": 3240, + "stopId": "vitrasa:14384", "name": { - "original": "Rúa da Coruña, 5" + "original": "Estrada Clara Campoamor (Parque Tecnolóxico)" }, - "latitude": 42.22214729, - "longitude": -8.734167916, + "latitude": 42.175073486, + "longitude": -8.713494654, "lines": [ "A", - "5A", - "5B", - "10", - "11", - "13", - "N4", - "U1", - "H1", - "H", - "VTS" + "U1" ] }, { - "stopId": 3250, + "stopId": "vitrasa:14385", "name": { - "original": "Rúa da Coruña, 26" + "original": "Rúa da Vista do Mar, 45" }, - "latitude": 42.222378625, - "longitude": -8.734134247, + "latitude": 42.240712912, + "longitude": -8.6919418, "lines": [ - "C1", - "A", - "10", - "N4", - "H1" + "4A", + "24" ] }, { - "stopId": 3260, + "stopId": "vitrasa:14386", "name": { - "original": "Rúa da Coruña, 37" + "original": "Rúa da Vista do Mar (Embalse)" }, - "latitude": 42.226287696, - "longitude": -8.737475832, + "latitude": 42.238020208, + "longitude": -8.691543884, "lines": [ - "15B" + "4A", + "24" ] }, { - "stopId": 3270, + "stopId": "vitrasa:14387", "name": { - "original": "Rúa da Coruña (fronte 39)" + "original": "Rúa da Vista do Mar, 1" }, - "latitude": 42.226490285, - "longitude": -8.73744901, + "latitude": 42.237167043, + "longitude": -8.693243792, "lines": [ - "10", - "15B" + "4A", + "24" ] }, { - "stopId": 3280, + "stopId": "vitrasa:14388", "name": { - "original": "Rúa de Manuel Lago Lago, 1" + "original": "Rúa das Teixugueiras, 11" }, - "latitude": 42.188898503, - "longitude": -8.776299224, + "latitude": 42.211610124, + "longitude": -8.754550253, "lines": [ - "29" + "5A", + "5B", + "13", + "15A", + "N4", + "U1", + "H", + "PSA 1", + "PSA 4" ] }, { - "stopId": 3290, + "stopId": "vitrasa:14389", "name": { - "original": "Rúa da Costa, 13" + "original": "Rúa das Teixugueiras, 22" }, - "latitude": 42.213397685, - "longitude": -8.72248211, + "latitude": 42.210212603, + "longitude": -8.755079989, "lines": [ - "A", - "18B", - "18H" + "5A", + "5B", + "13", + "N4" ] }, { - "stopId": 3300, + "stopId": "vitrasa:14390", "name": { - "original": "Rúa da Costa, 22" + "original": "Rúa do Salgueiro (cruce Camiño Sanatorio)" }, - "latitude": 42.211751348, - "longitude": -8.721691531, + "latitude": 42.241570883, + "longitude": -8.655380719, "lines": [ - "A", - "18B", - "18H" + "9B", + "28" ] }, { - "stopId": 3310, + "stopId": "vitrasa:14391", "name": { - "original": "Rúa da Costa, 74" + "original": "Rúa do Salgueiro (fronte 38)" }, - "latitude": 42.209233023, - "longitude": -8.720666368, + "latitude": 42.241652296, + "longitude": -8.655302935, "lines": [ - "A", - "18B", - "18H" + "9B", + "27", + "28" ] }, { - "stopId": 3320, + "stopId": "vitrasa:14392", "name": { - "original": "Rúa da Costa, 63" + "original": "Rúa da Pedra Seixa (Colexio)" }, - "latitude": 42.210154848, - "longitude": -8.720902403, + "latitude": 42.209458591, + "longitude": -8.760561083, "lines": [ - "A", - "18B", - "18H" + "5A" ] }, { - "stopId": 3350, + "stopId": "vitrasa:14393", "name": { - "original": "Rúa do Couto, 1" + "original": "Rúa da Pedra Seixa (fronte Colexio)" }, - "latitude": 42.230911796, - "longitude": -8.722711253, + "latitude": 42.209568936, + "longitude": -8.760777001, "lines": [ - "7", - "12A", - "12B", - "27" + "5A" ] }, { - "stopId": 3360, + "stopId": "vitrasa:14395", "name": { - "original": "Rúa do Doutor Canoa, 8" + "original": "Estrada de Madrid, 217" }, - "latitude": 42.237803518, - "longitude": -8.704409031, + "latitude": 42.215601037, + "longitude": -8.675477665, "lines": [ - "31" + "12B", + "15B", + "15C" ] }, { - "stopId": 3370, + "stopId": "vitrasa:14396", "name": { - "original": "Estrada de Bembrive (cruce Rúa Eifonso)" + "original": "Avda. de García Barbón, 106" }, - "latitude": 42.205676226, - "longitude": -8.693112047, + "latitude": 42.239965365, + "longitude": -8.708024282, "lines": [ - "6", - "14" + "C3d", + "5B", + "10", + "17", + "31", + "H2", + "H3", + "PSA 1" ] }, { - "stopId": 3380, + "stopId": "vitrasa:14397", "name": { - "original": "Cruce Eifonso" + "original": "Avda. de García Barbón (fronte 104)" }, - "latitude": 42.205623108, - "longitude": -8.693239335, + "latitude": 42.23973713, + "longitude": -8.708397682, "lines": [ - "6", - "14" + "C3i", + "5B", + "10", + "17", + "N1", + "H3", + "VTS" ] }, { - "stopId": 3390, + "stopId": "vitrasa:14398", "name": { - "original": "Estrada de Bembrive, 160" + "original": "Avda. da Gran Vía, 116" }, - "latitude": 42.205296644, - "longitude": -8.692558914, + "latitude": 42.22406594, + "longitude": -8.723691036, "lines": [ - "6", - "14" + "C3d", + "13", + "15A", + "23", + "29", + "H2", + "PSA 1" ] }, { - "stopId": 3400, + "stopId": "vitrasa:1440", "name": { - "original": "Estrada da Gándara, 22" + "original": "Avda. de Castrelos, 339" }, - "latitude": 42.163584451, - "longitude": -8.716088728, + "latitude": 42.198480135, + "longitude": -8.723827649, "lines": [ "7" ] }, { - "stopId": 3420, + "stopId": "vitrasa:14401", "name": { - "original": "Avda. de Castrelos (Cemiterio de Pereiró)" + "original": "Rúa de San Paio (cruce Camiño Barroca)" }, - "latitude": 42.208071495, - "longitude": -8.731366082, + "latitude": 42.21072167, + "longitude": -8.76212542, "lines": [ - "7", - "12B", - "17", - "27", - "U1" + "4A", + "12A" ] }, { - "stopId": 3430, + "stopId": "vitrasa:14402", "name": { - "original": "Avda. da Ponte, 86 (Cemiterio)" + "original": "Rúa de San Paio, 111" }, - "latitude": 42.215621206, - "longitude": -8.67221512, + "latitude": 42.210791203, + "longitude": -8.761940347, "lines": [ - "15B", - "15C" + "12A" ] }, { - "stopId": 3450, + "stopId": "vitrasa:14403", "name": { - "original": "Estrada de Camposancos, 155" + "original": "Rúa de Pedro Alvarado (cruce Camiño das Maceiras)" }, - "latitude": 42.194732286, - "longitude": -8.769245322, + "latitude": 42.25049654, + "longitude": -8.698390035, "lines": [ - "11", - "29" + "17" ] }, { - "stopId": 3460, + "stopId": "vitrasa:14404", "name": { - "original": "Estrada de Camposancos, 19" + "original": "Rúa do Doutor Corbal, 58" }, - "latitude": 42.203197031, - "longitude": -8.753437723, + "latitude": 42.251785642, + "longitude": -8.696871994, "lines": [ - "11", - "29" + "17" ] }, { - "stopId": 3470, + "stopId": "vitrasa:14406", "name": { - "original": "Estrada de Camposancos, 214" + "original": "Rúa de Enrique Lorenzo, 32" }, - "latitude": 42.193581709, - "longitude": -8.772496159, + "latitude": 42.249462772, + "longitude": -8.699772952, "lines": [ - "11", - "29" + "17" ] }, { - "stopId": 3480, + "stopId": "vitrasa:14408", "name": { - "original": "Estrada de Camposancos, 141" + "original": "Rúa de Pedro Alvarado, 5" }, - "latitude": 42.196095467, - "longitude": -8.766230519, + "latitude": 42.248885006, + "longitude": -8.698128758, "lines": [ - "11", - "29" + "17" ] }, { - "stopId": 3490, + "stopId": "vitrasa:14409", "name": { - "original": "Estrada de Camposancos, 171" + "original": "Estrada das Plantas (fronte cruce Avda. do Rebullón)" }, - "latitude": 42.193613504, - "longitude": -8.772222574, + "latitude": 42.204188441, + "longitude": -8.670257126, "lines": [ - "11", - "29" + "15B", + "15C" ] }, { - "stopId": 3500, + "stopId": "vitrasa:14410", "name": { - "original": "Estrada de Camposancos, 190" + "original": "Estrada das Plantas (cruce Avda. do Rebullón)" }, - "latitude": 42.194553241, - "longitude": -8.770325583, + "latitude": 42.204639457, + "longitude": -8.670329545, "lines": [ - "11", - "29" + "15C" ] }, { - "stopId": 3510, + "stopId": "vitrasa:14411", "name": { - "original": "Estrada de Camposancos, 28" + "original": "Rúa de Xeme, 1" }, - "latitude": 42.202849227, - "longitude": -8.753870291, + "latitude": 42.205174543, + "longitude": -8.698209134, "lines": [ - "11", - "29", - "VTS" + "14" ] }, { - "stopId": 3520, + "stopId": "vitrasa:14412", "name": { - "original": "Estrada de Camposancos, 75" + "original": "Rúa de Xeme, 6" }, - "latitude": 42.200000035, - "longitude": -8.759107913, + "latitude": 42.20497586, + "longitude": -8.697957006, "lines": [ - "11", - "29" + "14" ] }, { - "stopId": 3530, + "stopId": "vitrasa:14413", "name": { - "original": "Estrada de Camposancos, 88" + "original": "Estrada da Garrida (cruce Camiño Fabas)" }, - "latitude": 42.199773285, - "longitude": -8.759958845, + "latitude": 42.173955568, + "longitude": -8.703050076, "lines": [ - "11", - "29" + "7" ] }, { - "stopId": 3540, + "stopId": "vitrasa:14414", "name": { - "original": "Estrada de Camposancos, 138" + "original": "Avda. de Santa Mariña, 40" }, - "latitude": 42.19617384, - "longitude": -8.766295392, + "latitude": 42.221587211, + "longitude": -8.665078444, "lines": [ - "11", - "29" + "11" ] }, { - "stopId": 3550, + "stopId": "vitrasa:14415", "name": { - "original": "Estrada de Bembrive (cruce Camiño Cova)" + "original": "Avda. de Santa Mariña (antes 49)" }, - "latitude": 42.19747765, - "longitude": -8.688158543, + "latitude": 42.221557416, + "longitude": -8.665381534, "lines": [ - "6" + "11" ] }, { - "stopId": 3560, + "stopId": "vitrasa:14416", "name": { - "original": "Estrada de Bembrive, 104" + "original": "Rúa de Severino Cobas, 118" }, - "latitude": 42.209126518, - "longitude": -8.695599845, + "latitude": 42.225468623, + "longitude": -8.691491081, "lines": [ - "6" + "25" ] }, { - "stopId": 3570, + "stopId": "vitrasa:14419", "name": { - "original": "Estrada de Bembrive, 109" + "original": "Estrada de Bembrive (cruce Camiño dos Rapadouros)" }, - "latitude": 42.209576972, - "longitude": -8.695580071, + "latitude": 42.201138734, + "longitude": -8.688585073, "lines": [ "6" ] }, { - "stopId": 3572, + "stopId": "vitrasa:14420", "name": { - "original": "Estrada de Bembrive, 110" + "original": "Estrada de Bembrive, 318" }, - "latitude": 42.208457815, - "longitude": -8.695017358, + "latitude": 42.201419233, + "longitude": -8.688526069, "lines": [ - "14" + "6" ] }, { - "stopId": 3574, + "stopId": "vitrasa:14421", "name": { - "original": "Estrada de Bembrive, 129" + "original": "Estrada das Prantas (fronte Campo de Béisbol)" }, - "latitude": 42.208533311, - "longitude": -8.694987854, + "latitude": 42.186683264, + "longitude": -8.669320703, "lines": [ - "14" + "15C" ] }, { - "stopId": 3580, + "stopId": "vitrasa:14422", "name": { - "original": "Estrada de Bembrive, 180" + "original": "Estrada das Plantas (Campo de Béisbol)" }, - "latitude": 42.204440318, - "longitude": -8.690871804, + "latitude": 42.18695315, + "longitude": -8.669514066, "lines": [ - "6", - "14" + "15C" ] }, { - "stopId": 3590, + "stopId": "vitrasa:14425", "name": { - "original": "Estrada de Bembrive, 195" + "original": "Avda. do Alcalde Gregorio Espino, 2" }, - "latitude": 42.204458432, - "longitude": -8.690765895, + "latitude": 42.232253792, + "longitude": -8.707208575, "lines": [ - "6", - "14" + "31" ] }, { - "stopId": 3600, + "stopId": "vitrasa:14475", "name": { - "original": "Estrada de Bembrive, 22" + "original": "Rúa de Barcelona, 78" }, - "latitude": 42.21246424, - "longitude": -8.697218847, + "latitude": 42.222992354, + "longitude": -8.728300382, "lines": [ - "6" + "C1" ] }, { - "stopId": 3610, + "stopId": "vitrasa:1450", "name": { - "original": "Estrada de Bembrive, 237" + "original": "Avda. de Castrelos, 366" }, - "latitude": 42.204446407, - "longitude": -8.68809021, + "latitude": 42.201044695, + "longitude": -8.726112037, "lines": [ - "6", - "14" + "7", + "U1" ] }, { - "stopId": 3620, + "stopId": "vitrasa:1460", "name": { - "original": "Estrada de Bembrive, 278" + "original": "Avda. de Castrelos, 396" }, - "latitude": 42.202562995, - "longitude": -8.685437577, + "latitude": 42.198867605, + "longitude": -8.72460549, "lines": [ - "6" + "7", + "U1" ] }, { - "stopId": 3630, + "stopId": "vitrasa:1470", "name": { - "original": "Estrada de Bembrive, 269" + "original": "Avda. de Castrelos, 399" }, - "latitude": 42.20274418, - "longitude": -8.684443742, + "latitude": 42.194996678, + "longitude": -8.72097155, "lines": [ - "6", - "14" + "7" ] }, { - "stopId": 3640, + "stopId": "vitrasa:1480", "name": { - "original": "Estrada de Bembrive, 315" + "original": "Avda. de Castrelos, 526" }, - "latitude": 42.197359418, - "longitude": -8.688113004, + "latitude": 42.19015727, + "longitude": -8.72109012, "lines": [ - "6" + "7", + "U1" ] }, { - "stopId": 3650, + "stopId": "vitrasa:14890", "name": { - "original": "Estrada de Bembrive, 346" + "original": "Rúa das Teixugueiras, 25" }, - "latitude": 42.199275919, - "longitude": -8.689032944, + "latitude": 42.207545331, + "longitude": -8.758718406, "lines": [ - "6" + "5B", + "13", + "N4", + "U1", + "H", + "PSA 1", + "PSA 4" ] }, { - "stopId": 3660, + "stopId": "vitrasa:14892", "name": { - "original": "Estrada de Bembrive, 39" + "original": "Rúa do Conde de Torrecedeira, 123" }, - "latitude": 42.212227656, - "longitude": -8.697028614, + "latitude": 42.224929414, + "longitude": -8.735414067, "lines": [ - "6" + "C1", + "C3d", + "A", + "9B", + "15C", + "N4", + "H1" ] }, { - "stopId": 3670, + "stopId": "vitrasa:14893", "name": { - "original": "Estrada de Bembrive, 398" + "original": "Rúa de Manuel Costas Bastos, 26" }, - "latitude": 42.194968863, - "longitude": -8.689201981, + "latitude": 42.243157956, + "longitude": -8.666962176, "lines": [ - "6" + "9B", + "27", + "28" ] }, { - "stopId": 3680, + "stopId": "vitrasa:14894", "name": { - "original": "Estrada de Bembrive, 64" + "original": "Avda. do Alcalde Portanet, 8" }, - "latitude": 42.211144971, - "longitude": -8.69652789, + "latitude": 42.211736934, + "longitude": -8.733337505, "lines": [ - "6" + "7", + "12B", + "17", + "H1", + "VTS" ] }, { - "stopId": 3690, + "stopId": "vitrasa:14895", "name": { - "original": "Estrada de Bembrive, 73" + "original": "Rúa do Areiro (cruce Camiño das Laxes)" }, - "latitude": 42.210947345, - "longitude": -8.69627482, + "latitude": 42.241392275, + "longitude": -8.681203235, "lines": [ - "6" + "28" ] }, { - "stopId": 3700, + "stopId": "vitrasa:14896", "name": { - "original": "Estrada de Bembrive (cruce Camiño Riomao)" + "original": "Rúa do Areiro, 93" }, - "latitude": 42.194055385, - "longitude": -8.692079677, + "latitude": 42.241385532, + "longitude": -8.681400937, "lines": [ - "6" + "28" ] }, { - "stopId": 3710, + "stopId": "vitrasa:14897", "name": { - "original": "Estrada de Bembrive, 363" + "original": "Camiño do Arieiro (fronte 13)" }, - "latitude": 42.193846109, - "longitude": -8.69200489, + "latitude": 42.213239161, + "longitude": -8.67854147, "lines": [ - "6" + "31" ] }, { - "stopId": 3720, + "stopId": "vitrasa:14898", "name": { - "original": "Estrada de Bembrive, 341" + "original": "Camiño do Arieiro, 13" }, - "latitude": 42.1948986, - "longitude": -8.689213754, + "latitude": 42.213239161, + "longitude": -8.678369808, "lines": [ - "6" + "31" ] }, { - "stopId": 3730, + "stopId": "vitrasa:14899", "name": { - "original": "Estrada de Bembrive, 301" + "original": "Rúa de López Mora, 33" }, - "latitude": 42.199203404, - "longitude": -8.688880116, + "latitude": 42.225485719, + "longitude": -8.730501434, "lines": [ - "6" + "5A", + "5B", + "12A" ] }, { - "stopId": 3740, + "stopId": "vitrasa:1490", "name": { - "original": "Rúa de Canido (Igrexa)" + "original": "Avda. de Castrelos, 67" }, - "latitude": 42.197431882, - "longitude": -8.790144971, + "latitude": 42.210613294, + "longitude": -8.732057664, "lines": [ - "C3d", - "4C", - "10" + "7", + "12B", + "17", + "27", + "H1", + "H2" ] }, { - "stopId": 3750, + "stopId": "vitrasa:14900", "name": { - "original": "Rúa de Canido (Praia de Canido)" + "original": "Rúa de Martín Echegaray, 24" }, - "latitude": 42.193128934, - "longitude": -8.797957944, + "latitude": 42.217196117, + "longitude": -8.743726669, "lines": [ - "10", - "11" + "23", + "N4" ] }, { - "stopId": 3760, + "stopId": "vitrasa:14901", "name": { - "original": "Rúa de Canido (fronte 119)" + "original": "Avda. de Castelao, 1" }, - "latitude": 42.1957321, - "longitude": -8.795211362, + "latitude": 42.220211003, + "longitude": -8.734183023, "lines": [ + "C3i", "10", - "11" + "11", + "15A", + "U1" ] }, { - "stopId": 3770, + "stopId": "vitrasa:14903", "name": { - "original": "Rúa de Canido, 135" + "original": "Rúa de Pi i Margall, 66" }, - "latitude": 42.1950348, - "longitude": -8.795701844, + "latitude": 42.23174719, + "longitude": -8.731081308, "lines": [ - "C3d", - "10", - "11" + "VTS" ] }, { - "stopId": 3780, + "stopId": "vitrasa:14905", "name": { - "original": "Rúa de Canido, 217" + "original": "Camiño da Devesa (Cemiterio)" }, - "latitude": 42.193041793, - "longitude": -8.797590453, + "latitude": 42.249981353, + "longitude": -8.667186504, "lines": [ - "C3d", - "10", - "11" + "9B" ] }, { - "stopId": 3790, + "stopId": "vitrasa:14906", "name": { - "original": "Rúa de Canido, 15" + "original": "Rúa da Rabadeira, 6" }, - "latitude": 42.201898697, - "longitude": -8.781706742, + "latitude": 42.232479787, + "longitude": -8.654890792, "lines": [ - "C3d", - "4C", - "10" + "9B", + "27" ] }, { - "stopId": 3800, + "stopId": "vitrasa:14907", "name": { - "original": "Rúa de Canido, 26" + "original": "Rúa da Rabadeira, 24" }, - "latitude": 42.199639519, - "longitude": -8.785727373, + "latitude": 42.233655479, + "longitude": -8.653300242, "lines": [ - "10" + "9B", + "27" ] }, { - "stopId": 3810, + "stopId": "vitrasa:14908", "name": { - "original": "Rúa de Canido, 55" + "original": "Rúa da Rabadeira, 17" }, - "latitude": 42.200106486, - "longitude": -8.785121194, + "latitude": 42.233829075, + "longitude": -8.653458259, "lines": [ - "C3d", - "4C", - "10" + "9B" ] }, { - "stopId": 3820, + "stopId": "vitrasa:14909", "name": { - "original": "Rúa do Falcoído, 16" + "original": "Rúa da Rabadeira, 11" }, - "latitude": 42.182659954, - "longitude": -8.699663442, + "latitude": 42.232663198, + "longitude": -8.655097059, "lines": [ - "A" + "9B" ] }, { - "stopId": 3830, + "stopId": "vitrasa:14910", "name": { - "original": "Rúa do Falcoído (cruce Camiño Goaldino)" + "original": "Estrada do Marco, 4" }, - "latitude": 42.180635405, - "longitude": -8.696958243, + "latitude": 42.21025095, + "longitude": -8.704036986, "lines": [ - "A" + "H3" ] }, { - "stopId": 3840, + "stopId": "vitrasa:14911", "name": { - "original": "Rúa do Falcoído (cruce Camiño das Presas)" + "original": "Estrada do Marco, 16" }, - "latitude": 42.181019011, - "longitude": -8.696918009, + "latitude": 42.208830737, + "longitude": -8.706971174, "lines": [ - "A" + "H3" ] }, { - "stopId": 3850, + "stopId": "vitrasa:150", "name": { - "original": "Estrada Clara Campoamor (cruce Estrada Marcosende)" + "original": "Avda. do Alcalde Lavadores, 48" }, - "latitude": 42.167933917, - "longitude": -8.692758811, + "latitude": 42.222636676, + "longitude": -8.697201413, "lines": [ - "A", - "U1" + "6" ] }, { - "stopId": 3860, + "stopId": "vitrasa:1500", "name": { - "original": "Estrada Clara Campoamor (cruce Rúa do Falcoído)" + "original": "Avda. de Castrelos, 58" }, - "latitude": 42.168248021, - "longitude": -8.692608608, + "latitude": 42.217084821, + "longitude": -8.732530893, "lines": [ - "A", - "U1" + "7", + "12B", + "17", + "27", + "H2", + "VTS", + "PTL" ] }, { - "stopId": 3870, + "stopId": "vitrasa:15001", "name": { - "original": "Rúa do Falcoído, 13" + "original": "Rúa Regueiro do Forno (Vial C) Centro de Servicios" }, - "latitude": 42.182749988, - "longitude": -8.699953254, + "latitude": 42.176036704, + "longitude": -8.709480986, "lines": [ - "A" + "PTL" ] }, { - "stopId": 3880, + "stopId": "vitrasa:15002", "name": { - "original": "Estrada da Coutada, 44" + "original": "PTL 2" }, - "latitude": 42.194829735, - "longitude": -8.699040324, + "latitude": 42.177194637, + "longitude": -8.707850807, "lines": [ - "6" + "PTL" ] }, { - "stopId": 3890, + "stopId": "vitrasa:15003", "name": { - "original": "Estrada da Coutada, 39" + "original": "PTL 3" }, - "latitude": 42.193625246, - "longitude": -8.7014263, + "latitude": 42.178231278, + "longitude": -8.706474418, "lines": [ - "6", - "27" + "PTL" ] }, { - "stopId": 3900, + "stopId": "vitrasa:15004", "name": { - "original": "Estrada da Coutada, 19" + "original": "PTL 4" }, - "latitude": 42.19232927, - "longitude": -8.704749414, + "latitude": 42.176503017, + "longitude": -8.710007303, "lines": [ - "6", - "27" + "PTL" ] }, { - "stopId": 3910, + "stopId": "vitrasa:1510", "name": { - "original": "Estrada da Coutada, 68" + "original": "Avda. da Ponte, 80" }, - "latitude": 42.195404022, - "longitude": -8.695794851, + "latitude": 42.215203365, + "longitude": -8.670416197, "lines": [ - "6" + "15B", + "15C" ] }, { - "stopId": 3920, + "stopId": "vitrasa:1520", "name": { - "original": "Estrada da Coutada, 65" + "original": "Avda. da Ponte, 83" }, - "latitude": 42.195725689, - "longitude": -8.697154293, + "latitude": 42.215400704, + "longitude": -8.671308533, "lines": [ - "6", - "27" + "15B", + "15C" ] }, { - "stopId": 3930, + "stopId": "vitrasa:1530", "name": { - "original": "Estrada da Coutada, 12" + "original": "Avda. da Ponte (fronte Grupo S. Gorxal)" }, - "latitude": 42.19287831, - "longitude": -8.703506202, + "latitude": 42.212814417, + "longitude": -8.670537674, "lines": [ - "6", - "27" + "15B", + "15C" ] }, { - "stopId": 3940, + "stopId": "vitrasa:1540", "name": { - "original": "Estrada de Casás, 83" + "original": "Avda. da Ponte, 15" }, - "latitude": 42.196165214, - "longitude": -8.759890011, + "latitude": 42.221677429, + "longitude": -8.66978207, "lines": [ - "29" + "11", + "15A", + "15B", + "15C", + "VTS" ] }, { - "stopId": 3950, + "stopId": "vitrasa:1550", "name": { - "original": "Estrada de Casás (cruce Camiño do Rial)" + "original": "Avda. da Ponte, 18" }, - "latitude": 42.196014193, - "longitude": -8.759919516, + "latitude": 42.221299207, + "longitude": -8.670013709, "lines": [ - "29" + "11", + "15A", + "15B", + "15C" ] }, { - "stopId": 3960, + "stopId": "vitrasa:1560", "name": { - "original": "Baixada do Castelo" + "original": "Avda. da Ponte, 31" }, - "latitude": 42.213984907, - "longitude": -8.682160511, + "latitude": 42.219388605, + "longitude": -8.669172606, "lines": [ - "12A", - "12B", - "13", + "15A", "15B", - "15C", - "31" + "VTS" ] }, { - "stopId": 3970, + "stopId": "vitrasa:1570", "name": { - "original": "Estrada Vella de Madrid, 190" + "original": "Avda. da Ponte, 47" }, - "latitude": 42.215872123, - "longitude": -8.679765298, + "latitude": 42.217957539, + "longitude": -8.669369577, "lines": [ - "12B", "15B", - "15C", - "U2" + "15C" ] }, { - "stopId": 3980, + "stopId": "vitrasa:1580", "name": { - "original": "Estrada Vella de Madrid (cruce Hospital)" + "original": "Avda. da Ponte, 54" }, - "latitude": 42.21620386, - "longitude": -8.681570425, + "latitude": 42.218393587, + "longitude": -8.669480106, "lines": [ - "12A", - "12B", - "13", "15B", - "15C", - "31", - "U2" + "15C" ] }, { - "stopId": 4000, + "stopId": "vitrasa:1590", "name": { - "original": "Estrada de Fragoselo, 143" + "original": "Avda. de Galicia (Parque Riouxa)" }, - "latitude": 42.182434997, - "longitude": -8.764713761, + "latitude": 42.256667905, + "longitude": -8.682575386, "lines": [ - "29" + "C3i" ] }, { - "stopId": 4010, + "stopId": "vitrasa:160", "name": { - "original": "Estrada de Fragoselo, 170" + "original": "Avda. do Alcalde Lavadores, 67" }, - "latitude": 42.184148566, - "longitude": -8.767237312, + "latitude": 42.222830286, + "longitude": -8.697231476, "lines": [ - "29" + "6" ] }, { - "stopId": 4020, + "stopId": "vitrasa:1600", "name": { - "original": "Estrada de Fragoselo, 79" + "original": "Avda. de Galicia, 103" }, - "latitude": 42.187056187, - "longitude": -8.769605703, + "latitude": 42.251389209, + "longitude": -8.689369833, "lines": [ - "29" + "C3i" ] }, { - "stopId": 4030, + "stopId": "vitrasa:1610", "name": { - "original": "Estrada de Fragoselo, 111" + "original": "Avda. de Galicia, 146" }, - "latitude": 42.184118753, - "longitude": -8.767049558, + "latitude": 42.251376198, + "longitude": -8.68920404, "lines": [ - "29" + "C3d" ] }, { - "stopId": 4040, + "stopId": "vitrasa:1620", "name": { - "original": "Estrada de Fragoselo, 108" + "original": "Avda. de Galicia, 139" }, - "latitude": 42.18661248, - "longitude": -8.769574881, + "latitude": 42.253987165, + "longitude": -8.686196616, "lines": [ - "29" + "C3i" ] }, { - "stopId": 4050, + "stopId": "vitrasa:1630", "name": { - "original": "Estrada de Fragoselo, 196" + "original": "Avda. de Galicia, 165" }, - "latitude": 42.182111026, - "longitude": -8.76479691, + "latitude": 42.255177674, + "longitude": -8.684734482, "lines": [ - "29" + "C3i" ] }, { - "stopId": 4060, + "stopId": "vitrasa:1640", "name": { - "original": "Estrada da Gándara, 7" + "original": "Avda. de Galicia, 200" }, - "latitude": 42.164326088, - "longitude": -8.716892619, + "latitude": 42.254950083, + "longitude": -8.684862748, "lines": [ - "7" + "C3d" ] }, { - "stopId": 4070, + "stopId": "vitrasa:1650", "name": { - "original": "Estrada da Gándara, 55" + "original": "Avda. de Galicia, 238" }, - "latitude": 42.162254659, - "longitude": -8.713740793, + "latitude": 42.256910715, + "longitude": -8.68201353, "lines": [ - "7" + "C3d" ] }, { - "stopId": 4080, + "stopId": "vitrasa:1660", "name": { - "original": "Estrada da Gándara, 48" + "original": "Avda. de Galicia, 280" }, - "latitude": 42.162252671, - "longitude": -8.71400365, + "latitude": 42.259217959, + "longitude": -8.679666503, "lines": [ - "7" + "C3d" ] }, { - "stopId": 4090, + "stopId": "vitrasa:1670", "name": { - "original": "Estrada da Garrida, 124" + "original": "Avda. de Galicia, 285" }, - "latitude": 42.170369621, - "longitude": -8.708506123, + "latitude": 42.258365967, + "longitude": -8.680508997, "lines": [ - "7" + "C3i" ] }, { - "stopId": 4100, + "stopId": "vitrasa:1680", "name": { - "original": "Estrada da Garrida, 199" + "original": "Avda. de Galicia (Parque Cruce Balbarda)" }, - "latitude": 42.16978602, - "longitude": -8.708967287, + "latitude": 42.251327471, + "longitude": -8.69260735, "lines": [ - "7" + "C3d" ] }, { - "stopId": 4110, + "stopId": "vitrasa:1690", "name": { - "original": "Estrada da Garrida, 40" + "original": "Avda. de Galicia, 71" }, - "latitude": 42.165331611, - "longitude": -8.714862589, + "latitude": 42.251420909, + "longitude": -8.692153216, "lines": [ - "7" + "C3i" ] }, { - "stopId": 4120, + "stopId": "vitrasa:170", "name": { - "original": "Estrada da Garrida, 84" + "original": "Avda. do Alcalde Lavadores, 152" }, - "latitude": 42.166399713, - "longitude": -8.711237684, + "latitude": 42.215084316, + "longitude": -8.696854931, "lines": [ - "7" + "6" ] }, { - "stopId": 4130, + "stopId": "vitrasa:1710", "name": { - "original": "Estrada da Garrida, 83" + "original": "Avda. de Vigo, 6" }, - "latitude": 42.16561193, - "longitude": -8.714589004, + "latitude": 42.274450823, + "longitude": -8.667138233, "lines": [ - "7" + "C3i" ] }, { - "stopId": 4140, + "stopId": "vitrasa:1720", "name": { - "original": "Estrada da Garrida (frente 80)" + "original": "Avda. de Vigo, 95" }, - "latitude": 42.166208944, - "longitude": -8.711992518, + "latitude": 42.270480988, + "longitude": -8.667726374, "lines": [ - "7" + "C3d" ] }, { - "stopId": 4150, + "stopId": "vitrasa:1730", "name": { - "original": "Estrada de Miraflores, 69" + "original": "Avda. de Vigo, 129" }, - "latitude": 42.217620909, - "longitude": -8.712429612, + "latitude": 42.267833798, + "longitude": -8.671345739, "lines": [ - "18A", - "18B", - "18H" + "C3d" ] }, { - "stopId": 4160, + "stopId": "vitrasa:1740", "name": { - "original": "Estrada de Miraflores, 36" + "original": "Avda. de Vigo, 120" }, - "latitude": 42.217849364, - "longitude": -8.710994711, + "latitude": 42.27068743, + "longitude": -8.668057842, "lines": [ - "18A" + "C3i" ] }, { - "stopId": 4170, + "stopId": "vitrasa:1750", "name": { - "original": "Estrada de Miraflores, 64" + "original": "Avda. de Vigo, 161" }, - "latitude": 42.217345186, - "longitude": -8.713011334, + "latitude": 42.266305919, + "longitude": -8.672818918, "lines": [ - "18A", - "18B", - "18H" + "C3d" ] }, { - "stopId": 4200, + "stopId": "vitrasa:1760", "name": { - "original": "Estrada de Moledo, 6" + "original": "Avda. de Vigo, 201" }, - "latitude": 42.215236994, - "longitude": -8.707384971, + "latitude": 42.26408966, + "longitude": -8.674082239, "lines": [ - "14", - "18A" + "C3d" ] }, { - "stopId": 4210, + "stopId": "vitrasa:1770", "name": { - "original": "Estrada de Moledo, 42" + "original": "Avda. de Vigo (Alameda de Rosalía de Castro)" }, - "latitude": 42.212141078, - "longitude": -8.704563545, + "latitude": 42.26785896, + "longitude": -8.671440263, "lines": [ - "14", - "18A" + "C3i" ] }, { - "stopId": 4220, + "stopId": "vitrasa:1780", "name": { - "original": "Estrada de Moledo, 22" + "original": "Avda. de Vigo, 230" }, - "latitude": 42.213737557, - "longitude": -8.706283115, + "latitude": 42.266245291, + "longitude": -8.672965754, "lines": [ - "14", - "18A" + "C3i" ] }, { - "stopId": 4230, + "stopId": "vitrasa:1790", "name": { - "original": "Estrada de Moledo, 1" + "original": "Avda. de Vigo, 261 (Cuatro Puentes)" }, - "latitude": 42.215373761, - "longitude": -8.707378349, + "latitude": 42.261621089, + "longitude": -8.677207279, "lines": [ - "14", - "18A" + "C3d" ] }, { - "stopId": 4240, + "stopId": "vitrasa:180", "name": { - "original": "Estrada de Moledo, 73" + "original": "Estrada de Valadares, 451" }, - "latitude": 42.212378349, - "longitude": -8.704729584, + "latitude": 42.166144986, + "longitude": -8.720162371, "lines": [ - "14", - "18A" + "7" ] }, { - "stopId": 4250, + "stopId": "vitrasa:1800", "name": { - "original": "Estrada de Moledo, 25" + "original": "Avda. de Vigo, 266" }, - "latitude": 42.213377597, - "longitude": -8.70601168, + "latitude": 42.263995234, + "longitude": -8.674224503, "lines": [ - "14", - "18A" + "C3i" ] }, { - "stopId": 4280, + "stopId": "vitrasa:1810", "name": { - "original": "Rúa de Emilia Pardo Bazán, 80" + "original": "Avda. de Vigo, 320" }, - "latitude": 42.224507337, - "longitude": -8.713465538, + "latitude": 42.262068498, + "longitude": -8.676736193, "lines": [ - "14", - "18B", - "18H" + "C3i" ] }, { - "stopId": 4290, + "stopId": "vitrasa:1820", "name": { - "original": "Rúa de Emilia Pardo Bazán, 3" + "original": "Avda. de Vigo, 49" }, - "latitude": 42.227785739, - "longitude": -8.719460889, + "latitude": 42.271878394, + "longitude": -8.666356304, "lines": [ - "14", - "18A", - "18B", - "18H" + "C3d" ] }, { - "stopId": 4300, + "stopId": "vitrasa:1830", "name": { - "original": "Rúa de Emilia Pardo Bazán, 104" + "original": "Avda. de Vigo, 11" }, - "latitude": 42.22278924, - "longitude": -8.711754289, + "latitude": 42.274038501, + "longitude": -8.666949932, "lines": [ - "14", - "18B", - "18H" + "C3d" ] }, { - "stopId": 4310, + "stopId": "vitrasa:1840", "name": { - "original": "Rúa de Emilia Pardo Bazán, 111" + "original": "Avda. de Vigo, 72" }, - "latitude": 42.222713762, - "longitude": -8.711555806, + "latitude": 42.27159436, + "longitude": -8.666389735, "lines": [ - "14", - "18B", - "18H" + "C3i" ] }, { - "stopId": 4320, + "stopId": "vitrasa:1850", "name": { - "original": "Rúa de Emilia Pardo Bazán, 2" + "original": "Avda. de Europa (antes Camiño Freixeiro)" }, - "latitude": 42.227716225, - "longitude": -8.719750568, + "latitude": 42.216135691, + "longitude": -8.759632243, "lines": [ - "14", - "18B", - "18H" + "C3d", + "C3i", + "4A", + "12A", + "15A" ] }, { - "stopId": 4330, + "stopId": "vitrasa:1860", "name": { - "original": "Rúa de Emilia Pardo Bazán (cruce Baixada á Salgueira)" + "original": "Avda. de Europa (cruce Rúa da Pardaíña)" }, - "latitude": 42.226463146, - "longitude": -8.71614062, + "latitude": 42.216741568, + "longitude": -8.757129742, "lines": [ - "14", - "18A", - "18B", - "18H" + "C3d", + "C3i", + "4A", + "12A", + "15A" ] }, { - "stopId": 4340, + "stopId": "vitrasa:1870", "name": { - "original": "Rúa de Emilia Pardo Bazán, 54" + "original": "Avda. de Europa, 102" }, - "latitude": 42.226112503, - "longitude": -8.715718376, + "latitude": 42.211235082, + "longitude": -8.773459294, "lines": [ - "14", - "18B", - "18H" + "C3d", + "C3i", + "15A" ] }, { - "stopId": 4350, + "stopId": "vitrasa:1880", "name": { - "original": "Rúa de Emilia Pardo Bazán, 43" + "original": "Avda. de Europa (cruce Rúa das Teixugueiras)" }, - "latitude": 42.224562952, - "longitude": -8.713390437, + "latitude": 42.216687933, + "longitude": -8.756794466, "lines": [ - "14", - "18B", - "18H" + "C3d", + "C3i", + "4C", + "12A", + "15A", + "N1" ] }, { - "stopId": 4440, + "stopId": "vitrasa:1890", "name": { - "original": "Estrada de San Xoán, 169" + "original": "Avda. de Europa, 23" }, - "latitude": 42.183275038, - "longitude": -8.742437444, + "latitude": 42.215913672, + "longitude": -8.759904797, "lines": [ - "17" + "C3d", + "C3i", + "4C", + "12A", + "15A", + "N1" ] }, { - "stopId": 4450, + "stopId": "vitrasa:190", "name": { - "original": "Estrada de San Xoán, 61" + "original": "Rúa de Ángel de Lema, 58" }, - "latitude": 42.185081179, - "longitude": -8.748029634, + "latitude": 42.250539537, + "longitude": -8.685179363, "lines": [ - "17" + "C3i", + "10" ] }, { - "stopId": 4460, + "stopId": "vitrasa:1900", "name": { - "original": "Estrada de San Xoán, 141" + "original": "Avda. de Europa (cruce Rúa do Bravo)" }, - "latitude": 42.18366712, - "longitude": -8.744402777, + "latitude": 42.211855119, + "longitude": -8.766755158, "lines": [ - "17" + "C3d", + "C3i", + "4C", + "15A", + "N1" ] }, { - "stopId": 4490, + "stopId": "vitrasa:1910", "name": { - "original": "Rúa de Manuel Lago Lago (fronte Colexio)" + "original": "Avda. de Europa (fronte cruce Rúa do Bravo)" }, - "latitude": 42.187522648, - "longitude": -8.772977937, + "latitude": 42.211905694, + "longitude": -8.766999036, "lines": [ - "29" + "C3d", + "C3i", + "15A" ] }, { - "stopId": 4500, + "stopId": "vitrasa:1920", "name": { - "original": "Rúa de Manuel Lago Lago, 20" + "original": "Avda. de Europa, 101" }, - "latitude": 42.188761213, - "longitude": -8.775973652, + "latitude": 42.211066417, + "longitude": -8.772953743, "lines": [ - "29" + "C3d", + "C3i", + "4C", + "15A", + "N1" ] }, { - "stopId": 4510, + "stopId": "vitrasa:1930", "name": { - "original": "Rúa de Manuel Lago Lago (Colexio)" + "original": "Estrada de Madrid (fronte Seminario)" }, - "latitude": 42.187542924, - "longitude": -8.772887753, + "latitude": 42.21474886, + "longitude": -8.69897918, "lines": [ - "29" + "12A", + "12B", + "13", + "U2" ] }, { - "stopId": 4520, + "stopId": "vitrasa:1940", "name": { - "original": "Estrada das Plantas (Cidade Deportiva)" + "original": "Avda. de Madrid, 136" }, - "latitude": 42.175884385, - "longitude": -8.670789023, + "latitude": 42.218338954, + "longitude": -8.703817429, "lines": [ - "15C" + "12A", + "12B", + "13" ] }, { - "stopId": 4530, + "stopId": "vitrasa:195", "name": { - "original": "Estrada das Plantas (fronte cruce Camiño do Pouso)" + "original": "Rúa de Ángel de Lema, 247" }, - "latitude": 42.199681015, - "longitude": -8.668860289, + "latitude": 42.256624708, + "longitude": -8.677490797, "lines": [ - "15C" + "C3d", + "10" ] }, { - "stopId": 4540, + "stopId": "vitrasa:1950", "name": { - "original": "Estrada das Plantas (fronte Viveiros)" + "original": "Avda. de Madrid, 124" }, - "latitude": 42.181370416, - "longitude": -8.667861084, + "latitude": 42.220567154, + "longitude": -8.706419628, "lines": [ - "15C" + "12A", + "12B", + "13" ] }, { - "stopId": 4550, + "stopId": "vitrasa:1960", "name": { - "original": "Estrada das Plantas (cruce Camiño do Pouso)" + "original": "Avda. de Madrid, 62" }, - "latitude": 42.199945182, - "longitude": -8.669085873, + "latitude": 42.224676782, + "longitude": -8.711832326, "lines": [ - "15B", - "15C" + "12A", + "12B", + "13", + "U2", + "H2" ] }, { - "stopId": 4560, + "stopId": "vitrasa:1970", "name": { - "original": "Estrada de Valadares, 233" + "original": "Avda. de Madrid, 57" }, - "latitude": 42.177017792, - "longitude": -8.721519832, + "latitude": 42.223965709, + "longitude": -8.710062068, "lines": [ - "7" + "12A", + "12B", + "13" ] }, { - "stopId": 4570, + "stopId": "vitrasa:1980", "name": { - "original": "Estrada de Valadares, 100" + "original": "Estrada de Madrid (Seminario)" }, - "latitude": 42.183987864, - "longitude": -8.724154939, + "latitude": 42.214703324, + "longitude": -8.699378397, "lines": [ - "7", - "U1" + "12A", + "12B", + "13", + "U2" ] }, { - "stopId": 4580, + "stopId": "vitrasa:1990", "name": { - "original": "Estrada de Valadares, 146" + "original": "Avda. de Madrid, 110" }, - "latitude": 42.180249473, - "longitude": -8.721850007, + "latitude": 42.222130198, + "longitude": -8.708300774, "lines": [ - "7", - "U1" + "12A", + "12B", + "13", + "U2" ] }, { - "stopId": 4590, + "stopId": "vitrasa:20", "name": { - "original": "Estrada de Valadares, 173" + "original": "Rúa do Abade Juan de Bastos (fronte Asociación Veciños)" }, - "latitude": 42.180670846, - "longitude": -8.721533506, + "latitude": 42.187593499, + "longitude": -8.741246641, "lines": [ - "7" + "17" ] }, { - "stopId": 4600, + "stopId": "vitrasa:200", "name": { - "original": "Estrada de Valadares, 212" + "original": "Rúa de Ángel de Lema, 100" }, - "latitude": 42.176419487, - "longitude": -8.72197849, + "latitude": 42.252115803, + "longitude": -8.683374373, "lines": [ - "7", - "U1" + "C3i", + "10" ] }, { - "stopId": 4610, + "stopId": "vitrasa:2000", "name": { - "original": "Estrada de Valadares, 262" + "original": "Avda. de Madrid, 133" }, - "latitude": 42.172481228, - "longitude": -8.723905842, + "latitude": 42.220728012, + "longitude": -8.70612292, "lines": [ - "7", - "U1" + "12A", + "12B", + "13" ] }, { - "stopId": 4620, + "stopId": "vitrasa:20009", "name": { - "original": "Estrada de Valadares, 329" + "original": "Estrada Herville, 16" }, - "latitude": 42.172330151, - "longitude": -8.723766367, + "latitude": 42.154843231, + "longitude": -8.67357438, "lines": [ "7" ] }, { - "stopId": 4630, + "stopId": "vitrasa:20010", "name": { - "original": "Estrada de Valadares, 406" + "original": "Avda. de Balaídos, 69" }, - "latitude": 42.165721529, - "longitude": -8.720146278, + "latitude": 42.212824845, + "longitude": -8.737161077, "lines": [ - "7", - "U1" + "A", + "16", + "23", + "H" ] }, { - "stopId": 4640, + "stopId": "vitrasa:20011", "name": { - "original": "Estrada de Valadares (cruce Camiño do Canizo)" + "original": "Avda. de Balaídos, 11" }, - "latitude": 42.18659932, - "longitude": -8.719619913, + "latitude": 42.213089061, + "longitude": -8.733392573, "lines": [ - "7" + "A", + "16", + "23", + "H" ] }, { - "stopId": 4650, + "stopId": "vitrasa:20012", "name": { - "original": "Estrada de Valadares, 48" + "original": "Avda. de Castrelos, 33" }, - "latitude": 42.186641056, - "longitude": -8.719853265, + "latitude": 42.215888032, + "longitude": -8.732331627, "lines": [ - "7", - "U1" + "A", + "16", + "23", + "27", + "H2" ] }, { - "stopId": 4660, + "stopId": "vitrasa:20013", "name": { - "original": "Estrada de Valadares, 99" + "original": "Avda. de Castrelos, 116" }, - "latitude": 42.183997801, - "longitude": -8.723857214, + "latitude": 42.215905917, + "longitude": -8.732471102, "lines": [ - "7" - ] + "7", + "12B", + "17", + "27", + "H2", + "VTS", + "PTL" + ] }, { - "stopId": 4670, + "stopId": "vitrasa:20018", "name": { - "original": "Estrada do Vao, 27" + "original": "Estrada Herville, 70" }, - "latitude": 42.193836069, - "longitude": -8.776441689, + "latitude": 42.151451604, + "longitude": -8.673803367, "lines": [ - "11" + "7" ] }, { - "stopId": 4680, + "stopId": "vitrasa:20019", "name": { - "original": "Estrada do Vao, 116" + "original": "Subida aos Padróns, 165" }, - "latitude": 42.19429691, - "longitude": -8.786574405, + "latitude": 42.149222193, + "longitude": -8.679363987, "lines": [ - "11" + "7" ] }, { - "stopId": 4690, + "stopId": "vitrasa:20020", "name": { - "original": "Estrada do Vao, 153" + "original": "Subida aos Padróns (cruce Parque Forestal)" }, - "latitude": 42.196307191, - "longitude": -8.790777973, + "latitude": 42.151606055, + "longitude": -8.679299082, "lines": [ - "11" + "7" ] }, { - "stopId": 4700, + "stopId": "vitrasa:20021", "name": { - "original": "Estrada do Vao, 46" + "original": "Subida aos Padróns (fronte 34)" }, - "latitude": 42.194014721, - "longitude": -8.777055245, + "latitude": 42.152770176, + "longitude": -8.686251828, "lines": [ - "11" + "7" ] }, { - "stopId": 4710, + "stopId": "vitrasa:20022", "name": { - "original": "Estrada do Vao, 65" + "original": "Rúa da Vía Norte (Hospital)" }, - "latitude": 42.194064592, - "longitude": -8.781224067, + "latitude": 42.234622237, + "longitude": -8.707758443, "lines": [ - "11" + "24" ] }, { - "stopId": 4720, + "stopId": "vitrasa:20023", "name": { - "original": "Estrada do Vao, 90" + "original": "Rúa da Vía Norte - Est. Intermodal - C.C." }, - "latitude": 42.193937416, - "longitude": -8.781634173, + "latitude": 42.234062973, + "longitude": -8.712195759, "lines": [ - "11" + "24" ] }, { - "stopId": 4730, + "stopId": "vitrasa:20024", "name": { - "original": "Estrada do Vao, 91" + "original": "Rúa das Teixugueiras, 34" }, - "latitude": 42.19405266, - "longitude": -8.78551292, + "latitude": 42.207634066, + "longitude": -8.758920861, "lines": [ - "11" + "5B", + "13", + "N4" ] }, { - "stopId": 4740, + "stopId": "vitrasa:20025", "name": { - "original": "Estrada do Vao (Praia do Vao)" + "original": "Rúa das Teixugueiras, 38" }, - "latitude": 42.196595321, - "longitude": -8.791019372, + "latitude": 42.206553268, + "longitude": -8.760122491, "lines": [ - "11" + "5B", + "13", + "N4" ] }, { - "stopId": 4750, + "stopId": "vitrasa:20026", "name": { - "original": "Estrada Vella de Madrid, 6" + "original": "Rúa das Teixugueiras, 29" }, - "latitude": 42.213983883, - "longitude": -8.697464269, + "latitude": 42.206488366, + "longitude": -8.759906624, "lines": [ - "12A", - "12B", + "5B", "13", - "U2", - "H3" + "N4", + "U1", + "H", + "PSA 1", + "PSA 4" ] }, { - "stopId": 4760, + "stopId": "vitrasa:20027", "name": { - "original": "Estrada Vella de Madrid, 34" + "original": "Avda. de Castelao, 64" }, - "latitude": 42.216359908, - "longitude": -8.693040769, + "latitude": 42.217691983, + "longitude": -8.749585877, "lines": [ + "C3d", + "4A", + "4C", + "5B", + "10", "12A", - "12B", "13", - "U2", - "H3" + "15A", + "N4", + "PSA 1", + "PSA 4" ] }, { - "stopId": 4770, + "stopId": "vitrasa:20029", "name": { - "original": "Estrada Vella de Madrid, 104" + "original": "Subida á Madroa (fronte Campo Fútbol)" }, - "latitude": 42.219822923, - "longitude": -8.684198247, + "latitude": 42.245921506, + "longitude": -8.673014474, "lines": [ - "12A", - "12B", - "13", - "31", - "U2" + "9B", + "28" ] }, { - "stopId": 4780, + "stopId": "vitrasa:20030", "name": { - "original": "Estrada Vella de Madrid, 136" + "original": "Subida á Madroa (Campo Fútbol)" }, - "latitude": 42.220845201, - "longitude": -8.680581909, + "latitude": 42.247859379, + "longitude": -8.674363625, "lines": [ - "12A", - "12B", - "13", - "31", - "U2" + "9B", + "28" ] }, { - "stopId": 4790, + "stopId": "vitrasa:20041", "name": { - "original": "Estrada Vella de Madrid, 123" + "original": "Rúa da Cabalaría, 91" }, - "latitude": 42.220436017, - "longitude": -8.683690589, + "latitude": 42.233622103, + "longitude": -8.689209566, "lines": [ - "12A", - "12B", - "13", - "31" + "27", + "28" ] }, { - "stopId": 4800, + "stopId": "vitrasa:20042", "name": { - "original": "Estrada Vella de Madrid, 160" + "original": "Rúa da Cabalaría, 148" }, - "latitude": 42.218049288, - "longitude": -8.679899408, + "latitude": 42.233723398, + "longitude": -8.689094231, "lines": [ - "12A", - "12B", - "13", - "31", - "U2" + "28" ] }, { - "stopId": 4810, + "stopId": "vitrasa:20043", "name": { - "original": "Estrada Vella de Madrid, 177" + "original": "Rúa do Areiro, 20" }, - "latitude": 42.21827574, - "longitude": -8.679588272, + "latitude": 42.236036786, + "longitude": -8.686656768, "lines": [ - "12A", - "12B", - "13", - "31" + "28" ] }, { - "stopId": 4820, + "stopId": "vitrasa:20044", "name": { - "original": "Estrada Vella de Madrid, 31" + "original": "Rúa de Martín Echegaray, 7" }, - "latitude": 42.216687676, - "longitude": -8.693917852, + "latitude": 42.215220874, + "longitude": -8.742680967, "lines": [ - "12A", - "12B", - "13", - "H3" + "23", + "N4" ] }, { - "stopId": 4830, + "stopId": "vitrasa:20045", "name": { - "original": "Estrada Vella de Madrid, 81" + "original": "Rúa de Xestoso, 4" }, - "latitude": 42.218719793, - "longitude": -8.690012555, + "latitude": 42.200532989, + "longitude": -8.674075447, "lines": [ - "12A", - "12B", - "13", - "H3" + "15B" ] }, { - "stopId": 4840, + "stopId": "vitrasa:20046", "name": { - "original": "Estrada Vella de Madrid, 76" + "original": "Rúa de Xestoso, 12" }, - "latitude": 42.218745617, - "longitude": -8.689009409, + "latitude": 42.201968444, + "longitude": -8.67477879, "lines": [ - "12A", - "12B", - "13", - "U2", - "H3" + "15B" ] }, { - "stopId": 4850, + "stopId": "vitrasa:20047", "name": { - "original": "Estrada Vella de Madrid (frente Centro Comercial)" + "original": "Rúa do Xestoso, 72" }, - "latitude": 42.216448197, - "longitude": -8.68163748, + "latitude": 42.204330306, + "longitude": -8.674670483, "lines": [ - "12A", - "13", - "31" + "15B" ] }, { - "stopId": 4860, + "stopId": "vitrasa:20048", "name": { - "original": "Estrada da Venda (cruce Camiño da Coutadiña)" + "original": "Avda. de Cesáreo Vázquez (cruce Camiño Amariz Lourenzo)" }, - "latitude": 42.182744465, - "longitude": -8.70286123, + "latitude": 42.182684406, + "longitude": -8.802402364, "lines": [ - "A", - "6" + "11", + "12A" ] }, { - "stopId": 4870, + "stopId": "vitrasa:20049", "name": { - "original": "Estrada da Venda, 5" + "original": "Avda. de Cesáreo Vázquez, 62" }, - "latitude": 42.192029809, - "longitude": -8.712623715, + "latitude": 42.18238342, + "longitude": -8.802126069, "lines": [ - "A", - "27", - "H3" + "11" ] }, { - "stopId": 4880, + "stopId": "vitrasa:20050", "name": { - "original": "Estrada da Venda, 240" + "original": "Rúa de Severino Cobas, 186" }, - "latitude": 42.188021902, - "longitude": -8.711457595, + "latitude": 42.225550059, + "longitude": -8.686684563, "lines": [ - "A", - "H3" + "25" ] }, { - "stopId": 4890, + "stopId": "vitrasa:20051", "name": { - "original": "Estrada da Venda, 238" + "original": "Rúa de Severino Cobas, 89" }, - "latitude": 42.186610014, - "longitude": -8.710023944, + "latitude": 42.225652904, + "longitude": -8.686624017, "lines": [ - "A", - "6" + "25" ] }, { - "stopId": 4900, + "stopId": "vitrasa:20052", "name": { - "original": "Estrada da Venda, 35" + "original": "Rúa de Aragón, 21" }, - "latitude": 42.188304845, - "longitude": -8.711474749, + "latitude": 42.232748414, + "longitude": -8.702539655, "lines": [ - "A", - "27", + "4A", "H3" ] }, { - "stopId": 4910, + "stopId": "vitrasa:20053", "name": { - "original": "Estrada da Venda, 4" + "original": "Rúa de Ángel de Lema (cruce Paraixal)" }, - "latitude": 42.19205763, - "longitude": -8.712722956, + "latitude": 42.248962858, + "longitude": -8.688272303, "lines": [ - "A", - "H3" + "C3i", + "10" ] }, { - "stopId": 4920, + "stopId": "vitrasa:20054", "name": { - "original": "Estrada da Venda, 49" + "original": "Rúa de Ángel de Lema, 33" }, - "latitude": 42.186610342, - "longitude": -8.709937804, + "latitude": 42.248897377, + "longitude": -8.689150714, "lines": [ - "A", - "6" + "C3d", + "10" ] }, { - "stopId": 4930, + "stopId": "vitrasa:20057", "name": { - "original": "Travesía da Devesa (Asociación Veciños)" + "original": "Estación Ferrocarril Guixar" }, - "latitude": 42.246018558, - "longitude": -8.669287042, + "latitude": 42.238843911, + "longitude": -8.713008504, "lines": [ - "9B", - "27", - "28" + "A", + "5B", + "16", + "24" ] }, { - "stopId": 4940, + "stopId": "vitrasa:20058", "name": { - "original": "Camiño da Devesa (fronte 55)" + "original": "Rúa do Canceleiro, 6" }, - "latitude": 42.245450719, - "longitude": -8.672406783, + "latitude": 42.238435471, + "longitude": -8.714413687, "lines": [ - "9B", - "27", - "28" + "A", + "5B", + "16", + "24" ] }, { - "stopId": 4960, + "stopId": "vitrasa:20059", "name": { - "original": "Rúa do Doutor Corbal, 135" + "original": "Rúa de Manuel Álvarez (fronte 10)" }, - "latitude": 42.256210875, - "longitude": -8.696882723, + "latitude": 42.222745522, + "longitude": -8.677932515, "lines": [ - "17" + "25", + "31", + "H3" ] }, { - "stopId": 4970, + "stopId": "vitrasa:20060", "name": { - "original": "Rúa do Doutor Corbal, 126" + "original": "Rúa de Manuel Álvarez, 10" }, - "latitude": 42.255883312, - "longitude": -8.696812986, + "latitude": 42.22282586, + "longitude": -8.678077606, "lines": [ - "17" + "25", + "31", + "H3" ] }, { - "stopId": 4980, + "stopId": "vitrasa:20061", "name": { - "original": "Rúa do Doutor Corbal, 149" + "original": "Rúa de Martín Echegaray (Colexio)" }, - "latitude": 42.257539061, - "longitude": -8.697019814, + "latitude": 42.217568173, + "longitude": -8.744018511, "lines": [ - "17" + "23", + "N4" ] }, { - "stopId": 5000, + "stopId": "vitrasa:20062", "name": { - "original": "Rúa do Doutor Corbal, 6" + "original": "Avda. de Beiramar, 1" }, - "latitude": 42.250121395, - "longitude": -8.696122376, + "latitude": 42.236143706, + "longitude": -8.73180718, "lines": [ - "17" + "10", + "15B" ] }, { - "stopId": 5010, + "stopId": "vitrasa:20071", "name": { - "original": "Rúa do Doutor Corbal, 95" + "original": "Rúa de Xestoso (fronte 105)" }, - "latitude": 42.254169539, - "longitude": -8.697752273, + "latitude": 42.205511653, + "longitude": -8.672824803, "lines": [ - "17" + "15B" ] }, { - "stopId": 5020, + "stopId": "vitrasa:20072", "name": { - "original": "Rúa do Doutor Corbal, 94" + "original": "Camiño do Pouso" }, - "latitude": 42.254104511, - "longitude": -8.697655199, + "latitude": 42.196643694, + "longitude": -8.671663218, "lines": [ - "17" + "15B" ] }, { - "stopId": 5030, + "stopId": "vitrasa:20075", "name": { - "original": "Avda. de Redondela (fronte 28)" + "original": "Avda. de Castelao, 65" }, - "latitude": 42.272502528, - "longitude": -8.664787252, + "latitude": 42.218011215, + "longitude": -8.745369728, "lines": [ - "C3i" + "C3i", + "4A", + "4C", + "10", + "11", + "12A", + "15A", + "N1", + "N4", + "U1" ] }, { - "stopId": 5040, + "stopId": "vitrasa:20076", "name": { - "original": "Rúa da Salgueira Entrada, 5" + "original": "Avda. de Castelao, 25" }, - "latitude": 42.222543586, - "longitude": -8.717809812, + "latitude": 42.21901679, + "longitude": -8.739919147, "lines": [ - "18A" + "C3i", + "4A", + "4C", + "10", + "11", + "12A", + "15A", + "N1", + "U1" ] }, { - "stopId": 5060, + "stopId": "vitrasa:20077", "name": { - "original": "Estadio de Balaídos (Avda. do Fragoso)" + "original": "Avda. de Castelao, 40" }, - "latitude": 42.212676247, - "longitude": -8.739585545, + "latitude": 42.219259727, + "longitude": -8.739809435, "lines": [ - "16", - "23", - "N4" + "C3d", + "4A", + "4C", + "5B", + "10", + "12A", + "13", + "15A", + "PSA 1", + "PSA 4" ] }, { - "stopId": 5070, + "stopId": "vitrasa:20078", "name": { - "original": "Rúa da Estrada, 10-12" + "original": "Avda. das Camelias, 3" }, - "latitude": 42.220535836, - "longitude": -8.74141599, + "latitude": 42.233341329, + "longitude": -8.728967219, "lines": [ - "C3i", - "5B" + "4A", + "4C", + "11", + "12B", + "17", + "27", + "N1" ] }, { - "stopId": 5090, + "stopId": "vitrasa:20079", "name": { - "original": "Rúa da Estrada, 1" + "original": "Avda. das Camelias, 8" }, - "latitude": 42.220359068, - "longitude": -8.738861999, + "latitude": 42.23341294, + "longitude": -8.729045156, "lines": [ - "C3i", - "5B" + "4A", + "4C", + "5B", + "7", + "12A", + "12B", + "17", + "27", + "PSA 4" ] }, { - "stopId": 5120, + "stopId": "vitrasa:20080", "name": { - "original": "Camiño da Falcoa, 41" + "original": "Avda. de Santa Mariña, 68" }, - "latitude": 42.204935234, - "longitude": -8.722453969, + "latitude": 42.221674556, + "longitude": -8.660937347, "lines": [ - "18B", - "18H", - "27" + "11" ] }, { - "stopId": 5140, + "stopId": "vitrasa:20081", "name": { - "original": "Camiño da Falcoa, 15" + "original": "Subida aos Padróns (cruce Camiño da Chan da Rabicha)" }, - "latitude": 42.207336295, - "longitude": -8.72129506, + "latitude": 42.151852858, + "longitude": -8.684956786, "lines": [ - "18B", - "18H" + "7" ] }, { - "stopId": 5160, + "stopId": "vitrasa:20082", "name": { - "original": "Camiño da Falcoa, 26" + "original": "Avda. de Santa Mariña (fronte 66)" }, - "latitude": 42.204783634, - "longitude": -8.722664062, + "latitude": 42.221758032, + "longitude": -8.661135597, "lines": [ - "18B", - "18H", - "27" + "11" ] }, { - "stopId": 5170, + "stopId": "vitrasa:20083", "name": { - "original": "Rúa das Figueiras (Praza da Feira)" + "original": "Rúa Castañal, 6" }, - "latitude": 42.227529644, - "longitude": -8.66169041, + "latitude": 42.188074669, + "longitude": -8.701928367, "lines": [ - "15A", - "25" + "27" ] }, { - "stopId": 5180, + "stopId": "vitrasa:20084", "name": { - "original": "Rúa das Figueiras, 96" + "original": "Rúa Castañal, 26" }, - "latitude": 42.224562288, - "longitude": -8.66579419, + "latitude": 42.18711079, + "longitude": -8.699519743, "lines": [ - "15A", - "25" + "27" ] }, { - "stopId": 5190, + "stopId": "vitrasa:20085", "name": { - "original": "Rúa das Figueiras, 124" + "original": "Rúa Castañal (cruce Camiño das Presas)" }, - "latitude": 42.226051942, - "longitude": -8.663629647, + "latitude": 42.185852445, + "longitude": -8.696410892, "lines": [ - "15A", - "25" + "27" ] }, { - "stopId": 5200, + "stopId": "vitrasa:20086", "name": { - "original": "Rúa das Figueiras, 138" + "original": "Estrada dos Seixiños, 67" }, - "latitude": 42.227533616, - "longitude": -8.661561664, + "latitude": 42.190645281, + "longitude": -8.696150583, "lines": [ - "15A", - "25" + "27" ] }, { - "stopId": 5220, + "stopId": "vitrasa:20087", "name": { - "original": "Rúa das Figueiras, 190" + "original": "Estrada dos Seixiños, 23" }, - "latitude": 42.228984217, - "longitude": -8.658438326, + "latitude": 42.194639373, + "longitude": -8.696795357, "lines": [ - "15A", - "25" + "27" ] }, { - "stopId": 5230, + "stopId": "vitrasa:20089", "name": { - "original": "Rúa das Figueiras, 254" + "original": "Porriño - Padre Seixas ©" }, - "latitude": 42.230261894, - "longitude": -8.653683012, + "latitude": 42.213044566, + "longitude": -8.751396835, "lines": [ - "15A", - "25" + "16" ] }, { - "stopId": 5250, + "stopId": "vitrasa:20091", "name": { - "original": "Rúa das Figueiras, 29" + "original": "Camiño da Miragaia, 11-13" }, - "latitude": 42.223048763, - "longitude": -8.667374011, + "latitude": 42.238164803, + "longitude": -8.711212761, "lines": [ - "15A", - "25" + "A", + "5B", + "16", + "24" ] }, { - "stopId": 5260, + "stopId": "vitrasa:20094", "name": { - "original": "Rúa das Figueiras, 22" + "original": "Rúa das Mantelas (fronte 63)" }, - "latitude": 42.222838218, - "longitude": -8.667795118, + "latitude": 42.22518736, + "longitude": -8.717399288, "lines": [ - "15A", - "25" + "18A" ] }, { - "stopId": 5270, + "stopId": "vitrasa:20095", "name": { - "original": "Rúa das Figueiras, 65" + "original": "Estrada Vella de Madrid, 107A" }, - "latitude": 42.224367639, - "longitude": -8.665989991, + "latitude": 42.219212419, + "longitude": -8.685836356, "lines": [ - "15A", - "25" + "12A", + "12B", + "13", + "H3" ] }, { - "stopId": 5280, + "stopId": "vitrasa:20096", "name": { - "original": "Rúa das Figueiras, 113" + "original": "Estrada Vella de Madrid (fronte 107A)" }, - "latitude": 42.225940716, - "longitude": -8.663830813, + "latitude": 42.219128991, + "longitude": -8.685753208, "lines": [ - "15A", - "25" + "12A", + "12B", + "13", + "U2", + "H3" ] }, { - "stopId": 5290, + "stopId": "vitrasa:20099", "name": { - "original": "Avda. da Florida, 60" + "original": "Rúa de Camilo Veiga, 48" }, - "latitude": 42.215060936, - "longitude": -8.741309568, + "latitude": 42.222390674, + "longitude": -8.752507356, "lines": [ - "5A", - "11", - "29", - "VTS" + "C3i", + "15B", + "15C", + "N1" ] }, { - "stopId": 5300, + "stopId": "vitrasa:2010", "name": { - "original": "Avda. da Florida, 117" + "original": "Avda. de Madrid, 195" }, - "latitude": 42.214827343, - "longitude": -8.741319027, + "latitude": 42.218213283, + "longitude": -8.703163426, "lines": [ - "5A", - "11", - "29" + "12A", + "12B", + "13" ] }, { - "stopId": 5310, + "stopId": "vitrasa:20100", "name": { - "original": "Avda. da Florida, 140" + "original": "Rúa de Camilo Veiga, 6" }, - "latitude": 42.208024308, - "longitude": -8.750412985, + "latitude": 42.223195763, + "longitude": -8.749650702, "lines": [ - "5A", - "11", - "29", - "VTS" + "C3i", + "15B", + "15C", + "N1" ] }, { - "stopId": 5320, + "stopId": "vitrasa:20102", "name": { - "original": "Avda. da Florida, 145" + "original": "H. A. Cunqueiro (Porta Principal)" }, - "latitude": 42.213244058, - "longitude": -8.743657913, + "latitude": 42.191034002, + "longitude": -8.714303116, "lines": [ - "5A", - "11", - "29" + "6", + "12B", + "18H", + "27", + "H1", + "H2", + "H3", + "H" ] }, { - "stopId": 5330, + "stopId": "vitrasa:20103", "name": { - "original": "Avda. da Florida, 3" + "original": "Avda. do Fragoso, 21" }, - "latitude": 42.220228436, - "longitude": -8.733426296, + "latitude": 42.218946899, + "longitude": -8.733670293, "lines": [ - "5A", - "11", - "29" + "7", + "12B", + "17", + "N4", + "H1" ] }, { - "stopId": 5340, + "stopId": "vitrasa:20104", "name": { - "original": "Avda. da Florida, 197" + "original": "Rúa de Emilia Pardo Bazán, 134" }, - "latitude": 42.208621114, - "longitude": -8.749572184, + "latitude": 42.220938435, + "longitude": -8.709621883, "lines": [ - "5A", - "11", - "29" + "14" ] }, { - "stopId": 5350, + "stopId": "vitrasa:20105", "name": { - "original": "Avda. da Florida, 40" + "original": "Rúa de Emilia Pardo Bazán, 121" }, - "latitude": 42.216779248, - "longitude": -8.738705143, + "latitude": 42.221232035, + "longitude": -8.709808647, "lines": [ - "5A", - "11", - "29", - "VTS" + "14" ] }, { - "stopId": 5360, + "stopId": "vitrasa:20107", "name": { - "original": "Avda. da Florida, 70" + "original": "Estrada do Porto (Lavadero)" }, - "latitude": 42.212804215, - "longitude": -8.744506761, + "latitude": 42.188244696, + "longitude": -8.703164368, "lines": [ - "5A", - "11", - "29", - "VTS" + "6", + "27" ] }, { - "stopId": 5370, + "stopId": "vitrasa:20110", "name": { - "original": "Avda. da Florida, 69" + "original": "Rúa de Manuel Castro, 10" }, - "latitude": 42.216928527, - "longitude": -8.738268035, + "latitude": 42.213797254, + "longitude": -8.741472696, "lines": [ - "5A", - "11", - "29" + "23", + "N4" ] }, { - "stopId": 5380, + "stopId": "vitrasa:20111", "name": { - "original": "Avda. da Florida, 8" + "original": "H. A. Cunqueiro (Hospital de Día)" }, - "latitude": 42.219743053, - "longitude": -8.734322187, + "latitude": 42.187585838, + "longitude": -8.716278919, "lines": [ - "5A", - "11", - "29", - "VTS" + "A", + "6", + "12B", + "18H", + "27", + "H1", + "H2", + "H3", + "H" ] }, { - "stopId": 5390, + "stopId": "vitrasa:20112", "name": { - "original": "Estrada de Fragoselo (cruce Camiño Río da Barxa)" + "original": "H. A. Cunqueiro (Urxencias)" }, - "latitude": 42.179556959, - "longitude": -8.761854527, + "latitude": 42.188578188, + "longitude": -8.713087125, "lines": [ - "29" + "6", + "12B", + "18H", + "H1", + "H3", + "H" ] }, { - "stopId": 5400, + "stopId": "vitrasa:20113", "name": { - "original": "Avda. do Fragoso, 95" + "original": "Praza de América, 3 (Dirección Hospital)" }, - "latitude": 42.213518168, - "longitude": -8.737719785, + "latitude": 42.220876566, + "longitude": -8.733367644, "lines": [ - "7", "12B", - "17", "N4", - "H1" + "H1", + "H2", + "PTL" ] }, { - "stopId": 5410, + "stopId": "vitrasa:20114", "name": { - "original": "Avda. do Fragoso, 12" + "original": "Estrada do Porto (fronte Lavadero)" }, - "latitude": 42.219689698, - "longitude": -8.733384686, + "latitude": 42.18846205, + "longitude": -8.703352711, "lines": [ - "A", - "16", - "23", - "N4", - "U1", - "H1", - "H", - "LZH", - "PSA 1" + "6" ] }, { - "stopId": 5420, + "stopId": "vitrasa:20115", "name": { - "original": "Avda. do Fragoso, 3" + "original": "Estrada do Porto (fronte cruce Rúa das Sueiras)" }, - "latitude": 42.220297406, - "longitude": -8.732924981, + "latitude": 42.190100441, + "longitude": -8.705453204, "lines": [ - "7", - "12B", - "17", - "N4", - "H1" + "6" ] }, { - "stopId": 5430, + "stopId": "vitrasa:20116", "name": { - "original": "Avda. do Fragoso, 36" + "original": "Estrada da Coutada-Beade, 2" }, - "latitude": 42.217381871, - "longitude": -8.734669814, - "lines": [ - "A", - "16", - "23", - "N4", - "U1", - "H1", - "H", - "LZH", - "PSA 1" + "latitude": 42.192037327, + "longitude": -8.70573732, + "lines": [ + "6", + "27" ] }, { - "stopId": 5440, + "stopId": "vitrasa:20117", "name": { - "original": "Avda. do Fragoso, 47" + "original": "Estrada do Porto (cruce Camiño do Frascuelo)" }, - "latitude": 42.217288508, - "longitude": -8.73454375, + "latitude": 42.191616209, + "longitude": -8.706277831, "lines": [ - "7", - "12B", - "17", - "N4", - "H1" + "6", + "27" ] }, { - "stopId": 5450, + "stopId": "vitrasa:20118", "name": { - "original": "Avda. do Fragoso, 54" + "original": "Rúa Conde de Gondomar" }, - "latitude": 42.215348678, - "longitude": -8.736273638, + "latitude": 42.228358488, + "longitude": -8.719490904, "lines": [ - "A", - "16", - "23", - "N4", - "U1", - "H1", - "H", - "LZH", - "PSA 1" + "H2" ] }, { - "stopId": 5460, + "stopId": "vitrasa:20119", "name": { - "original": "Avda. do Fragoso, 71" + "original": "H. A. Cunqueiro (chegada)" }, - "latitude": 42.215301002, - "longitude": -8.736123434, + "latitude": 42.190930878, + "longitude": -8.71409354, "lines": [ - "7", + "6", "12B", - "17", - "N4", - "H1" + "H1", + "H3" ] }, { - "stopId": 5470, + "stopId": "vitrasa:20124", "name": { - "original": "Avda. do Fragoso, 86" + "original": "Estrada Clara Campoamor, 6" }, - "latitude": 42.21315264, - "longitude": -8.738470803, + "latitude": 42.208989468, + "longitude": -8.729330619, "lines": [ "A", - "16", - "23", - "N4", + "12B", "U1", "H1", + "H2", "H", - "LZH", - "PSA 1" + "PTL" ] }, { - "stopId": 5480, + "stopId": "vitrasa:20125", "name": { - "original": "Estrada de San Xoán, 25" + "original": "Estrada Clara Campoamor (fronte 6)" }, - "latitude": 42.186179757, - "longitude": -8.748888329, + "latitude": 42.209126911, + "longitude": -8.729344197, "lines": [ - "17" + "12B", + "H1", + "H2" ] }, { - "stopId": 5490, + "stopId": "vitrasa:20126", "name": { - "original": "Avda. de García Barbón (fronte 120)" + "original": "Estrada Clara Campoamor (Rotonda HAC)" }, - "latitude": 42.241557555, - "longitude": -8.707094861, + "latitude": 42.190252452, + "longitude": -8.717998617, "lines": [ - "C3i", - "5B", - "10", - "17", - "N1", - "H3", - "VTS" + "12B", + "18H", + "H1", + "H2" ] }, { - "stopId": 5500, + "stopId": "vitrasa:20127", "name": { - "original": "Avda. de García Barbón, 126" + "original": "Estrada Clara Campoamor (fronte Rotonda HAC)" }, - "latitude": 42.24178025, - "longitude": -8.706720936, + "latitude": 42.19007538, + "longitude": -8.718125045, "lines": [ - "C3d", - "5B", - "10", - "17", - "31", - "U2", + "A", + "12B", + "18H", + "27", + "U1", + "H1", "H2", - "H3", - "PSA 1" + "H", + "PTL" ] }, { - "stopId": 5510, + "stopId": "vitrasa:20130", "name": { - "original": "Avda. de García Barbón, 127" + "original": "Parque Forestal de Zamáns (Proba Andaina)" }, - "latitude": 42.238290358, - "longitude": -8.71014103, + "latitude": 42.152788309, + "longitude": -8.681902684, "lines": [ - "C3i", - "5B", - "10", - "17", - "N1", - "VTS" + "7" ] }, { - "stopId": 5520, + "stopId": "vitrasa:20132", "name": { - "original": "FORA DE SERVIZO.G.B." + "original": "Avda. de Galicia, 341" }, - "latitude": 42.237485586, - "longitude": -8.719397801, + "latitude": 42.260473187, + "longitude": -8.67881466, "lines": [ - "C3i", - "A", - "4A", - "4C", - "5A", - "5B", - "6", - "7", - "9B", - "10", - "11", - "12B", - "14", - "15B", - "15C", - "16", - "17", - "18B", - "18H", - "24", - "28", - "N1", - "N4", - "PSA 1", - "PSA 4", - "VTS" - ], - "amenities": [ - "shelter", - "display" + "C3i" ] }, { - "stopId": 5530, + "stopId": "vitrasa:20136", "name": { - "original": "Avda. de García Barbón, 18" + "original": "Avda. de E. Martínez Garrido, 98" }, - "latitude": 42.23720456, - "longitude": -8.718680736, + "latitude": 42.225764699, + "longitude": -8.704499864, "lines": [ - "H2", - "PSA 1" - ], - "amenities": [ - "shelter", - "display" + "4C", + "23", + "31", + "N4", + "PSA 4", + "VTS" ] }, { - "stopId": 5540, + "stopId": "vitrasa:20137", "name": { - "original": "Avda. de García Barbón, 28" + "original": "Camiño da Devesa (Asociación Veciños)" }, - "latitude": 42.236759685, - "longitude": -8.716384581, + "latitude": 42.246563041, + "longitude": -8.669395817, "lines": [ - "A", - "5B", - "16", - "17", - "24", - "H2", - "PSA 1" + "9B" ] }, { - "stopId": 5560, + "stopId": "vitrasa:20139", "name": { - "original": "Avda. de García Barbón, 60" + "original": "Estrada Matamá Pazo (fronte 162)" }, - "latitude": 42.236896919, - "longitude": -8.712902905, + "latitude": 42.199144892, + "longitude": -8.758506717, "lines": [ - "C3d", - "A", - "5B", - "10", - "16", - "17", - "24", - "H2", - "PSA 1" + "29" ] }, { - "stopId": 5570, + "stopId": "vitrasa:20141", "name": { - "original": "Avda. de García Barbón, 87" + "original": "Avda. da Ponte (fronte Vigo Memorial)" }, - "latitude": 42.237003397, - "longitude": -8.713586994, + "latitude": 42.21057897, + "longitude": -8.671171189, "lines": [ - "C3i", - "5B", - "10", - "17", - "N1", - "VTS" + "12B", + "15B", + "15C" ] }, { - "stopId": 5580, + "stopId": "vitrasa:20142", "name": { - "original": "Avda. de García Barbón, 90" + "original": "Camiño do Outeiro, 3" }, - "latitude": 42.238267348, - "longitude": -8.709873166, + "latitude": 42.200738188, + "longitude": -8.714882876, "lines": [ - "C3d", - "5B", - "10", - "17", - "H2", - "PSA 1" + "18B" ] }, { - "stopId": 5590, + "stopId": "vitrasa:20143", "name": { - "original": "Avda. da Ponte (Grupo S. Gorxal)" + "original": "Rúa das Teixugueiras (fronte 1)" }, - "latitude": 42.213057463, - "longitude": -8.670479203, + "latitude": 42.215448094, + "longitude": -8.756474306, "lines": [ - "12B", - "15B", - "15C" + "15A" ] }, { - "stopId": 5600, + "stopId": "vitrasa:20154", "name": { - "original": "Avda. da Gran Vía, 107" + "original": "Rúa de Ramiro Pascual (fronte 127)" }, - "latitude": 42.225140059, - "longitude": -8.72184818, + "latitude": 42.192089689, + "longitude": -8.709245389, "lines": [ - "C3i", - "7", - "11", - "13", - "15A", - "16", - "23", - "29", - "H2" + "27" ] }, { - "stopId": 5610, + "stopId": "vitrasa:20155", "name": { - "original": "Avda. da Gran Vía, 12" + "original": "Rúa de Ramiro Pascual, 131" }, - "latitude": 42.233503531, - "longitude": -8.717236739, + "latitude": 42.19217626, + "longitude": -8.708899009, "lines": [ - "C1", - "4A", - "4C", - "5B", - "7", - "12B", - "14", - "16", - "17", - "18A", - "18B", - "18H", - "PSA 4" + "27" ] }, { - "stopId": 5620, + "stopId": "vitrasa:20156", "name": { - "original": "Avda. da Gran Vía, 148" + "original": "Económicas e Empresariais (CUVI 2)" }, - "latitude": 42.222321607, - "longitude": -8.726440421, + "latitude": 42.169627618, + "longitude": -8.67984145, "lines": [ - "C3d", - "13", - "15A", - "23", - "29", - "U1", - "U2", - "H2", - "PSA 1" + "A", + "15C" ] }, { - "stopId": 5630, + "stopId": "vitrasa:20157", "name": { - "original": "Avda. da Gran Vía, 147" + "original": "Estrada do Porto, 88" }, - "latitude": 42.222790356, - "longitude": -8.724940076, + "latitude": 42.185615419, + "longitude": -8.702424678, "lines": [ - "C3i", - "7", - "11", - "13", - "15A", - "16", - "23", - "29", - "U1", - "U2", - "H2" + "6" ] }, { - "stopId": 5640, + "stopId": "vitrasa:20158", "name": { - "original": "Avda. da Gran Vía, 176" + "original": "Estrada do Porto, 81" }, - "latitude": 42.220868033, - "longitude": -8.730264447, + "latitude": 42.185593055, + "longitude": -8.702377974, "lines": [ - "C3d", - "13", - "15A", - "23", - "29", - "U2", - "H2", - "PSA 1" + "6" ] }, { - "stopId": 5650, + "stopId": "vitrasa:20159", "name": { - "original": "Avda. da Gran Vía, 185" + "original": "Estrada de Valadares, 571" }, - "latitude": 42.220971136, - "longitude": -8.729196245, + "latitude": 42.160348044, + "longitude": -8.718706355, "lines": [ - "C3i", - "7", - "11", - "13", - "15A", - "16", - "23", - "29", - "H2" + "7" ] }, { - "stopId": 5660, + "stopId": "vitrasa:20160", "name": { - "original": "Avda. da Gran Vía, 19" + "original": "Estrada de Valadares, 522" }, - "latitude": 42.232957918, - "longitude": -8.717215735, + "latitude": 42.160066796, + "longitude": -8.718938239, "lines": [ - "4A", - "4C", - "5B", - "7", - "11", - "12B", - "14", - "16", - "17", - "18A", - "18B", - "18H", - "N1" + "7" ] }, { - "stopId": 5670, + "stopId": "vitrasa:20166", "name": { - "original": "Avda. da Gran Vía, 46" + "original": "Camiño da Brea, 2" }, - "latitude": 42.230988893, - "longitude": -8.71867283, + "latitude": 42.202134841, + "longitude": -8.70572793, "lines": [ - "C1", - "12A", - "12B", - "14", "18A", - "18B", - "18H", - "TUR" - ] - }, - { - "stopId": 5680, - "name": { - "original": "Avda. da Gran Vía, 66" - }, - "latitude": 42.228173802, - "longitude": -8.720267623, - "lines": [ - "C3d", - "13", - "15A", - "23", - "29", - "H2", - "PSA 1" + "18B" ] }, { - "stopId": 5690, + "stopId": "vitrasa:20167", "name": { - "original": "Avda. da Gran Vía, 85" + "original": "Camiño da Brea, 3" }, - "latitude": 42.226868266, - "longitude": -8.720637433, + "latitude": 42.202095058, + "longitude": -8.705814233, "lines": [ - "C3i", - "7", - "11", - "13", - "15A", - "16", - "23", - "29", - "H2" + "18A", + "18B" ] }, { - "stopId": 5700, + "stopId": "vitrasa:20168", "name": { - "original": "Avda. da Gran Vía, 104" + "original": "Estrada do Freixo (despois 118)" }, - "latitude": 42.225325884, - "longitude": -8.722106624, + "latitude": 42.173596087, + "longitude": -8.730918928, "lines": [ - "C3d", - "13", - "15A", - "23", - "29", - "H2", - "PSA 1" + "7" ] }, { - "stopId": 5710, + "stopId": "vitrasa:20169", "name": { - "original": "Avda. do Alcalde Gregorio Espino, 22" + "original": "Estrada do Freixo (despois 235)" }, - "latitude": 42.23003666347398, - "longitude": -8.707266671978003, + "latitude": 42.173616782, + "longitude": -8.730810863, "lines": [ - "31" + "7" ] }, { - "stopId": 5720, + "stopId": "vitrasa:20170", "name": { - "original": "Avda. do Alcalde Gregorio Espino, 33" + "original": "Rúa de Álvaro Cunqueiro, 4" }, - "latitude": 42.23004933454558, - "longitude": -8.706947409683313, + "latitude": 42.224544805, + "longitude": -8.730413561, "lines": [ - "4C", - "23", - "31", - "H2", - "PSA 4" + "5A", + "5B", + "12A" ] }, { - "stopId": 5730, + "stopId": "vitrasa:20171", "name": { - "original": "Avda. do Alcalde Gregorio Espino, 44" + "original": "Estrada Clara Campoamor (cruce Camiño da Pousa)" }, - "latitude": 42.227850036119314, - "longitude": -8.708105429626789, + "latitude": 42.204380762, + "longitude": -8.726688445, "lines": [ - "31", + "12B", + "H1", "H2" ] }, { - "stopId": 5740, + "stopId": "vitrasa:20172", "name": { - "original": "Avda. do Alcalde Gregorio Espino, 57" + "original": "Estrada Clara Campoamor (cruce Camiño da Nogueira)" }, - "latitude": 42.22783722597372, - "longitude": -8.707849091551859, + "latitude": 42.203736336, + "longitude": -8.726617869, "lines": [ - "4C", - "23", - "31", - "N4", + "A", + "12B", + "U1", + "H1", "H2", - "PSA 4", - "VTS" + "H", + "PTL" ] }, { - "stopId": 5750, + "stopId": "vitrasa:20173", "name": { - "original": "Avda. do Alcalde Gregorio Espino, 79" + "original": "Avda. de Castrelos, 502" }, - "latitude": 42.225785485, - "longitude": -8.708786105, + "latitude": 42.192504056, + "longitude": -8.721215121, "lines": [ - "4C", - "23", - "31", - "N4", - "H2", - "PSA 4", - "VTS" + "7", + "U1" ] }, { - "stopId": 5760, + "stopId": "vitrasa:20174", "name": { - "original": "Estrada de Valadares, 377" + "original": "Baixada ao Pontillón S/N" }, - "latitude": 42.16929549, - "longitude": -8.723249687, + "latitude": 42.21519917, + "longitude": -8.726793773, "lines": [ - "7" + "A" ] }, { - "stopId": 5770, + "stopId": "vitrasa:20177", "name": { - "original": "Estrada de Valadares, 310" + "original": "Rúa de Pizarro, 16" }, - "latitude": 42.16911061, - "longitude": -8.723904146, + "latitude": 42.230767817, + "longitude": -8.715105964, "lines": [ - "7", - "U1" + "C3i", + "6", + "11", + "15A", + "23", + "25", + "28" ] }, { - "stopId": 5790, + "stopId": "vitrasa:20178", "name": { - "original": "Hospital do Meixoeiro" + "original": "Estrada de Camposancos (cruce Camiño da Estea)" }, - "latitude": 42.214534062, - "longitude": -8.684756053, + "latitude": 42.172412443, + "longitude": -8.799591567, "lines": [ - "12A", - "12B", - "13", - "15B", - "15C", - "31" + "12A" ] }, { - "stopId": 5800, + "stopId": "vitrasa:20180", "name": { - "original": "Rúa de Jenaro de la Fuente, 29" + "original": "Rúa do Reiseñor, 10" }, - "latitude": 42.232202275, - "longitude": -8.703792246, + "latitude": 42.229527407, + "longitude": -8.70843784, "lines": [ - "A", - "4A", - "6", - "9B", - "11", - "15A", - "15B", - "15C", - "24", - "25", - "27", - "28" + "H2" ] }, { - "stopId": 5810, + "stopId": "vitrasa:20186", "name": { - "original": "Rúa de Jenaro de la Fuente, 10" + "original": "Rúa da Rabadeira, 71" }, - "latitude": 42.232258514, - "longitude": -8.705770621, + "latitude": 42.23755404, + "longitude": -8.651558138, "lines": [ - "A", - "4A", - "4C", - "6", - "9B", - "11", - "15A", - "15B", - "15C", - "23", - "24", - "25", - "27", - "28", - "N4", - "PSA 4" + "9B" ] }, { - "stopId": 5820, + "stopId": "vitrasa:20187", "name": { - "original": "Rúa de Jenaro de la Fuente, 22" + "original": "Rúa da Rabadeira, 46" }, - "latitude": 42.232042043, - "longitude": -8.703616807, + "latitude": 42.237422128, + "longitude": -8.65153195, "lines": [ - "A", - "4A", - "4C", - "6", "9B", - "11", - "15A", - "15B", - "15C", - "23", - "24", - "25", - "27", - "28", - "N4", - "PSA 4" + "27" ] }, { - "stopId": 5830, + "stopId": "vitrasa:20188", "name": { - "original": "Rúa de Jenaro de la Fuente, 11" + "original": "Rúa da Saa (fronte 43)" }, - "latitude": 42.23238699, - "longitude": -8.705610784, + "latitude": 42.201670402, + "longitude": -8.708928464, "lines": [ - "A", - "4A", - "6", - "9B", - "11", - "15A", - "15B", - "15C", - "24", - "25", - "27", - "28" + "18B", + "H3" ] }, { - "stopId": 5840, + "stopId": "vitrasa:20189", "name": { - "original": "Rúa da Lagoa (cruce Rúa do Balde)" + "original": "Rúa da Saa, 10" }, - "latitude": 42.201360896, - "longitude": -8.702877394, + "latitude": 42.201625853, + "longitude": -8.712945043, "lines": [ - "18A", - "18B" + "18B", + "H3" ] }, { - "stopId": 5850, + "stopId": "vitrasa:20190", "name": { - "original": "Rúa da Lagoa (fronte 21)" + "original": "Avda. das Camelias (fronte Praza do Rei)" }, - "latitude": 42.201154253, - "longitude": -8.702343635, + "latitude": 42.234906013, + "longitude": -8.72662052, "lines": [ - "18A", - "18B" + "4A", + "4C", + "11", + "12B", + "17", + "27", + "N1" ] }, { - "stopId": 5860, + "stopId": "vitrasa:20191", "name": { - "original": "Baixada á Laxe (Centro Saúde)" + "original": "Rúa das Figueiras, 200" }, - "latitude": 42.21669522, - "longitude": -8.715884298, + "latitude": 42.229676205, + "longitude": -8.657383392, "lines": [ - "18A", - "18B", - "18H" + "15A", + "25" ] }, { - "stopId": 5870, + "stopId": "vitrasa:20192", "name": { - "original": "Rúa de López Mora, 10" + "original": "Rúa de Colón, 26" }, - "latitude": 42.226432697, - "longitude": -8.731262013, + "latitude": 42.237168511, + "longitude": -8.720373767, "lines": [ - "VTS" + "4A", + "4C", + "5B", + "7", + "12B", + "16", + "17", + "24", + "PSA 4" ] }, { - "stopId": 5880, + "stopId": "vitrasa:20193", "name": { - "original": "Rúa de López Mora, 19" + "original": "Rúa de Policarpo Sanz, 25" }, - "latitude": 42.226800566, - "longitude": -8.731799623, + "latitude": 42.23767601188501, + "longitude": -8.721582630122455, "lines": [ + "C3i", + "A", "5A", "5B", - "12A" + "6", + "9B", + "10", + "11", + "15B", + "15C", + "28", + "N1", + "N4", + "H1", + "VTS" + ], + "amenities": [ + "shelter", + "display" ] }, { - "stopId": 5890, + "stopId": "vitrasa:20194", "name": { - "original": "Rúa de López Mora, 84" + "original": "Rúa de Cánovas del Castillo, 28" }, - "latitude": 42.222420533, - "longitude": -8.731996938, + "latitude": 42.240364985, + "longitude": -8.724530974, "lines": [ - "VTS" + "A" ] }, { - "stopId": 5900, + "stopId": "vitrasa:20195", "name": { - "original": "Rúa de Macal, 8" + "original": "Praza de Compostela (fronte 35)" }, - "latitude": 42.202071034, - "longitude": -8.723541884, + "latitude": 42.2393606, + "longitude": -8.724131464, "lines": [ - "18B", - "18H", - "27" + "C3i", + "A", + "5A", + "5B", + "6", + "9B", + "10", + "11", + "15B", + "15C", + "28", + "N1", + "N4", + "H1", + "VTS" ] }, { - "stopId": 5910, + "stopId": "vitrasa:20196", "name": { - "original": "Rúa de Macal, 90" + "original": "Estrada de Camposancos, 498" }, - "latitude": 42.196213336, - "longitude": -8.721136467, + "latitude": 42.175325155, + "longitude": -8.799594139, "lines": [ - "18B", - "18H", - "27" + "12A" ] }, { - "stopId": 5920, + "stopId": "vitrasa:20197", "name": { - "original": "Rúa de Macal (cruce Rúa de Ramiro Pascual)" + "original": "Rúa de Pi i Margall, 3-5" }, - "latitude": 42.196173594, - "longitude": -8.721023814, + "latitude": 42.23558703, + "longitude": -8.728830897, "lines": [ - "18B", - "18H", - "27" + "5B", + "12A" ] }, { - "stopId": 5930, + "stopId": "vitrasa:20198", "name": { - "original": "Rúa de Macal (frente 8)" + "original": "Rúa de Policarpo Sanz, 26" }, - "latitude": 42.202050775, - "longitude": -8.723454133, + "latitude": 42.237533428, + "longitude": -8.722195046, "lines": [ - "18B", - "18H", - "27" + "A" + ], + "amenities": [ + "shelter" ] }, { - "stopId": 5940, + "stopId": "vitrasa:20199", "name": { - "original": "Rúa de Macal, 39" + "original": "Rúa de Puerto Rico, 12" }, - "latitude": 42.198347336, - "longitude": -8.721488003, + "latitude": 42.228802205, + "longitude": -8.718136653, "lines": [ - "18B", - "18H", - "27" + "H2" ] }, { - "stopId": 5950, + "stopId": "vitrasa:2020", "name": { - "original": "Rúa dos Mestres Goldar, 62" - }, - "latitude": 42.207127325, - "longitude": -8.726636888, - "lines": [ - "27" - ] - }, - { - "stopId": 5960, - "name": { - "original": "Rúa dos Mestres Goldar, 77" + "original": "Avda. de Madrid, 2" }, - "latitude": 42.206757786, - "longitude": -8.730056705, + "latitude": 42.228518615, + "longitude": -8.719214126, "lines": [ - "27" + "12A", + "12B", + "13", + "U2" ] }, { - "stopId": 5970, + "stopId": "vitrasa:20202", "name": { - "original": "Rúa dos Mestres Goldar, 96" + "original": "Estación Marítima" }, - "latitude": 42.206880283, - "longitude": -8.729978952, + "latitude": 42.2404374, + "longitude": -8.726048008, "lines": [ - "27" + "TUR" ] }, { - "stopId": 5980, + "stopId": "vitrasa:20203", "name": { - "original": "Rúa dos Mestres Goldar, 37" + "original": "Avda. da Gran Vía, 47" }, - "latitude": 42.207198849, - "longitude": -8.726658346, + "latitude": 42.230881062, + "longitude": -8.718397577, "lines": [ - "27" + "7", + "12B", + "14", + "16", + "18A", + "18B", + "18H" ] }, { - "stopId": 6000, + "stopId": "vitrasa:20206", "name": { - "original": "Rúa de Manuel Álvarez, 185" + "original": "Rúa do Marqués de Valladares (fronte 19)" }, - "latitude": 42.220887532, - "longitude": -8.685059571, + "latitude": 42.238271922, + "longitude": -8.723353532, "lines": [ - "31", - "H3" + "C1", + "C3d", + "A", + "5A", + "9B", + "10", + "15B", + "15C", + "28", + "N4", + "H1" ] }, { - "stopId": 6010, + "stopId": "vitrasa:20208", "name": { - "original": "Rúa de Manuel Álvarez (cruce Camiño Sulevada)" + "original": "Rúa de Colón, 12" }, - "latitude": 42.223077231, - "longitude": -8.675499751, + "latitude": 42.238028627, + "longitude": -8.720556548, "lines": [ - "25", - "31", - "H3" + "C1", + "A", + "5A", + "9B", + "15B", + "15C", + "28", + "N4", + "H1" ] }, { - "stopId": 6020, + "stopId": "vitrasa:20209", "name": { - "original": "Rúa de Manuel Álvarez, 58" + "original": "Avda. do Alcalde Portanet, 23" }, - "latitude": 42.223195307, - "longitude": -8.681872932, + "latitude": 42.211481651, + "longitude": -8.734440746, "lines": [ - "25", - "31", - "H3" + "H1" ] }, { - "stopId": 6030, + "stopId": "vitrasa:20210", "name": { - "original": "Rúa de Manuel Álvarez, 102" + "original": "Estrada de Camposancos, 108" }, - "latitude": 42.220829925, - "longitude": -8.685158812, + "latitude": 42.19824056, + "longitude": -8.763182189, "lines": [ - "31", - "H3" + "11", + "29" ] }, { - "stopId": 6040, + "stopId": "vitrasa:20211", "name": { - "original": "Rúa de Manuel Álvarez (fronte cruce Camiño Sulevada)" + "original": "Estrada de Camposancos, 109" }, - "latitude": 42.22320325, - "longitude": -8.675213007, + "latitude": 42.198422825, + "longitude": -8.762538026, "lines": [ - "25", - "31", - "H3" + "11", + "29" ] }, { - "stopId": 6050, + "stopId": "vitrasa:20212", "name": { - "original": "Rúa de Manuel Cominges, 22" + "original": "Rúa do Canabido, 18" }, - "latitude": 42.19890849, - "longitude": -8.73623433, + "latitude": 42.188388732, + "longitude": -8.805956864, "lines": [ - "12B", - "17" + "10" ] }, { - "stopId": 6060, + "stopId": "vitrasa:20214", "name": { - "original": "Rúa de Manuel Cominges, 135" + "original": "Rúa da República Argentina, 21" }, - "latitude": 42.196716802, - "longitude": -8.729966982, + "latitude": 42.237538973, + "longitude": -8.718186356, "lines": [ - "12B" + "C3i", + "A", + "5A", + "5B", + "10", + "11", + "15B", + "15C" ] }, { - "stopId": 6070, + "stopId": "vitrasa:20215", "name": { - "original": "Rúa de Manuel Cominges, 15" + "original": "Rúa da Coruña, 21" }, - "latitude": 42.199197066, - "longitude": -8.736588816, + "latitude": 42.223880296, + "longitude": -8.735520196, "lines": [ - "12B" + "A", + "5A", + "5B", + "10", + "11", + "13", + "N4", + "U1", + "H1", + "H", + "VTS" ] }, { - "stopId": 6080, + "stopId": "vitrasa:20216", "name": { - "original": "Rúa de Manuel Cominges, 64" + "original": "Avda. de Cesáreo Vázquez (fronte 43)" }, - "latitude": 42.197736144, - "longitude": -8.732267294, + "latitude": 42.179747589, + "longitude": -8.802157388, "lines": [ - "12B", - "17" + "11" ] }, { - "stopId": 6090, + "stopId": "vitrasa:20217", "name": { - "original": "Rúa de Manuel Cominges, 77" + "original": "Rosalía de Castro, 4" }, - "latitude": 42.197626151, - "longitude": -8.732546841, + "latitude": 42.238229421, + "longitude": -8.719950346, "lines": [ - "12B" + "C3d", + "10" ] }, { - "stopId": 6100, + "stopId": "vitrasa:20218", "name": { - "original": "Rúa de Manuel Cominges, 80" + "original": "Rúa de Oporto, 28" }, - "latitude": 42.197066521, - "longitude": -8.730468609, + "latitude": 42.23721395, + "longitude": -8.716444794, "lines": [ - "12B", - "17" + "C3d", + "10" ] }, { - "stopId": 6110, + "stopId": "vitrasa:20219", "name": { - "original": "Camiño da Devesa, 6" + "original": "Avda. do Aeroporto (fronte 90)" }, - "latitude": 42.243941636, - "longitude": -8.669169025, + "latitude": 42.234830699, + "longitude": -8.695443515, "lines": [ + "A", "9B", "27", "28" ] }, { - "stopId": 6130, + "stopId": "vitrasa:2030", "name": { - "original": "Estrada do Marco, 105" + "original": "Avda. de Madrid, 28" }, - "latitude": 42.207132591, - "longitude": -8.706967295, + "latitude": 42.226744428, + "longitude": -8.716268699, "lines": [ - "18B", - "H3" + "12A", + "12B", + "13", + "H2" ] }, { - "stopId": 6140, + "stopId": "vitrasa:2040", "name": { - "original": "Estrada do Marco (Colexio)" + "original": "Avda. de Madrid (trasera Colexio Hogar)" }, - "latitude": 42.206925967, - "longitude": -8.707050443, + "latitude": 42.226835791, + "longitude": -8.715823453, "lines": [ - "H3" + "12A", + "12B", + "13" ] }, { - "stopId": 6150, + "stopId": "vitrasa:2060", "name": { - "original": "Estrada De Zamáns, 233" + "original": "Avda. de Redondela, 122" }, - "latitude": 42.160616846, - "longitude": -8.691088401, + "latitude": 42.259945558, + "longitude": -8.672608434, "lines": [ - "7" + "C3d" ] }, { - "stopId": 6160, + "stopId": "vitrasa:2070", "name": { - "original": "Estrada De Zamáns, 150" + "original": "Avda. de Redondela, 109" }, - "latitude": 42.160635942, - "longitude": -8.69145083, + "latitude": 42.259481393, + "longitude": -8.67292487, "lines": [ - "7" + "C3i" ] }, { - "stopId": 6180, + "stopId": "vitrasa:2080", "name": { - "original": "Rúa de Marín (fronte 30)" + "original": "Avda. de Redondela, 19" }, - "latitude": 42.21850454, - "longitude": -8.753892634, + "latitude": 42.266569717, + "longitude": -8.667160768, "lines": [ - "C3i", - "5B" + "C3i" ] }, { - "stopId": 6187, + "stopId": "vitrasa:2090", "name": { - "original": "Rúa de Martín Echegaray (Parque)" + "original": "Avda. de Redondela, 32" }, - "latitude": 42.215244712, - "longitude": -8.74244225, + "latitude": 42.272074281, + "longitude": -8.664593691, "lines": [ - "23", - "N4" + "C3d" ] }, { - "stopId": 6200, + "stopId": "vitrasa:210", "name": { - "original": "Avda. de E. Martínez Garrido, 11" + "original": "Rúa de Ángel de Lema, 140" }, - "latitude": 42.229298043, - "longitude": -8.699760249, + "latitude": 42.255798748, + "longitude": -8.678507526, "lines": [ - "6", - "25", - "31" + "C3i", + "10" ] }, { - "stopId": 6210, + "stopId": "vitrasa:2100", "name": { - "original": "Avda. de E. Martínez Garrido, 16" + "original": "Avda. de Redondela, 47" }, - "latitude": 42.229259529, - "longitude": -8.699964485, + "latitude": 42.263186001, + "longitude": -8.668939094, "lines": [ - "4C", - "6", - "23", - "25", - "31", - "N4", - "PSA 4", - "VTS" + "C3i" ] }, { - "stopId": 6220, + "stopId": "vitrasa:2110", "name": { - "original": "Avda. de E. Martínez Garrido, 45" + "original": "Avda. de Redondela, 70" }, - "latitude": 42.226116269, - "longitude": -8.703346362, + "latitude": 42.263286688, + "longitude": -8.668985036, "lines": [ - "31" + "C3d" ] }, { - "stopId": 6230, + "stopId": "vitrasa:2130", "name": { - "original": "Avda. de E. Martínez Garrido, 69" + "original": "Avda. de Redondela (Instituto)" }, - "latitude": 42.224839145, - "longitude": -8.706082215, + "latitude": 42.266758811, + "longitude": -8.667247828, "lines": [ - "31" + "C3d" ] }, { - "stopId": 6240, + "stopId": "vitrasa:2140", "name": { - "original": "Avda. de E. Martínez Garrido, 77" + "original": "Avda. de Samil (Verbum)" }, - "latitude": 42.224493844, - "longitude": -8.707734948, + "latitude": 42.21323221, + "longitude": -8.774382415, "lines": [ - "31" + "C3i", + "10", + "15B", + "15C", + "TUR" ] }, { - "stopId": 6250, + "stopId": "vitrasa:2150", "name": { - "original": "Avda. de E. Martínez Garrido, 80" + "original": "Avda. de Samil (fronte Praia da Fonte)" }, - "latitude": 42.22667463, - "longitude": -8.702581423, + "latitude": 42.221416498, + "longitude": -8.773724153, "lines": [ - "4C", - "23", - "31", - "N4", - "PSA 4", - "VTS" + "10", + "15B", + "15C" ] }, { - "stopId": 6260, + "stopId": "vitrasa:2160", "name": { - "original": "Estrada da Balsa, 3" + "original": "Avda. de Samil, 15" }, - "latitude": 42.199568643, - "longitude": -8.741030554, + "latitude": 42.215860796, + "longitude": -8.774720144, "lines": [ - "12B", - "17" + "10", + "15B", + "15C" ] }, { - "stopId": 6280, + "stopId": "vitrasa:2170", "name": { - "original": "Rúa Molais (Parque da Grileira)" + "original": "Avda. de Samil, 35" }, - "latitude": 42.223843943, - "longitude": -8.65334865, + "latitude": 42.210171416, + "longitude": -8.774585056, "lines": [ - "11" + "C3d", + "4C", + "10" ] }, { - "stopId": 6290, + "stopId": "vitrasa:2180", "name": { - "original": "Rúa de San Paio (cruce Rúa Muíños)" + "original": "Avda. de Samil, 67" }, - "latitude": 42.202031781, - "longitude": -8.769502424, + "latitude": 42.206809895, + "longitude": -8.776206766, "lines": [ - "4A", - "12A" + "C3d", + "4C", + "10" ] }, { - "stopId": 6300, + "stopId": "vitrasa:2190", "name": { - "original": "Rúa de Cánovas del Castillo (Centro Comercial)" + "original": "Avda. de Samil, 81" }, - "latitude": 42.240129541, - "longitude": -8.727159759, + "latitude": 42.205147646, + "longitude": -8.77674534, "lines": [ - "C3i", - "A", - "5A", - "5B", - "6", - "9B", - "10", - "11", - "15B", - "15C", - "28", - "N1", - "N4", - "H1", - "VTS" + "C3d", + "4C", + "10" ] }, { - "stopId": 6305, + "stopId": "vitrasa:220", "name": { - "original": "O Castro" + "original": "Rúa de Ángel de Lema, 163" }, - "latitude": 42.230800582, - "longitude": -8.725954962, + "latitude": 42.252694363, + "longitude": -8.68302903, "lines": [ - "TUR" + "C3d", + "10" ] }, { - "stopId": 6360, + "stopId": "vitrasa:2200", "name": { - "original": "Rúa de Pablo Iglesias (Colexio)" + "original": "Avda. de Santa Mariña, 110" }, - "latitude": 42.211426266, - "longitude": -8.743166543, + "latitude": 42.22271748, + "longitude": -8.656176614, "lines": [ - "16" + "11" ] }, { - "stopId": 6370, + "stopId": "vitrasa:2210", "name": { - "original": "Rúa de Pablo Iglesias (Río)" + "original": "Avda. de Santa Mariña, 137" }, - "latitude": 42.210130966, - "longitude": -8.744872428, + "latitude": 42.222538699, + "longitude": -8.656616496, "lines": [ - "16" + "11" ] }, { - "stopId": 6380, + "stopId": "vitrasa:2220", "name": { - "original": "Rúa de Pablo Iglesias, 2" + "original": "Avda. de Santa Mariña, 17" }, - "latitude": 42.211811672, - "longitude": -8.742420889, + "latitude": 42.220338634, + "longitude": -8.668666271, "lines": [ - "16", - "VTS" + "11" ] }, { - "stopId": 6390, + "stopId": "vitrasa:2230", "name": { - "original": "Rúa de Pablo Iglesias, 20" + "original": "Avda. de Santa Mariña, 52" }, - "latitude": 42.210204472, - "longitude": -8.74559126, + "latitude": 42.222347963, + "longitude": -8.662841482, "lines": [ - "16", - "VTS" + "11" ] }, { - "stopId": 6415, + "stopId": "vitrasa:2240", "name": { - "original": "Parque de Castrelos (Museo)" + "original": "Avda. de Santa Mariña, 77" }, - "latitude": 42.213852214, - "longitude": -8.727322863, + "latitude": 42.222432209, + "longitude": -8.662773458, "lines": [ - "TUR" + "11" ] }, { - "stopId": 6420, + "stopId": "vitrasa:2250", "name": { - "original": "Paseo de Alfonso XII (Mirador)" + "original": "Avda. de Santa Mariña (cruce Camiño do Narxo)" }, - "latitude": 42.235988269, - "longitude": -8.728520618, + "latitude": 42.220826115, + "longitude": -8.659651094, "lines": [ - "VTS" + "11" ] }, { - "stopId": 6440, + "stopId": "vitrasa:2260", "name": { - "original": "Camiño do Pino Manso, 6" + "original": "Avda. de Santa Mariña, 18" }, - "latitude": 42.222951208, - "longitude": -8.635051581, + "latitude": 42.220504663, + "longitude": -8.668053014, "lines": [ - "A" + "11" ] }, { - "stopId": 6450, + "stopId": "vitrasa:2270", "name": { - "original": "Praza de Suárez Llanos" + "original": "Avda. de Santa Mariña, 103" }, - "latitude": 42.224306065, - "longitude": -8.753090783, + "latitude": 42.22113201, + "longitude": -8.658591621, "lines": [ - "C3d", - "C3i", - "13", - "U1", - "H" + "11" ] }, { - "stopId": 6460, + "stopId": "vitrasa:2280", "name": { - "original": "Rúa dos Pescadores, 10" + "original": "Baixada á Laxe, 31" }, - "latitude": 42.224853579, - "longitude": -8.752608542, + "latitude": 42.21650849, + "longitude": -8.719175368, "lines": [ - "C3d", - "C3i" + "18A", + "18B", + "18H" ] }, { - "stopId": 6470, + "stopId": "vitrasa:2290", "name": { - "original": "Rúa de Pi i Margall, 108" + "original": "Baixada á Laxe, 44" }, - "latitude": 42.228458938, - "longitude": -8.732202674, + "latitude": 42.216415126, + "longitude": -8.719355076, "lines": [ - "VTS" + "18A", + "18B", + "18H" ] }, { - "stopId": 6480, + "stopId": "vitrasa:230", "name": { - "original": "Rúa de Pi i Margall, 137" + "original": "Rúa de Ángel de Lema, 14" }, - "latitude": 42.229149188, - "longitude": -8.731886908, + "latitude": 42.248041601, + "longitude": -8.691024475, "lines": [ - "5B", - "12A" + "C3i", + "10" ] }, { - "stopId": 6490, + "stopId": "vitrasa:2300", "name": { - "original": "Rúa de Pi i Margall, 32" + "original": "Baixada á Ponte Nova, 13" }, - "latitude": 42.233972514, - "longitude": -8.729963004, + "latitude": 42.22078735, + "longitude": -8.722722261, "lines": [ - "VTS" + "18A" ] }, { - "stopId": 6500, + "stopId": "vitrasa:2310", "name": { - "original": "Rúa de Pi i Margall, 51" + "original": "Baixada á Praia (fronte 187)" }, - "latitude": 42.233690068, - "longitude": -8.730100174, + "latitude": 42.173398721, + "longitude": -8.811050666, "lines": [ - "5B", + "C3d", + "10", "12A" ] }, { - "stopId": 6510, + "stopId": "vitrasa:2320", "name": { - "original": "Rúa de Pi i Margall, 86" + "original": "Baixada á Praia, 121" }, - "latitude": 42.230584487, - "longitude": -8.731459155, + "latitude": 42.172541892, + "longitude": -8.809133287, "lines": [ - "VTS" + "10" ] }, { - "stopId": 6520, + "stopId": "vitrasa:2330", "name": { - "original": "Rúa de Pi i Margall, 95" + "original": "Avda. de Ricardo Mella, 357" }, - "latitude": 42.232285981, - "longitude": -8.730816324, + "latitude": 42.173316968, + "longitude": -8.81100291, "lines": [ - "5B", - "12A" + "10" ] }, { - "stopId": 6530, + "stopId": "vitrasa:2340", "name": { - "original": "Rúa do Pintor Laxeiro, 4" + "original": "Baixada á Praia, 44" }, - "latitude": 42.222480852, - "longitude": -8.729812967, + "latitude": 42.167981444, + "longitude": -8.806504239, "lines": [ - "C1" + "C3d", + "10", + "12A" ] }, { - "stopId": 6550, + "stopId": "vitrasa:2350", "name": { - "original": "Rúa de Pizarro, 10" + "original": "Baixada á Praia, 74" }, - "latitude": 42.229886416, - "longitude": -8.717463365, + "latitude": 42.169850316, + "longitude": -8.808861828, "lines": [ - "C3i", - "6", - "11", - "15A", - "23", - "25", - "28", - "29" + "C3d", + "10", + "12A" ] }, { - "stopId": 6560, + "stopId": "vitrasa:2360", "name": { - "original": "Rúa de Pizarro, 34" + "original": "Baixada á Praia (Parque C.Cívico)" }, - "latitude": 42.23113801, - "longitude": -8.711696824, + "latitude": 42.167825345, + "longitude": -8.806386831, "lines": [ - "C3i", - "6", - "11", - "15A", - "23", - "25", - "27", - "28" + "10" ] }, { - "stopId": 6570, + "stopId": "vitrasa:2370", "name": { - "original": "Rúa de Pizarro, 65" + "original": "Baixada á Praia, 94" }, - "latitude": 42.231357755, - "longitude": -8.71296778, + "latitude": 42.172705652, + "longitude": -8.809114415, "lines": [ "C3d", - "6", - "15A", - "23", - "25", - "27", - "28", - "U2", - "H2", - "PSA 1" + "10", + "12A" ] }, { - "stopId": 6580, + "stopId": "vitrasa:2380", "name": { - "original": "Rúa de Pizarro, 7" + "original": "Baixada á Praia, 101" }, - "latitude": 42.229860487, - "longitude": -8.717979137, + "latitude": 42.169719111, + "longitude": -8.808832324, "lines": [ - "C3d", - "6", - "15A", - "23", - "25", - "27", - "28", - "U2", - "H2", - "PSA 1" + "10" ] }, { - "stopId": 6640, + "stopId": "vitrasa:2390", "name": { - "original": "Rúa do Porriño (fronte Instituto)" + "original": "Baixada á Salgueira, 49" }, - "latitude": 42.215506175, - "longitude": -8.753186569, + "latitude": 42.224020371, + "longitude": -8.716787891, "lines": [ - "C3d", - "C3i", - "4A", - "4C", - "15A", - "PSA 1", - "PSA 4" + "18A" ] }, { - "stopId": 6650, + "stopId": "vitrasa:240", "name": { - "original": "Rúa do Porriño (Instituto)" + "original": "Rúa de Ángel de Lema, 19" }, - "latitude": 42.215554055, - "longitude": -8.753042462, + "latitude": 42.247513476, + "longitude": -8.691874301, "lines": [ "C3d", - "C3i", - "5B", - "15B", - "U1" + "10" ] }, { - "stopId": 6660, + "stopId": "vitrasa:2410", "name": { - "original": "Praza da Porta do Sol" + "original": "Baixada ao Río, 31" }, - "latitude": 42.237915293, - "longitude": -8.724846587, + "latitude": 42.209020914, + "longitude": -8.702331689, "lines": [ - "VTS" + "14" ] }, { - "stopId": 6670, + "stopId": "vitrasa:2420", "name": { - "original": "Estrada da Venda, 109" + "original": "Rúa do Cacheno (Lavadero)" }, - "latitude": 42.183004832, - "longitude": -8.702601056, + "latitude": 42.208468606, + "longitude": -8.702143934, "lines": [ - "A", - "6" + "14" ] }, { - "stopId": 6680, + "stopId": "vitrasa:2430", "name": { - "original": "Rúa do Portoloureiro, 26" + "original": "Rúa de Barcelona, 64" }, - "latitude": 42.207311837, - "longitude": -8.718650635, + "latitude": 42.223917068, + "longitude": -8.726168827, "lines": [ - "A" + "C1" ] }, { - "stopId": 6690, + "stopId": "vitrasa:2440", "name": { - "original": "Rúa do Portoloureiro, 52" + "original": "Rúa de Barcelona, 2" }, - "latitude": 42.20495956, - "longitude": -8.715695557, + "latitude": 42.228315534, + "longitude": -8.721741958, "lines": [ - "A" + "C1" ] }, { - "stopId": 6700, + "stopId": "vitrasa:2450", "name": { - "original": "Rúa do Portoloureiro, 43" + "original": "Rúa de Barcelona, 32" }, - "latitude": 42.204947406, - "longitude": -8.715589643, + "latitude": 42.226024692, + "longitude": -8.723390804, "lines": [ - "A" + "C1" ] }, { - "stopId": 6720, + "stopId": "vitrasa:2460", "name": { - "original": "Rúa do Portoloureiro (fronte 28)" + "original": "Rúa de Xeme, 59" }, - "latitude": 42.207385347, - "longitude": -8.718127604, + "latitude": 42.203300943, + "longitude": -8.696320858, "lines": [ - "A" + "14" ] }, { - "stopId": 6730, + "stopId": "vitrasa:2490", "name": { - "original": "Rúa do Couto, 29" + "original": "Rúa das Coutadas, 57" }, - "latitude": 42.199386411, - "longitude": -8.695417016, + "latitude": 42.194635725, + "longitude": -8.699504032, "lines": [ - "18A", - "18B" + "6", + "27" ] }, { - "stopId": 6740, + "stopId": "vitrasa:250", "name": { - "original": "Rúa da Vista do Mar, 95" + "original": "Rúa de Ángel de Lema, 221" }, - "latitude": 42.242957479, - "longitude": -8.691167762, + "latitude": 42.255252085, + "longitude": -8.679480662, "lines": [ - "4A", - "24" + "C3d", + "10" ] }, { - "stopId": 6750, + "stopId": "vitrasa:2500", "name": { - "original": "Avda. de Samil (Praia da Fonte)" + "original": "Rúa de Ramiro Pascual (Igrexa)" }, - "latitude": 42.221783554, - "longitude": -8.773517669, + "latitude": 42.191950062, + "longitude": -8.707193511, "lines": [ - "10", - "15B", - "15C", - "N1" + "27" ] }, { - "stopId": 6760, + "stopId": "vitrasa:2510", "name": { - "original": "Rúa de Canido (Praia da Calzoa)" + "original": "Avda. de Castrelos, 439" }, - "latitude": 42.201847037, - "longitude": -8.782205633, + "latitude": 42.191323803, + "longitude": -8.721049887, "lines": [ - "10" + "7" ] }, { - "stopId": 6780, + "stopId": "vitrasa:2520", "name": { - "original": "Avda. de Samil (Dunas)" + "original": "Estrada de Bembrive, 238" }, - "latitude": 42.210256843, - "longitude": -8.774740625, + "latitude": 42.204563665, + "longitude": -8.687025359, "lines": [ - "10" + "6", + "14" ] }, { - "stopId": 6790, + "stopId": "vitrasa:2540", "name": { - "original": "Avda. de Samil (fronte Hotel)" + "original": "Bouzas (Rotonda de Las Anclas)" }, - "latitude": 42.214773038, - "longitude": -8.774765933, + "latitude": 42.22513153, + "longitude": -8.751597027, "lines": [ - "C3d", - "10", - "15C" + "6", + "9B" ] }, { - "stopId": 6800, + "stopId": "vitrasa:2550", "name": { - "original": "Avda. de Samil, 26" + "original": "Camiño da Brea, 10" }, - "latitude": 42.215578848, - "longitude": -8.774885538, + "latitude": 42.204086577, + "longitude": -8.704832445, "lines": [ - "15C" + "18A", + "18B" ] }, { - "stopId": 6810, + "stopId": "vitrasa:2551", "name": { - "original": "Avda. de Samil (Parking)" + "original": "Camiño da Brea, 40" }, - "latitude": 42.207405928, - "longitude": -8.776153122, + "latitude": 42.205779861, + "longitude": -8.704885101, "lines": [ - "10" + "18B" ] }, { - "stopId": 6820, + "stopId": "vitrasa:2560", "name": { - "original": "Avda. de Samil (Polideportivo)" + "original": "Camiño da Brea, 37" }, - "latitude": 42.20362713, - "longitude": -8.777027535, + "latitude": 42.204297185, + "longitude": -8.704942415, "lines": [ - "10" + "18A", + "18B" ] }, { - "stopId": 6830, + "stopId": "vitrasa:2580", "name": { - "original": "Praia do Vao" + "original": "Camiño da Brea, 69" }, - "latitude": 42.197495083, - "longitude": -8.790235556, + "latitude": 42.207235488, + "longitude": -8.704631381, "lines": [ - "10" + "18A", + "18B" ] }, { - "stopId": 6860, + "stopId": "vitrasa:2590", "name": { - "original": "Praza de Compostela" + "original": "Rúa da Cabalaría, 94" }, - "latitude": 42.239118346, - "longitude": -8.722531274, + "latitude": 42.232442621, + "longitude": -8.689558541, "lines": [ - "C3i", - "A", - "5A", - "5B", - "6", - "9B", - "10", - "11", - "15B", - "15C", - "28", - "N1", - "N4", - "H1", - "VTS" + "28" ] }, { - "stopId": 6880, + "stopId": "vitrasa:260", "name": { - "original": "Praza do Cristo da Vitoria" + "original": "Rúa de Ángel de Lema, 91" }, - "latitude": 42.215576278, - "longitude": -8.748885599, + "latitude": 42.250421216, + "longitude": -8.685464716, "lines": [ - "4A", - "4C", - "11", - "15A", - "N4" + "C3d", + "10" ] }, { - "stopId": 6890, + "stopId": "vitrasa:2600", "name": { - "original": "Rúa da Cruz, 36" + "original": "Rúa da Cabalaría, 153" }, - "latitude": 42.198959642, - "longitude": -8.68628496, + "latitude": 42.235437997, + "longitude": -8.689019794, "lines": [ - "14" + "27", + "28" ] }, { - "stopId": 6900, + "stopId": "vitrasa:2610", "name": { - "original": "Rúa da Cruz, 49" + "original": "Rúa da Cabalaría, 14" }, - "latitude": 42.199031443, - "longitude": -8.686165797, + "latitude": 42.233426101, + "longitude": -8.693298639, "lines": [ - "14" + "28" ] }, { - "stopId": 6930, + "stopId": "vitrasa:2620", "name": { - "original": "Praza de América, 1" + "original": "Rúa da Cabalaría, 186" }, - "latitude": 42.220997313, - "longitude": -8.732835177, + "latitude": 42.235420737, + "longitude": -8.68894034, "lines": [ - "C1", - "N4" + "28" ] }, { - "stopId": 6940, + "stopId": "vitrasa:2630", "name": { - "original": "Praza de América, 3" + "original": "Rúa da Cabalaría (cruce Subida ao Rosal Florido)" }, - "latitude": 42.220663902, - "longitude": -8.733419892, + "latitude": 42.233483693, + "longitude": -8.693266452, "lines": [ - "C3d", - "4A", - "4C", - "5A", - "5B", - "10", - "11", - "12A", - "12B", - "13", - "15A", - "29", - "N4", - "PSA 1", - "PSA 4", - "VTS" + "27", + "28" ] }, { - "stopId": 6950, + "stopId": "vitrasa:2640", "name": { - "original": "Praza de España (cruce Rúa de Pizarro)" + "original": "Rúa da Cabalaría, 67" }, - "latitude": 42.229280401, - "longitude": -8.719123549, + "latitude": 42.232559793, + "longitude": -8.689848219, "lines": [ - "A", - "7", - "12A", - "12B", - "14", - "16", - "18A", - "18B", - "18H" + "27", + "28" ] }, { - "stopId": 6955, + "stopId": "vitrasa:270", "name": { - "original": "Praza de España (cruce Rúa de Fernando Conde)" + "original": "Rúa de Desiderio Pernas Arquitecto, 1" }, - "latitude": 42.229438377, - "longitude": -8.719781108, + "latitude": 42.18920151, + "longitude": -8.810340862, "lines": [ - "6", - "13", - "18B", - "18H", - "25", - "29" + "C3d", + "10" ] }, { - "stopId": 6960, + "stopId": "vitrasa:2735", "name": { - "original": "Avda. das Camelias s/n ( Praza do Rei)" + "original": "Rúa da Cachamuíña (Concello)" }, - "latitude": 42.235056275, - "longitude": -8.726757514, + "latitude": 42.235033314, + "longitude": -8.727202198, "lines": [ - "4A", - "4C", "5B", - "7", - "12A", - "12B", - "16", - "17", - "27", - "PSA 4" + "12A" ] }, { - "stopId": 6970, + "stopId": "vitrasa:2740", "name": { - "original": "Rúa da Coruña, 52" + "original": "Rúa do Cacheno, 75" }, - "latitude": 42.223781999, - "longitude": -8.735258991, + "latitude": 42.207451401, + "longitude": -8.701194432, "lines": [ - "C1", - "A", - "10", - "N4", - "H1" + "14" ] }, { - "stopId": 6980, + "stopId": "vitrasa:2750", "name": { - "original": "Praza Eugenio Fadrique, 6" + "original": "Rúa do Cacheno, 28" }, - "latitude": 42.224471236, - "longitude": -8.73619635, + "latitude": 42.20671834, + "longitude": -8.699160127, "lines": [ - "C3i", - "15B", - "15C", - "N1" + "14" ] }, { - "stopId": 6990, + "stopId": "vitrasa:2760", "name": { - "original": "Praza Eugenio Fadrique, 9" + "original": "Rúa do Cacheno, 66" }, - "latitude": 42.224099613, - "longitude": -8.735838344, + "latitude": 42.208194443, + "longitude": -8.701518979, "lines": [ - "C3d", - "A", - "9B", - "15B", - "15C" + "14" ] }, { - "stopId": 7000, + "stopId": "vitrasa:2770", "name": { - "original": "Praza de Fernando O Católico" + "original": "Rúa do Cacheno, 49" }, - "latitude": 42.232427317, - "longitude": -8.711371073, + "latitude": 42.20648703, + "longitude": -8.698760561, "lines": [ - "A", - "4A", - "4C", - "5A", - "9B", - "11", - "15B", - "15C", - "24", - "28", - "N1", - "N4" + "14" ] }, { - "stopId": 7030, + "stopId": "vitrasa:2780", "name": { - "original": "Rúa de Manuel Castro, 23" + "original": "Avda. das Camelias, 135" }, - "latitude": 42.212808952, - "longitude": -8.740022994, + "latitude": 42.222387178, + "longitude": -8.731207698, "lines": [ + "4A", + "4C", + "5A", + "5B", + "11", + "12A", + "12B", "16", - "23", - "N4", - "VTS" + "17", + "27", + "N1", + "LZH" ] }, { - "stopId": 7040, + "stopId": "vitrasa:2790", "name": { - "original": "Estrada de Miraflores, 1" + "original": "Avda. das Camelias, 37" }, - "latitude": 42.218435348, - "longitude": -8.709924429, + "latitude": 42.230566426, + "longitude": -8.730086804, "lines": [ - "14", - "18A" + "4A", + "4C", + "11", + "12B", + "17", + "27", + "N1" ] }, { - "stopId": 7050, + "stopId": "vitrasa:280", "name": { - "original": "Praza de Miraflores, 4" + "original": "Rúa do Arquitecto Antonio Cominges, 38" }, - "latitude": 42.218502886, - "longitude": -8.710133641, + "latitude": 42.189490674, + "longitude": -8.808107114, "lines": [ - "14" + "C3d", + "10" ] }, { - "stopId": 7060, + "stopId": "vitrasa:2800", "name": { - "original": "Estrada de Moledo, 70" + "original": "Avda. das Camelias, 46" }, - "latitude": 42.210499286, - "longitude": -8.703983192, + "latitude": 42.230291959, + "longitude": -8.730279255, "lines": [ - "14", - "18A", - "H3" + "4A", + "4C", + "5B", + "7", + "12A", + "12B", + "17", + "27", + "PSA 4" ] }, { - "stopId": 7070, + "stopId": "vitrasa:2810", "name": { - "original": "Estrada de Moledo, 109" + "original": "Avda. das Camelias, 80" }, - "latitude": 42.210620188, - "longitude": -8.704177049, + "latitude": 42.227601839, + "longitude": -8.730236339, "lines": [ - "14", - "18A", - "H3" + "4A", + "4C", + "5B", + "7", + "12A", + "12B", + "17", + "27", + "PSA 4" ] }, { - "stopId": 7080, + "stopId": "vitrasa:2820", "name": { - "original": "Rúa da Rabadeira, 95" + "original": "Avda. das Camelias (Praza 8 de Marzo)" }, - "latitude": 42.238797018, - "longitude": -8.650399429, + "latitude": 42.227403959, + "longitude": -8.729948584, "lines": [ - "9B", - "28" + "4A", + "4C", + "11", + "12B", + "17", + "27", + "N1" ] }, { - "stopId": 7090, + "stopId": "vitrasa:2830", "name": { - "original": "Rúa de Ramiro Pascual, 108" + "original": "Rúa de Camilo Veiga, 33" }, - "latitude": 42.191918475, - "longitude": -8.706869692, + "latitude": 42.22243855, + "longitude": -8.751978552, "lines": [ - "27" + "C3d", + "13", + "15B", + "15C", + "U1", + "H" ] }, { - "stopId": 7100, + "stopId": "vitrasa:2840", "name": { - "original": "Rúa de Ramiro Pascual, 16" + "original": "Rúa da Goleta, 3" }, - "latitude": 42.1952442, - "longitude": -8.71956212, + "latitude": 42.241698248, + "longitude": -8.665209215, "lines": [ - "12B", - "18B", - "18H", - "27" + "9B", + "27", + "28" ] }, { - "stopId": 7110, + "stopId": "vitrasa:2850", "name": { - "original": "Rúa de Ramiro Pascual, 30" + "original": "Rúa da Goleta, 2" }, - "latitude": 42.195709195, - "longitude": -8.716896004, + "latitude": 42.241676405, + "longitude": -8.665026825, "lines": [ - "27" + "9B", + "28" ] }, { - "stopId": 7120, + "stopId": "vitrasa:2870", "name": { - "original": "Rúa de Ramiro Pascual, 33" + "original": "Rúa de Cantabria (Compañía Suministradora de Auga)" }, - "latitude": 42.195795442, - "longitude": -8.716893641, + "latitude": 42.237397409, + "longitude": -8.694169154, "lines": [ - "27" + "4A", + "24" ] }, { - "stopId": 7130, + "stopId": "vitrasa:2880", "name": { - "original": "Rúa de Ramiro Pascual, 46" + "original": "Rúa de Cantabria, 148" }, - "latitude": 42.19350247, - "longitude": -8.715219623, + "latitude": 42.239331582, + "longitude": -8.692983618, "lines": [ - "27" + "4A", + "24" ] }, { - "stopId": 7140, + "stopId": "vitrasa:290", "name": { - "original": "Rúa de Ramiro Pascual, 71" + "original": "Rúa do Arquitecto Gómez Román, 37" }, - "latitude": 42.193601829, - "longitude": -8.715157933, + "latitude": 42.190149471, + "longitude": -8.803788225, "lines": [ - "27" + "C3d", + "10" ] }, { - "stopId": 7150, + "stopId": "vitrasa:2910", "name": { - "original": "Rúa de Ramiro Pascual, 74" + "original": "Rúa de Cantabria, 212" }, - "latitude": 42.192415468, - "longitude": -8.71184004, + "latitude": 42.241655974, + "longitude": -8.692827561, "lines": [ - "27" + "4A", + "24" ] }, { - "stopId": 7160, + "stopId": "vitrasa:2920", "name": { - "original": "Rúa de Ramiro Pascual, 97" + "original": "Rúa de Cantabria, 45" }, - "latitude": 42.192526527, - "longitude": -8.712588696, + "latitude": 42.235852081, + "longitude": -8.695592417, "lines": [ - "27" + "4A", + "24" ] }, { - "stopId": 7170, + "stopId": "vitrasa:2930", "name": { - "original": "Rúa de Ramiro Pascual, 9" + "original": "Rúa de Cantabria, 58" }, - "latitude": 42.195322512, - "longitude": -8.719460515, + "latitude": 42.235377808, + "longitude": -8.695695331, "lines": [ - "12B", - "18B", - "18H", - "27" + "4A", + "24" ] }, { - "stopId": 7200, + "stopId": "vitrasa:2950", "name": { - "original": "Avda. de Ramón Nieto, 125" + "original": "Rúa dos Canteiros, 4" }, - "latitude": 42.231023929, - "longitude": -8.69459232, + "latitude": 42.204307169, + "longitude": -8.729719236, "lines": [ - "11", - "15A", - "15B", - "15C", - "31", - "H3", - "VTS" + "12B", + "17" ] }, { - "stopId": 7210, + "stopId": "vitrasa:2960", "name": { - "original": "Avda. de Ramón Nieto, 136" + "original": "Rúa dos Canteiros, 101" }, - "latitude": 42.229661504, - "longitude": -8.691416585, + "latitude": 42.20073699, + "longitude": -8.738895516, "lines": [ - "11", - "15A", - "15B", - "15C", - "31", - "H3" + "12B", + "17" ] }, { - "stopId": 7220, + "stopId": "vitrasa:2970", "name": { - "original": "Avda. de Ramón Nieto, 173" + "original": "Rúa dos Canteiros, 116" }, - "latitude": 42.229736581, - "longitude": -8.691879077, + "latitude": 42.201317829, + "longitude": -8.735636365, "lines": [ - "11", - "15A", - "15B", - "15C", - "31", - "H3", - "VTS" + "12B", + "17" ] }, { - "stopId": 7230, + "stopId": "vitrasa:2980", "name": { - "original": "Avda. de Ramón Nieto, 198" + "original": "Rúa dos Canteiros, 164" }, - "latitude": 42.229560215, - "longitude": -8.687854611, + "latitude": 42.200758846, + "longitude": -8.739043037, "lines": [ - "11", - "15A", - "15B", - "15C", - "31", - "H3" + "12B", + "17" ] }, { - "stopId": 7240, + "stopId": "vitrasa:2990", "name": { - "original": "Avda. de Ramón Nieto, 252" + "original": "Rúa dos Canteiros, 9" }, - "latitude": 42.229454954, - "longitude": -8.684539401, + "latitude": 42.203792573, + "longitude": -8.729630723, "lines": [ - "11", - "15A", - "15B", - "15C", - "31", - "H3" + "12B", + "17" ] }, { - "stopId": 7250, + "stopId": "vitrasa:3000", "name": { - "original": "Avda. de Ramón Nieto, 273" + "original": "Rúa dos Canteiros, 49" }, - "latitude": 42.229533333, - "longitude": -8.684593198, + "latitude": 42.201188677, + "longitude": -8.733208966, "lines": [ - "11", - "15A", - "15B", - "15C", - "31", - "H3", - "VTS" + "12B", + "17" ] }, { - "stopId": 7260, + "stopId": "vitrasa:3010", "name": { - "original": "Avda. de Ramón Nieto, 308" + "original": "Rúa dos Canteiros, 73" }, - "latitude": 42.22953241, - "longitude": -8.681347572, + "latitude": 42.20121252, + "longitude": -8.735711467, "lines": [ - "11", - "15A", - "15B", - "15C", - "31", - "H3" + "12B", + "17" ] }, { - "stopId": 7270, + "stopId": "vitrasa:3020", "name": { - "original": "Avda. de Ramón Nieto, 341" + "original": "Rúa dos Canteiros, 76" }, - "latitude": 42.229570145, - "longitude": -8.681232237, + "latitude": 42.201218481, + "longitude": -8.733509374, "lines": [ - "11", - "15A", - "15B", - "15C", - "31", - "H3", - "VTS" + "12B", + "17" ] }, { - "stopId": 7280, + "stopId": "vitrasa:3030", "name": { - "original": "Avda. de Ramón Nieto, 355" + "original": "Avda. de Castrelos, 458" }, - "latitude": 42.228432118, - "longitude": -8.67827376, + "latitude": 42.194702579, + "longitude": -8.721025195, "lines": [ - "11", - "15A", - "15B", - "15C", - "31", - "H3", - "VTS" + "7", + "U1" ] }, { - "stopId": 7290, + "stopId": "vitrasa:3050", "name": { - "original": "Avda. de Ramón Nieto, 360" + "original": "Estrada de Casás (cruce Camiño da Pedra Branca)" }, - "latitude": 42.228411862, - "longitude": -8.678489489, + "latitude": 42.192360267, + "longitude": -8.756680959, "lines": [ - "11", - "15A", - "15B", - "15C", - "31", - "H3" + "29" ] }, { - "stopId": 7300, + "stopId": "vitrasa:3052", "name": { - "original": "Avda. de Ramón Nieto, 390" + "original": "Avda. Arquitecto Antonio Palacios (cruce Rúa Ricardo Torres)" }, - "latitude": 42.223957681, - "longitude": -8.673451332, + "latitude": 42.216966631, + "longitude": -8.729813845, "lines": [ - "11", - "15A", - "15B", - "15C", - "31", - "H3" + "A" ] }, { - "stopId": 7310, + "stopId": "vitrasa:3060", "name": { - "original": "Avda. de Ramón Nieto, 406" + "original": "Rúa da Ceboleira, 30" }, - "latitude": 42.223219273, - "longitude": -8.672272983, + "latitude": 42.224698049, + "longitude": -8.701749123, "lines": [ - "11", - "15A", - "15B", - "15C", - "25" + "6" ] }, { - "stopId": 7320, + "stopId": "vitrasa:3070", "name": { - "original": "Avda. de Ramón Nieto, 475" + "original": "Rúa da Ceboleira, 49" }, - "latitude": 42.224462184, - "longitude": -8.673842935, + "latitude": 42.224816342, + "longitude": -8.701565998, "lines": [ - "11", - "15A", - "15B", - "15C", - "31", - "H3", - "VTS" + "6" ] }, { - "stopId": 7330, + "stopId": "vitrasa:3080", "name": { - "original": "Avda. de Ramón Nieto, 50" + "original": "Avda. de Cesáreo Vázquez, 136" }, - "latitude": 42.231776636, - "longitude": -8.697735869, + "latitude": 42.1873653089623, + "longitude": -8.800886236766305, "lines": [ - "11", - "15A", - "15B", - "15C", - "31", - "H3" + "11" ] }, { - "stopId": 7340, + "stopId": "vitrasa:3090", "name": { - "original": "Avda. de Ramón Nieto, 503" + "original": "Avda. de Cesáreo Vázquez, 182" }, - "latitude": 42.223272423, - "longitude": -8.67216119, + "latitude": 42.191019711713736, + "longitude": -8.799628565094565, "lines": [ - "11", - "15A", - "15B", - "15C", - "25", - "VTS" + "C3d", + "10", + "11" ] }, { - "stopId": 7350, + "stopId": "vitrasa:310", "name": { - "original": "Avda. de Ramón Nieto, 57" + "original": "Rúa do Arquitecto Antonio Cominges, 4" }, - "latitude": 42.231927571, - "longitude": -8.697668814, + "latitude": 42.190850463, + "longitude": -8.80358845, "lines": [ - "11", - "15A", - "15B", - "15C", - "31", - "H3", - "VTS" + "C3d", + "10" ] }, { - "stopId": 7360, + "stopId": "vitrasa:3100", "name": { - "original": "Avda. de Ramón Nieto, 96" + "original": "Avda. de Cesáreo Vázquez, 99" }, - "latitude": 42.230432101, - "longitude": -8.694045149, + "latitude": 42.184766843, + "longitude": -8.802180879, "lines": [ "11", - "15A", - "15B", - "15C", - "31", - "H3" + "12A" ] }, { - "stopId": 7370, + "stopId": "vitrasa:3110", "name": { - "original": "Avda. de Ramón Nieto, 247" + "original": "Avda. de Cesáreo Vázquez, 74" }, - "latitude": 42.229607881, - "longitude": -8.686980211, + "latitude": 42.184416675, + "longitude": -8.802179713, "lines": [ - "11", - "15A", - "15B", - "15C", - "31", - "H3", - "VTS" + "11" ] }, { - "stopId": 7380, + "stopId": "vitrasa:3120", "name": { - "original": "Camiño do Raviso, 8" + "original": "Avda. de Cesáreo Vázquez, 141" }, - "latitude": 42.220087856, - "longitude": -8.707014826, + "latitude": 42.187488521491225, + "longitude": -8.801226626055183, "lines": [ - "14" + "11", + "12A" ] }, { - "stopId": 7390, + "stopId": "vitrasa:3130", "name": { - "original": "Camiño do Raviso, 35" + "original": "Avda. de Cesáreo Vázquez, 169" }, - "latitude": 42.220167311, - "longitude": -8.706963864, + "latitude": 42.191024803868736, + "longitude": -8.799397387002196, "lines": [ - "14" + "11" ] }, { - "stopId": 7410, + "stopId": "vitrasa:3140", "name": { - "original": "Rúa de Eduardo Cabello (Igrexa)" + "original": "Estrada De Zamáns, 255" }, - "latitude": 42.226366639, - "longitude": -8.752928216, + "latitude": 42.15800346, + "longitude": -8.686134691, "lines": [ - "C3d", - "C3i", - "13", - "U1", - "H" + "7" ] }, { - "stopId": 7440, + "stopId": "vitrasa:3150", "name": { - "original": "Rúa Da Cruz, 18" + "original": "Estrada de Zamáns (cruce Igrexa)" }, - "latitude": 42.200640474, - "longitude": -8.684744444, + "latitude": 42.157661469, + "longitude": -8.685973759, "lines": [ - "14" + "7" ] }, { - "stopId": 7450, + "stopId": "vitrasa:3160", "name": { - "original": "Rúa da Cruz, 2" + "original": "Camiño da Falcoa, 10" }, - "latitude": 42.202168422, - "longitude": -8.68473908, + "latitude": 42.206593246, + "longitude": -8.721651793, "lines": [ - "14" + "18B", + "18H" ] }, { - "stopId": 7460, + "stopId": "vitrasa:3170", "name": { - "original": "Rúa da Cruz, 46" + "original": "Rúa das Coutadas, 76" }, - "latitude": 42.19807525, - "longitude": -8.684800771, + "latitude": 42.220968446, + "longitude": -8.720400826, "lines": [ - "14" + "18A" ] }, { - "stopId": 7470, + "stopId": "vitrasa:3180", "name": { - "original": "Rúa Da Cruz, 63" + "original": "Camiño de Quirós, 106" }, - "latitude": 42.198206824, - "longitude": -8.684878336, + "latitude": 42.21955863, + "longitude": -8.711410119, "lines": [ - "14" + "18B", + "18H" ] }, { - "stopId": 7480, + "stopId": "vitrasa:3190", "name": { - "original": "Rúa Da Cruz, 19" + "original": "Camiño de Quirós (cruce Rúa de Dona Cristina)" }, - "latitude": 42.200729887, - "longitude": -8.684258964, + "latitude": 42.219681782, + "longitude": -8.711385979, "lines": [ - "14" + "18B", + "18H" ] }, { - "stopId": 7490, + "stopId": "vitrasa:320", "name": { - "original": "Rúa do Carballal, 52" + "original": "Rúa do Arquitecto Antonio Cominges, 70" }, - "latitude": 42.194091099, - "longitude": -8.683392611, + "latitude": 42.189221331, + "longitude": -8.811730246, "lines": [ - "14" + "C3d", + "10" ] }, { - "stopId": 7500, + "stopId": "vitrasa:3230", "name": { - "original": "Rúa do Carballal, 18" + "original": "Rúa de Colón, 27" }, - "latitude": 42.196388225, - "longitude": -8.684151676, + "latitude": 42.236471452, + "longitude": -8.720164905, "lines": [ - "14" + "16" ] }, { - "stopId": 7540, + "stopId": "vitrasa:3240", "name": { - "original": "Avda. do Tranvía, 100" + "original": "Rúa da Coruña, 5" }, - "latitude": 42.226657624, - "longitude": -8.659447983, + "latitude": 42.22214729, + "longitude": -8.734167916, "lines": [ + "A", + "5A", + "5B", + "10", "11", - "15A" + "13", + "N4", + "U1", + "H1", + "H", + "VTS" ] }, { - "stopId": 7590, + "stopId": "vitrasa:3250", "name": { - "original": "Avda. do Tranvía, 40" + "original": "Rúa da Coruña, 26" }, - "latitude": 42.225201551, - "longitude": -8.667101684, + "latitude": 42.222378625, + "longitude": -8.734134247, "lines": [ - "11", - "15A" + "C1", + "A", + "10", + "N4", + "H1" ] }, { - "stopId": 7600, + "stopId": "vitrasa:3260", "name": { - "original": "Rúa dos Chans (cruce Subida Chans)" + "original": "Rúa da Coruña, 37" }, - "latitude": 42.198544554, - "longitude": -8.677824939, + "latitude": 42.226287696, + "longitude": -8.737475832, "lines": [ - "14" + "15B" ] }, { - "stopId": 7610, + "stopId": "vitrasa:3270", "name": { - "original": "Rúa das Chans (Colexio)" + "original": "Rúa da Coruña (fronte 39)" }, - "latitude": 42.196647395, - "longitude": -8.677801904, + "latitude": 42.226490285, + "longitude": -8.73744901, "lines": [ - "14" + "10", + "15B" ] }, { - "stopId": 7620, + "stopId": "vitrasa:3280", "name": { - "original": "Rúa das Chans, 97" + "original": "Rúa de Manuel Lago Lago, 1" }, - "latitude": 42.189146758, - "longitude": -8.678708548, + "latitude": 42.188898503, + "longitude": -8.776299224, "lines": [ - "14" + "29" ] }, { - "stopId": 7630, + "stopId": "vitrasa:3290", "name": { - "original": "Rúa do Salgueiro, 6" + "original": "Rúa da Costa, 13" }, - "latitude": 42.243135911, - "longitude": -8.66173721, + "latitude": 42.213397685, + "longitude": -8.72248211, "lines": [ - "9B", - "28" + "A", + "18B", + "18H" ] }, { - "stopId": 7640, + "stopId": "vitrasa:330", "name": { - "original": "Rúa da Rabadeira, 135" + "original": "Rúa do Arquitecto Antonio Cominges, 90" }, - "latitude": 42.241620781, - "longitude": -8.652000054, + "latitude": 42.187213169, + "longitude": -8.813069201, "lines": [ - "9B", - "28" + "C3d", + "10" ] }, { - "stopId": 7650, + "stopId": "vitrasa:3300", "name": { - "original": "Rúa da Rabadeira, 64" + "original": "Rúa da Costa, 22" }, - "latitude": 42.239043121, - "longitude": -8.650247888, + "latitude": 42.211751348, + "longitude": -8.721691531, "lines": [ - "9B", - "27", - "28" + "A", + "18B", + "18H" ] }, { - "stopId": 7660, + "stopId": "vitrasa:3310", "name": { - "original": "Rúa da Rabadeira, 104" + "original": "Rúa da Costa, 74" }, - "latitude": 42.241610852, - "longitude": -8.651865944, + "latitude": 42.209233023, + "longitude": -8.720666368, "lines": [ - "9B", - "27", - "28" + "A", + "18B", + "18H" ] }, { - "stopId": 7662, + "stopId": "vitrasa:3320", "name": { - "original": "Rúa de Recaré, 6" + "original": "Rúa da Costa, 63" }, - "latitude": 42.211013462, - "longitude": -8.68554295, + "latitude": 42.210154848, + "longitude": -8.720902403, "lines": [ - "14" + "A", + "18B", + "18H" ] }, { - "stopId": 7664, + "stopId": "vitrasa:3350", "name": { - "original": "Rúa de Recaré (cruce Segade)" + "original": "Rúa do Couto, 1" }, - "latitude": 42.211201327, - "longitude": -8.688838517, + "latitude": 42.230911796, + "longitude": -8.722711253, "lines": [ - "14" + "7", + "12A", + "12B", + "27" ] }, { - "stopId": 7666, + "stopId": "vitrasa:3360", "name": { - "original": "Rúa de Recaré, 3" + "original": "Rúa do Doutor Canoa, 8" }, - "latitude": 42.210514541, - "longitude": -8.685349777, + "latitude": 42.237803518, + "longitude": -8.704409031, "lines": [ - "14" + "31" ] }, { - "stopId": 7668, + "stopId": "vitrasa:3370", "name": { - "original": "Rúa de Recaré, 39" + "original": "Estrada de Bembrive (cruce Rúa Eifonso)" }, - "latitude": 42.211022529, - "longitude": -8.688318168, + "latitude": 42.205676226, + "longitude": -8.693112047, "lines": [ + "6", "14" ] }, { - "stopId": 7670, + "stopId": "vitrasa:3380", "name": { - "original": "Rúa San Cristobo, 6" + "original": "Cruce Eifonso" }, - "latitude": 42.235169136, - "longitude": -8.671176685, + "latitude": 42.205623108, + "longitude": -8.693239335, "lines": [ - "9B" + "6", + "14" ] }, { - "stopId": 7680, + "stopId": "vitrasa:3390", "name": { - "original": "Rúa San Cristobo, 117" + "original": "Estrada de Bembrive, 160" }, - "latitude": 42.240866745, - "longitude": -8.669273191, + "latitude": 42.205296644, + "longitude": -8.692558914, "lines": [ - "9B", - "27" + "6", + "14" ] }, { - "stopId": 7690, + "stopId": "vitrasa:340", "name": { - "original": "Rúa San Cristobo, 11" + "original": "Rúa de Aragón, 116" }, - "latitude": 42.235468446, - "longitude": -8.670649153, + "latitude": 42.238036494, + "longitude": -8.700921187, "lines": [ - "9B", - "27" + "4A", + "H3" ] }, { - "stopId": 7700, + "stopId": "vitrasa:3400", "name": { - "original": "Rúa San Cristobo, 30" + "original": "Estrada da Gándara, 22" }, - "latitude": 42.236478263, - "longitude": -8.669194381, + "latitude": 42.163584451, + "longitude": -8.716088728, "lines": [ - "9B" + "7" ] }, { - "stopId": 7710, + "stopId": "vitrasa:3420", "name": { - "original": "Rúa San Cristobo, 41" + "original": "Avda. de Castrelos (Cemiterio de Pereiró)" }, - "latitude": 42.236825775, - "longitude": -8.669313413, + "latitude": 42.208071495, + "longitude": -8.731366082, "lines": [ - "9B", - "27" + "7", + "12B", + "17", + "27", + "U1" ] }, { - "stopId": 7720, + "stopId": "vitrasa:3430", "name": { - "original": "Rúa San Cristobo, 80" + "original": "Avda. da Ponte, 86 (Cemiterio)" }, - "latitude": 42.24099726, - "longitude": -8.669077286, + "latitude": 42.215621206, + "longitude": -8.67221512, "lines": [ - "9B" + "15B", + "15C" ] }, { - "stopId": 7730, + "stopId": "vitrasa:3450", "name": { - "original": "Rúa do Salgueiro, 24" + "original": "Estrada de Camposancos, 155" }, - "latitude": 42.241580812, - "longitude": -8.658065611, + "latitude": 42.194732286, + "longitude": -8.769245322, "lines": [ - "9B", - "28" + "11", + "29" ] }, { - "stopId": 7740, + "stopId": "vitrasa:3460", "name": { - "original": "Rúa de Salgueiro, 23" + "original": "Estrada de Camposancos, 19" }, - "latitude": 42.241658253, - "longitude": -8.658202403, + "latitude": 42.203197031, + "longitude": -8.753437723, "lines": [ - "9B", - "27", - "28" + "11", + "29" ] }, { - "stopId": 7750, + "stopId": "vitrasa:3470", "name": { - "original": "Rúa do Salgueiro, 1" + "original": "Estrada de Camposancos, 214" }, - "latitude": 42.243330503, - "longitude": -8.661852545, + "latitude": 42.193581709, + "longitude": -8.772496159, "lines": [ - "9B", - "27", - "28" + "11", + "29" ] }, { - "stopId": 7760, + "stopId": "vitrasa:3480", "name": { - "original": "Camiño das Cunchadas (cruce Rúa da Senra)" + "original": "Estrada de Camposancos, 141" }, - "latitude": 42.193300199, - "longitude": -8.681021538, + "latitude": 42.196095467, + "longitude": -8.766230519, "lines": [ - "14" + "11", + "29" ] }, { - "stopId": 7762, + "stopId": "vitrasa:3490", "name": { - "original": "Rúa de Segade, 41" + "original": "Estrada de Camposancos, 171" }, - "latitude": 42.209575101, - "longitude": -8.690548833, + "latitude": 42.193613504, + "longitude": -8.772222574, "lines": [ - "14" + "11", + "29" ] }, { - "stopId": 7764, + "stopId": "vitrasa:350", "name": { - "original": "Rúa de Segade, 86" + "original": "Rúa de Aragón, 162" }, - "latitude": 42.209654568, - "longitude": -8.690495189, + "latitude": 42.240488915, + "longitude": -8.700357923, "lines": [ - "14" + "4A", + "H3" ] }, { - "stopId": 7810, + "stopId": "vitrasa:3500", "name": { - "original": "Estrada Miraflores (Parque Parróco Xesús Alonso)" + "original": "Estrada de Camposancos, 190" }, - "latitude": 42.217817959, - "longitude": -8.710940668, + "latitude": 42.194553241, + "longitude": -8.770325583, "lines": [ - "18A", - "18B", - "18H" + "11", + "29" ] }, { - "stopId": 7830, + "stopId": "vitrasa:3510", "name": { - "original": "Rúa de Saa, 72" + "original": "Estrada de Camposancos, 28" }, - "latitude": 42.20297089, - "longitude": -8.707945762, + "latitude": 42.202849227, + "longitude": -8.753870291, "lines": [ - "18B", - "H3" + "11", + "29", + "VTS" ] }, { - "stopId": 7840, + "stopId": "vitrasa:3520", "name": { - "original": "Rúa da Saa do Monte, 73" + "original": "Estrada de Camposancos, 75" }, - "latitude": 42.203039989, - "longitude": -8.710936623, + "latitude": 42.200000035, + "longitude": -8.759107913, "lines": [ - "18B" + "11", + "29" ] }, { - "stopId": 7849, + "stopId": "vitrasa:3530", "name": { - "original": "Rúa de Saá, 105" + "original": "Estrada de Camposancos, 88" }, - "latitude": 42.20622236, - "longitude": -8.707026831, + "latitude": 42.199773285, + "longitude": -8.759958845, "lines": [ - "18B" + "11", + "29" ] }, { - "stopId": 7850, + "stopId": "vitrasa:3540", "name": { - "original": "Rúa de Saa, 57" + "original": "Estrada de Camposancos, 138" }, - "latitude": 42.202923204, - "longitude": -8.708085237, + "latitude": 42.19617384, + "longitude": -8.766295392, "lines": [ - "H3" + "11", + "29" ] }, { - "stopId": 7860, + "stopId": "vitrasa:3550", "name": { - "original": "Rúa de Severino Cobas, 73" + "original": "Estrada de Bembrive (cruce Camiño Cova)" }, - "latitude": 42.225436283, - "longitude": -8.68893946, + "latitude": 42.19747765, + "longitude": -8.688158543, "lines": [ - "25" + "6" ] }, { - "stopId": 7870, + "stopId": "vitrasa:3560", "name": { - "original": "Baixada á Praia, 4" + "original": "Estrada de Bembrive, 104" }, - "latitude": 42.166897971, - "longitude": -8.802204658, + "latitude": 42.209126518, + "longitude": -8.695599845, "lines": [ - "C3d", - "10", - "12A" + "6" ] }, { - "stopId": 7880, + "stopId": "vitrasa:3570", "name": { - "original": "Barrio da Salgueira, 106" + "original": "Estrada de Bembrive, 109" }, - "latitude": 42.222364236, - "longitude": -8.718898254, + "latitude": 42.209576972, + "longitude": -8.695580071, "lines": [ - "18A" + "6" ] }, { - "stopId": 7890, + "stopId": "vitrasa:3572", "name": { - "original": "Avda. de Cesáreo Vázquez, 61" + "original": "Estrada de Bembrive, 110" }, - "latitude": 42.180764289, - "longitude": -8.80256063, + "latitude": 42.208457815, + "longitude": -8.695017358, "lines": [ - "11", - "12A" + "14" ] }, { - "stopId": 7900, + "stopId": "vitrasa:3574", "name": { - "original": "Rúa de San Paio (cruce Camiño da Quintela)" + "original": "Estrada de Bembrive, 129" }, - "latitude": 42.20492472, - "longitude": -8.768904292, + "latitude": 42.208533311, + "longitude": -8.694987854, "lines": [ - "4A", - "12A" + "14" ] }, { - "stopId": 7910, + "stopId": "vitrasa:3580", "name": { - "original": "Rúa de San Paio (Igrexa)" + "original": "Estrada de Bembrive, 180" }, - "latitude": 42.208040013, - "longitude": -8.767458581, + "latitude": 42.204440318, + "longitude": -8.690871804, "lines": [ - "4A", - "12A" + "6", + "14" ] }, { - "stopId": 7920, + "stopId": "vitrasa:3590", "name": { - "original": "Rúa de San Paio (Torreiro)" + "original": "Estrada de Bembrive, 195" }, - "latitude": 42.208926096, - "longitude": -8.765294038, + "latitude": 42.204458432, + "longitude": -8.690765895, "lines": [ - "4A", - "12A" + "6", + "14" ] }, { - "stopId": 7930, + "stopId": "vitrasa:360", "name": { - "original": "Rúa de San Paio, 136" + "original": "Rúa de Aragón, 193" }, - "latitude": 42.208999211, - "longitude": -8.765346753, + "latitude": 42.24013184, + "longitude": -8.700947033, "lines": [ "4A", - "12A" + "H3" ] }, { - "stopId": 7940, + "stopId": "vitrasa:3600", "name": { - "original": "Rúa de San Paio, 220" + "original": "Estrada de Bembrive, 22" }, - "latitude": 42.207987966, - "longitude": -8.767688321, + "latitude": 42.21246424, + "longitude": -8.697218847, "lines": [ - "4A", - "12A" + "6" ] }, { - "stopId": 7950, + "stopId": "vitrasa:3610", "name": { - "original": "Rúa de San Paio, 242" + "original": "Estrada de Bembrive, 237" }, - "latitude": 42.206253649, - "longitude": -8.768742472, + "latitude": 42.204446407, + "longitude": -8.68809021, "lines": [ - "4A", - "12A" + "6", + "14" ] }, { - "stopId": 7960, + "stopId": "vitrasa:3620", "name": { - "original": "Rúa de San Paio, 284" + "original": "Estrada de Bembrive, 278" }, - "latitude": 42.202111343, - "longitude": -8.769560881, + "latitude": 42.202562995, + "longitude": -8.685437577, "lines": [ - "4A", - "12A" + "6" ] }, { - "stopId": 7970, + "stopId": "vitrasa:3630", "name": { - "original": "Rúa de San Paio (fronte 58)" + "original": "Estrada de Bembrive, 269" }, - "latitude": 42.213820465, - "longitude": -8.760651176, + "latitude": 42.20274418, + "longitude": -8.684443742, "lines": [ - "4A", - "12A" + "6", + "14" ] }, { - "stopId": 7980, + "stopId": "vitrasa:3640", "name": { - "original": "Rúa de San Paio, 54" + "original": "Estrada de Bembrive, 315" }, - "latitude": 42.21430717, - "longitude": -8.760710185, + "latitude": 42.197359418, + "longitude": -8.688113004, "lines": [ - "4A", - "12A" + "6" ] }, { - "stopId": 7990, + "stopId": "vitrasa:3650", "name": { - "original": "Rúa de San Paio, 76" + "original": "Estrada de Bembrive, 346" }, - "latitude": 42.212612622, - "longitude": -8.760868435, + "latitude": 42.199275919, + "longitude": -8.689032944, "lines": [ - "4A", - "12A" + "6" ] }, { - "stopId": 8000, + "stopId": "vitrasa:3660", "name": { - "original": "Rúa de San Paio, 83" + "original": "Estrada de Bembrive, 39" }, - "latitude": 42.212034517, - "longitude": -8.760916715, + "latitude": 42.212227656, + "longitude": -8.697028614, "lines": [ - "4A", - "12A" + "6" ] }, { - "stopId": 8010, + "stopId": "vitrasa:3670", "name": { - "original": "Rúa de Sanjurjo Badía, 106" + "original": "Estrada de Bembrive, 398" }, - "latitude": 42.245018172, - "longitude": -8.703349646, + "latitude": 42.194968863, + "longitude": -8.689201981, "lines": [ - "C3d", - "5B", - "10", - "17", - "31", - "U2", - "H2", - "H3", - "PSA 1" + "6" ] }, { - "stopId": 8020, + "stopId": "vitrasa:3680", "name": { - "original": "Rúa de Sanjurjo Badía, 123" + "original": "Estrada de Bembrive, 64" }, - "latitude": 42.246941664, - "longitude": -8.700376378, + "latitude": 42.211144971, + "longitude": -8.69652789, "lines": [ - "C3i", - "5B", - "10", - "N1", - "H3", - "VTS" + "6" ] }, { - "stopId": 8030, + "stopId": "vitrasa:3690", "name": { - "original": "Rúa de Sanjurjo Badía, 136" + "original": "Estrada de Bembrive, 73" }, - "latitude": 42.246056261, - "longitude": -8.701684825, + "latitude": 42.210947345, + "longitude": -8.69627482, "lines": [ - "C3d", - "5B", - "10", - "17", - "31", - "U2", - "H2", - "H3", - "PSA 1" + "6" ] }, { - "stopId": 8040, + "stopId": "vitrasa:370", "name": { - "original": "Rúa de Sanjurjo Badía, 167" + "original": "Rúa de Aragón, 212" }, - "latitude": 42.24874024, - "longitude": -8.697546209, + "latitude": 42.242101304, + "longitude": -8.698394546, "lines": [ - "C3i", - "5B", - "10", - "N1", - "H3", - "VTS" + "4A", + "H3" ] }, { - "stopId": 8050, + "stopId": "vitrasa:3700", "name": { - "original": "Rúa de Sanjurjo Badía, 202" + "original": "Estrada de Bembrive (cruce Camiño Riomao)" }, - "latitude": 42.247765296, - "longitude": -8.698918203, + "latitude": 42.194055385, + "longitude": -8.692079677, "lines": [ - "C3d", - "5B", - "10", - "17", - "31", - "U2", - "H2", - "H3", - "PSA 1" + "6" ] }, { - "stopId": 8060, + "stopId": "vitrasa:3710", "name": { - "original": "Rúa de Sanjurjo Badía, 79" + "original": "Estrada de Bembrive, 363" }, - "latitude": 42.244926864, - "longitude": -8.703642393, + "latitude": 42.193846109, + "longitude": -8.69200489, "lines": [ - "C3i", - "5B", - "10", - "N1", - "H3", - "VTS" + "6" ] }, { - "stopId": 8090, + "stopId": "vitrasa:3720", "name": { - "original": "Estrada Miraflores (Centro Saúde)" + "original": "Estrada de Bembrive, 341" }, - "latitude": 42.216151643, - "longitude": -8.715616477, + "latitude": 42.1948986, + "longitude": -8.689213754, "lines": [ - "18A", - "18B", - "18H" + "6" ] }, { - "stopId": 8100, + "stopId": "vitrasa:3730", "name": { - "original": "Estrada da Gándara, 79" + "original": "Estrada de Bembrive, 301" }, - "latitude": 42.160735669, - "longitude": -8.709771124, + "latitude": 42.199203404, + "longitude": -8.688880116, "lines": [ - "7" + "6" ] }, { - "stopId": 8110, + "stopId": "vitrasa:3740", "name": { - "original": "Estrada da Gándara (Seoane)" + "original": "Rúa de Canido (Igrexa)" }, - "latitude": 42.160670051, - "longitude": -8.709878412, + "latitude": 42.197431882, + "longitude": -8.790144971, "lines": [ - "7" + "C3d", + "4C", + "10" ] }, { - "stopId": 8120, + "stopId": "vitrasa:3750", "name": { - "original": "Rúa de Severino Cobas (cruce Trav. de Santa Cristina)" + "original": "Rúa de Canido (Praia de Canido)" }, - "latitude": 42.22493632, - "longitude": -8.694369092, + "latitude": 42.193128934, + "longitude": -8.797957944, "lines": [ - "25" + "10", + "11" ] }, { - "stopId": 8130, + "stopId": "vitrasa:3760", "name": { - "original": "Rúa de Severino Cobas, 51" + "original": "Rúa de Canido (fronte 119)" }, - "latitude": 42.225485938, - "longitude": -8.692235895, + "latitude": 42.1957321, + "longitude": -8.795211362, "lines": [ - "25" + "10", + "11" ] }, { - "stopId": 8140, + "stopId": "vitrasa:3770", "name": { - "original": "Rúa de Severino Cobas, 14" + "original": "Rúa de Canido, 135" }, - "latitude": 42.224657696, - "longitude": -8.696532794, + "latitude": 42.1950348, + "longitude": -8.795701844, "lines": [ - "25" + "C3d", + "10", + "11" ] }, { - "stopId": 8150, + "stopId": "vitrasa:3780", "name": { - "original": "Rúa de Severino Cobas, 3" + "original": "Rúa de Canido, 217" }, - "latitude": 42.225076787, - "longitude": -8.697168477, + "latitude": 42.193041793, + "longitude": -8.797590453, "lines": [ - "25" + "C3d", + "10", + "11" ] }, { - "stopId": 8160, + "stopId": "vitrasa:3790", "name": { - "original": "Rúa de Severino Cobas, 88" + "original": "Rúa de Canido, 15" }, - "latitude": 42.224884679, - "longitude": -8.694275214, + "latitude": 42.201898697, + "longitude": -8.781706742, "lines": [ - "25" + "C3d", + "4C", + "10" ] }, { - "stopId": 8170, + "stopId": "vitrasa:380", "name": { - "original": "Rúa de Severino Cobas, 140" + "original": "Rúa de Aragón, 221" }, - "latitude": 42.225428901, - "longitude": -8.688744499, + "latitude": 42.242091376, + "longitude": -8.698668131, "lines": [ - "25" + "4A", + "H3" ] }, { - "stopId": 8180, + "stopId": "vitrasa:3800", "name": { - "original": "Estrada da Garrida, 291" + "original": "Rúa de Canido, 26" }, - "latitude": 42.173993336, - "longitude": -8.70329684, + "latitude": 42.199639519, + "longitude": -8.785727373, "lines": [ - "7" + "10" ] }, { - "stopId": 8190, + "stopId": "vitrasa:3810", "name": { - "original": "Subida da Costa (Colina)" + "original": "Rúa de Canido, 55" }, - "latitude": 42.214660701, - "longitude": -8.722840401, + "latitude": 42.200106486, + "longitude": -8.785121194, "lines": [ - "A" + "C3d", + "4C", + "10" ] }, { - "stopId": 8200, + "stopId": "vitrasa:3820", "name": { - "original": "Subida da Costa, 21" + "original": "Rúa do Falcoído, 16" }, - "latitude": 42.214714337, - "longitude": -8.723068388, + "latitude": 42.182659954, + "longitude": -8.699663442, "lines": [ "A" ] }, { - "stopId": 8210, + "stopId": "vitrasa:3830", "name": { - "original": "Subida da Costa, 3" + "original": "Rúa do Falcoído (cruce Camiño Goaldino)" }, - "latitude": 42.214377129, - "longitude": -8.725964538, + "latitude": 42.180635405, + "longitude": -8.696958243, "lines": [ "A" ] }, { - "stopId": 8220, + "stopId": "vitrasa:3840", "name": { - "original": "Camiño da Corredoura, 3" + "original": "Rúa do Falcoído (cruce Camiño das Presas)" }, - "latitude": 42.213993258, - "longitude": -8.726740824, + "latitude": 42.181019011, + "longitude": -8.696918009, "lines": [ "A" ] }, { - "stopId": 8230, + "stopId": "vitrasa:3850", "name": { - "original": "Rúa dos Chans (cruce Camiño Regada)" + "original": "Estrada Clara Campoamor (cruce Estrada Marcosende)" }, - "latitude": 42.199146625, - "longitude": -8.676419461, + "latitude": 42.167933917, + "longitude": -8.692758811, "lines": [ - "14" + "A", + "U1" ] }, { - "stopId": 8240, + "stopId": "vitrasa:3860", "name": { - "original": "Subida á Madroa (Urbanización)" + "original": "Estrada Clara Campoamor (cruce Rúa do Falcoído)" }, - "latitude": 42.243382567, - "longitude": -8.674125307, + "latitude": 42.168248021, + "longitude": -8.692608608, "lines": [ - "9B", - "27", - "28" + "A", + "U1" ] }, { - "stopId": 8250, + "stopId": "vitrasa:3870", "name": { - "original": "Subida á Madroa, 15" + "original": "Rúa do Falcoído, 13" }, - "latitude": 42.242669731, - "longitude": -8.670096629, + "latitude": 42.182749988, + "longitude": -8.699953254, "lines": [ - "9B", - "27", - "28" + "A" ] }, { - "stopId": 8282, + "stopId": "vitrasa:3880", "name": { - "original": "Subida á Mouteira, 6" + "original": "Estrada da Coutada, 44" }, - "latitude": 42.206854901, - "longitude": -8.686031058, + "latitude": 42.194829735, + "longitude": -8.699040324, "lines": [ - "14" + "6" ] }, { - "stopId": 8284, + "stopId": "vitrasa:3890", "name": { - "original": "Subida á Mouteira (Parque Monte Calvario)" + "original": "Estrada da Coutada, 39" }, - "latitude": 42.206779403, - "longitude": -8.686218813, + "latitude": 42.193625246, + "longitude": -8.7014263, "lines": [ - "14" + "6", + "27" ] }, { - "stopId": 8290, + "stopId": "vitrasa:390", "name": { - "original": "Subida das Ánimas, 31" + "original": "Rúa de Aragón, 26" }, - "latitude": 42.235646525, - "longitude": -8.685908988, + "latitude": 42.233174046, + "longitude": -8.702380309, "lines": [ - "27", - "28" + "4A", + "H3" ] }, { - "stopId": 8300, + "stopId": "vitrasa:3900", "name": { - "original": "Subida das Ánimas, 32" + "original": "Estrada da Coutada, 19" }, - "latitude": 42.23556225, - "longitude": -8.686044366, + "latitude": 42.19232927, + "longitude": -8.704749414, "lines": [ - "27", - "28" + "6", + "27" ] }, { - "stopId": 8330, + "stopId": "vitrasa:3910", "name": { - "original": "Rúa de Tomás A. Alonso, 86" + "original": "Estrada da Coutada, 68" }, - "latitude": 42.223897608, - "longitude": -8.740424721, + "latitude": 42.195404022, + "longitude": -8.695794851, "lines": [ - "C3i", - "15B", - "15C", - "N1" + "6" ] }, { - "stopId": 8340, + "stopId": "vitrasa:3920", "name": { - "original": "Rúa de Tomás A. Alonso, 137" + "original": "Estrada da Coutada, 65" }, - "latitude": 42.223840474, - "longitude": -8.740432891, + "latitude": 42.195725689, + "longitude": -8.697154293, "lines": [ - "C3d", - "13", - "15B", - "15C", - "U1", - "H" + "6", + "27" ] }, { - "stopId": 8370, + "stopId": "vitrasa:3930", "name": { - "original": "Rúa de Tomás A. Alonso, 220" + "original": "Estrada da Coutada, 12" }, - "latitude": 42.223984208, - "longitude": -8.751326546, + "latitude": 42.19287831, + "longitude": -8.703506202, "lines": [ - "C3d", - "C3i" + "6", + "27" ] }, { - "stopId": 8390, + "stopId": "vitrasa:3940", "name": { - "original": "Rúa de Tomás A. Alonso, 251" + "original": "Estrada de Casás, 83" }, - "latitude": 42.223510532, - "longitude": -8.748903264, + "latitude": 42.196165214, + "longitude": -8.759890011, "lines": [ - "C3d", - "13", - "15B", - "15C", - "U1", - "H" + "29" ] }, { - "stopId": 8410, + "stopId": "vitrasa:3950", "name": { - "original": "Rúa de Tomás Paredes (fronte 108)" + "original": "Estrada de Casás (cruce Camiño do Rial)" }, - "latitude": 42.218006346, - "longitude": -8.754154367, + "latitude": 42.196014193, + "longitude": -8.759919516, "lines": [ - "C3d", - "10", - "15B" + "29" ] }, { - "stopId": 8420, + "stopId": "vitrasa:3960", "name": { - "original": "Rúa de Tomás Paredes, 114" + "original": "Baixada do Castelo" }, - "latitude": 42.218031265, - "longitude": -8.754258995, + "latitude": 42.213984907, + "longitude": -8.682160511, "lines": [ - "C3i", - "10" + "12A", + "12B", + "13", + "15B", + "15C", + "31" ] }, { - "stopId": 8430, + "stopId": "vitrasa:3970", "name": { - "original": "Rúa de Tomás Paredes, 9" + "original": "Estrada Vella de Madrid, 190" }, - "latitude": 42.221229518, - "longitude": -8.753411657, + "latitude": 42.215872123, + "longitude": -8.679765298, "lines": [ - "C3d", - "10", - "15B" + "12B", + "15B", + "15C", + "U2" ] }, { - "stopId": 8440, + "stopId": "vitrasa:3980", "name": { - "original": "Rúa de Tomás Paredes, 86" + "original": "Estrada Vella de Madrid (cruce Hospital)" }, - "latitude": 42.220192578, - "longitude": -8.754164587, + "latitude": 42.21620386, + "longitude": -8.681570425, "lines": [ - "C3i", - "10" + "12A", + "12B", + "13", + "15B", + "15C", + "31", + "U2" ] }, { - "stopId": 8450, + "stopId": "vitrasa:40", "name": { - "original": "Rúa do Conde de Torrecedeira (Parque)" + "original": "Rúa do Abade Juan de Bastos (cruce Baixada da Moo)" }, - "latitude": 42.231511437, - "longitude": -8.732178, + "latitude": 42.192126677, + "longitude": -8.72901589, "lines": [ - "C1", - "C3d", - "A", - "5A", - "9B", - "15C", - "N4", - "H1" + "17" ] }, { - "stopId": 8460, + "stopId": "vitrasa:400", "name": { - "original": "Rúa do Conde de Torrecedeira, 105" + "original": "Rúa de Aragón, 91" }, - "latitude": 42.227500225, - "longitude": -8.734096707, + "latitude": 42.235598195, + "longitude": -8.701426538, "lines": [ - "C1", - "C3d", - "A", - "9B", - "15C", - "N4", - "H1" + "4A", + "H3" ] }, { - "stopId": 8470, + "stopId": "vitrasa:4000", "name": { - "original": "Rúa do Conde de Torrecedeira, 21" + "original": "Estrada de Fragoselo, 143" }, - "latitude": 42.234106639, - "longitude": -8.731302569, + "latitude": 42.182434997, + "longitude": -8.764713761, "lines": [ - "C1", - "C3d", - "A", - "5A", - "9B", - "15C", - "N4", - "H1" + "29" ] }, { - "stopId": 8480, + "stopId": "vitrasa:4010", "name": { - "original": "Rúa do Conde de Torrecedeira, 81" + "original": "Estrada de Fragoselo, 170" }, - "latitude": 42.229616766, - "longitude": -8.732861043, + "latitude": 42.184148566, + "longitude": -8.767237312, "lines": [ - "C1", - "C3d", - "A", - "5A", - "9B", - "15C", - "N4", - "H1" + "29" ] }, { - "stopId": 8490, + "stopId": "vitrasa:4020", "name": { - "original": "Rúa da Travesía de Vigo, 202" + "original": "Estrada de Fragoselo, 79" }, - "latitude": 42.244366441, - "longitude": -8.695452075, + "latitude": 42.187056187, + "longitude": -8.769605703, "lines": [ - "C3i", - "5A", - "N1", - "H3", - "VTS" + "29" ] }, { - "stopId": 8500, + "stopId": "vitrasa:4030", "name": { - "original": "Rúa da Travesía de Vigo, 105" + "original": "Estrada de Fragoselo, 111" }, - "latitude": 42.238455548, - "longitude": -8.703814812, + "latitude": 42.184118753, + "longitude": -8.767049558, "lines": [ - "C3d", - "5A", - "31", - "U2", - "H2", - "PSA 1" + "29" ] }, { - "stopId": 8510, + "stopId": "vitrasa:4040", "name": { - "original": "Rúa da Travesía de Vigo, 124" + "original": "Estrada de Fragoselo, 108" }, - "latitude": 42.238413145, - "longitude": -8.703563202, + "latitude": 42.18661248, + "longitude": -8.769574881, "lines": [ - "C3i", - "5A", - "N1", - "VTS" + "29" ] }, { - "stopId": 8520, + "stopId": "vitrasa:4050", "name": { - "original": "Rúa da Travesía de Vigo, 153" + "original": "Estrada de Fragoselo, 196" }, - "latitude": 42.241332883, - "longitude": -8.702059906, + "latitude": 42.182111026, + "longitude": -8.76479691, "lines": [ - "C3d", - "5A", - "31", - "U2", - "H2", - "PSA 1" + "29" ] }, { - "stopId": 8530, + "stopId": "vitrasa:4060", "name": { - "original": "Rúa da Travesía de Vigo, 158" + "original": "Estrada da Gándara, 7" }, - "latitude": 42.241101222, - "longitude": -8.701974032, + "latitude": 42.164326088, + "longitude": -8.716892619, "lines": [ - "C3i", - "5A", - "N1", - "VTS" + "7" ] }, { - "stopId": 8540, + "stopId": "vitrasa:4070", "name": { - "original": "Rúa da Travesía de Vigo, 193" + "original": "Estrada da Gándara, 55" }, - "latitude": 42.242844316, - "longitude": -8.698295825, + "latitude": 42.162254659, + "longitude": -8.713740793, "lines": [ - "C3d", - "5A", - "31", - "U2", - "H2", - "PSA 1" + "7" ] }, { - "stopId": 8550, + "stopId": "vitrasa:4080", "name": { - "original": "Rúa da Travesía de Vigo, 220" + "original": "Estrada da Gándara, 48" }, - "latitude": 42.246425568, - "longitude": -8.692950624, + "latitude": 42.162252671, + "longitude": -8.71400365, "lines": [ - "C3i", - "5A", - "5B", - "N1", - "H3", - "VTS" + "7" ] }, { - "stopId": 8560, + "stopId": "vitrasa:4090", "name": { - "original": "Rúa da Travesía de Vigo, 213" + "original": "Estrada da Garrida, 124" }, - "latitude": 42.24409871, - "longitude": -8.69614733, + "latitude": 42.170369621, + "longitude": -8.708506123, "lines": [ - "C3d", - "5A", - "31", - "U2", - "H2", - "H3", - "PSA 1" + "7" ] }, { - "stopId": 8570, + "stopId": "vitrasa:410", "name": { - "original": "Rúa da Travesía de Vigo, 239" + "original": "Rúa de Aragón, 82" }, - "latitude": 42.246143319, - "longitude": -8.69359937, + "latitude": 42.235524387, + "longitude": -8.701248417, "lines": [ - "C3d", - "5A", - "31", - "U2", - "H2", - "H3", - "PSA 1" + "4A", + "H3" ] }, { - "stopId": 8580, + "stopId": "vitrasa:4100", "name": { - "original": "Rúa da Travesía de Vigo, 32" + "original": "Estrada da Garrida, 199" }, - "latitude": 42.233828086, - "longitude": -8.706311242, + "latitude": 42.16978602, + "longitude": -8.708967287, "lines": [ - "C3i", - "5A", - "31", - "N1", - "VTS" + "7" ] }, { - "stopId": 8590, + "stopId": "vitrasa:4110", "name": { - "original": "Rúa da Travesía de Vigo, 37" + "original": "Estrada da Garrida, 40" }, - "latitude": 42.233681224, - "longitude": -8.706702136, + "latitude": 42.165331611, + "longitude": -8.714862589, "lines": [ - "C3d", - "5A", - "31", - "U2", - "H2", - "PSA 1" + "7" ] }, { - "stopId": 8600, + "stopId": "vitrasa:4120", "name": { - "original": "Rúa da Travesía de Vigo, 71" + "original": "Estrada da Garrida, 84" }, - "latitude": 42.236350093, - "longitude": -8.70429745, + "latitude": 42.166399713, + "longitude": -8.711237684, "lines": [ - "C3d", - "5A", - "31", - "U2", - "H2", - "PSA 1" + "7" ] }, { - "stopId": 8610, + "stopId": "vitrasa:4130", "name": { - "original": "Rúa da Travesía de Vigo, 8" + "original": "Estrada da Garrida, 83" }, - "latitude": 42.232028188, - "longitude": -8.708203776, + "latitude": 42.16561193, + "longitude": -8.714589004, "lines": [ - "C3i", - "A", - "4A", - "4C", - "5A", - "6", - "9B", - "11", - "15A", - "15B", - "15C", - "23", - "24", - "25", - "27", - "28", - "N1", - "N4" + "7" ] }, { - "stopId": 8620, + "stopId": "vitrasa:4140", "name": { - "original": "Rúa da Travesía de Vigo, 82" + "original": "Estrada da Garrida (frente 80)" }, - "latitude": 42.236261792, - "longitude": -8.703994979, + "latitude": 42.166208944, + "longitude": -8.711992518, "lines": [ - "C3i", - "5A", - "N1", - "VTS" + "7" ] }, { - "stopId": 8630, + "stopId": "vitrasa:4150", "name": { - "original": "Rúa da Travesía de Vigo, 7" + "original": "Estrada de Miraflores, 69" }, - "latitude": 42.232045931, - "longitude": -8.708603793, + "latitude": 42.217620909, + "longitude": -8.712429612, "lines": [ - "C3d", - "A", - "4A", - "4C", - "5A", - "6", - "9B", - "11", - "15A", - "15B", - "15C", - "23", - "25", - "27", - "28", - "N4", - "U2", - "H2", - "PSA 1", - "PSA 4" + "18A", + "18B", + "18H" ] }, { - "stopId": 8660, + "stopId": "vitrasa:4160", "name": { - "original": "Química (CUVI)" + "original": "Estrada de Miraflores, 36" }, - "latitude": 42.168290977, - "longitude": -8.68342947, + "latitude": 42.217849364, + "longitude": -8.710994711, "lines": [ - "A", - "15C", - "U1", - "U2" + "18A" ] }, { - "stopId": 8670, + "stopId": "vitrasa:4170", "name": { - "original": "Bioloxía (CUVI)" + "original": "Estrada de Miraflores, 64" }, - "latitude": 42.167687661, - "longitude": -8.685994335, + "latitude": 42.217345186, + "longitude": -8.713011334, "lines": [ - "A", - "15C", - "U1", - "U2" + "18A", + "18B", + "18H" ] }, { - "stopId": 8680, + "stopId": "vitrasa:420", "name": { - "original": "Económicas e Empresariais (CUVI)" + "original": "Rúa de Aragón, 147" }, - "latitude": 42.169603028, - "longitude": -8.680108895, + "latitude": 42.238092485, + "longitude": -8.701156245, "lines": [ - "A", - "15C", - "U1", - "U2" + "4A", + "H3" ] }, { - "stopId": 8700, + "stopId": "vitrasa:4200", "name": { - "original": "Enxeñeiros (CUVI)" + "original": "Estrada de Moledo, 6" }, - "latitude": 42.167963445, - "longitude": -8.688421342, + "latitude": 42.215236994, + "longitude": -8.707384971, "lines": [ - "A", - "15C", - "U1", - "U2" + "14", + "18A" ] }, { - "stopId": 8710, + "stopId": "vitrasa:4210", "name": { - "original": "Universidade." + "original": "Estrada de Moledo, 42" }, - "latitude": 42.167985106, - "longitude": -8.688425395, + "latitude": 42.212141078, + "longitude": -8.704563545, "lines": [ - "A" + "14", + "18A" ] }, { - "stopId": 8720, + "stopId": "vitrasa:4220", "name": { - "original": "Humanidades (CUVI)" + "original": "Estrada de Moledo, 22" }, - "latitude": 42.169678809, - "longitude": -8.679104749, + "latitude": 42.213737557, + "longitude": -8.706283115, "lines": [ - "A", - "15C", - "U1", - "U2" + "14", + "18A" ] }, { - "stopId": 8721, + "stopId": "vitrasa:4230", "name": { - "original": "Universidade.." + "original": "Estrada de Moledo, 1" }, - "latitude": 42.169776602, - "longitude": -8.678942156, + "latitude": 42.215373761, + "longitude": -8.707378349, "lines": [ - "A", - "15C" + "14", + "18A" ] }, { - "stopId": 8730, + "stopId": "vitrasa:4240", "name": { - "original": "Telecomunicacións (CUVI) B" + "original": "Estrada de Moledo, 73" }, - "latitude": 42.170159671, - "longitude": -8.68735086, + "latitude": 42.212378349, + "longitude": -8.704729584, "lines": [ - "A" + "14", + "18A" ] }, { - "stopId": 8740, + "stopId": "vitrasa:4250", "name": { - "original": "Telecomunicacións (CUVI)" + "original": "Estrada de Moledo, 25" }, - "latitude": 42.170123888, - "longitude": -8.687270393, + "latitude": 42.213377597, + "longitude": -8.70601168, "lines": [ - "A", - "15C", - "U1", - "U2" + "14", + "18A" ] }, { - "stopId": 8750, + "stopId": "vitrasa:4280", "name": { - "original": "Rúa de Urzáiz - Est. Intermodal - C.C." + "original": "Rúa de Emilia Pardo Bazán, 80" }, - "latitude": 42.233722977, - "longitude": -8.714502762, + "latitude": 42.224507337, + "longitude": -8.713465538, "lines": [ - "A", - "4A", - "4C", - "5A", - "6", - "9B", - "11", - "15B", - "15C", - "24", - "28", - "N4", - "PSA 4" + "14", + "18B", + "18H" ] }, { - "stopId": 8770, + "stopId": "vitrasa:4290", "name": { - "original": "Rúa de Urzáiz, 13" + "original": "Rúa de Emilia Pardo Bazán, 3" }, - "latitude": 42.235420929, - "longitude": -8.718721877, + "latitude": 42.227785739, + "longitude": -8.719460889, "lines": [ - "A", - "4A", - "4C", - "5A", - "6", - "7", - "9B", - "11", - "12B", "14", - "15B", - "15C", - "16", - "17", "18A", "18B", - "18H", - "24", - "28", - "N1", - "N4", - "PSA 4" + "18H" ] }, { - "stopId": 8820, + "stopId": "vitrasa:4300", "name": { - "original": "Rúa de Urzáiz, 28" + "original": "Rúa de Emilia Pardo Bazán, 104" }, - "latitude": 42.23516998, - "longitude": -8.718398782, + "latitude": 42.22278924, + "longitude": -8.711754289, "lines": [ - "C1", - "A", - "4A", - "4C", - "5A", - "7", - "9B", - "12B", "14", - "15B", - "15C", - "16", - "17", - "18A", "18B", - "18H", - "24", - "28", - "N1", - "N4" + "18H" ] }, { - "stopId": 8840, + "stopId": "vitrasa:4310", "name": { - "original": "Rúa de Urzáiz, 60 - Est. Intermodal - C.C." + "original": "Rúa de Emilia Pardo Bazán, 111" }, - "latitude": 42.233986283, - "longitude": -8.71541048, + "latitude": 42.222713762, + "longitude": -8.711555806, "lines": [ - "A", - "4A", - "4C", - "5A", - "9B", - "11", - "15B", - "15C", - "24", - "28", - "N1", - "N4" + "14", + "18B", + "18H" ] }, { - "stopId": 8850, + "stopId": "vitrasa:4320", "name": { - "original": "Rúa de Urzáiz, 97" + "original": "Rúa de Emilia Pardo Bazán, 2" }, - "latitude": 42.232341315, - "longitude": -8.710892054, + "latitude": 42.227716225, + "longitude": -8.719750568, "lines": [ - "A", - "4A", - "4C", - "5A", - "6", - "9B", - "11", - "15B", - "15C", - "28", - "N4", - "PSA 4" + "14", + "18B", + "18H" ] }, { - "stopId": 8870, + "stopId": "vitrasa:4330", "name": { - "original": "Rúa de Venezuela, 4" + "original": "Rúa de Emilia Pardo Bazán (cruce Baixada á Salgueira)" }, - "latitude": 42.234250043, - "longitude": -8.724361531, + "latitude": 42.226463146, + "longitude": -8.71614062, "lines": [ - "4A", - "4C", - "5B", - "11", - "12A", - "12B", - "17", - "27", - "N1" + "14", + "18A", + "18B", + "18H" ] }, { - "stopId": 8880, + "stopId": "vitrasa:4340", "name": { - "original": "Rúa de Venezuela, 20" + "original": "Rúa de Emilia Pardo Bazán, 54" }, - "latitude": 42.233188126, - "longitude": -8.72155331, + "latitude": 42.226112503, + "longitude": -8.715718376, "lines": [ - "4A", - "4C", - "5B", - "11", - "12A", - "12B", - "17", - "27", - "N1" + "14", + "18B", + "18H" ] }, { - "stopId": 8890, + "stopId": "vitrasa:4350", "name": { - "original": "Rúa de Venezuela, 21" + "original": "Rúa de Emilia Pardo Bazán, 43" }, - "latitude": 42.233283503, - "longitude": -8.721378959, + "latitude": 42.224562952, + "longitude": -8.713390437, "lines": [ - "4A", - "4C", - "5B", - "7", - "12B", - "16", - "17", - "PSA 4" + "14", + "18B", + "18H" ] }, { - "stopId": 8900, + "stopId": "vitrasa:4440", "name": { - "original": "Rúa de Venezuela, 45" + "original": "Estrada de San Xoán, 169" }, - "latitude": 42.232243383, - "longitude": -8.718524158, + "latitude": 42.183275038, + "longitude": -8.742437444, "lines": [ - "4A", - "4C", - "5B", - "7", - "12B", - "16", - "17", - "PSA 4" + "17" ] }, { - "stopId": 8910, + "stopId": "vitrasa:4450", "name": { - "original": "Rúa de Venezuela, 42" + "original": "Estrada de San Xoán, 61" }, - "latitude": 42.232224046, - "longitude": -8.718985824, + "latitude": 42.185081179, + "longitude": -8.748029634, "lines": [ - "4A", - "4C", - "5B", - "11", - "12A", - "12B", - "17", - "27", - "N1" + "17" ] }, { - "stopId": 8916, + "stopId": "vitrasa:4460", "name": { - "original": "Rúa de Venezuela, 60" + "original": "Estrada de San Xoán, 141" }, - "latitude": 42.231593651, - "longitude": -8.71714227, + "latitude": 42.18366712, + "longitude": -8.744402777, "lines": [ - "27" + "17" ] }, { - "stopId": 8930, + "stopId": "vitrasa:4490", "name": { - "original": "Rúa de Vilagarcía de Arousa (cruce Rúa do Grove)" + "original": "Rúa de Manuel Lago Lago (fronte Colexio)" }, - "latitude": 42.22014115, - "longitude": -8.745082757, + "latitude": 42.187522648, + "longitude": -8.772977937, "lines": [ - "C3i", - "5B" + "29" ] }, { - "stopId": 8950, + "stopId": "vitrasa:4500", "name": { - "original": "Rúa de Marín, 5" + "original": "Rúa de Manuel Lago Lago, 20" }, - "latitude": 42.218712573, - "longitude": -8.75011435, + "latitude": 42.188761213, + "longitude": -8.775973652, "lines": [ - "C3i", - "5B" + "29" ] }, { - "stopId": 8970, + "stopId": "vitrasa:4510", "name": { - "original": "Rúa do Seixo, 45" + "original": "Rúa de Manuel Lago Lago (Colexio)" }, - "latitude": 42.197425383, - "longitude": -8.713700535, + "latitude": 42.187542924, + "longitude": -8.772887753, "lines": [ - "A", - "H3" + "29" ] }, { - "stopId": 8980, + "stopId": "vitrasa:4520", "name": { - "original": "Rúa do Seixo, 38" + "original": "Estrada das Plantas (Cidade Deportiva)" }, - "latitude": 42.197532685, - "longitude": -8.713614705, + "latitude": 42.175884385, + "longitude": -8.670789023, "lines": [ - "A", - "H3" + "15C" ] }, { - "stopId": 8990, + "stopId": "vitrasa:4530", "name": { - "original": "Rúa do Seixo, 75" + "original": "Estrada das Plantas (fronte cruce Camiño do Pouso)" }, - "latitude": 42.200673849, - "longitude": -8.714185609, + "latitude": 42.199681015, + "longitude": -8.668860289, "lines": [ - "A", - "18B", - "H3" + "15C" ] }, { - "stopId": 9000, + "stopId": "vitrasa:4540", "name": { - "original": "Rúa do Seixo (Parque)" + "original": "Estrada das Plantas (fronte Viveiros)" }, - "latitude": 42.200719549, - "longitude": -8.714115872, + "latitude": 42.181370416, + "longitude": -8.667861084, "lines": [ - "A", - "H3" + "15C" ] }, { - "stopId": 9010, + "stopId": "vitrasa:4550", "name": { - "original": "Rúa de Xeme, 71" + "original": "Estrada das Plantas (cruce Camiño do Pouso)" }, - "latitude": 42.203157887, - "longitude": -8.694293108, + "latitude": 42.199945182, + "longitude": -8.669085873, "lines": [ - "14" + "15B", + "15C" ] }, { - "stopId": 9020, + "stopId": "vitrasa:4560", "name": { - "original": "Xestoso" + "original": "Estrada de Valadares, 233" }, - "latitude": 42.207584622, - "longitude": -8.670108196, + "latitude": 42.177017792, + "longitude": -8.721519832, "lines": [ - "15B", - "15C" + "7" ] }, { - "stopId": 9030, + "stopId": "vitrasa:4570", "name": { - "original": "Xestoso (B)" + "original": "Estrada de Valadares, 100" }, - "latitude": 42.207537397, - "longitude": -8.670071905, + "latitude": 42.183987864, + "longitude": -8.724154939, "lines": [ - "15B", - "15C" + "7", + "U1" ] }, { - "stopId": 9040, + "stopId": "vitrasa:4580", "name": { - "original": "Estrada das Plantas (cruce Camiño Monte Vello)" + "original": "Estrada de Valadares, 146" }, - "latitude": 42.20831564, - "longitude": -8.670282438, + "latitude": 42.180249473, + "longitude": -8.721850007, "lines": [ - "15B", - "15C", - "U2" + "7", + "U1" ] }, { - "stopId": 9050, + "stopId": "vitrasa:4590", "name": { - "original": "Estrada da Igrexa, 45" + "original": "Estrada de Valadares, 173" }, - "latitude": 42.154646971, - "longitude": -8.688349062, + "latitude": 42.180670846, + "longitude": -8.721533506, "lines": [ "7" ] }, { - "stopId": 10061, + "stopId": "vitrasa:4600", "name": { - "original": "Estrada de San Xoán, 193" + "original": "Estrada de Valadares, 212" }, - "latitude": 42.185277472, - "longitude": -8.741558953, + "latitude": 42.176419487, + "longitude": -8.72197849, "lines": [ - "17" + "7", + "U1" ] }, { - "stopId": 14101, + "stopId": "vitrasa:4610", "name": { - "original": "Estrada da Garrida, 165" + "original": "Estrada de Valadares, 262" }, - "latitude": 42.168008539, - "longitude": -8.710415438, + "latitude": 42.172481228, + "longitude": -8.723905842, "lines": [ - "7" + "7", + "U1" ] }, { - "stopId": 14102, + "stopId": "vitrasa:4620", "name": { - "original": "Estrada da Garrida, 108" + "original": "Estrada de Valadares, 329" }, - "latitude": 42.168282882, - "longitude": -8.710066751, + "latitude": 42.172330151, + "longitude": -8.723766367, "lines": [ "7" ] }, { - "stopId": 14105, + "stopId": "vitrasa:4630", "name": { - "original": "Ciencias Xurídicas (CUVI)" + "original": "Estrada de Valadares, 406" }, - "latitude": 42.167237978, - "longitude": -8.681135704, + "latitude": 42.165721529, + "longitude": -8.720146278, "lines": [ - "A", - "15C", - "U1", - "U2" + "7", + "U1" ] }, { - "stopId": 14106, + "stopId": "vitrasa:4640", "name": { - "original": "Avda. do Aeroporto, 92" + "original": "Estrada de Valadares (cruce Camiño do Canizo)" }, - "latitude": 42.234161582, - "longitude": -8.695074564, + "latitude": 42.18659932, + "longitude": -8.719619913, "lines": [ - "A", - "9B", - "27" + "7" ] }, { - "stopId": 14107, + "stopId": "vitrasa:4650", "name": { - "original": "Camiño Padín (Rotonda Autoestrada)" + "original": "Estrada de Valadares, 48" }, - "latitude": 42.257847205, - "longitude": -8.677696507, + "latitude": 42.186641056, + "longitude": -8.719853265, "lines": [ - "10" + "7", + "U1" ] }, { - "stopId": 14108, + "stopId": "vitrasa:4660", "name": { - "original": "Avda. da Ponte (antes desvío Autovía)" + "original": "Estrada de Valadares, 99" }, - "latitude": 42.21401741, - "longitude": -8.67133083, + "latitude": 42.183997801, + "longitude": -8.723857214, "lines": [ - "15B", - "15C" + "7" ] }, { - "stopId": 14111, + "stopId": "vitrasa:4670", "name": { - "original": "Estrada de Bembrive (Centro Saúde)" + "original": "Estrada do Vao, 27" }, - "latitude": 42.204262657, - "longitude": -8.684801801, + "latitude": 42.193836069, + "longitude": -8.776441689, "lines": [ - "6", - "14" + "11" ] }, { - "stopId": 14112, + "stopId": "vitrasa:4680", "name": { - "original": "Estrada de Bembrive (Alameda)" + "original": "Estrada do Vao, 116" }, - "latitude": 42.204047198, - "longitude": -8.684697288, + "latitude": 42.19429691, + "longitude": -8.786574405, "lines": [ - "6", - "14" + "11" ] }, { - "stopId": 14113, + "stopId": "vitrasa:4690", "name": { - "original": "Estrada da Coutada, 20" + "original": "Estrada do Vao, 153" }, - "latitude": 42.193458577, - "longitude": -8.702065856, + "latitude": 42.196307191, + "longitude": -8.790777973, "lines": [ - "6", - "27" + "11" ] }, { - "stopId": 14117, + "stopId": "vitrasa:4700", "name": { - "original": "Rúa do Couto de San Honorato, 26" + "original": "Estrada do Vao, 46" }, - "latitude": 42.228574702, - "longitude": -8.712864548, + "latitude": 42.194014721, + "longitude": -8.777055245, "lines": [ - "H2" + "11" ] }, { - "stopId": 14119, + "stopId": "vitrasa:4710", "name": { - "original": "Rúa do Couto de San Honorato, 80" + "original": "Estrada do Vao, 65" }, - "latitude": 42.229320789, - "longitude": -8.710390551, + "latitude": 42.194064592, + "longitude": -8.781224067, "lines": [ - "H2" + "11" ] }, { - "stopId": 14122, + "stopId": "vitrasa:4720", "name": { - "original": "Avda. do Alcalde Gregorio Espino, 9" + "original": "Estrada do Vao, 90" }, - "latitude": 42.231584097, - "longitude": -8.706968521, + "latitude": 42.193937416, + "longitude": -8.781634173, "lines": [ - "4C", - "23", - "31", - "H2", - "PSA 4" + "11" ] }, { - "stopId": 14123, + "stopId": "vitrasa:4730", "name": { - "original": "Rúa do Porriño, 9" + "original": "Estrada do Vao, 91" }, - "latitude": 42.214127819, - "longitude": -8.752027594, + "latitude": 42.19405266, + "longitude": -8.78551292, "lines": [ - "C3d", - "C3i", - "4A", - "4C", - "5B", - "11", - "15A", - "15B", - "N4", - "U1" + "11" ] }, { - "stopId": 14124, + "stopId": "vitrasa:4740", "name": { - "original": "Rúa de Eduardo Cabello (fronte Igrexa)" + "original": "Estrada do Vao (Praia do Vao)" }, - "latitude": 42.226569499, - "longitude": -8.752773946, + "latitude": 42.196595321, + "longitude": -8.791019372, "lines": [ - "C3d", - "C3i", - "6" + "11" ] }, { - "stopId": 14125, + "stopId": "vitrasa:4750", "name": { - "original": "Rúa do Porriño (fronte 9)" + "original": "Estrada Vella de Madrid, 6" }, - "latitude": 42.213869651, - "longitude": -8.751990789, + "latitude": 42.213983883, + "longitude": -8.697464269, "lines": [ - "C3d", - "C3i", - "4A", - "4C", - "15A", - "PSA 1", - "PSA 4" + "12A", + "12B", + "13", + "U2", + "H3" ] }, { - "stopId": 14126, + "stopId": "vitrasa:4760", "name": { - "original": "Rúa da Travesía de Vigo, 194" + "original": "Estrada Vella de Madrid, 34" }, - "latitude": 42.242494425, - "longitude": -8.699249038, + "latitude": 42.216359908, + "longitude": -8.693040769, "lines": [ - "C3i", - "5A", - "N1", - "VTS" + "12A", + "12B", + "13", + "U2", + "H3" ] }, { - "stopId": 14127, + "stopId": "vitrasa:4770", "name": { - "original": "Avda. de Buenos Aires, 13" + "original": "Estrada Vella de Madrid, 104" }, - "latitude": 42.249306896, - "longitude": -8.695179916, + "latitude": 42.219822923, + "longitude": -8.684198247, "lines": [ - "5B", - "10", - "N1", - "H3", - "VTS" + "12A", + "12B", + "13", + "31", + "U2" ] }, { - "stopId": 14128, + "stopId": "vitrasa:4780", "name": { - "original": "Camiño do Caramuxo (fronte 9)" + "original": "Estrada Vella de Madrid, 136" }, - "latitude": 42.20733292, - "longitude": -8.752159103, + "latitude": 42.220845201, + "longitude": -8.680581909, "lines": [ - "5A" + "12A", + "12B", + "13", + "31", + "U2" ] }, { - "stopId": 14129, + "stopId": "vitrasa:4790", "name": { - "original": "Camiño do Caramuxo, 11" + "original": "Estrada Vella de Madrid, 123" }, - "latitude": 42.20723039, - "longitude": -8.752592351, + "latitude": 42.220436017, + "longitude": -8.683690589, "lines": [ - "5A" + "12A", + "12B", + "13", + "31" ] }, { - "stopId": 14131, + "stopId": "vitrasa:4800", "name": { - "original": "Rúa de Tomás Paredes, 4" + "original": "Estrada Vella de Madrid, 160" }, - "latitude": 42.221948768, - "longitude": -8.753171211, + "latitude": 42.218049288, + "longitude": -8.679899408, "lines": [ - "C3i", - "10" + "12A", + "12B", + "13", + "31", + "U2" ] }, { - "stopId": 14132, + "stopId": "vitrasa:4810", "name": { - "original": "Rúa de Sanjurjo Badía, 252" + "original": "Estrada Vella de Madrid, 177" }, - "latitude": 42.249307631, - "longitude": -8.696542008, + "latitude": 42.21827574, + "longitude": -8.679588272, "lines": [ - "C3d", - "5A", - "5B", - "10", - "17", - "31", - "U2", - "H2", - "H3", - "PSA 1" + "12A", + "12B", + "13", + "31" ] }, { - "stopId": 14133, + "stopId": "vitrasa:4820", "name": { - "original": "Avda. de Galicia, 37" + "original": "Estrada Vella de Madrid, 31" }, - "latitude": 42.250977575, - "longitude": -8.694471881, + "latitude": 42.216687676, + "longitude": -8.693917852, "lines": [ - "C3i", - "17" + "12A", + "12B", + "13", + "H3" ] }, { - "stopId": 14134, + "stopId": "vitrasa:4830", "name": { - "original": "Avda. de Galicia, 182" + "original": "Estrada Vella de Madrid, 81" }, - "latitude": 42.253208793, - "longitude": -8.686995591, + "latitude": 42.218719793, + "longitude": -8.690012555, "lines": [ - "C3d" + "12A", + "12B", + "13", + "H3" ] }, { - "stopId": 14135, + "stopId": "vitrasa:4840", "name": { - "original": "Rúa de Santo Amaro (Praza de España)" + "original": "Estrada Vella de Madrid, 76" }, - "latitude": 42.229174145, - "longitude": -8.720143055, + "latitude": 42.218745617, + "longitude": -8.689009409, "lines": [ - "C1" + "12A", + "12B", + "13", + "U2", + "H3" ] }, { - "stopId": 14136, + "stopId": "vitrasa:4850", "name": { - "original": "Avda. de Galicia, 18" + "original": "Estrada Vella de Madrid (frente Centro Comercial)" }, - "latitude": 42.250484372, - "longitude": -8.694878804, + "latitude": 42.216448197, + "longitude": -8.68163748, "lines": [ - "C3d", - "17" + "12A", + "13", + "31" ] }, { - "stopId": 14137, + "stopId": "vitrasa:4860", "name": { - "original": "Estrada Matamá Pazo (Igrexa)" + "original": "Estrada da Venda (cruce Camiño da Coutadiña)" }, - "latitude": 42.200003406, - "longitude": -8.753169, + "latitude": 42.182744465, + "longitude": -8.70286123, "lines": [ - "29" + "A", + "6" ] }, { - "stopId": 14138, + "stopId": "vitrasa:4870", "name": { - "original": "Estrada de Madrid (Campo de Fútbol)" + "original": "Estrada da Venda, 5" }, - "latitude": 42.216459201, - "longitude": -8.678591709, + "latitude": 42.192029809, + "longitude": -8.712623715, "lines": [ - "12B", - "15B", - "15C" + "A", + "27", + "H3" ] }, { - "stopId": 14139, + "stopId": "vitrasa:4880", "name": { - "original": "Avda. de E. Martínez Garrido, 27" + "original": "Estrada da Venda, 240" }, - "latitude": 42.227492758, - "longitude": -8.700413366, + "latitude": 42.188021902, + "longitude": -8.711457595, "lines": [ - "6", - "25", - "31" + "A", + "H3" ] }, { - "stopId": 14140, + "stopId": "vitrasa:4890", "name": { - "original": "Avda. de E. Martínez Garrido, 30" + "original": "Estrada da Venda, 238" }, - "latitude": 42.228210877, - "longitude": -8.699999354, + "latitude": 42.186610014, + "longitude": -8.710023944, "lines": [ - "4C", - "6", - "23", - "25", - "31", - "N4", - "PSA 4", - "VTS" + "A", + "6" ] }, { - "stopId": 14141, + "stopId": "vitrasa:4900", "name": { - "original": "Rúa de Jenaro de la Fuente, 43" + "original": "Estrada da Venda, 35" }, - "latitude": 42.231379202, - "longitude": -8.699876213, + "latitude": 42.188304845, + "longitude": -8.711474749, "lines": [ - "11", - "15A", - "15B", - "15C", - "H3" + "A", + "27", + "H3" ] }, { - "stopId": 14142, + "stopId": "vitrasa:4910", "name": { - "original": "Avda. da Hispanidade, 22" + "original": "Estrada da Venda, 4" }, - "latitude": 42.231463434, - "longitude": -8.728844425, + "latitude": 42.19205763, + "longitude": -8.712722956, "lines": [ - "16" + "A", + "H3" ] }, { - "stopId": 14143, + "stopId": "vitrasa:4920", "name": { - "original": "Avda. da Hispanidade, 38" + "original": "Estrada da Venda, 49" }, - "latitude": 42.229753483, - "longitude": -8.729002675, + "latitude": 42.186610342, + "longitude": -8.709937804, "lines": [ - "16" + "A", + "6" ] }, { - "stopId": 14144, + "stopId": "vitrasa:4930", "name": { - "original": "Avda. da Hispanidade, 82" + "original": "Travesía da Devesa (Asociación Veciños)" }, - "latitude": 42.226760436, - "longitude": -8.727385303, + "latitude": 42.246018558, + "longitude": -8.669287042, "lines": [ - "16" + "9B", + "27", + "28" ] }, { - "stopId": 14150, + "stopId": "vitrasa:4940", "name": { - "original": "Rúa do Padre Don Rúa, 1" + "original": "Camiño da Devesa (fronte 55)" }, - "latitude": 42.232076561, - "longitude": -8.719055236, + "latitude": 42.245450719, + "longitude": -8.672406783, "lines": [ - "14", - "18A" + "9B", + "27", + "28" ] }, { - "stopId": 14152, + "stopId": "vitrasa:4960", "name": { - "original": "Rúa do Monte Calvario, 4" + "original": "Rúa do Doutor Corbal, 135" }, - "latitude": 42.204815402, - "longitude": -8.687168969, + "latitude": 42.256210875, + "longitude": -8.696882723, "lines": [ - "14" + "17" ] }, { - "stopId": 14153, + "stopId": "vitrasa:4970", "name": { - "original": "Estrada de Bembrive, 173" + "original": "Rúa do Doutor Corbal, 126" }, - "latitude": 42.205357233, - "longitude": -8.692495739, + "latitude": 42.255883312, + "longitude": -8.696812986, "lines": [ - "6", - "14" + "17" ] }, { - "stopId": 14154, + "stopId": "vitrasa:4980", "name": { - "original": "Rúa das Chans (fronte 56)" + "original": "Rúa do Doutor Corbal, 149" }, - "latitude": 42.19360258, - "longitude": -8.677258993, + "latitude": 42.257539061, + "longitude": -8.697019814, "lines": [ - "14" + "17" ] }, { - "stopId": 14156, + "stopId": "vitrasa:50", "name": { - "original": "Rúa de Xeme (cruce Camiño da Carballeira)" + "original": "Rúa do Abade Juan de Bastos, 24" }, - "latitude": 42.203378431, - "longitude": -8.696666863, + "latitude": 42.19287042, + "longitude": -8.727513924, "lines": [ - "14" + "17" ] }, { - "stopId": 14157, + "stopId": "vitrasa:5000", "name": { - "original": "Rúa do Xeme (cruce Rúa de Eifonso)" + "original": "Rúa do Doutor Corbal, 6" }, - "latitude": 42.202979066, - "longitude": -8.694065121, + "latitude": 42.250121395, + "longitude": -8.696122376, "lines": [ - "14" + "17" ] }, { - "stopId": 14161, + "stopId": "vitrasa:5010", "name": { - "original": "Rúa de López Mora, 62" + "original": "Rúa do Doutor Corbal, 95" }, - "latitude": 42.224130699, - "longitude": -8.732568248, + "latitude": 42.254169539, + "longitude": -8.697752273, "lines": [ - "VTS" + "17" ] }, { - "stopId": 14162, + "stopId": "vitrasa:5020", "name": { - "original": "Avda. da Florida, 82" + "original": "Rúa do Doutor Corbal, 94" }, - "latitude": 42.211371871, - "longitude": -8.746523782, + "latitude": 42.254104511, + "longitude": -8.697655199, "lines": [ - "5A", - "11", - "29", - "VTS" + "17" ] }, { - "stopId": 14163, + "stopId": "vitrasa:5030", "name": { - "original": "Avda. da Florida (fronte 82)" + "original": "Avda. de Redondela (fronte 28)" }, - "latitude": 42.211442202, - "longitude": -8.746227469, + "latitude": 42.272502528, + "longitude": -8.664787252, "lines": [ - "5A", - "11", - "29" + "C3i" ] }, { - "stopId": 14164, + "stopId": "vitrasa:5040", "name": { - "original": "Rúa de Tomás A. Alonso, 136" + "original": "Rúa da Salgueira Entrada, 5" }, - "latitude": 42.225172437, - "longitude": -8.744777354, + "latitude": 42.222543586, + "longitude": -8.717809812, "lines": [ - "C3i", - "15B", - "15C", - "N1" + "18A" ] }, { - "stopId": 14165, + "stopId": "vitrasa:5060", "name": { - "original": "Rúa de Tomás A. Alonso, 193" + "original": "Estadio de Balaídos (Avda. do Fragoso)" }, - "latitude": 42.224905029, - "longitude": -8.745285775, + "latitude": 42.212676247, + "longitude": -8.739585545, "lines": [ - "C3d", - "13", - "15B", - "15C", - "U1", - "H" + "16", + "23", + "N4" ] }, { - "stopId": 14166, + "stopId": "vitrasa:5070", "name": { - "original": "Avda. das Camelias, 114" + "original": "Rúa da Estrada, 10-12" }, - "latitude": 42.225142981, - "longitude": -8.729707944, + "latitude": 42.220535836, + "longitude": -8.74141599, "lines": [ - "4A", - "4C", - "5B", - "7", - "12A", - "12B", - "17", - "27", - "PSA 4" + "C3i", + "5B" ] }, { - "stopId": 14167, + "stopId": "vitrasa:5090", "name": { - "original": "Beiramar - Pescadores" + "original": "Rúa da Estrada, 1" }, - "latitude": 42.225279021, - "longitude": -8.751908648, + "latitude": 42.220359068, + "longitude": -8.738861999, "lines": [ - "6", - "9B", - "28" + "C3i", + "5B" ] }, { - "stopId": 14168, + "stopId": "vitrasa:5120", "name": { - "original": "Avda. das Camelias, 113" + "original": "Camiño da Falcoa, 41" }, - "latitude": 42.224928285, - "longitude": -8.729631509, + "latitude": 42.204935234, + "longitude": -8.722453969, "lines": [ - "4A", - "4C", - "11", - "12B", - "17", - "27", - "N1" + "18B", + "18H", + "27" ] }, { - "stopId": 14169, + "stopId": "vitrasa:5140", "name": { - "original": "Avda. das Camelias, 136" + "original": "Camiño da Falcoa, 15" }, - "latitude": 42.22244224, - "longitude": -8.731271052, + "latitude": 42.207336295, + "longitude": -8.72129506, "lines": [ - "C1", - "4A", - "4C", - "5B", - "7", - "12A", - "12B", - "16", - "17", - "27", - "LZH", - "PSA 4" + "18B", + "18H" ] }, { - "stopId": 14170, + "stopId": "vitrasa:5160", "name": { - "original": "Avda. de Samil (Praia da Punta)" + "original": "Camiño da Falcoa, 26" }, - "latitude": 42.218831744, - "longitude": -8.77571001, + "latitude": 42.204783634, + "longitude": -8.722664062, "lines": [ - "10", - "15B", - "15C", - "N1" + "18B", + "18H", + "27" ] }, { - "stopId": 14171, + "stopId": "vitrasa:5170", "name": { - "original": "Avda. de Samil (fronte Praia da Punta)" + "original": "Rúa das Figueiras (Praza da Feira)" }, - "latitude": 42.218844713, - "longitude": -8.775459221, + "latitude": 42.227529644, + "longitude": -8.66169041, "lines": [ - "10", - "15B", - "15C" + "15A", + "25" ] }, { - "stopId": 14173, + "stopId": "vitrasa:5180", "name": { - "original": "Rúa do Gaiteiro de Ricardo Portela (fronte Pavillón)" + "original": "Rúa das Figueiras, 96" }, - "latitude": 42.235900754, - "longitude": -8.731391435, + "latitude": 42.224562288, + "longitude": -8.66579419, "lines": [ - "C1", - "C3d", - "A", - "5A", - "9B", - "15C", - "N4", - "H1" + "15A", + "25" ] }, { - "stopId": 14174, + "stopId": "vitrasa:5190", "name": { - "original": "Rúa do Padre Seixas (Parque da Bouza)" + "original": "Rúa das Figueiras, 124" }, - "latitude": 42.211844516, - "longitude": -8.749287921, + "latitude": 42.226051942, + "longitude": -8.663629647, "lines": [ - "11", - "16" + "15A", + "25" ] }, { - "stopId": 14175, + "stopId": "vitrasa:5200", "name": { - "original": "Rúa do Padre Seixas, 32" + "original": "Rúa das Figueiras, 138" }, - "latitude": 42.211792864, - "longitude": -8.749617832, + "latitude": 42.227533616, + "longitude": -8.661561664, "lines": [ - "16" + "15A", + "25" ] }, { - "stopId": 14177, + "stopId": "vitrasa:5220", "name": { - "original": "Rúa de Fernando Conde (cruce Avda. da Gran Vía)" + "original": "Rúa das Figueiras, 190" }, - "latitude": 42.22985125, - "longitude": -8.71972059, + "latitude": 42.228984217, + "longitude": -8.658438326, "lines": [ - "7", - "12A", - "12B", - "14", - "18A", - "27" + "15A", + "25" ] }, { - "stopId": 14178, + "stopId": "vitrasa:5230", "name": { - "original": "Rúa do Marqués de Alcedo (Parque)" + "original": "Rúa das Figueiras, 254" }, - "latitude": 42.233009005, - "longitude": -8.724497604, + "latitude": 42.230261894, + "longitude": -8.653683012, "lines": [ - "7", - "12A", - "12B", - "27" + "15A", + "25" ] }, { - "stopId": 14179, + "stopId": "vitrasa:5250", "name": { - "original": "Rúa da Costa, 4" + "original": "Rúa das Figueiras, 29" }, - "latitude": 42.213260612, - "longitude": -8.722562576, + "latitude": 42.223048763, + "longitude": -8.667374011, "lines": [ - "A", - "18B", - "18H" + "15A", + "25" ] }, { - "stopId": 14180, + "stopId": "vitrasa:5260", "name": { - "original": "Avda. de E. Martínez Garrido, 108" + "original": "Rúa das Figueiras, 22" }, - "latitude": 42.224749197, - "longitude": -8.707320585, + "latitude": 42.222838218, + "longitude": -8.667795118, "lines": [ - "4C", - "23", - "31", - "N4", - "PSA 4", - "VTS" + "15A", + "25" ] }, { - "stopId": 14181, + "stopId": "vitrasa:5270", "name": { - "original": "Camiño da Corredoura (Igrexa)" + "original": "Rúa das Figueiras, 65" }, - "latitude": 42.210954716, - "longitude": -8.727776522, + "latitude": 42.224367639, + "longitude": -8.665989991, "lines": [ - "A" + "15A", + "25" ] }, { - "stopId": 14182, + "stopId": "vitrasa:5280", "name": { - "original": "Rúa da Costa, 39" + "original": "Rúa das Figueiras, 113" }, - "latitude": 42.211618245, - "longitude": -8.72147159, + "latitude": 42.225940716, + "longitude": -8.663830813, "lines": [ - "A", - "18B", - "18H" + "15A", + "25" ] }, { - "stopId": 14183, + "stopId": "vitrasa:5290", "name": { - "original": "Rúa do Xalón (Colexio)" + "original": "Avda. da Florida, 60" }, - "latitude": 42.220622235, - "longitude": -8.654888024, + "latitude": 42.215060936, + "longitude": -8.741309568, "lines": [ - "11" + "5A", + "11", + "29", + "VTS" ] }, { - "stopId": 14184, + "stopId": "vitrasa:530", "name": { - "original": "Rúa do Xalón, 5" + "original": "Avda. de Ricardo Mella (Estación Coruxo)" }, - "latitude": 42.217384986, - "longitude": -8.657082399, + "latitude": 42.193562859, + "longitude": -8.78173994, "lines": [ - "11" + "12A" ] }, { - "stopId": 14185, + "stopId": "vitrasa:5300", "name": { - "original": "Rúa da Becerreira, 81" + "original": "Avda. da Florida, 117" }, - "latitude": 42.219667098, - "longitude": -8.659470523, + "latitude": 42.214827343, + "longitude": -8.741319027, "lines": [ - "11" + "5A", + "11", + "29" ] }, { - "stopId": 14186, + "stopId": "vitrasa:5310", "name": { - "original": "Rúa da Becerreira (fronte 64)" + "original": "Avda. da Florida, 140" }, - "latitude": 42.218044517, - "longitude": -8.662618478, + "latitude": 42.208024308, + "longitude": -8.750412985, "lines": [ - "11" + "5A", + "11", + "29", + "VTS" ] }, { - "stopId": 14187, + "stopId": "vitrasa:5320", "name": { - "original": "Rúa da Becerreira, 1" + "original": "Avda. da Florida, 145" }, - "latitude": 42.221588029, - "longitude": -8.662035851, + "latitude": 42.213244058, + "longitude": -8.743657913, "lines": [ - "11" + "5A", + "11", + "29" ] }, { - "stopId": 14188, + "stopId": "vitrasa:5330", "name": { - "original": "Rúa da Becerreira, 41" + "original": "Avda. da Florida, 3" }, - "latitude": 42.217595578, - "longitude": -8.661414166, + "latitude": 42.220228436, + "longitude": -8.733426296, "lines": [ - "11" + "5A", + "11", + "29" ] }, { - "stopId": 14189, + "stopId": "vitrasa:5340", "name": { - "original": "Rúa Molais, 84" + "original": "Avda. da Florida, 197" }, - "latitude": 42.226081487, - "longitude": -8.654133203, + "latitude": 42.208621114, + "longitude": -8.749572184, "lines": [ - "11" + "5A", + "11", + "29" ] }, { - "stopId": 14190, + "stopId": "vitrasa:5350", "name": { - "original": "Rúa de Severino Cobas, 196" + "original": "Avda. da Florida, 40" }, - "latitude": 42.225080876, - "longitude": -8.683314171, + "latitude": 42.216779248, + "longitude": -8.738705143, "lines": [ - "25" + "5A", + "11", + "29", + "VTS" ] }, { - "stopId": 14191, + "stopId": "vitrasa:5360", "name": { - "original": "Camiño da Bouciña, 76" + "original": "Avda. da Florida, 70" }, - "latitude": 42.223737557, - "longitude": -8.682141153, + "latitude": 42.212804215, + "longitude": -8.744506761, "lines": [ - "25" + "5A", + "11", + "29", + "VTS" ] }, { - "stopId": 14192, + "stopId": "vitrasa:5370", "name": { - "original": "Rúa das Figueiras, 282" + "original": "Avda. da Florida, 69" }, - "latitude": 42.231625599, - "longitude": -8.652046516, + "latitude": 42.216928527, + "longitude": -8.738268035, "lines": [ - "25" + "5A", + "11", + "29" ] }, { - "stopId": 14193, + "stopId": "vitrasa:5380", "name": { - "original": "Avda. de Santa Mariña, 443" + "original": "Avda. da Florida, 8" }, - "latitude": 42.230916628, - "longitude": -8.641628816, + "latitude": 42.219743053, + "longitude": -8.734322187, "lines": [ - "25" + "5A", + "11", + "29", + "VTS" ] }, { - "stopId": 14194, + "stopId": "vitrasa:5390", "name": { - "original": "Avda. de Santa Mariña, 425" + "original": "Estrada de Fragoselo (cruce Camiño Río da Barxa)" }, - "latitude": 42.228639377, - "longitude": -8.640978361, + "latitude": 42.179556959, + "longitude": -8.761854527, "lines": [ - "25" + "29" ] }, { - "stopId": 14195, + "stopId": "vitrasa:540", "name": { - "original": "Avda. de Santa Mariña, 249" + "original": "Avda. de Ricardo Mella (fronte 223)" }, - "latitude": 42.226263256, - "longitude": -8.644091084, + "latitude": 42.189424424, + "longitude": -8.790733064, "lines": [ - "25" + "12A" ] }, { - "stopId": 14196, + "stopId": "vitrasa:5400", "name": { - "original": "Avda. de Santa Mariña, 229" + "original": "Avda. do Fragoso, 95" }, - "latitude": 42.225296, - "longitude": -8.649527921, + "latitude": 42.213518168, + "longitude": -8.737719785, "lines": [ - "25" + "7", + "12B", + "17", + "N4", + "H1" ] }, { - "stopId": 14197, + "stopId": "vitrasa:5410", "name": { - "original": "Rúa Molais (cruce Rúa das Carballas)" + "original": "Avda. do Fragoso, 12" }, - "latitude": 42.225912491, - "longitude": -8.653698801, + "latitude": 42.219689698, + "longitude": -8.733384686, "lines": [ - "25" + "A", + "16", + "23", + "N4", + "U1", + "H1", + "H", + "LZH", + "PSA 1" ] }, { - "stopId": 14198, + "stopId": "vitrasa:5420", "name": { - "original": "Rúa do Riomao, 21" + "original": "Avda. do Fragoso, 3" }, - "latitude": 42.227231301, - "longitude": -8.659997969, + "latitude": 42.220297406, + "longitude": -8.732924981, "lines": [ - "15A", - "25" + "7", + "12B", + "17", + "N4", + "H1" ] }, { - "stopId": 14199, + "stopId": "vitrasa:5430", "name": { - "original": "Camiño da Bouciña, 79" + "original": "Avda. do Fragoso, 36" }, - "latitude": 42.223755464, - "longitude": -8.682041911, + "latitude": 42.217381871, + "longitude": -8.734669814, "lines": [ - "25" - ] - }, - { - "stopId": 14200, - "name": { - "original": "Rúa de Severino Cobas, 119" - }, - "latitude": 42.225112655, - "longitude": -8.683402684, - "lines": [ - "25" + "A", + "16", + "23", + "N4", + "U1", + "H1", + "H", + "LZH", + "PSA 1" ] }, { - "stopId": 14201, + "stopId": "vitrasa:5440", "name": { - "original": "Avda. de Santa Mariña (cruce Avda. do Tranvía)" + "original": "Avda. do Fragoso, 47" }, - "latitude": 42.226291056, - "longitude": -8.641647591, + "latitude": 42.217288508, + "longitude": -8.73454375, "lines": [ - "25" + "7", + "12B", + "17", + "N4", + "H1" ] }, { - "stopId": 14202, + "stopId": "vitrasa:5450", "name": { - "original": "Rúa de Jenaro de la Fuente, 58" + "original": "Avda. do Fragoso, 54" }, - "latitude": 42.231273786, - "longitude": -8.700145645, + "latitude": 42.215348678, + "longitude": -8.736273638, "lines": [ - "11", - "15A", - "15B", - "15C", - "H3" + "A", + "16", + "23", + "N4", + "U1", + "H1", + "H", + "LZH", + "PSA 1" ] }, { - "stopId": 14203, + "stopId": "vitrasa:5460", "name": { - "original": "Avda. do Tranvía S/N (despois Camiño Lugar)" + "original": "Avda. do Fragoso, 71" }, - "latitude": 42.226524401, - "longitude": -8.661251786, + "latitude": 42.215301002, + "longitude": -8.736123434, "lines": [ - "11", - "15A" + "7", + "12B", + "17", + "N4", + "H1" ] }, { - "stopId": 14204, + "stopId": "vitrasa:5470", "name": { - "original": "Rúa de Manuel Álvarez, 151" + "original": "Avda. do Fragoso, 86" }, - "latitude": 42.22312688, - "longitude": -8.681864633, + "latitude": 42.21315264, + "longitude": -8.738470803, "lines": [ - "25", - "31", - "H3" + "A", + "16", + "23", + "N4", + "U1", + "H1", + "H", + "LZH", + "PSA 1" ] }, { - "stopId": 14205, + "stopId": "vitrasa:5480", "name": { - "original": "Estrada do Freixo (Cemiterio)" + "original": "Estrada de San Xoán, 25" }, - "latitude": 42.178408629, - "longitude": -8.733198549, + "latitude": 42.186179757, + "longitude": -8.748888329, "lines": [ - "7" + "17" ] }, { - "stopId": 14206, + "stopId": "vitrasa:5490", "name": { - "original": "Avda. da Gran Vía (Instituto)" + "original": "Avda. de García Barbón (fronte 120)" }, - "latitude": 42.220514043, - "longitude": -8.731700217, + "latitude": 42.241557555, + "longitude": -8.707094861, "lines": [ "C3i", - "7", - "11", - "13", - "15A", - "16", - "23", - "29", - "H2" + "5B", + "10", + "17", + "N1", + "H3", + "VTS" ] }, { - "stopId": 14207, + "stopId": "vitrasa:5500", "name": { - "original": "Camiño do Pinal, 19" + "original": "Avda. de García Barbón, 126" }, - "latitude": 42.161212162, - "longitude": -8.716377433, + "latitude": 42.24178025, + "longitude": -8.706720936, "lines": [ - "7" + "C3d", + "5B", + "10", + "17", + "31", + "U2", + "H2", + "H3", + "PSA 1" ] }, { - "stopId": 14208, + "stopId": "vitrasa:5510", "name": { - "original": "Estrada de Valadares, 452" + "original": "Avda. de García Barbón, 127" }, - "latitude": 42.162237207, - "longitude": -8.71885531, + "latitude": 42.238290358, + "longitude": -8.71014103, "lines": [ - "7" + "C3i", + "5B", + "10", + "17", + "N1", + "VTS" ] }, { - "stopId": 14209, + "stopId": "vitrasa:5520", "name": { - "original": "Estrada da Garrida, 263" + "original": "FORA DE SERVIZO.G.B." }, - "latitude": 42.173333822, - "longitude": -8.705439803, + "latitude": 42.237485586, + "longitude": -8.719397801, "lines": [ - "7" + "C3i", + "A", + "4A", + "4C", + "5A", + "5B", + "6", + "7", + "9B", + "10", + "11", + "12B", + "14", + "15B", + "15C", + "16", + "17", + "18B", + "18H", + "24", + "28", + "N1", + "N4", + "PSA 1", + "PSA 4", + "VTS" + ], + "amenities": [ + "shelter", + "display" ] }, { - "stopId": 14210, + "stopId": "vitrasa:5530", "name": { - "original": "Estrada da Garrida (frente 243)" + "original": "Avda. de García Barbón, 18" }, - "latitude": 42.173077394, - "longitude": -8.705659744, + "latitude": 42.23720456, + "longitude": -8.718680736, "lines": [ - "7" + "H2", + "PSA 1" + ], + "amenities": [ + "shelter", + "display" ] }, { - "stopId": 14211, + "stopId": "vitrasa:5540", "name": { - "original": "Estrada do Monte Alba, 32" + "original": "Avda. de García Barbón, 28" }, - "latitude": 42.165479162, - "longitude": -8.721775005, + "latitude": 42.236759685, + "longitude": -8.716384581, "lines": [ - "7" + "A", + "5B", + "16", + "17", + "24", + "H2", + "PSA 1" ] }, { - "stopId": 14212, + "stopId": "vitrasa:5560", "name": { - "original": "Estrada do Monte Alba, 54" + "original": "Avda. de García Barbón, 60" }, - "latitude": 42.164694101, - "longitude": -8.724472962, + "latitude": 42.236896919, + "longitude": -8.712902905, "lines": [ - "7" + "C3d", + "A", + "5B", + "10", + "16", + "17", + "24", + "H2", + "PSA 1" ] }, { - "stopId": 14213, + "stopId": "vitrasa:5570", "name": { - "original": "Estrada do Freixo (Campo Fútbol)" + "original": "Avda. de García Barbón, 87" }, - "latitude": 42.169153241, - "longitude": -8.729001464, + "latitude": 42.237003397, + "longitude": -8.713586994, "lines": [ - "7" + "C3i", + "5B", + "10", + "17", + "N1", + "VTS" ] }, { - "stopId": 14214, + "stopId": "vitrasa:5580", "name": { - "original": "Estrada do Freixo, 191" + "original": "Avda. de García Barbón, 90" }, - "latitude": 42.175760907, - "longitude": -8.734516924, + "latitude": 42.238267348, + "longitude": -8.709873166, "lines": [ - "7" + "C3d", + "5B", + "10", + "17", + "H2", + "PSA 1" ] }, { - "stopId": 14215, + "stopId": "vitrasa:5590", "name": { - "original": "Estrada do Freixo, 90" + "original": "Avda. da Ponte (Grupo S. Gorxal)" }, - "latitude": 42.175592169, - "longitude": -8.734477788, + "latitude": 42.213057463, + "longitude": -8.670479203, "lines": [ - "7" + "12B", + "15B", + "15C" ] }, { - "stopId": 14216, + "stopId": "vitrasa:560", "name": { - "original": "Estrada do Freixo (fronte Campo Fútbol)" + "original": "Avda. de Ricardo Mella, 518" }, - "latitude": 42.169143301, - "longitude": -8.729076566, + "latitude": 42.181015915, + "longitude": -8.807696921, + "lines": [ + "10" + ] + }, + { + "stopId": "vitrasa:5600", + "name": { + "original": "Avda. da Gran Vía, 107" + }, + "latitude": 42.225140059, + "longitude": -8.72184818, + "lines": [ + "C3i", + "7", + "11", + "13", + "15A", + "16", + "23", + "29", + "H2" + ] + }, + { + "stopId": "vitrasa:5610", + "name": { + "original": "Avda. da Gran Vía, 12" + }, + "latitude": 42.233503531, + "longitude": -8.717236739, + "lines": [ + "C1", + "4A", + "4C", + "5B", + "7", + "12B", + "14", + "16", + "17", + "18A", + "18B", + "18H", + "PSA 4" + ] + }, + { + "stopId": "vitrasa:5620", + "name": { + "original": "Avda. da Gran Vía, 148" + }, + "latitude": 42.222321607, + "longitude": -8.726440421, + "lines": [ + "C3d", + "13", + "15A", + "23", + "29", + "U1", + "U2", + "H2", + "PSA 1" + ] + }, + { + "stopId": "vitrasa:5630", + "name": { + "original": "Avda. da Gran Vía, 147" + }, + "latitude": 42.222790356, + "longitude": -8.724940076, + "lines": [ + "C3i", + "7", + "11", + "13", + "15A", + "16", + "23", + "29", + "U1", + "U2", + "H2" + ] + }, + { + "stopId": "vitrasa:5640", + "name": { + "original": "Avda. da Gran Vía, 176" + }, + "latitude": 42.220868033, + "longitude": -8.730264447, + "lines": [ + "C3d", + "13", + "15A", + "23", + "29", + "U2", + "H2", + "PSA 1" + ] + }, + { + "stopId": "vitrasa:5650", + "name": { + "original": "Avda. da Gran Vía, 185" + }, + "latitude": 42.220971136, + "longitude": -8.729196245, + "lines": [ + "C3i", + "7", + "11", + "13", + "15A", + "16", + "23", + "29", + "H2" + ] + }, + { + "stopId": "vitrasa:5660", + "name": { + "original": "Avda. da Gran Vía, 19" + }, + "latitude": 42.232957918, + "longitude": -8.717215735, + "lines": [ + "4A", + "4C", + "5B", + "7", + "11", + "12B", + "14", + "16", + "17", + "18A", + "18B", + "18H", + "N1" + ] + }, + { + "stopId": "vitrasa:5670", + "name": { + "original": "Avda. da Gran Vía, 46" + }, + "latitude": 42.230988893, + "longitude": -8.71867283, + "lines": [ + "C1", + "12A", + "12B", + "14", + "18A", + "18B", + "18H", + "TUR" + ] + }, + { + "stopId": "vitrasa:5680", + "name": { + "original": "Avda. da Gran Vía, 66" + }, + "latitude": 42.228173802, + "longitude": -8.720267623, + "lines": [ + "C3d", + "13", + "15A", + "23", + "29", + "H2", + "PSA 1" + ] + }, + { + "stopId": "vitrasa:5690", + "name": { + "original": "Avda. da Gran Vía, 85" + }, + "latitude": 42.226868266, + "longitude": -8.720637433, + "lines": [ + "C3i", + "7", + "11", + "13", + "15A", + "16", + "23", + "29", + "H2" + ] + }, + { + "stopId": "vitrasa:570", + "name": { + "original": "Avda. de Ricardo Mella, 250" + }, + "latitude": 42.195225102, + "longitude": -8.775226375, + "lines": [ + "12A" + ] + }, + { + "stopId": "vitrasa:5700", + "name": { + "original": "Avda. da Gran Vía, 104" + }, + "latitude": 42.225325884, + "longitude": -8.722106624, + "lines": [ + "C3d", + "13", + "15A", + "23", + "29", + "H2", + "PSA 1" + ] + }, + { + "stopId": "vitrasa:5710", + "name": { + "original": "Avda. do Alcalde Gregorio Espino, 22" + }, + "latitude": 42.23003666347398, + "longitude": -8.707266671978003, + "lines": [ + "31" + ] + }, + { + "stopId": "vitrasa:572", + "name": { + "original": "Estrada de Madrid, 210" + }, + "latitude": 42.214058797, + "longitude": -8.672946954, + "lines": [ + "12B", + "15B", + "15C", + "U2" + ] + }, + { + "stopId": "vitrasa:5720", + "name": { + "original": "Avda. do Alcalde Gregorio Espino, 33" + }, + "latitude": 42.23004933454558, + "longitude": -8.706947409683313, + "lines": [ + "4C", + "23", + "31", + "H2", + "PSA 4" + ] + }, + { + "stopId": "vitrasa:5730", + "name": { + "original": "Avda. do Alcalde Gregorio Espino, 44" + }, + "latitude": 42.227850036119314, + "longitude": -8.708105429626789, + "lines": [ + "31", + "H2" + ] + }, + { + "stopId": "vitrasa:5740", + "name": { + "original": "Avda. do Alcalde Gregorio Espino, 57" + }, + "latitude": 42.22783722597372, + "longitude": -8.707849091551859, "lines": [ - "7" + "4C", + "23", + "31", + "N4", + "H2", + "PSA 4", + "VTS" ] }, { - "stopId": 14217, + "stopId": "vitrasa:5750", "name": { - "original": "Estrada do Monte Alba (frente 54)" + "original": "Avda. do Alcalde Gregorio Espino, 79" }, - "latitude": 42.164570839, - "longitude": -8.724561475, + "latitude": 42.225785485, + "longitude": -8.708786105, + "lines": [ + "4C", + "23", + "31", + "N4", + "H2", + "PSA 4", + "VTS" + ] + }, + { + "stopId": "vitrasa:5760", + "name": { + "original": "Estrada de Valadares, 377" + }, + "latitude": 42.16929549, + "longitude": -8.723249687, "lines": [ "7" ] }, { - "stopId": 14218, + "stopId": "vitrasa:5770", "name": { - "original": "Estrada do Monte Alba, 21" + "original": "Estrada de Valadares, 310" }, - "latitude": 42.165288305, - "longitude": -8.721367309, + "latitude": 42.16911061, + "longitude": -8.723904146, + "lines": [ + "7", + "U1" + ] + }, + { + "stopId": "vitrasa:5790", + "name": { + "original": "Hospital do Meixoeiro" + }, + "latitude": 42.214534062, + "longitude": -8.684756053, + "lines": [ + "12A", + "12B", + "13", + "15B", + "15C", + "31" + ] + }, + { + "stopId": "vitrasa:580", + "name": { + "original": "Avda. de Ricardo Mella, 135" + }, + "latitude": 42.195766012, + "longitude": -8.773648966, + "lines": [ + "12A" + ] + }, + { + "stopId": "vitrasa:5800", + "name": { + "original": "Rúa de Jenaro de la Fuente, 29" + }, + "latitude": 42.232202275, + "longitude": -8.703792246, + "lines": [ + "A", + "4A", + "6", + "9B", + "11", + "15A", + "15B", + "15C", + "24", + "25", + "27", + "28" + ] + }, + { + "stopId": "vitrasa:5810", + "name": { + "original": "Rúa de Jenaro de la Fuente, 10" + }, + "latitude": 42.232258514, + "longitude": -8.705770621, + "lines": [ + "A", + "4A", + "4C", + "6", + "9B", + "11", + "15A", + "15B", + "15C", + "23", + "24", + "25", + "27", + "28", + "N4", + "PSA 4" + ] + }, + { + "stopId": "vitrasa:5820", + "name": { + "original": "Rúa de Jenaro de la Fuente, 22" + }, + "latitude": 42.232042043, + "longitude": -8.703616807, + "lines": [ + "A", + "4A", + "4C", + "6", + "9B", + "11", + "15A", + "15B", + "15C", + "23", + "24", + "25", + "27", + "28", + "N4", + "PSA 4" + ] + }, + { + "stopId": "vitrasa:5830", + "name": { + "original": "Rúa de Jenaro de la Fuente, 11" + }, + "latitude": 42.23238699, + "longitude": -8.705610784, + "lines": [ + "A", + "4A", + "6", + "9B", + "11", + "15A", + "15B", + "15C", + "24", + "25", + "27", + "28" + ] + }, + { + "stopId": "vitrasa:5840", + "name": { + "original": "Rúa da Lagoa (cruce Rúa do Balde)" + }, + "latitude": 42.201360896, + "longitude": -8.702877394, + "lines": [ + "18A", + "18B" + ] + }, + { + "stopId": "vitrasa:5850", + "name": { + "original": "Rúa da Lagoa (fronte 21)" + }, + "latitude": 42.201154253, + "longitude": -8.702343635, + "lines": [ + "18A", + "18B" + ] + }, + { + "stopId": "vitrasa:5860", + "name": { + "original": "Baixada á Laxe (Centro Saúde)" + }, + "latitude": 42.21669522, + "longitude": -8.715884298, + "lines": [ + "18A", + "18B", + "18H" + ] + }, + { + "stopId": "vitrasa:5870", + "name": { + "original": "Rúa de López Mora, 10" + }, + "latitude": 42.226432697, + "longitude": -8.731262013, + "lines": [ + "VTS" + ] + }, + { + "stopId": "vitrasa:5880", + "name": { + "original": "Rúa de López Mora, 19" + }, + "latitude": 42.226800566, + "longitude": -8.731799623, + "lines": [ + "5A", + "5B", + "12A" + ] + }, + { + "stopId": "vitrasa:5890", + "name": { + "original": "Rúa de López Mora, 84" + }, + "latitude": 42.222420533, + "longitude": -8.731996938, + "lines": [ + "VTS" + ] + }, + { + "stopId": "vitrasa:5900", + "name": { + "original": "Rúa de Macal, 8" + }, + "latitude": 42.202071034, + "longitude": -8.723541884, + "lines": [ + "18B", + "18H", + "27" + ] + }, + { + "stopId": "vitrasa:5910", + "name": { + "original": "Rúa de Macal, 90" + }, + "latitude": 42.196213336, + "longitude": -8.721136467, + "lines": [ + "18B", + "18H", + "27" + ] + }, + { + "stopId": "vitrasa:5920", + "name": { + "original": "Rúa de Macal (cruce Rúa de Ramiro Pascual)" + }, + "latitude": 42.196173594, + "longitude": -8.721023814, "lines": [ - "7" + "18B", + "18H", + "27" ] }, { - "stopId": 14219, + "stopId": "vitrasa:5930", "name": { - "original": "Camiño do Pinal, 59" + "original": "Rúa de Macal (frente 8)" }, - "latitude": 42.159500512, - "longitude": -8.718247279, + "latitude": 42.202050775, + "longitude": -8.723454133, "lines": [ - "7" + "18B", + "18H", + "27" ] }, { - "stopId": 14220, + "stopId": "vitrasa:5940", "name": { - "original": "Camiño da Bouciña, 14" + "original": "Rúa de Macal, 39" }, - "latitude": 42.225657321, - "longitude": -8.681467666, + "latitude": 42.198347336, + "longitude": -8.721488003, "lines": [ - "25" + "18B", + "18H", + "27" ] }, { - "stopId": 14221, + "stopId": "vitrasa:5950", "name": { - "original": "Camiño da Bouciña, 3" + "original": "Rúa dos Mestres Goldar, 62" }, - "latitude": 42.225809218, - "longitude": -8.681652991, + "latitude": 42.207127325, + "longitude": -8.726636888, "lines": [ - "25" + "27" ] }, { - "stopId": 14222, + "stopId": "vitrasa:5960", "name": { - "original": "Camiño do Pinal, 5" + "original": "Rúa dos Mestres Goldar, 77" }, - "latitude": 42.162959525, - "longitude": -8.716541365, + "latitude": 42.206757786, + "longitude": -8.730056705, "lines": [ - "7" + "27" ] }, { - "stopId": 14223, + "stopId": "vitrasa:5970", "name": { - "original": "Avda. Beiramar Porto Pesqueiro Berbés" + "original": "Rúa dos Mestres Goldar, 96" }, - "latitude": 42.236685153, - "longitude": -8.731609303, + "latitude": 42.206880283, + "longitude": -8.729978952, "lines": [ - "C3i", - "A", - "5A", - "5B", - "10", - "11", - "15C", - "N1", - "N4", - "H1", - "VTS" + "27" ] }, { - "stopId": 14224, + "stopId": "vitrasa:5980", "name": { - "original": "Rúa do Conde de Torrecedeira, 16" + "original": "Rúa dos Mestres Goldar, 37" }, - "latitude": 42.234285927, - "longitude": -8.731266507, + "latitude": 42.207198849, + "longitude": -8.726658346, "lines": [ - "C3i", - "A", - "5A", - "5B", - "10", - "11", - "15C", - "N1", - "N4", - "H1", - "VTS" + "27" ] }, { - "stopId": 14225, + "stopId": "vitrasa:600", "name": { - "original": "Rúa do Conde de Torrecedeira, 50" + "original": "Avda. de Ricardo Mella, 273" }, - "latitude": 42.231716574, - "longitude": -8.732308737, + "latitude": 42.189927171, + "longitude": -8.800634184, "lines": [ - "C3i", - "A", - "5A", - "5B", + "C3d", "10", - "11", - "15C", - "N1", - "N4", - "H1", - "VTS" + "12A" ] }, { - "stopId": 14226, + "stopId": "vitrasa:6000", "name": { - "original": "Rúa do Conde de Torrecedeira, 70" + "original": "Rúa de Manuel Álvarez, 185" }, - "latitude": 42.229574859, - "longitude": -8.733073973, + "latitude": 42.220887532, + "longitude": -8.685059571, "lines": [ - "C3i", - "A", - "5A", - "5B", - "10", - "11", - "15C", - "N1", - "N4", - "H1", - "VTS" + "31", + "H3" ] }, { - "stopId": 14227, + "stopId": "vitrasa:6010", "name": { - "original": "Rúa do Conde de Torrecedeira, 86" + "original": "Rúa de Manuel Álvarez (cruce Camiño Sulevada)" }, - "latitude": 42.22696657, - "longitude": -8.734559706, + "latitude": 42.223077231, + "longitude": -8.675499751, "lines": [ - "C3i", - "A", - "5A", - "5B", - "10", - "11", - "15C", - "N1", - "N4", - "H1", - "VTS" + "25", + "31", + "H3" ] }, { - "stopId": 14228, + "stopId": "vitrasa:6020", "name": { - "original": "Avda. de Peinador, 100" + "original": "Rúa de Manuel Álvarez, 58" }, - "latitude": 42.221696342, - "longitude": -8.632840997, + "latitude": 42.223195307, + "longitude": -8.681872932, "lines": [ - "A" + "25", + "31", + "H3" ] }, { - "stopId": 14231, + "stopId": "vitrasa:6030", "name": { - "original": "Rúa da Rabadeira, 39" + "original": "Rúa de Manuel Álvarez, 102" }, - "latitude": 42.235542066, - "longitude": -8.652196565, + "latitude": 42.220829925, + "longitude": -8.685158812, "lines": [ - "9B" + "31", + "H3" ] }, { - "stopId": 14232, + "stopId": "vitrasa:6040", "name": { - "original": "Rúa da Rabadeira (fronte 33)" + "original": "Rúa de Manuel Álvarez (fronte cruce Camiño Sulevada)" }, - "latitude": 42.235317662, - "longitude": -8.652094641, + "latitude": 42.22320325, + "longitude": -8.675213007, "lines": [ - "9B", - "27" + "25", + "31", + "H3" ] }, { - "stopId": 14233, + "stopId": "vitrasa:6050", "name": { - "original": "Rúa San Cristobo, 90" + "original": "Rúa de Manuel Cominges, 22" }, - "latitude": 42.241037275, - "longitude": -8.668947597, + "latitude": 42.19890849, + "longitude": -8.73623433, "lines": [ - "9B", - "28" + "12B", + "17" ] }, { - "stopId": 14236, + "stopId": "vitrasa:6060", "name": { - "original": "Rúa de Manuel Cominges (fronte 112)" + "original": "Rúa de Manuel Cominges, 135" }, - "latitude": 42.196308523, - "longitude": -8.723526935, + "latitude": 42.196716802, + "longitude": -8.729966982, "lines": [ "12B" ] }, { - "stopId": 14237, + "stopId": "vitrasa:6070", "name": { - "original": "Rúa de Manuel Cominges, 134" + "original": "Rúa de Manuel Cominges, 15" }, - "latitude": 42.196119748, - "longitude": -8.723457198, + "latitude": 42.199197066, + "longitude": -8.736588816, "lines": [ "12B" ] }, { - "stopId": 14238, + "stopId": "vitrasa:6080", "name": { - "original": "Rúa da Saa do Monte, 5" + "original": "Rúa de Manuel Cominges, 64" }, - "latitude": 42.20458802, - "longitude": -8.714617309, + "latitude": 42.197736144, + "longitude": -8.732267294, "lines": [ - "18B" + "12B", + "17" ] }, { - "stopId": 14240, + "stopId": "vitrasa:6090", "name": { - "original": "Rúa das Chabarras, 21" + "original": "Rúa de Manuel Cominges, 77" }, - "latitude": 42.197985091, - "longitude": -8.714523201, + "latitude": 42.197626151, + "longitude": -8.732546841, "lines": [ - "18B" + "12B" ] }, { - "stopId": 14241, + "stopId": "vitrasa:6100", "name": { - "original": "Rúa das Chabarras, 60" + "original": "Rúa de Manuel Cominges, 80" }, - "latitude": 42.197842023, - "longitude": -8.71471632, + "latitude": 42.197066521, + "longitude": -8.730468609, "lines": [ - "18B" + "12B", + "17" ] }, { - "stopId": 14242, + "stopId": "vitrasa:6110", "name": { - "original": "Rúa das Chabarras (cruce Camiño dos Pasais)" + "original": "Camiño da Devesa, 6" }, - "latitude": 42.196378259, - "longitude": -8.716979043, + "latitude": 42.243941636, + "longitude": -8.669169025, "lines": [ - "18B" + "9B", + "27", + "28" ] }, { - "stopId": 14243, + "stopId": "vitrasa:6130", "name": { - "original": "Rúa das Chabarras, 24" + "original": "Estrada do Marco, 105" }, - "latitude": 42.196539214, - "longitude": -8.716874437, + "latitude": 42.207132591, + "longitude": -8.706967295, "lines": [ - "18B" + "18B", + "H3" ] }, { - "stopId": 14244, + "stopId": "vitrasa:6140", "name": { - "original": "Rúa de Macal, 60" + "original": "Estrada do Marco (Colexio)" }, - "latitude": 42.198216234, - "longitude": -8.721498041, + "latitude": 42.206925967, + "longitude": -8.707050443, "lines": [ - "18B", - "18H", - "27" + "H3" ] }, { - "stopId": 14245, + "stopId": "vitrasa:6150", "name": { - "original": "Avda. de García Barbón, 43" + "original": "Estrada De Zamáns, 233" }, - "latitude": 42.23691728, - "longitude": -8.716743143, + "latitude": 42.160616846, + "longitude": -8.691088401, "lines": [ - "C3i", - "A", - "5B", - "10", - "16", - "17", - "24", - "N1", - "VTS" + "7" ] }, { - "stopId": 14247, + "stopId": "vitrasa:6160", "name": { - "original": "Camiño dos Muíños, 69" + "original": "Estrada De Zamáns, 150" }, - "latitude": 42.200511179, - "longitude": -8.769110573, + "latitude": 42.160635942, + "longitude": -8.69145083, "lines": [ - "12A" + "7" ] }, { - "stopId": 14248, + "stopId": "vitrasa:6180", "name": { - "original": "Camiño dos Muíños, 74" + "original": "Rúa de Marín (fronte 30)" }, - "latitude": 42.200580723, - "longitude": -8.76911862, + "latitude": 42.21850454, + "longitude": -8.753892634, "lines": [ - "12A" + "C3i", + "5B" ] }, { - "stopId": 14249, + "stopId": "vitrasa:6187", "name": { - "original": "Avda. de Cesáreo Vázquez, 5" + "original": "Rúa de Martín Echegaray (Parque)" }, - "latitude": 42.177662554, - "longitude": -8.800157923, + "latitude": 42.215244712, + "longitude": -8.74244225, "lines": [ - "12A" + "23", + "N4" ] }, { - "stopId": 14250, + "stopId": "vitrasa:620", "name": { - "original": "Avda. do Aeroporto, 463" + "original": "Avda. de Ricado Mella, 165" }, - "latitude": 42.234914814, - "longitude": -8.658983411, + "latitude": 42.1935678, + "longitude": -8.781529566, "lines": [ - "A", - "9B" + "12A" ] }, { - "stopId": 14251, + "stopId": "vitrasa:6200", "name": { - "original": "Avda. do Aeroporto (fronte 463)" + "original": "Avda. de E. Martínez Garrido, 11" }, - "latitude": 42.234817602, - "longitude": -8.65882027, + "latitude": 42.229298043, + "longitude": -8.699760249, "lines": [ - "A", - "9B", - "27" + "6", + "25", + "31" ] }, { - "stopId": 14252, + "stopId": "vitrasa:6210", "name": { - "original": "Estrada Clara Campoamor (Instituto)" + "original": "Avda. de E. Martínez Garrido, 16" }, - "latitude": 42.165934208, - "longitude": -8.707243001, + "latitude": 42.229259529, + "longitude": -8.699964485, "lines": [ - "A", - "U1" + "4C", + "6", + "23", + "25", + "31", + "N4", + "PSA 4", + "VTS" ] }, { - "stopId": 14253, + "stopId": "vitrasa:6220", "name": { - "original": "Estrada Clara Campoamor (cruce Rúa do Padrón do Couto)" + "original": "Avda. de E. Martínez Garrido, 45" }, - "latitude": 42.164455564, - "longitude": -8.707223843, + "latitude": 42.226116269, + "longitude": -8.703346362, "lines": [ - "A", - "U1" + "31" ] }, { - "stopId": 14255, + "stopId": "vitrasa:6230", "name": { - "original": "Rúa do Pintor Colmeiro (Parque do Pintor Colmeiro)" + "original": "Avda. de E. Martínez Garrido, 69" }, - "latitude": 42.225111918, - "longitude": -8.726733526, + "latitude": 42.224839145, + "longitude": -8.706082215, "lines": [ - "16" + "31" ] }, { - "stopId": 14256, + "stopId": "vitrasa:6240", "name": { - "original": "Rúa de Zamora, 89" + "original": "Avda. de E. Martínez Garrido, 77" }, - "latitude": 42.222198901, - "longitude": -8.728317834, + "latitude": 42.224493844, + "longitude": -8.707734948, "lines": [ - "16" + "31" ] }, { - "stopId": 14257, + "stopId": "vitrasa:6250", "name": { - "original": "Rúa de Zamora, 71" + "original": "Avda. de E. Martínez Garrido, 80" }, - "latitude": 42.223448271, - "longitude": -8.725547112, + "latitude": 42.22667463, + "longitude": -8.702581423, "lines": [ - "16" + "4C", + "23", + "31", + "N4", + "PSA 4", + "VTS" ] }, { - "stopId": 14258, + "stopId": "vitrasa:6260", "name": { - "original": "Rúa de Zamora, 51" + "original": "Estrada da Balsa, 3" }, - "latitude": 42.224870416, - "longitude": -8.723632015, + "latitude": 42.199568643, + "longitude": -8.741030554, "lines": [ - "16" + "12B", + "17" ] }, { - "stopId": 14259, + "stopId": "vitrasa:6280", "name": { - "original": "Rúa de Zamora, 31" + "original": "Rúa Molais (Parque da Grileira)" }, - "latitude": 42.227088982, - "longitude": -8.721545256, + "latitude": 42.223843943, + "longitude": -8.65334865, "lines": [ - "16" + "11" ] }, { - "stopId": 14260, + "stopId": "vitrasa:6290", "name": { - "original": "Avda. da Gran Vía (fronte Avda. de Madrid)" + "original": "Rúa de San Paio (cruce Rúa Muíños)" }, - "latitude": 42.228741057, - "longitude": -8.71961914, + "latitude": 42.202031781, + "longitude": -8.769502424, "lines": [ - "A", - "7", - "14", - "15A", - "16", - "18A", - "18B", - "18H", - "H2" + "4A", + "12A" ] }, { - "stopId": 14261, + "stopId": "vitrasa:630", "name": { - "original": "Rúa de Zamora, 1" + "original": "Avda. de Ricardo Mella, 223" }, - "latitude": 42.228644118, - "longitude": -8.720692314, + "latitude": 42.189304527, + "longitude": -8.79068363, "lines": [ - "16" + "12A" ] }, { - "stopId": 14264, + "stopId": "vitrasa:6300", "name": { - "original": "Rúa de Urzáiz - Príncipe" + "original": "Rúa de Cánovas del Castillo (Centro Comercial)" }, - "latitude": 42.235873545, - "longitude": -8.720083317, + "latitude": 42.240129541, + "longitude": -8.727159759, "lines": [ - "C1", + "C3i", "A", - "4A", - "4C", "5A", - "7", + "5B", + "6", "9B", - "12B", - "14", + "10", + "11", "15B", "15C", - "16", - "17", - "18A", - "18B", - "18H", - "24", "28", "N1", - "N4" - ], - "amenities": [ - "shelter", - "display" + "N4", + "H1", + "VTS" ] }, { - "stopId": 14267, + "stopId": "vitrasa:6305", "name": { - "original": "Avda. da Atlántida, 64" + "original": "O Castro" }, - "latitude": 42.221892792, - "longitude": -8.758191526, + "latitude": 42.230800582, + "longitude": -8.725954962, "lines": [ - "10", - "15B", - "15C", - "N1" + "TUR" ] }, { - "stopId": 14268, + "stopId": "vitrasa:6360", "name": { - "original": "Avda. da Atlántida, 49" + "original": "Rúa de Pablo Iglesias (Colexio)" }, - "latitude": 42.221731945, - "longitude": -8.758417175, + "latitude": 42.211426266, + "longitude": -8.743166543, "lines": [ - "10", - "15B", - "15C" + "16" ] }, { - "stopId": 14270, + "stopId": "vitrasa:6370", "name": { - "original": "Estrada da Balsa, 67" + "original": "Rúa de Pablo Iglesias (Río)" }, - "latitude": 42.196619218, - "longitude": -8.743240048, + "latitude": 42.210130966, + "longitude": -8.744872428, "lines": [ - "17" + "16" ] }, { - "stopId": 14271, + "stopId": "vitrasa:6380", "name": { - "original": "Estrada da Balsa, 103" + "original": "Rúa de Pablo Iglesias, 2" }, - "latitude": 42.196050474, - "longitude": -8.745105715, + "latitude": 42.211811672, + "longitude": -8.742420889, "lines": [ - "17" + "16", + "VTS" ] }, { - "stopId": 14273, + "stopId": "vitrasa:6390", "name": { - "original": "Rúa do Xalón, 41" + "original": "Rúa de Pablo Iglesias, 20" }, - "latitude": 42.219274062, - "longitude": -8.656419893, + "latitude": 42.210204472, + "longitude": -8.74559126, "lines": [ - "11" + "16", + "VTS" ] }, { - "stopId": 14277, + "stopId": "vitrasa:6415", "name": { - "original": "Avda. da Mariña Española, 8" + "original": "Parque de Castrelos (Museo)" }, - "latitude": 42.251776399, - "longitude": -8.69414009, + "latitude": 42.213852214, + "longitude": -8.727322863, "lines": [ - "17" + "TUR" ] }, { - "stopId": 14278, + "stopId": "vitrasa:6420", "name": { - "original": "Avda. da Mariña Española, 44" + "original": "Paseo de Alfonso XII (Mirador)" }, - "latitude": 42.25430173, - "longitude": -8.692915616, + "latitude": 42.235988269, + "longitude": -8.728520618, "lines": [ - "17" + "VTS" ] }, { - "stopId": 14279, + "stopId": "vitrasa:6440", "name": { - "original": "Riós (Rotonda)" + "original": "Camiño do Pino Manso, 6" }, - "latitude": 42.257069093, - "longitude": -8.690786611, + "latitude": 42.222951208, + "longitude": -8.635051581, "lines": [ - "17" + "A" ] }, { - "stopId": 14280, + "stopId": "vitrasa:6450", "name": { - "original": "Avda. da Mariña Española (ETEA)" + "original": "Praza de Suárez Llanos" }, - "latitude": 42.254604716, - "longitude": -8.692539681, + "latitude": 42.224306065, + "longitude": -8.753090783, "lines": [ - "17" + "C3d", + "C3i", + "13", + "U1", + "H" ] }, { - "stopId": 14281, + "stopId": "vitrasa:6460", "name": { - "original": "Avda. da Mariña Española (Praia de Ríos)" + "original": "Rúa dos Pescadores, 10" }, - "latitude": 42.251596707, - "longitude": -8.69420171, + "latitude": 42.224853579, + "longitude": -8.752608542, "lines": [ - "17" + "C3d", + "C3i" ] }, { - "stopId": 14287, + "stopId": "vitrasa:6470", "name": { - "original": "Rúa Santa Tegra, 67" + "original": "Rúa de Pi i Margall, 108" }, - "latitude": 42.25020334, - "longitude": -8.701924083, + "latitude": 42.228458938, + "longitude": -8.732202674, "lines": [ - "17" + "VTS" ] }, { - "stopId": 14288, + "stopId": "vitrasa:6480", "name": { - "original": "Avda. de Guixar (fronte 28)" + "original": "Rúa de Pi i Margall, 137" }, - "latitude": 42.249218849, - "longitude": -8.704807605, + "latitude": 42.229149188, + "longitude": -8.731886908, "lines": [ - "17" + "5B", + "12A" ] }, { - "stopId": 14289, + "stopId": "vitrasa:6490", "name": { - "original": "Rúa de Xulián Estévez (fronte 58)" + "original": "Rúa de Pi i Margall, 32" }, - "latitude": 42.246484972, - "longitude": -8.705864005, + "latitude": 42.233972514, + "longitude": -8.729963004, "lines": [ - "17" + "VTS" ] }, { - "stopId": 14290, + "stopId": "vitrasa:650", "name": { - "original": "Rúa de Xulián Estévez (fronte 18)" + "original": "Avda. de Ricardo Mella, 289" }, - "latitude": 42.244107542, - "longitude": -8.706343638, + "latitude": 42.181065441, + "longitude": -8.807509871, "lines": [ - "17" + "C3d", + "10", + "12A" ] }, { - "stopId": 14291, + "stopId": "vitrasa:6500", "name": { - "original": "Avda. da Ponte (Vigo Memorial)" + "original": "Rúa de Pi i Margall, 51" }, - "latitude": 42.209935219, - "longitude": -8.671464542, + "latitude": 42.233690068, + "longitude": -8.730100174, "lines": [ - "12B", - "15B", - "15C", - "U2" + "5B", + "12A" ] }, { - "stopId": 14294, + "stopId": "vitrasa:6510", "name": { - "original": "Avda. de Ricardo Mella, 406" + "original": "Rúa de Pi i Margall, 86" }, - "latitude": 42.190684424876565, - "longitude": -8.799308812770041, + "latitude": 42.230584487, + "longitude": -8.731459155, "lines": [ - "12A" + "VTS" ] }, { - "stopId": 14295, + "stopId": "vitrasa:6520", "name": { - "original": "Rúa de Pi i Margall, 121" + "original": "Rúa de Pi i Margall, 95" }, - "latitude": 42.230436358, - "longitude": -8.731437473, + "latitude": 42.232285981, + "longitude": -8.730816324, "lines": [ "5B", "12A" ] }, { - "stopId": 14296, + "stopId": "vitrasa:6530", "name": { - "original": "Praza dos Leóns (Vigozoo)" + "original": "Rúa do Pintor Laxeiro, 4" }, - "latitude": 42.248375604, - "longitude": -8.675578666, + "latitude": 42.222480852, + "longitude": -8.729812967, "lines": [ - "28" + "C1" ] }, { - "stopId": 14298, + "stopId": "vitrasa:6550", "name": { - "original": "Avda. de Samil (fronte 15)" + "original": "Rúa de Pizarro, 10" }, - "latitude": 42.215865535, - "longitude": -8.774911658, + "latitude": 42.229886416, + "longitude": -8.717463365, "lines": [ - "15C" + "C3i", + "6", + "11", + "15A", + "23", + "25", + "28", + "29" ] }, { - "stopId": 14299, + "stopId": "vitrasa:6560", "name": { - "original": "Avda. de Samil (frente Verbum)" + "original": "Rúa de Pizarro, 34" }, - "latitude": 42.213777217, - "longitude": -8.774600284, + "latitude": 42.23113801, + "longitude": -8.711696824, "lines": [ "C3i", + "6", + "11", "15A", - "15B", - "15C", - "N1" + "23", + "25", + "27", + "28" ] }, { - "stopId": 14300, + "stopId": "vitrasa:6570", "name": { - "original": "Avda. da Florida, 30" + "original": "Rúa de Pizarro, 65" }, - "latitude": 42.217907548, - "longitude": -8.73707436, + "latitude": 42.231357755, + "longitude": -8.71296778, "lines": [ - "5A", - "11", - "29", - "VTS" + "C3d", + "6", + "15A", + "23", + "25", + "27", + "28", + "U2", + "H2", + "PSA 1" ] }, { - "stopId": 14301, + "stopId": "vitrasa:6580", "name": { - "original": "Avda. da Florida, 47" + "original": "Rúa de Pizarro, 7" }, - "latitude": 42.218257459, - "longitude": -8.736328798, + "latitude": 42.229860487, + "longitude": -8.717979137, "lines": [ - "5A", - "11", - "29" + "C3d", + "6", + "15A", + "23", + "25", + "27", + "28", + "U2", + "H2", + "PSA 1" ] }, { - "stopId": 14302, + "stopId": "vitrasa:660", "name": { - "original": "Estrada Vella de Madrid, 7" + "original": "Avda. do Alcalde Portanet, 34" }, - "latitude": 42.214542094, - "longitude": -8.696431619, + "latitude": 42.211494566, + "longitude": -8.736022397, "lines": [ - "12A", + "7", "12B", - "13", - "H3" + "17", + "H1", + "VTS" ] }, { - "stopId": 14304, + "stopId": "vitrasa:6620", "name": { - "original": "Estrada Vella de Madrid, 145" + "original": "Rúa de Policarpo Sanz, 40" }, - "latitude": 42.221313975, - "longitude": -8.681944471, + "latitude": 42.23757846151978, + "longitude": -8.721031378896738, "lines": [ - "12A", - "12B", - "13", - "31" + "A" + ], + "amenities": [ + "shelter", + "display" ] }, { - "stopId": 14307, + "stopId": "vitrasa:6640", "name": { - "original": "Rúa do Pintor Colmeiro, 11" + "original": "Rúa do Porriño (fronte Instituto)" }, - "latitude": 42.224464416, - "longitude": -8.727967343, + "latitude": 42.215506175, + "longitude": -8.753186569, "lines": [ - "16" + "C3d", + "C3i", + "4A", + "4C", + "15A", + "PSA 1", + "PSA 4" ] }, { - "stopId": 14308, + "stopId": "vitrasa:6650", "name": { - "original": "Camiño do Pinal, 6" + "original": "Rúa do Porriño (Instituto)" }, - "latitude": 42.16328558, - "longitude": -8.716707662, + "latitude": 42.215554055, + "longitude": -8.753042462, "lines": [ - "7" + "C3d", + "C3i", + "5B", + "15B", + "U1" ] }, { - "stopId": 14309, + "stopId": "vitrasa:6660", "name": { - "original": "Camiño do Pinal, 28" + "original": "Praza da Porta do Sol" }, - "latitude": 42.161067029, - "longitude": -8.716468628, + "latitude": 42.237915293, + "longitude": -8.724846587, "lines": [ - "7" + "VTS" ] }, { - "stopId": 14310, + "stopId": "vitrasa:6670", "name": { - "original": "Camiño do Pinal (fronte 57)" + "original": "Estrada da Venda, 109" }, - "latitude": 42.159564137, - "longitude": -8.718295559, + "latitude": 42.183004832, + "longitude": -8.702601056, "lines": [ - "7" + "A", + "6" ] }, { - "stopId": 14311, + "stopId": "vitrasa:6680", "name": { - "original": "Estrada de Valadares, 505" + "original": "Rúa do Portoloureiro, 26" }, - "latitude": 42.162720337, - "longitude": -8.718900908, + "latitude": 42.207311837, + "longitude": -8.718650635, "lines": [ - "7" + "A" ] }, { - "stopId": 14314, + "stopId": "vitrasa:6690", "name": { - "original": "Rúa das Mantelas (cruce Avda. da Gran Vía)" + "original": "Rúa do Portoloureiro, 52" }, - "latitude": 42.227212568, - "longitude": -8.720183032, + "latitude": 42.20495956, + "longitude": -8.715695557, "lines": [ - "18A" + "A" ] }, { - "stopId": 14315, + "stopId": "vitrasa:6700", "name": { - "original": "Rúa das Mantelas, 92" + "original": "Rúa do Portoloureiro, 43" }, - "latitude": 42.22393338, - "longitude": -8.716924148, + "latitude": 42.204947406, + "longitude": -8.715589643, "lines": [ - "18A" + "A" ] }, { - "stopId": 14317, + "stopId": "vitrasa:6720", "name": { - "original": "Rúa da Salgueira Entrada (Igrexa)" + "original": "Rúa do Portoloureiro (fronte 28)" }, - "latitude": 42.222723933, - "longitude": -8.719150283, + "latitude": 42.207385347, + "longitude": -8.718127604, + "lines": [ + "A" + ] + }, + { + "stopId": "vitrasa:6730", + "name": { + "original": "Rúa do Couto, 29" + }, + "latitude": 42.199386411, + "longitude": -8.695417016, "lines": [ - "18A" + "18A", + "18B" ] }, { - "stopId": 14318, + "stopId": "vitrasa:6740", "name": { - "original": "Rúa da Salguera Entrada (fronte 5)" + "original": "Rúa da Vista do Mar, 95" }, - "latitude": 42.222591256, - "longitude": -8.717753486, + "latitude": 42.242957479, + "longitude": -8.691167762, "lines": [ - "18A" + "4A", + "24" ] }, { - "stopId": 14319, + "stopId": "vitrasa:6750", "name": { - "original": "Rúa das Coutadas (Fonte)" + "original": "Avda. de Samil (Praia da Fonte)" }, - "latitude": 42.221002214, - "longitude": -8.72027208, + "latitude": 42.221783554, + "longitude": -8.773517669, "lines": [ - "18A" + "10", + "15B", + "15C", + "N1" ] }, { - "stopId": 14320, + "stopId": "vitrasa:6760", "name": { - "original": "Rúa do Miradoiro (Rotonda Centro Comercial)" + "original": "Rúa de Canido (Praia da Calzoa)" }, - "latitude": 42.220799025, - "longitude": -8.723345356, + "latitude": 42.201847037, + "longitude": -8.782205633, "lines": [ - "18A" + "10" ] }, { - "stopId": 14321, + "stopId": "vitrasa:6780", "name": { - "original": "Camiño do Freixeiro, 74" + "original": "Avda. de Samil (Dunas)" }, - "latitude": 42.218131641, - "longitude": -8.723120057, + "latitude": 42.210256843, + "longitude": -8.774740625, "lines": [ - "18A" + "10" ] }, { - "stopId": 14322, + "stopId": "vitrasa:6790", "name": { - "original": "Rúa da Fonte Santa, 4" + "original": "Avda. de Samil (fronte Hotel)" }, - "latitude": 42.217813814, - "longitude": -8.721352482, + "latitude": 42.214773038, + "longitude": -8.774765933, "lines": [ - "18A" + "C3d", + "10", + "15C" ] }, { - "stopId": 14323, + "stopId": "vitrasa:680", "name": { - "original": "Rúa Finca dos Aires (cruce Rúa da Fonte Santa)" + "original": "Avda. do Aeroporto (Aeroclub)" }, - "latitude": 42.217059742, - "longitude": -8.720340235, + "latitude": 42.229005723, + "longitude": -8.634356866, "lines": [ - "18A" + "A" ] }, { - "stopId": 14324, + "stopId": "vitrasa:6800", "name": { - "original": "Rúa Finca dos Aires (Urbanización)" + "original": "Avda. de Samil, 26" }, - "latitude": 42.217256401, - "longitude": -8.720101519, + "latitude": 42.215578848, + "longitude": -8.774885538, "lines": [ - "18A" + "15C" ] }, { - "stopId": 14325, + "stopId": "vitrasa:6810", "name": { - "original": "Rúa da Fonte Santa (fronte 4)" + "original": "Avda. de Samil (Parking)" }, - "latitude": 42.217848286, - "longitude": -8.7214811, + "latitude": 42.207405928, + "longitude": -8.776153122, "lines": [ - "18A" + "10" ] }, { - "stopId": 14326, + "stopId": "vitrasa:6820", "name": { - "original": "Baixada á Ponte Nova, 61" + "original": "Avda. de Samil (Polideportivo)" }, - "latitude": 42.218038279, - "longitude": -8.722489738, + "latitude": 42.20362713, + "longitude": -8.777027535, "lines": [ - "18A" + "10" ] }, { - "stopId": 14328, + "stopId": "vitrasa:6830", "name": { - "original": "Citroën - PSA" + "original": "Praia do Vao" }, - "latitude": 42.208988415, - "longitude": -8.746151897, + "latitude": 42.197495083, + "longitude": -8.790235556, "lines": [ - "LZH", - "PSA 1", - "PSA 4" + "10" ] }, { - "stopId": 14329, + "stopId": "vitrasa:6860", "name": { - "original": "Citroën (Puerta Principal)" + "original": "Praza de Compostela" }, - "latitude": 42.210124372, - "longitude": -8.741139991, + "latitude": 42.239118346, + "longitude": -8.722531274, "lines": [ - "LZH", - "PSA 1", - "PSA 4" + "C3i", + "A", + "5A", + "5B", + "6", + "9B", + "10", + "11", + "15B", + "15C", + "28", + "N1", + "N4", + "H1", + "VTS" ] }, { - "stopId": 14330, + "stopId": "vitrasa:6880", "name": { - "original": "Subida ás Chans (fronte cruce Rúa Senra)" + "original": "Praza do Cristo da Vitoria" }, - "latitude": 42.198072667, - "longitude": -8.682624653, + "latitude": 42.215576278, + "longitude": -8.748885599, "lines": [ - "14" + "4A", + "4C", + "11", + "15A", + "N4" ] }, { - "stopId": 14331, + "stopId": "vitrasa:6890", "name": { - "original": "Rúa de Álvaro Cunqueiro, 30" + "original": "Rúa da Cruz, 36" }, - "latitude": 42.223769828, - "longitude": -8.728938728, + "latitude": 42.198959642, + "longitude": -8.68628496, "lines": [ - "4A", - "4C", - "5A", - "5B", - "11", - "12A", - "12B", - "17", - "27", - "N1", - "LZH" + "14" ] }, { - "stopId": 14333, + "stopId": "vitrasa:690", "name": { - "original": "Rúa de Cánovas del Castillo, 18" + "original": "Avda. do Aeroporto, 656" }, - "latitude": 42.240189011, - "longitude": -8.726765331, + "latitude": 42.233064093, + "longitude": -8.642742935, "lines": [ - "C1", - "C3d", "A", - "5A", - "9B", - "10", - "15B", - "15C", - "28", - "N4", - "H1" + "25" ] }, { - "stopId": 14335, + "stopId": "vitrasa:6900", "name": { - "original": "Camiño do Arieiro (Residencia de Maiores)" + "original": "Rúa da Cruz, 49" }, - "latitude": 42.212692269, - "longitude": -8.675661599, + "latitude": 42.199031443, + "longitude": -8.686165797, "lines": [ - "31" + "14" ] }, { - "stopId": 14336, + "stopId": "vitrasa:6930", "name": { - "original": "Rúa das Teixugueiras, 8" + "original": "Praza de América, 1" }, - "latitude": 42.21447626, - "longitude": -8.75600551, + "latitude": 42.220997313, + "longitude": -8.732835177, "lines": [ - "13", - "15A" + "C1", + "N4" ] }, { - "stopId": 14337, + "stopId": "vitrasa:6940", "name": { - "original": "Rúa do Limpiño (Rotonda Rúa Teixugueiras)" + "original": "Praza de América, 3" }, - "latitude": 42.213080218, - "longitude": -8.754660224, + "latitude": 42.220663902, + "longitude": -8.733419892, "lines": [ + "C3d", + "4A", + "4C", "5A", "5B", + "10", + "11", + "12A", + "12B", "13", "15A", - "15B", + "29", "N4", - "U1", - "H", "PSA 1", - "PSA 4" - ] - }, - { - "stopId": 14345, - "name": { - "original": "Rúa do Areiro, 49" - }, - "latitude": 42.237269816, - "longitude": -8.685138009, - "lines": [ - "28" + "PSA 4", + "VTS" ] }, { - "stopId": 14346, + "stopId": "vitrasa:6950", "name": { - "original": "Rúa do Areiro, 52" + "original": "Praza de España (cruce Rúa de Pizarro)" }, - "latitude": 42.237287688, - "longitude": -8.685019992, + "latitude": 42.229280401, + "longitude": -8.719123549, "lines": [ - "28" + "A", + "7", + "12A", + "12B", + "14", + "16", + "18A", + "18B", + "18H" ] }, { - "stopId": 14347, + "stopId": "vitrasa:6955", "name": { - "original": "Rúa do Areiro (cruce Salcides)" + "original": "Praza de España (cruce Rúa de Fernando Conde)" }, - "latitude": 42.23913765, - "longitude": -8.683873934, + "latitude": 42.229438377, + "longitude": -8.719781108, "lines": [ - "28" + "6", + "13", + "18B", + "18H", + "25", + "29" ] }, { - "stopId": 14348, + "stopId": "vitrasa:6960", "name": { - "original": "Rúa do Areiro, 76" + "original": "Avda. das Camelias s/n ( Praza do Rei)" }, - "latitude": 42.238950988, - "longitude": -8.683793467, + "latitude": 42.235056275, + "longitude": -8.726757514, "lines": [ - "28" + "4A", + "4C", + "5B", + "7", + "12A", + "12B", + "16", + "17", + "27", + "PSA 4" ] }, { - "stopId": 14349, + "stopId": "vitrasa:6970", "name": { - "original": "Rúa do Areiro (Campo de Fútbol)" + "original": "Rúa da Coruña, 52" }, - "latitude": 42.244717312, - "longitude": -8.678473607, + "latitude": 42.223781999, + "longitude": -8.735258991, "lines": [ - "28" + "C1", + "A", + "10", + "N4", + "H1" ] }, { - "stopId": 14350, + "stopId": "vitrasa:6980", "name": { - "original": "Rúa do Areiro (fronte Campo de Fútbol)" + "original": "Praza Eugenio Fadrique, 6" }, - "latitude": 42.244849353, - "longitude": -8.678366319, + "latitude": 42.224471236, + "longitude": -8.73619635, "lines": [ - "28" + "C3i", + "15B", + "15C", + "N1" ] }, { - "stopId": 14353, + "stopId": "vitrasa:6990", "name": { - "original": "Praza dos Leóns (fronte Vigozoo)" + "original": "Praza Eugenio Fadrique, 9" }, - "latitude": 42.248151648, - "longitude": -8.675976097, + "latitude": 42.224099613, + "longitude": -8.735838344, "lines": [ - "28" + "C3d", + "A", + "9B", + "15B", + "15C" ] }, { - "stopId": 14354, + "stopId": "vitrasa:70", "name": { - "original": "Avda. de Ramón Nieto (fronte Igrexa)" + "original": "Rúa da Lagoa (cruce Camiño do Casmarcelo)" }, - "latitude": 42.225911433, - "longitude": -8.675526243, + "latitude": 42.20020175, + "longitude": -8.700621608, "lines": [ - "11", - "15A", - "15B", - "15C", - "31", - "H3" + "18A", + "18B" ] }, { - "stopId": 14355, + "stopId": "vitrasa:700", "name": { - "original": "Avda. de Ramón Nieto, 409" + "original": "Avda. do Aeroporto (Colexio)" }, - "latitude": 42.226638363, - "longitude": -8.676135104, + "latitude": 42.228674047, + "longitude": -8.633340309, "lines": [ - "11", - "15A", - "15B", - "15C", - "31", - "H3", - "VTS" + "A" ] }, { - "stopId": 14356, + "stopId": "vitrasa:7000", "name": { - "original": "Avda. de Ricardo Mella, 314" + "original": "Praza de Fernando O Católico" }, - "latitude": 42.192009114, - "longitude": -8.783993123, + "latitude": 42.232427317, + "longitude": -8.711371073, "lines": [ - "12A" + "A", + "4A", + "4C", + "5A", + "9B", + "11", + "15B", + "15C", + "24", + "28", + "N1", + "N4" ] }, { - "stopId": 14357, + "stopId": "vitrasa:7030", "name": { - "original": "Avda. de Ricardo Mella (cruce Camiño do Río)" + "original": "Rúa de Manuel Castro, 23" }, - "latitude": 42.191796473, - "longitude": -8.784014088, + "latitude": 42.212808952, + "longitude": -8.740022994, "lines": [ - "12A" + "16", + "23", + "N4", + "VTS" ] }, { - "stopId": 14358, + "stopId": "vitrasa:7040", "name": { - "original": "Rúa das Teixugueiras, 28" + "original": "Estrada de Miraflores, 1" }, - "latitude": 42.209054557, - "longitude": -8.75715865, + "latitude": 42.218435348, + "longitude": -8.709924429, "lines": [ - "5A", - "5B", - "13", - "N4" + "14", + "18A" ] }, { - "stopId": 14359, + "stopId": "vitrasa:7050", "name": { - "original": "Rúa das Teixugueiras, 16-Portal 2" + "original": "Praza de Miraflores, 4" }, - "latitude": 42.212235738, - "longitude": -8.755011746, + "latitude": 42.218502886, + "longitude": -8.710133641, "lines": [ - "5A", - "5B", - "13", - "N4" + "14" ] }, { - "stopId": 14360, + "stopId": "vitrasa:7060", "name": { - "original": "Rúa das Teixugueiras, 19-Portal 5" + "original": "Estrada de Moledo, 70" }, - "latitude": 42.208965857, - "longitude": -8.757020567, + "latitude": 42.210499286, + "longitude": -8.703983192, "lines": [ - "5A", - "5B", - "13", - "N4", - "U1", - "H", - "PSA 1", - "PSA 4" + "14", + "18A", + "H3" ] }, { - "stopId": 14361, + "stopId": "vitrasa:7070", "name": { - "original": "Rúa das Teixugueiras, 17" + "original": "Estrada de Moledo, 109" }, - "latitude": 42.209770472, - "longitude": -8.755295907, + "latitude": 42.210620188, + "longitude": -8.704177049, "lines": [ - "5A", - "5B", - "13", - "15A", - "N4", - "U1", - "H", - "PSA 1", - "PSA 4" + "14", + "18A", + "H3" ] }, { - "stopId": 14362, + "stopId": "vitrasa:7080", "name": { - "original": "Avda. de Samil, 101" + "original": "Rúa da Rabadeira, 95" }, - "latitude": 42.202937872, - "longitude": -8.776830486, + "latitude": 42.238797018, + "longitude": -8.650399429, "lines": [ - "C3d", - "4C", - "10" + "9B", + "28" ] }, { - "stopId": 14364, + "stopId": "vitrasa:7090", "name": { - "original": "Estrada das Plantas (fronte Cidade Deportiva)" + "original": "Rúa de Ramiro Pascual, 108" }, - "latitude": 42.175757186, - "longitude": -8.671074371, + "latitude": 42.191918475, + "longitude": -8.706869692, "lines": [ - "15C" + "27" ] }, { - "stopId": 14365, + "stopId": "vitrasa:710", "name": { - "original": "Estrada das Plantas (Viveiros)" + "original": "Rúa de Aragón (Instituto)" }, - "latitude": 42.181650197, - "longitude": -8.667515723, + "latitude": 42.232478958, + "longitude": -8.701988706, "lines": [ - "15C" + "A", + "4A", + "9B", + "24", + "27", + "28" ] }, { - "stopId": 14372, + "stopId": "vitrasa:7100", "name": { - "original": "Barrio da Salgueira, 22" + "original": "Rúa de Ramiro Pascual, 16" }, - "latitude": 42.221887526, - "longitude": -8.720011371, + "latitude": 42.1952442, + "longitude": -8.71956212, "lines": [ - "18A" + "12B", + "18B", + "18H", + "27" ] }, { - "stopId": 14376, + "stopId": "vitrasa:7110", "name": { - "original": "Rúa da Pateira, 20" + "original": "Rúa de Ramiro Pascual, 30" }, - "latitude": 42.226612651, - "longitude": -8.699658408, + "latitude": 42.195709195, + "longitude": -8.716896004, "lines": [ - "25" + "27" ] }, { - "stopId": 14377, + "stopId": "vitrasa:7120", "name": { - "original": "Rúa da Pateira, 5" + "original": "Rúa de Ramiro Pascual, 33" }, - "latitude": 42.226582661, - "longitude": -8.700385762, + "latitude": 42.195795442, + "longitude": -8.716893641, "lines": [ - "25" + "27" ] }, { - "stopId": 14378, + "stopId": "vitrasa:7130", "name": { - "original": "Rúa Molais, 83" + "original": "Rúa de Ramiro Pascual, 46" }, - "latitude": 42.22396201, - "longitude": -8.653340726, + "latitude": 42.19350247, + "longitude": -8.715219623, "lines": [ - "25" + "27" ] }, { - "stopId": 14381, + "stopId": "vitrasa:7140", "name": { - "original": "Rúa do Abade Juan de Bastos, 6" + "original": "Rúa de Ramiro Pascual, 71" }, - "latitude": 42.195647685, - "longitude": -8.728974153, + "latitude": 42.193601829, + "longitude": -8.715157933, "lines": [ - "17" + "27" ] }, { - "stopId": 14383, + "stopId": "vitrasa:7150", "name": { - "original": "Estrada Clara Campoamor (cruce Estrada do Portal)" + "original": "Rúa de Ramiro Pascual, 74" }, - "latitude": 42.174718265, - "longitude": -8.713684656, + "latitude": 42.192415468, + "longitude": -8.71184004, "lines": [ - "A", - "U1" + "27" ] }, { - "stopId": 14384, + "stopId": "vitrasa:7160", "name": { - "original": "Estrada Clara Campoamor (Parque Tecnolóxico)" + "original": "Rúa de Ramiro Pascual, 97" }, - "latitude": 42.175073486, - "longitude": -8.713494654, + "latitude": 42.192526527, + "longitude": -8.712588696, "lines": [ - "A", - "U1" + "27" ] }, { - "stopId": 14385, + "stopId": "vitrasa:7170", "name": { - "original": "Rúa da Vista do Mar, 45" + "original": "Rúa de Ramiro Pascual, 9" }, - "latitude": 42.240712912, - "longitude": -8.6919418, + "latitude": 42.195322512, + "longitude": -8.719460515, "lines": [ - "4A", - "24" + "12B", + "18B", + "18H", + "27" ] }, { - "stopId": 14386, + "stopId": "vitrasa:720", "name": { - "original": "Rúa da Vista do Mar (Embalse)" + "original": "Avda. do Aeroporto, 215" }, - "latitude": 42.238020208, - "longitude": -8.691543884, + "latitude": 42.235739016, + "longitude": -8.684254232, "lines": [ - "4A", - "24" + "A", + "9B", + "27" ] }, { - "stopId": 14387, + "stopId": "vitrasa:7200", "name": { - "original": "Rúa da Vista do Mar, 1" + "original": "Avda. de Ramón Nieto, 125" }, - "latitude": 42.237167043, - "longitude": -8.693243792, + "latitude": 42.231023929, + "longitude": -8.69459232, "lines": [ - "4A", - "24" + "11", + "15A", + "15B", + "15C", + "31", + "H3", + "VTS" ] }, { - "stopId": 14388, + "stopId": "vitrasa:7210", "name": { - "original": "Rúa das Teixugueiras, 11" + "original": "Avda. de Ramón Nieto, 136" }, - "latitude": 42.211610124, - "longitude": -8.754550253, + "latitude": 42.229661504, + "longitude": -8.691416585, "lines": [ - "5A", - "5B", - "13", + "11", "15A", - "N4", - "U1", - "H", - "PSA 1", - "PSA 4" + "15B", + "15C", + "31", + "H3" ] }, { - "stopId": 14389, + "stopId": "vitrasa:7220", "name": { - "original": "Rúa das Teixugueiras, 22" + "original": "Avda. de Ramón Nieto, 173" }, - "latitude": 42.210212603, - "longitude": -8.755079989, + "latitude": 42.229736581, + "longitude": -8.691879077, "lines": [ - "5A", - "5B", - "13", - "N4" + "11", + "15A", + "15B", + "15C", + "31", + "H3", + "VTS" ] }, { - "stopId": 14390, + "stopId": "vitrasa:7230", "name": { - "original": "Rúa do Salgueiro (cruce Camiño Sanatorio)" + "original": "Avda. de Ramón Nieto, 198" }, - "latitude": 42.241570883, - "longitude": -8.655380719, + "latitude": 42.229560215, + "longitude": -8.687854611, "lines": [ - "9B", - "28" + "11", + "15A", + "15B", + "15C", + "31", + "H3" ] }, { - "stopId": 14391, + "stopId": "vitrasa:7240", "name": { - "original": "Rúa do Salgueiro (fronte 38)" + "original": "Avda. de Ramón Nieto, 252" }, - "latitude": 42.241652296, - "longitude": -8.655302935, + "latitude": 42.229454954, + "longitude": -8.684539401, "lines": [ - "9B", - "27", - "28" + "11", + "15A", + "15B", + "15C", + "31", + "H3" ] }, { - "stopId": 14392, + "stopId": "vitrasa:7250", "name": { - "original": "Rúa da Pedra Seixa (Colexio)" + "original": "Avda. de Ramón Nieto, 273" }, - "latitude": 42.209458591, - "longitude": -8.760561083, + "latitude": 42.229533333, + "longitude": -8.684593198, "lines": [ - "5A" + "11", + "15A", + "15B", + "15C", + "31", + "H3", + "VTS" ] }, { - "stopId": 14393, + "stopId": "vitrasa:7260", "name": { - "original": "Rúa da Pedra Seixa (fronte Colexio)" + "original": "Avda. de Ramón Nieto, 308" }, - "latitude": 42.209568936, - "longitude": -8.760777001, + "latitude": 42.22953241, + "longitude": -8.681347572, "lines": [ - "5A" + "11", + "15A", + "15B", + "15C", + "31", + "H3" ] }, { - "stopId": 14395, + "stopId": "vitrasa:7270", "name": { - "original": "Estrada de Madrid, 217" + "original": "Avda. de Ramón Nieto, 341" }, - "latitude": 42.215601037, - "longitude": -8.675477665, + "latitude": 42.229570145, + "longitude": -8.681232237, "lines": [ - "12B", + "11", + "15A", "15B", - "15C" + "15C", + "31", + "H3", + "VTS" ] }, { - "stopId": 14396, + "stopId": "vitrasa:7280", "name": { - "original": "Avda. de García Barbón, 106" + "original": "Avda. de Ramón Nieto, 355" }, - "latitude": 42.239965365, - "longitude": -8.708024282, + "latitude": 42.228432118, + "longitude": -8.67827376, "lines": [ - "C3d", - "5B", - "10", - "17", + "11", + "15A", + "15B", + "15C", "31", - "H2", "H3", - "PSA 1" + "VTS" ] }, { - "stopId": 14397, + "stopId": "vitrasa:7290", "name": { - "original": "Avda. de García Barbón (fronte 104)" + "original": "Avda. de Ramón Nieto, 360" }, - "latitude": 42.23973713, - "longitude": -8.708397682, + "latitude": 42.228411862, + "longitude": -8.678489489, "lines": [ - "C3i", - "5B", - "10", - "17", - "N1", - "H3", - "VTS" + "11", + "15A", + "15B", + "15C", + "31", + "H3" ] }, { - "stopId": 14398, + "stopId": "vitrasa:730", "name": { - "original": "Avda. da Gran Vía, 116" + "original": "Avda. do Aeroporto, 130" }, - "latitude": 42.22406594, - "longitude": -8.723691036, + "latitude": 42.231109162, + "longitude": -8.690501398, "lines": [ - "C3d", - "13", - "15A", - "23", - "29", - "H2", - "PSA 1" + "A", + "9B", + "27" ] }, { - "stopId": 14401, + "stopId": "vitrasa:7300", "name": { - "original": "Rúa de San Paio (cruce Camiño Barroca)" + "original": "Avda. de Ramón Nieto, 390" }, - "latitude": 42.21072167, - "longitude": -8.76212542, + "latitude": 42.223957681, + "longitude": -8.673451332, "lines": [ - "4A", - "12A" + "11", + "15A", + "15B", + "15C", + "31", + "H3" ] }, { - "stopId": 14402, + "stopId": "vitrasa:7310", "name": { - "original": "Rúa de San Paio, 111" + "original": "Avda. de Ramón Nieto, 406" }, - "latitude": 42.210791203, - "longitude": -8.761940347, + "latitude": 42.223219273, + "longitude": -8.672272983, "lines": [ - "4A", - "12A" + "11", + "15A", + "15B", + "15C", + "25" ] }, { - "stopId": 14403, + "stopId": "vitrasa:7320", "name": { - "original": "Rúa de Pedro Alvarado (cruce Camiño das Maceiras)" + "original": "Avda. de Ramón Nieto, 475" }, - "latitude": 42.25049654, - "longitude": -8.698390035, + "latitude": 42.224462184, + "longitude": -8.673842935, "lines": [ - "17" + "11", + "15A", + "15B", + "15C", + "31", + "H3", + "VTS" ] }, { - "stopId": 14404, + "stopId": "vitrasa:7330", "name": { - "original": "Rúa do Doutor Corbal, 58" + "original": "Avda. de Ramón Nieto, 50" }, - "latitude": 42.251785642, - "longitude": -8.696871994, + "latitude": 42.231776636, + "longitude": -8.697735869, "lines": [ - "17" + "11", + "15A", + "15B", + "15C", + "31", + "H3" ] }, { - "stopId": 14406, + "stopId": "vitrasa:7340", "name": { - "original": "Rúa de Enrique Lorenzo, 32" + "original": "Avda. de Ramón Nieto, 503" }, - "latitude": 42.249462772, - "longitude": -8.699772952, + "latitude": 42.223272423, + "longitude": -8.67216119, "lines": [ - "17" + "11", + "15A", + "15B", + "15C", + "25", + "VTS" ] }, { - "stopId": 14408, + "stopId": "vitrasa:7350", "name": { - "original": "Rúa de Pedro Alvarado, 5" + "original": "Avda. de Ramón Nieto, 57" }, - "latitude": 42.248885006, - "longitude": -8.698128758, + "latitude": 42.231927571, + "longitude": -8.697668814, "lines": [ - "17" + "11", + "15A", + "15B", + "15C", + "31", + "H3", + "VTS" ] }, { - "stopId": 14409, + "stopId": "vitrasa:7360", "name": { - "original": "Estrada das Plantas (fronte cruce Avda. do Rebullón)" + "original": "Avda. de Ramón Nieto, 96" }, - "latitude": 42.204188441, - "longitude": -8.670257126, + "latitude": 42.230432101, + "longitude": -8.694045149, "lines": [ + "11", + "15A", "15B", - "15C" + "15C", + "31", + "H3" ] }, { - "stopId": 14410, + "stopId": "vitrasa:7370", "name": { - "original": "Estrada das Plantas (cruce Avda. do Rebullón)" + "original": "Avda. de Ramón Nieto, 247" }, - "latitude": 42.204639457, - "longitude": -8.670329545, + "latitude": 42.229607881, + "longitude": -8.686980211, "lines": [ - "15C" + "11", + "15A", + "15B", + "15C", + "31", + "H3", + "VTS" ] }, { - "stopId": 14411, + "stopId": "vitrasa:7380", "name": { - "original": "Rúa de Xeme, 1" + "original": "Camiño do Raviso, 8" }, - "latitude": 42.205174543, - "longitude": -8.698209134, + "latitude": 42.220087856, + "longitude": -8.707014826, "lines": [ "14" ] }, { - "stopId": 14412, + "stopId": "vitrasa:7390", "name": { - "original": "Rúa de Xeme, 6" + "original": "Camiño do Raviso, 35" }, - "latitude": 42.20497586, - "longitude": -8.697957006, + "latitude": 42.220167311, + "longitude": -8.706963864, "lines": [ "14" ] }, { - "stopId": 14413, + "stopId": "vitrasa:740", "name": { - "original": "Estrada da Garrida (cruce Camiño Fabas)" + "original": "Avda. do Aeroporto, 181" }, - "latitude": 42.173955568, - "longitude": -8.703050076, + "latitude": 42.233560754, + "longitude": -8.686937524, "lines": [ - "7" + "A", + "9B", + "27" ] }, { - "stopId": 14414, + "stopId": "vitrasa:7410", "name": { - "original": "Avda. de Santa Mariña, 40" + "original": "Rúa de Eduardo Cabello (Igrexa)" }, - "latitude": 42.221587211, - "longitude": -8.665078444, + "latitude": 42.226366639, + "longitude": -8.752928216, "lines": [ - "11" + "C3d", + "C3i", + "13", + "U1", + "H" ] }, { - "stopId": 14415, + "stopId": "vitrasa:7440", "name": { - "original": "Avda. de Santa Mariña (antes 49)" + "original": "Rúa Da Cruz, 18" }, - "latitude": 42.221557416, - "longitude": -8.665381534, + "latitude": 42.200640474, + "longitude": -8.684744444, "lines": [ - "11" + "14" ] }, { - "stopId": 14416, + "stopId": "vitrasa:7450", "name": { - "original": "Rúa de Severino Cobas, 118" + "original": "Rúa da Cruz, 2" }, - "latitude": 42.225468623, - "longitude": -8.691491081, + "latitude": 42.202168422, + "longitude": -8.68473908, "lines": [ - "25" + "14" ] }, { - "stopId": 14419, + "stopId": "vitrasa:7460", "name": { - "original": "Estrada de Bembrive (cruce Camiño dos Rapadouros)" + "original": "Rúa da Cruz, 46" }, - "latitude": 42.201138734, - "longitude": -8.688585073, + "latitude": 42.19807525, + "longitude": -8.684800771, "lines": [ - "6" + "14" ] }, { - "stopId": 14420, + "stopId": "vitrasa:7470", "name": { - "original": "Estrada de Bembrive, 318" + "original": "Rúa Da Cruz, 63" }, - "latitude": 42.201419233, - "longitude": -8.688526069, + "latitude": 42.198206824, + "longitude": -8.684878336, "lines": [ - "6" + "14" ] }, { - "stopId": 14421, + "stopId": "vitrasa:7480", "name": { - "original": "Estrada das Prantas (fronte Campo de Béisbol)" + "original": "Rúa Da Cruz, 19" }, - "latitude": 42.186683264, - "longitude": -8.669320703, + "latitude": 42.200729887, + "longitude": -8.684258964, "lines": [ - "15C" + "14" ] }, { - "stopId": 14422, + "stopId": "vitrasa:7490", "name": { - "original": "Estrada das Plantas (Campo de Béisbol)" + "original": "Rúa do Carballal, 52" }, - "latitude": 42.18695315, - "longitude": -8.669514066, + "latitude": 42.194091099, + "longitude": -8.683392611, "lines": [ - "15C" + "14" ] }, { - "stopId": 14425, + "stopId": "vitrasa:750", "name": { - "original": "Avda. do Alcalde Gregorio Espino, 2" + "original": "Avda. do Aeroporto, 184" }, - "latitude": 42.232253792, - "longitude": -8.707208575, + "latitude": 42.233103986, + "longitude": -8.68716283, "lines": [ - "31" + "A", + "9B", + "27" ] }, { - "stopId": 14475, + "stopId": "vitrasa:7500", "name": { - "original": "Rúa de Barcelona, 78" + "original": "Rúa do Carballal, 18" }, - "latitude": 42.222992354, - "longitude": -8.728300382, + "latitude": 42.196388225, + "longitude": -8.684151676, "lines": [ - "C1" + "14" ] }, { - "stopId": 14890, + "stopId": "vitrasa:7540", "name": { - "original": "Rúa das Teixugueiras, 25" + "original": "Avda. do Tranvía, 100" }, - "latitude": 42.207545331, - "longitude": -8.758718406, + "latitude": 42.226657624, + "longitude": -8.659447983, "lines": [ - "5B", - "13", - "N4", - "U1", - "H", - "PSA 1", - "PSA 4" + "11", + "15A" ] }, { - "stopId": 14892, + "stopId": "vitrasa:7590", "name": { - "original": "Rúa do Conde de Torrecedeira, 123" + "original": "Avda. do Tranvía, 40" }, - "latitude": 42.224929414, - "longitude": -8.735414067, + "latitude": 42.225201551, + "longitude": -8.667101684, "lines": [ - "C1", - "C3d", - "A", - "9B", - "15C", - "N4", - "H1" + "11", + "15A" ] }, { - "stopId": 14893, + "stopId": "vitrasa:760", "name": { - "original": "Rúa de Manuel Costas Bastos, 26" + "original": "Avda. do Aeroporto, 240" }, - "latitude": 42.243157956, - "longitude": -8.666962176, + "latitude": 42.236775611, + "longitude": -8.683736566, "lines": [ + "A", "9B", - "27", - "28" + "27" ] }, { - "stopId": 14894, + "stopId": "vitrasa:7600", "name": { - "original": "Avda. do Alcalde Portanet, 8" + "original": "Rúa dos Chans (cruce Subida Chans)" }, - "latitude": 42.211736934, - "longitude": -8.733337505, + "latitude": 42.198544554, + "longitude": -8.677824939, "lines": [ - "7", - "12B", - "17", - "H1", - "VTS" + "14" ] }, { - "stopId": 14895, + "stopId": "vitrasa:7610", "name": { - "original": "Rúa do Areiro (cruce Camiño das Laxes)" + "original": "Rúa das Chans (Colexio)" }, - "latitude": 42.241392275, - "longitude": -8.681203235, + "latitude": 42.196647395, + "longitude": -8.677801904, "lines": [ - "28" + "14" ] }, { - "stopId": 14896, + "stopId": "vitrasa:7620", "name": { - "original": "Rúa do Areiro, 93" + "original": "Rúa das Chans, 97" }, - "latitude": 42.241385532, - "longitude": -8.681400937, + "latitude": 42.189146758, + "longitude": -8.678708548, "lines": [ - "28" + "14" ] }, { - "stopId": 14897, + "stopId": "vitrasa:7630", "name": { - "original": "Camiño do Arieiro (fronte 13)" + "original": "Rúa do Salgueiro, 6" }, - "latitude": 42.213239161, - "longitude": -8.67854147, + "latitude": 42.243135911, + "longitude": -8.66173721, "lines": [ - "31" + "9B", + "28" ] }, { - "stopId": 14898, + "stopId": "vitrasa:7640", "name": { - "original": "Camiño do Arieiro, 13" + "original": "Rúa da Rabadeira, 135" }, - "latitude": 42.213239161, - "longitude": -8.678369808, + "latitude": 42.241620781, + "longitude": -8.652000054, "lines": [ - "31" + "9B", + "28" ] }, { - "stopId": 14899, + "stopId": "vitrasa:7650", "name": { - "original": "Rúa de López Mora, 33" + "original": "Rúa da Rabadeira, 64" }, - "latitude": 42.225485719, - "longitude": -8.730501434, + "latitude": 42.239043121, + "longitude": -8.650247888, "lines": [ - "5A", - "5B", - "12A" + "9B", + "27", + "28" ] }, { - "stopId": 14900, + "stopId": "vitrasa:7660", "name": { - "original": "Rúa de Martín Echegaray, 24" + "original": "Rúa da Rabadeira, 104" }, - "latitude": 42.217196117, - "longitude": -8.743726669, + "latitude": 42.241610852, + "longitude": -8.651865944, "lines": [ - "23", - "N4" + "9B", + "27", + "28" ] }, { - "stopId": 14901, + "stopId": "vitrasa:7662", "name": { - "original": "Avda. de Castelao, 1" + "original": "Rúa de Recaré, 6" }, - "latitude": 42.220211003, - "longitude": -8.734183023, + "latitude": 42.211013462, + "longitude": -8.68554295, "lines": [ - "C3i", - "10", - "11", - "15A", - "U1" + "14" ] }, { - "stopId": 14903, + "stopId": "vitrasa:7664", "name": { - "original": "Rúa de Pi i Margall, 66" + "original": "Rúa de Recaré (cruce Segade)" }, - "latitude": 42.23174719, - "longitude": -8.731081308, + "latitude": 42.211201327, + "longitude": -8.688838517, "lines": [ - "VTS" + "14" ] }, { - "stopId": 14905, + "stopId": "vitrasa:7666", "name": { - "original": "Camiño da Devesa (Cemiterio)" + "original": "Rúa de Recaré, 3" }, - "latitude": 42.249981353, - "longitude": -8.667186504, + "latitude": 42.210514541, + "longitude": -8.685349777, "lines": [ - "9B" + "14" ] }, { - "stopId": 14906, + "stopId": "vitrasa:7668", "name": { - "original": "Rúa da Rabadeira, 6" + "original": "Rúa de Recaré, 39" }, - "latitude": 42.232479787, - "longitude": -8.654890792, + "latitude": 42.211022529, + "longitude": -8.688318168, "lines": [ - "9B", - "27" + "14" ] }, { - "stopId": 14907, + "stopId": "vitrasa:7670", "name": { - "original": "Rúa da Rabadeira, 24" + "original": "Rúa San Cristobo, 6" }, - "latitude": 42.233655479, - "longitude": -8.653300242, + "latitude": 42.235169136, + "longitude": -8.671176685, "lines": [ - "9B", - "27" + "9B" ] }, { - "stopId": 14908, + "stopId": "vitrasa:7680", "name": { - "original": "Rúa da Rabadeira, 17" + "original": "Rúa San Cristobo, 117" }, - "latitude": 42.233829075, - "longitude": -8.653458259, + "latitude": 42.240866745, + "longitude": -8.669273191, "lines": [ - "9B" + "9B", + "27" ] }, { - "stopId": 14909, + "stopId": "vitrasa:7690", "name": { - "original": "Rúa da Rabadeira, 11" + "original": "Rúa San Cristobo, 11" }, - "latitude": 42.232663198, - "longitude": -8.655097059, + "latitude": 42.235468446, + "longitude": -8.670649153, "lines": [ - "9B" + "9B", + "27" ] }, { - "stopId": 14910, + "stopId": "vitrasa:770", "name": { - "original": "Estrada do Marco, 4" + "original": "Avda. do Aeroporto, 273" }, - "latitude": 42.21025095, - "longitude": -8.704036986, + "latitude": 42.238939528, + "longitude": -8.681422497, "lines": [ - "H3" + "A", + "9B", + "27" ] }, { - "stopId": 14911, + "stopId": "vitrasa:7700", "name": { - "original": "Estrada do Marco, 16" + "original": "Rúa San Cristobo, 30" }, - "latitude": 42.208830737, - "longitude": -8.706971174, + "latitude": 42.236478263, + "longitude": -8.669194381, "lines": [ - "H3" + "9B" ] }, { - "stopId": 15001, + "stopId": "vitrasa:7710", "name": { - "original": "Rúa Regueiro do Forno (Vial C) Centro de Servicios" + "original": "Rúa San Cristobo, 41" }, - "latitude": 42.176036704, - "longitude": -8.709480986, + "latitude": 42.236825775, + "longitude": -8.669313413, "lines": [ - "PTL" + "9B", + "27" ] }, { - "stopId": 15002, + "stopId": "vitrasa:7720", "name": { - "original": "PTL 2" + "original": "Rúa San Cristobo, 80" }, - "latitude": 42.177194637, - "longitude": -8.707850807, + "latitude": 42.24099726, + "longitude": -8.669077286, "lines": [ - "PTL" + "9B" ] }, { - "stopId": 15003, + "stopId": "vitrasa:7730", "name": { - "original": "PTL 3" + "original": "Rúa do Salgueiro, 24" }, - "latitude": 42.178231278, - "longitude": -8.706474418, + "latitude": 42.241580812, + "longitude": -8.658065611, "lines": [ - "PTL" + "9B", + "28" ] }, { - "stopId": 15004, + "stopId": "vitrasa:7740", "name": { - "original": "PTL 4" + "original": "Rúa de Salgueiro, 23" }, - "latitude": 42.176503017, - "longitude": -8.710007303, + "latitude": 42.241658253, + "longitude": -8.658202403, "lines": [ - "PTL" + "9B", + "27", + "28" ] }, { - "stopId": 20009, + "stopId": "vitrasa:7750", "name": { - "original": "Estrada Herville, 16" + "original": "Rúa do Salgueiro, 1" }, - "latitude": 42.154843231, - "longitude": -8.67357438, + "latitude": 42.243330503, + "longitude": -8.661852545, "lines": [ - "7" + "9B", + "27", + "28" ] }, { - "stopId": 20010, + "stopId": "vitrasa:7760", "name": { - "original": "Avda. de Balaídos, 69" + "original": "Camiño das Cunchadas (cruce Rúa da Senra)" }, - "latitude": 42.212824845, - "longitude": -8.737161077, + "latitude": 42.193300199, + "longitude": -8.681021538, "lines": [ - "A", - "16", - "23", - "H" + "14" ] }, { - "stopId": 20011, + "stopId": "vitrasa:7762", "name": { - "original": "Avda. de Balaídos, 11" + "original": "Rúa de Segade, 41" }, - "latitude": 42.213089061, - "longitude": -8.733392573, + "latitude": 42.209575101, + "longitude": -8.690548833, "lines": [ - "A", - "16", - "23", - "H" + "14" ] }, { - "stopId": 20012, + "stopId": "vitrasa:7764", "name": { - "original": "Avda. de Castrelos, 33" + "original": "Rúa de Segade, 86" }, - "latitude": 42.215888032, - "longitude": -8.732331627, + "latitude": 42.209654568, + "longitude": -8.690495189, "lines": [ - "A", - "16", - "23", - "27", - "H2" + "14" ] }, { - "stopId": 20013, + "stopId": "vitrasa:780", "name": { - "original": "Avda. de Castrelos, 116" + "original": "Avda. do Aeroporto, 298" }, - "latitude": 42.215905917, - "longitude": -8.732471102, + "latitude": 42.238554288, + "longitude": -8.680663432, "lines": [ - "7", - "12B", - "17", - "27", - "H2", - "VTS", - "PTL" + "A", + "9B", + "27" ] }, { - "stopId": 20018, + "stopId": "vitrasa:7810", "name": { - "original": "Estrada Herville, 70" + "original": "Estrada Miraflores (Parque Parróco Xesús Alonso)" }, - "latitude": 42.151451604, - "longitude": -8.673803367, + "latitude": 42.217817959, + "longitude": -8.710940668, "lines": [ - "7" + "18A", + "18B", + "18H" ] }, { - "stopId": 20019, + "stopId": "vitrasa:7830", "name": { - "original": "Subida aos Padróns, 165" + "original": "Rúa de Saa, 72" }, - "latitude": 42.149222193, - "longitude": -8.679363987, + "latitude": 42.20297089, + "longitude": -8.707945762, "lines": [ - "7" + "18B", + "H3" ] }, { - "stopId": 20020, + "stopId": "vitrasa:7840", "name": { - "original": "Subida aos Padróns (cruce Parque Forestal)" + "original": "Rúa da Saa do Monte, 73" }, - "latitude": 42.151606055, - "longitude": -8.679299082, + "latitude": 42.203039989, + "longitude": -8.710936623, "lines": [ - "7" + "18B" ] }, { - "stopId": 20021, + "stopId": "vitrasa:7849", "name": { - "original": "Subida aos Padróns (fronte 34)" + "original": "Rúa de Saá, 105" }, - "latitude": 42.152770176, - "longitude": -8.686251828, + "latitude": 42.20622236, + "longitude": -8.707026831, "lines": [ - "7" + "18B" ] }, { - "stopId": 20022, + "stopId": "vitrasa:7850", "name": { - "original": "Rúa da Vía Norte (Hospital)" + "original": "Rúa de Saa, 57" }, - "latitude": 42.234622237, - "longitude": -8.707758443, + "latitude": 42.202923204, + "longitude": -8.708085237, "lines": [ - "24" + "H3" ] }, { - "stopId": 20023, + "stopId": "vitrasa:7860", "name": { - "original": "Rúa da Vía Norte - Est. Intermodal - C.C." + "original": "Rúa de Severino Cobas, 73" }, - "latitude": 42.234062973, - "longitude": -8.712195759, + "latitude": 42.225436283, + "longitude": -8.68893946, "lines": [ - "24" + "25" ] }, { - "stopId": 20024, + "stopId": "vitrasa:7870", "name": { - "original": "Rúa das Teixugueiras, 34" + "original": "Baixada á Praia, 4" }, - "latitude": 42.207634066, - "longitude": -8.758920861, + "latitude": 42.166897971, + "longitude": -8.802204658, "lines": [ - "5B", - "13", - "N4" + "C3d", + "10", + "12A" ] }, { - "stopId": 20025, + "stopId": "vitrasa:7880", "name": { - "original": "Rúa das Teixugueiras, 38" + "original": "Barrio da Salgueira, 106" }, - "latitude": 42.206553268, - "longitude": -8.760122491, + "latitude": 42.222364236, + "longitude": -8.718898254, "lines": [ - "5B", - "13", - "N4" + "18A" ] }, { - "stopId": 20026, + "stopId": "vitrasa:7890", "name": { - "original": "Rúa das Teixugueiras, 29" + "original": "Avda. de Cesáreo Vázquez, 61" }, - "latitude": 42.206488366, - "longitude": -8.759906624, + "latitude": 42.180764289, + "longitude": -8.80256063, "lines": [ - "5B", - "13", - "N4", - "U1", - "H", - "PSA 1", - "PSA 4" + "11", + "12A" ] }, { - "stopId": 20027, + "stopId": "vitrasa:790", "name": { - "original": "Avda. de Castelao, 64" + "original": "Avda. do Aeroporto, 325" }, - "latitude": 42.217691983, - "longitude": -8.749585877, + "latitude": 42.237426811, + "longitude": -8.675474476, "lines": [ - "C3d", - "4A", - "4C", - "5B", - "10", - "12A", - "13", - "15A", - "N4", - "PSA 1", - "PSA 4" + "A", + "9B", + "27" ] }, { - "stopId": 20029, + "stopId": "vitrasa:7900", "name": { - "original": "Subida á Madroa (fronte Campo Fútbol)" + "original": "Rúa de San Paio (cruce Camiño da Quintela)" }, - "latitude": 42.245921506, - "longitude": -8.673014474, + "latitude": 42.20492472, + "longitude": -8.768904292, "lines": [ - "9B", - "28" + "12A" ] }, { - "stopId": 20030, + "stopId": "vitrasa:7910", "name": { - "original": "Subida á Madroa (Campo Fútbol)" + "original": "Rúa de San Paio (Igrexa)" }, - "latitude": 42.247859379, - "longitude": -8.674363625, + "latitude": 42.208040013, + "longitude": -8.767458581, "lines": [ - "9B", - "28" + "12A" ] }, { - "stopId": 20041, + "stopId": "vitrasa:7920", "name": { - "original": "Rúa da Cabalaría, 91" + "original": "Rúa de San Paio (Torreiro)" }, - "latitude": 42.233622103, - "longitude": -8.689209566, + "latitude": 42.208926096, + "longitude": -8.765294038, "lines": [ - "27", - "28" + "12A" ] }, { - "stopId": 20042, + "stopId": "vitrasa:7930", "name": { - "original": "Rúa da Cabalaría, 148" + "original": "Rúa de San Paio, 136" }, - "latitude": 42.233723398, - "longitude": -8.689094231, + "latitude": 42.208999211, + "longitude": -8.765346753, "lines": [ - "28" + "4A", + "12A" ] }, { - "stopId": 20043, + "stopId": "vitrasa:7940", "name": { - "original": "Rúa do Areiro, 20" + "original": "Rúa de San Paio, 220" }, - "latitude": 42.236036786, - "longitude": -8.686656768, + "latitude": 42.207987966, + "longitude": -8.767688321, "lines": [ - "28" + "4A", + "12A" ] }, { - "stopId": 20044, + "stopId": "vitrasa:7950", "name": { - "original": "Rúa de Martín Echegaray, 7" + "original": "Rúa de San Paio, 242" }, - "latitude": 42.215220874, - "longitude": -8.742680967, + "latitude": 42.206253649, + "longitude": -8.768742472, "lines": [ - "23", - "N4" + "4A", + "12A" ] }, { - "stopId": 20045, + "stopId": "vitrasa:7960", "name": { - "original": "Rúa de Xestoso, 4" + "original": "Rúa de San Paio, 284" }, - "latitude": 42.200532989, - "longitude": -8.674075447, + "latitude": 42.202111343, + "longitude": -8.769560881, "lines": [ - "15B" + "4A", + "12A" ] }, { - "stopId": 20046, + "stopId": "vitrasa:7970", "name": { - "original": "Rúa de Xestoso, 12" + "original": "Rúa de San Paio (fronte 58)" }, - "latitude": 42.201968444, - "longitude": -8.67477879, + "latitude": 42.213820465, + "longitude": -8.760651176, "lines": [ - "15B" + "12A" ] }, { - "stopId": 20047, + "stopId": "vitrasa:7980", "name": { - "original": "Rúa do Xestoso, 72" + "original": "Rúa de San Paio, 54" }, - "latitude": 42.204330306, - "longitude": -8.674670483, + "latitude": 42.21430717, + "longitude": -8.760710185, "lines": [ - "15B" + "4A", + "12A" ] }, { - "stopId": 20048, + "stopId": "vitrasa:7990", "name": { - "original": "Avda. de Cesáreo Vázquez (cruce Camiño Amariz Lourenzo)" + "original": "Rúa de San Paio, 76" }, - "latitude": 42.182684406, - "longitude": -8.802402364, + "latitude": 42.212612622, + "longitude": -8.760868435, "lines": [ - "11", + "4A", "12A" ] }, { - "stopId": 20049, + "stopId": "vitrasa:80", "name": { - "original": "Avda. de Cesáreo Vázquez, 62" + "original": "Rúa da Lagoa, 46" }, - "latitude": 42.18238342, - "longitude": -8.802126069, + "latitude": 42.200132216, + "longitude": -8.700535777, "lines": [ - "11" + "18A", + "18B" ] }, { - "stopId": 20050, + "stopId": "vitrasa:800", "name": { - "original": "Rúa de Severino Cobas, 186" + "original": "Avda. do Aeroporto, 328" }, - "latitude": 42.225550059, - "longitude": -8.686684563, + "latitude": 42.237801674, + "longitude": -8.676524783, "lines": [ - "25" + "A", + "9B", + "27" ] }, { - "stopId": 20051, + "stopId": "vitrasa:8000", "name": { - "original": "Rúa de Severino Cobas, 89" + "original": "Rúa de San Paio, 83" }, - "latitude": 42.225652904, - "longitude": -8.686624017, + "latitude": 42.212034517, + "longitude": -8.760916715, "lines": [ - "25" + "12A" ] }, { - "stopId": 20052, + "stopId": "vitrasa:8010", "name": { - "original": "Rúa de Aragón, 21" + "original": "Rúa de Sanjurjo Badía, 106" }, - "latitude": 42.232748414, - "longitude": -8.702539655, + "latitude": 42.245018172, + "longitude": -8.703349646, "lines": [ - "4A", - "H3" + "C3d", + "5B", + "10", + "17", + "31", + "U2", + "H2", + "H3", + "PSA 1" ] }, { - "stopId": 20053, + "stopId": "vitrasa:8020", "name": { - "original": "Rúa de Ángel de Lema (cruce Paraixal)" + "original": "Rúa de Sanjurjo Badía, 123" }, - "latitude": 42.248962858, - "longitude": -8.688272303, + "latitude": 42.246941664, + "longitude": -8.700376378, "lines": [ "C3i", - "10" + "5B", + "10", + "N1", + "H3", + "VTS" ] }, { - "stopId": 20054, + "stopId": "vitrasa:8030", "name": { - "original": "Rúa de Ángel de Lema, 33" + "original": "Rúa de Sanjurjo Badía, 136" }, - "latitude": 42.248897377, - "longitude": -8.689150714, + "latitude": 42.246056261, + "longitude": -8.701684825, "lines": [ "C3d", - "10" + "5B", + "10", + "17", + "31", + "U2", + "H2", + "H3", + "PSA 1" ] }, { - "stopId": 20057, + "stopId": "vitrasa:8040", "name": { - "original": "Estación Ferrocarril Guixar" + "original": "Rúa de Sanjurjo Badía, 167" }, - "latitude": 42.238843911, - "longitude": -8.713008504, + "latitude": 42.24874024, + "longitude": -8.697546209, "lines": [ - "A", + "C3i", "5B", - "16", - "24" + "10", + "N1", + "H3", + "VTS" ] }, { - "stopId": 20058, + "stopId": "vitrasa:8050", "name": { - "original": "Rúa do Canceleiro, 6" + "original": "Rúa de Sanjurjo Badía, 202" }, - "latitude": 42.238435471, - "longitude": -8.714413687, + "latitude": 42.247765296, + "longitude": -8.698918203, "lines": [ - "A", + "C3d", "5B", - "16", - "24" + "10", + "17", + "31", + "U2", + "H2", + "H3", + "PSA 1" ] }, { - "stopId": 20059, + "stopId": "vitrasa:8060", "name": { - "original": "Rúa de Manuel Álvarez (fronte 10)" + "original": "Rúa de Sanjurjo Badía, 79" }, - "latitude": 42.222745522, - "longitude": -8.677932515, + "latitude": 42.244926864, + "longitude": -8.703642393, "lines": [ - "25", - "31", - "H3" + "C3i", + "5B", + "10", + "N1", + "H3", + "VTS" ] }, { - "stopId": 20060, + "stopId": "vitrasa:8090", "name": { - "original": "Rúa de Manuel Álvarez, 10" + "original": "Estrada Miraflores (Centro Saúde)" }, - "latitude": 42.22282586, - "longitude": -8.678077606, + "latitude": 42.216151643, + "longitude": -8.715616477, "lines": [ - "25", - "31", - "H3" + "18A", + "18B", + "18H" ] }, { - "stopId": 20061, + "stopId": "vitrasa:810", "name": { - "original": "Rúa de Martín Echegaray (Colexio)" + "original": "Avda. do Aeroporto, 350" }, - "latitude": 42.217568173, - "longitude": -8.744018511, + "latitude": 42.235521261, + "longitude": -8.67465521, "lines": [ - "23", - "N4" + "A", + "9B", + "27" ] }, { - "stopId": 20062, + "stopId": "vitrasa:8100", "name": { - "original": "Avda. de Beiramar, 1" + "original": "Estrada da Gándara, 79" }, - "latitude": 42.236143706, - "longitude": -8.73180718, - "lines": [ - "10", - "15B" + "latitude": 42.160735669, + "longitude": -8.709771124, + "lines": [ + "7" ] }, { - "stopId": 20071, + "stopId": "vitrasa:8110", "name": { - "original": "Rúa de Xestoso (fronte 105)" + "original": "Estrada da Gándara (Seoane)" }, - "latitude": 42.205511653, - "longitude": -8.672824803, + "latitude": 42.160670051, + "longitude": -8.709878412, "lines": [ - "15B" + "7" ] }, { - "stopId": 20072, + "stopId": "vitrasa:8120", "name": { - "original": "Camiño do Pouso" + "original": "Rúa de Severino Cobas (cruce Trav. de Santa Cristina)" }, - "latitude": 42.196643694, - "longitude": -8.671663218, + "latitude": 42.22493632, + "longitude": -8.694369092, "lines": [ - "15B" + "25" ] }, { - "stopId": 20075, + "stopId": "vitrasa:8130", "name": { - "original": "Avda. de Castelao, 65" + "original": "Rúa de Severino Cobas, 51" }, - "latitude": 42.218011215, - "longitude": -8.745369728, + "latitude": 42.225485938, + "longitude": -8.692235895, "lines": [ - "C3i", - "4A", - "4C", - "10", - "11", - "12A", - "15A", - "N1", - "N4", - "U1" + "25" ] }, { - "stopId": 20076, + "stopId": "vitrasa:8140", "name": { - "original": "Avda. de Castelao, 25" + "original": "Rúa de Severino Cobas, 14" }, - "latitude": 42.21901679, - "longitude": -8.739919147, + "latitude": 42.224657696, + "longitude": -8.696532794, "lines": [ - "C3i", - "4A", - "4C", - "10", - "11", - "12A", - "15A", - "N1", - "U1" + "25" ] }, { - "stopId": 20077, + "stopId": "vitrasa:8150", "name": { - "original": "Avda. de Castelao, 40" + "original": "Rúa de Severino Cobas, 3" }, - "latitude": 42.219259727, - "longitude": -8.739809435, + "latitude": 42.225076787, + "longitude": -8.697168477, "lines": [ - "C3d", - "4A", - "4C", - "5B", - "10", - "12A", - "13", - "15A", - "PSA 1", - "PSA 4" + "25" ] }, { - "stopId": 20078, + "stopId": "vitrasa:8160", "name": { - "original": "Avda. das Camelias, 3" + "original": "Rúa de Severino Cobas, 88" }, - "latitude": 42.233341329, - "longitude": -8.728967219, + "latitude": 42.224884679, + "longitude": -8.694275214, "lines": [ - "4A", - "4C", - "11", - "12B", - "17", - "27", - "N1" + "25" ] }, { - "stopId": 20079, + "stopId": "vitrasa:8170", "name": { - "original": "Avda. das Camelias, 8" + "original": "Rúa de Severino Cobas, 140" }, - "latitude": 42.23341294, - "longitude": -8.729045156, + "latitude": 42.225428901, + "longitude": -8.688744499, "lines": [ - "4A", - "4C", - "5B", - "7", - "12A", - "12B", - "17", - "27", - "PSA 4" + "25" ] }, { - "stopId": 20080, + "stopId": "vitrasa:8180", "name": { - "original": "Avda. de Santa Mariña, 68" + "original": "Estrada da Garrida, 291" }, - "latitude": 42.221674556, - "longitude": -8.660937347, + "latitude": 42.173993336, + "longitude": -8.70329684, "lines": [ - "11" + "7" ] }, { - "stopId": 20081, + "stopId": "vitrasa:8190", "name": { - "original": "Subida aos Padróns (cruce Camiño da Chan da Rabicha)" + "original": "Subida da Costa (Colina)" }, - "latitude": 42.151852858, - "longitude": -8.684956786, + "latitude": 42.214660701, + "longitude": -8.722840401, "lines": [ - "7" + "A" ] }, { - "stopId": 20082, + "stopId": "vitrasa:820", "name": { - "original": "Avda. de Santa Mariña (fronte 66)" + "original": "Avda. do Aeroporto, 377" }, - "latitude": 42.221758032, - "longitude": -8.661135597, + "latitude": 42.234766626, + "longitude": -8.671305131, "lines": [ - "11" + "A", + "9B" ] }, { - "stopId": 20083, + "stopId": "vitrasa:8200", "name": { - "original": "Rúa Castañal, 6" + "original": "Subida da Costa, 21" }, - "latitude": 42.188074669, - "longitude": -8.701928367, + "latitude": 42.214714337, + "longitude": -8.723068388, "lines": [ - "27" + "A" ] }, { - "stopId": 20084, + "stopId": "vitrasa:8210", "name": { - "original": "Rúa Castañal, 26" + "original": "Subida da Costa, 3" }, - "latitude": 42.18711079, - "longitude": -8.699519743, + "latitude": 42.214377129, + "longitude": -8.725964538, "lines": [ - "27" + "A" ] }, { - "stopId": 20085, + "stopId": "vitrasa:8220", "name": { - "original": "Rúa Castañal (cruce Camiño das Presas)" + "original": "Camiño da Corredoura, 3" }, - "latitude": 42.185852445, - "longitude": -8.696410892, + "latitude": 42.213993258, + "longitude": -8.726740824, "lines": [ - "27" + "A" ] }, { - "stopId": 20086, + "stopId": "vitrasa:8230", "name": { - "original": "Estrada dos Seixiños, 67" + "original": "Rúa dos Chans (cruce Camiño Regada)" }, - "latitude": 42.190645281, - "longitude": -8.696150583, + "latitude": 42.199146625, + "longitude": -8.676419461, "lines": [ - "27" + "14" ] }, { - "stopId": 20087, + "stopId": "vitrasa:8240", "name": { - "original": "Estrada dos Seixiños, 23" + "original": "Subida á Madroa (Urbanización)" }, - "latitude": 42.194639373, - "longitude": -8.696795357, + "latitude": 42.243382567, + "longitude": -8.674125307, "lines": [ - "27" + "9B", + "27", + "28" ] }, { - "stopId": 20089, + "stopId": "vitrasa:8250", "name": { - "original": "Porriño - Padre Seixas ©" + "original": "Subida á Madroa, 15" }, - "latitude": 42.213044566, - "longitude": -8.751396835, + "latitude": 42.242669731, + "longitude": -8.670096629, "lines": [ - "16" + "9B", + "27", + "28" ] }, { - "stopId": 20091, + "stopId": "vitrasa:8282", "name": { - "original": "Camiño da Miragaia, 11-13" + "original": "Subida á Mouteira, 6" }, - "latitude": 42.238164803, - "longitude": -8.711212761, + "latitude": 42.206854901, + "longitude": -8.686031058, "lines": [ - "A", - "5B", - "16", - "24" + "14" ] }, { - "stopId": 20094, + "stopId": "vitrasa:8284", "name": { - "original": "Rúa das Mantelas (fronte 63)" + "original": "Subida á Mouteira (Parque Monte Calvario)" }, - "latitude": 42.22518736, - "longitude": -8.717399288, + "latitude": 42.206779403, + "longitude": -8.686218813, "lines": [ - "18A" + "14" ] }, { - "stopId": 20095, + "stopId": "vitrasa:8290", "name": { - "original": "Estrada Vella de Madrid, 107A" + "original": "Subida das Ánimas, 31" }, - "latitude": 42.219212419, - "longitude": -8.685836356, + "latitude": 42.235646525, + "longitude": -8.685908988, "lines": [ - "12A", - "12B", - "13", - "H3" + "27", + "28" ] }, { - "stopId": 20096, + "stopId": "vitrasa:830", "name": { - "original": "Estrada Vella de Madrid (fronte 107A)" + "original": "Avda. do Aeroporto, 378" }, - "latitude": 42.219128991, - "longitude": -8.685753208, + "latitude": 42.234673289, + "longitude": -8.671348046, "lines": [ - "12A", - "12B", - "13", - "U2", - "H3" + "A", + "9B", + "27" ] }, { - "stopId": 20099, + "stopId": "vitrasa:8300", "name": { - "original": "Rúa de Camilo Veiga, 48" + "original": "Subida das Ánimas, 32" }, - "latitude": 42.222390674, - "longitude": -8.752507356, + "latitude": 42.23556225, + "longitude": -8.686044366, "lines": [ - "C3i", - "15B", - "15C", - "N1" + "27", + "28" ] }, { - "stopId": 20100, + "stopId": "vitrasa:8330", "name": { - "original": "Rúa de Camilo Veiga, 6" + "original": "Rúa de Tomás A. Alonso, 86" }, - "latitude": 42.223195763, - "longitude": -8.749650702, + "latitude": 42.223897608, + "longitude": -8.740424721, "lines": [ "C3i", "15B", @@ -14240,650 +14360,841 @@ ] }, { - "stopId": 20102, + "stopId": "vitrasa:8340", "name": { - "original": "H. A. Cunqueiro (Porta Principal)" + "original": "Rúa de Tomás A. Alonso, 137" }, - "latitude": 42.191034002, - "longitude": -8.714303116, + "latitude": 42.223840474, + "longitude": -8.740432891, "lines": [ - "6", - "12B", - "18H", - "27", - "H1", - "H2", - "H3", + "C3d", + "13", + "15B", + "15C", + "U1", "H" ] }, { - "stopId": 20103, + "stopId": "vitrasa:8370", "name": { - "original": "Avda. do Fragoso, 21" + "original": "Rúa de Tomás A. Alonso, 220" }, - "latitude": 42.218946899, - "longitude": -8.733670293, + "latitude": 42.223984208, + "longitude": -8.751326546, "lines": [ - "7", - "12B", - "17", - "N4", - "H1" + "C3d", + "C3i" ] }, { - "stopId": 20104, + "stopId": "vitrasa:8390", "name": { - "original": "Rúa de Emilia Pardo Bazán, 134" + "original": "Rúa de Tomás A. Alonso, 251" }, - "latitude": 42.220938435, - "longitude": -8.709621883, + "latitude": 42.223510532, + "longitude": -8.748903264, "lines": [ - "14" + "C3d", + "13", + "15B", + "15C", + "U1", + "H" ] }, { - "stopId": 20105, + "stopId": "vitrasa:840", "name": { - "original": "Rúa de Emilia Pardo Bazán, 121" + "original": "Avda. do Aeroporto, 43" }, - "latitude": 42.221232035, - "longitude": -8.709808647, + "latitude": 42.234904325, + "longitude": -8.699245802, "lines": [ - "14" + "A", + "4A", + "9B", + "24", + "27", + "28" ] }, { - "stopId": 20107, + "stopId": "vitrasa:8410", "name": { - "original": "Estrada do Porto (Lavadero)" + "original": "Rúa de Tomás Paredes (fronte 108)" }, - "latitude": 42.188244696, - "longitude": -8.703164368, + "latitude": 42.218006346, + "longitude": -8.754154367, "lines": [ - "6", - "27" + "C3d", + "10", + "15B" ] }, { - "stopId": 20110, + "stopId": "vitrasa:8420", "name": { - "original": "Rúa de Manuel Castro, 10" + "original": "Rúa de Tomás Paredes, 114" }, - "latitude": 42.213797254, - "longitude": -8.741472696, + "latitude": 42.218031265, + "longitude": -8.754258995, "lines": [ - "23", - "N4" + "C3i", + "10" ] }, { - "stopId": 20111, + "stopId": "vitrasa:8430", "name": { - "original": "H. A. Cunqueiro (Hospital de Día)" + "original": "Rúa de Tomás Paredes, 9" }, - "latitude": 42.187585838, - "longitude": -8.716278919, + "latitude": 42.221229518, + "longitude": -8.753411657, "lines": [ - "A", - "6", - "12B", - "18H", - "27", - "H1", - "H2", - "H3", - "H" + "C3d", + "10", + "15B" ] }, { - "stopId": 20112, + "stopId": "vitrasa:8440", "name": { - "original": "H. A. Cunqueiro (Urxencias)" + "original": "Rúa de Tomás Paredes, 86" }, - "latitude": 42.188578188, - "longitude": -8.713087125, + "latitude": 42.220192578, + "longitude": -8.754164587, "lines": [ - "6", - "12B", - "18H", - "H1", - "H3", - "H" + "C3i", + "10" ] }, { - "stopId": 20113, + "stopId": "vitrasa:8450", "name": { - "original": "Praza de América, 3 (Dirección Hospital)" + "original": "Rúa do Conde de Torrecedeira (Parque)" }, - "latitude": 42.220876566, - "longitude": -8.733367644, + "latitude": 42.231511437, + "longitude": -8.732178, "lines": [ - "12B", + "C1", + "C3d", + "A", + "5A", + "9B", + "15C", "N4", - "H1", - "H2", - "PTL" + "H1" ] }, { - "stopId": 20114, + "stopId": "vitrasa:8460", "name": { - "original": "Estrada do Porto (fronte Lavadero)" + "original": "Rúa do Conde de Torrecedeira, 105" }, - "latitude": 42.18846205, - "longitude": -8.703352711, + "latitude": 42.227500225, + "longitude": -8.734096707, "lines": [ - "6" + "C1", + "C3d", + "A", + "9B", + "15C", + "N4", + "H1" ] }, { - "stopId": 20115, + "stopId": "vitrasa:8470", "name": { - "original": "Estrada do Porto (fronte cruce Rúa das Sueiras)" + "original": "Rúa do Conde de Torrecedeira, 21" }, - "latitude": 42.190100441, - "longitude": -8.705453204, + "latitude": 42.234106639, + "longitude": -8.731302569, "lines": [ - "6" + "C1", + "C3d", + "A", + "5A", + "9B", + "15C", + "N4", + "H1" ] }, { - "stopId": 20116, + "stopId": "vitrasa:8480", "name": { - "original": "Estrada da Coutada-Beade, 2" + "original": "Rúa do Conde de Torrecedeira, 81" }, - "latitude": 42.192037327, - "longitude": -8.70573732, + "latitude": 42.229616766, + "longitude": -8.732861043, "lines": [ - "6", - "27" + "C1", + "C3d", + "A", + "5A", + "9B", + "15C", + "N4", + "H1" ] }, { - "stopId": 20117, + "stopId": "vitrasa:8490", "name": { - "original": "Estrada do Porto (cruce Camiño do Frascuelo)" + "original": "Rúa da Travesía de Vigo, 202" }, - "latitude": 42.191616209, - "longitude": -8.706277831, + "latitude": 42.244366441, + "longitude": -8.695452075, "lines": [ - "6", - "27" + "C3i", + "5A", + "N1", + "H3", + "VTS" ] }, { - "stopId": 20118, + "stopId": "vitrasa:850", "name": { - "original": "Rúa Conde de Gondomar" + "original": "Avda. do Aeroporto, 423" }, - "latitude": 42.228358488, - "longitude": -8.719490904, + "latitude": 42.23630176, + "longitude": -8.665791599, "lines": [ - "H2" + "A", + "9B" ] }, { - "stopId": 20119, + "stopId": "vitrasa:8500", "name": { - "original": "H. A. Cunqueiro (chegada)" + "original": "Rúa da Travesía de Vigo, 105" }, - "latitude": 42.190930878, - "longitude": -8.71409354, + "latitude": 42.238455548, + "longitude": -8.703814812, "lines": [ - "6", - "12B", - "H1", - "H3" + "C3d", + "5A", + "31", + "U2", + "H2", + "PSA 1" ] }, { - "stopId": 20124, + "stopId": "vitrasa:8510", "name": { - "original": "Estrada Clara Campoamor, 6" + "original": "Rúa da Travesía de Vigo, 124" }, - "latitude": 42.208989468, - "longitude": -8.729330619, + "latitude": 42.238413145, + "longitude": -8.703563202, "lines": [ - "A", - "12B", - "U1", - "H1", + "C3i", + "5A", + "N1", + "VTS" + ] + }, + { + "stopId": "vitrasa:8520", + "name": { + "original": "Rúa da Travesía de Vigo, 153" + }, + "latitude": 42.241332883, + "longitude": -8.702059906, + "lines": [ + "C3d", + "5A", + "31", + "U2", "H2", - "H", - "PTL" + "PSA 1" ] }, { - "stopId": 20125, + "stopId": "vitrasa:8530", "name": { - "original": "Estrada Clara Campoamor (fronte 6)" + "original": "Rúa da Travesía de Vigo, 158" }, - "latitude": 42.209126911, - "longitude": -8.729344197, + "latitude": 42.241101222, + "longitude": -8.701974032, "lines": [ - "12B", - "H1", - "H2" + "C3i", + "5A", + "N1", + "VTS" ] }, { - "stopId": 20126, + "stopId": "vitrasa:8540", "name": { - "original": "Estrada Clara Campoamor (Rotonda HAC)" + "original": "Rúa da Travesía de Vigo, 193" }, - "latitude": 42.190252452, - "longitude": -8.717998617, + "latitude": 42.242844316, + "longitude": -8.698295825, "lines": [ - "12B", - "18H", - "H1", - "H2" + "C3d", + "5A", + "31", + "U2", + "H2", + "PSA 1" ] }, { - "stopId": 20127, + "stopId": "vitrasa:8550", "name": { - "original": "Estrada Clara Campoamor (fronte Rotonda HAC)" + "original": "Rúa da Travesía de Vigo, 220" }, - "latitude": 42.19007538, - "longitude": -8.718125045, + "latitude": 42.246425568, + "longitude": -8.692950624, "lines": [ - "A", - "12B", - "18H", - "27", - "U1", - "H1", - "H2", - "H", - "PTL" + "C3i", + "5A", + "5B", + "N1", + "H3", + "VTS" ] }, { - "stopId": 20130, + "stopId": "vitrasa:8560", "name": { - "original": "Parque Forestal de Zamáns (Proba Andaina)" + "original": "Rúa da Travesía de Vigo, 213" }, - "latitude": 42.152788309, - "longitude": -8.681902684, + "latitude": 42.24409871, + "longitude": -8.69614733, "lines": [ - "7" + "C3d", + "5A", + "31", + "U2", + "H2", + "H3", + "PSA 1" ] }, { - "stopId": 20132, + "stopId": "vitrasa:8570", "name": { - "original": "Avda. de Galicia, 341" + "original": "Rúa da Travesía de Vigo, 239" }, - "latitude": 42.260473187, - "longitude": -8.67881466, + "latitude": 42.246143319, + "longitude": -8.69359937, "lines": [ - "C3i" + "C3d", + "5A", + "31", + "U2", + "H2", + "H3", + "PSA 1" ] }, { - "stopId": 20136, + "stopId": "vitrasa:8580", "name": { - "original": "Avda. de E. Martínez Garrido, 98" + "original": "Rúa da Travesía de Vigo, 32" }, - "latitude": 42.225764699, - "longitude": -8.704499864, + "latitude": 42.233828086, + "longitude": -8.706311242, "lines": [ - "4C", - "23", + "C3i", + "5A", "31", - "N4", - "PSA 4", + "N1", "VTS" ] }, { - "stopId": 20137, + "stopId": "vitrasa:8590", "name": { - "original": "Camiño da Devesa (Asociación Veciños)" + "original": "Rúa da Travesía de Vigo, 37" }, - "latitude": 42.246563041, - "longitude": -8.669395817, + "latitude": 42.233681224, + "longitude": -8.706702136, "lines": [ - "9B" + "C3d", + "5A", + "31", + "U2", + "H2", + "PSA 1" ] }, { - "stopId": 20139, + "stopId": "vitrasa:860", "name": { - "original": "Estrada Matamá Pazo (fronte 162)" + "original": "Avda. do Aeroporto, 446" }, - "latitude": 42.199144892, - "longitude": -8.758506717, + "latitude": 42.235612667, + "longitude": -8.666529207, "lines": [ - "29" + "A", + "9B", + "27" ] }, { - "stopId": 20141, + "stopId": "vitrasa:8600", "name": { - "original": "Avda. da Ponte (fronte Vigo Memorial)" + "original": "Rúa da Travesía de Vigo, 71" }, - "latitude": 42.21057897, - "longitude": -8.671171189, + "latitude": 42.236350093, + "longitude": -8.70429745, "lines": [ - "12B", - "15B", - "15C" + "C3d", + "5A", + "31", + "U2", + "H2", + "PSA 1" ] }, { - "stopId": 20142, + "stopId": "vitrasa:8610", "name": { - "original": "Camiño do Outeiro, 3" + "original": "Rúa da Travesía de Vigo, 8" }, - "latitude": 42.200738188, - "longitude": -8.714882876, + "latitude": 42.232028188, + "longitude": -8.708203776, "lines": [ - "18B" + "C3i", + "A", + "4A", + "4C", + "5A", + "6", + "9B", + "11", + "15A", + "15B", + "15C", + "23", + "24", + "25", + "27", + "28", + "N1", + "N4" ] }, { - "stopId": 20143, + "stopId": "vitrasa:8620", "name": { - "original": "Rúa das Teixugueiras (fronte 1)" + "original": "Rúa da Travesía de Vigo, 82" }, - "latitude": 42.215448094, - "longitude": -8.756474306, + "latitude": 42.236261792, + "longitude": -8.703994979, "lines": [ - "15A" + "C3i", + "5A", + "N1", + "VTS" ] }, { - "stopId": 20154, + "stopId": "vitrasa:8630", "name": { - "original": "Rúa de Ramiro Pascual (fronte 127)" + "original": "Rúa da Travesía de Vigo, 7" }, - "latitude": 42.192089689, - "longitude": -8.709245389, + "latitude": 42.232045931, + "longitude": -8.708603793, "lines": [ - "27" + "C3d", + "A", + "4A", + "4C", + "5A", + "6", + "9B", + "11", + "15A", + "15B", + "15C", + "23", + "25", + "27", + "28", + "N4", + "U2", + "H2", + "PSA 1", + "PSA 4" ] }, { - "stopId": 20155, + "stopId": "vitrasa:8660", "name": { - "original": "Rúa de Ramiro Pascual, 131" + "original": "Química (CUVI)" }, - "latitude": 42.19217626, - "longitude": -8.708899009, + "latitude": 42.168290977, + "longitude": -8.68342947, "lines": [ - "27" + "A", + "15C", + "U1", + "U2" ] }, { - "stopId": 20156, + "stopId": "vitrasa:8670", "name": { - "original": "Económicas e Empresariais (CUVI 2)" + "original": "Bioloxía (CUVI)" }, - "latitude": 42.169627618, - "longitude": -8.67984145, + "latitude": 42.167687661, + "longitude": -8.685994335, "lines": [ "A", - "15C" + "15C", + "U1", + "U2" ] }, { - "stopId": 20157, + "stopId": "vitrasa:8680", "name": { - "original": "Estrada do Porto, 88" + "original": "Económicas e Empresariais (CUVI)" }, - "latitude": 42.185615419, - "longitude": -8.702424678, + "latitude": 42.169603028, + "longitude": -8.680108895, "lines": [ - "6" + "A", + "15C", + "U1", + "U2" ] }, { - "stopId": 20158, + "stopId": "vitrasa:870", "name": { - "original": "Estrada do Porto, 81" + "original": "Avda. do Aeroporto, 447" }, - "latitude": 42.185593055, - "longitude": -8.702377974, + "latitude": 42.23543058, + "longitude": -8.66197943, "lines": [ - "6" + "A", + "9B" ] }, { - "stopId": 20159, + "stopId": "vitrasa:8700", "name": { - "original": "Estrada de Valadares, 571" + "original": "Enxeñeiros (CUVI)" }, - "latitude": 42.160348044, - "longitude": -8.718706355, + "latitude": 42.167963445, + "longitude": -8.688421342, "lines": [ - "7" + "A", + "15C", + "U1", + "U2" ] }, { - "stopId": 20160, + "stopId": "vitrasa:8710", "name": { - "original": "Estrada de Valadares, 522" + "original": "Universidade." }, - "latitude": 42.160066796, - "longitude": -8.718938239, + "latitude": 42.167985106, + "longitude": -8.688425395, "lines": [ - "7" + "A" ] }, { - "stopId": 20166, + "stopId": "vitrasa:8720", "name": { - "original": "Camiño da Brea, 2" + "original": "Humanidades (CUVI)" }, - "latitude": 42.202134841, - "longitude": -8.70572793, + "latitude": 42.169678809, + "longitude": -8.679104749, "lines": [ - "18A", - "18B" + "A", + "15C", + "U1", + "U2" ] }, { - "stopId": 20167, + "stopId": "vitrasa:8721", "name": { - "original": "Camiño da Brea, 3" + "original": "Universidade.." }, - "latitude": 42.202095058, - "longitude": -8.705814233, + "latitude": 42.169776602, + "longitude": -8.678942156, "lines": [ - "18A", - "18B" + "A", + "15C" ] }, { - "stopId": 20168, + "stopId": "vitrasa:8730", "name": { - "original": "Estrada do Freixo (despois 118)" + "original": "Telecomunicacións (CUVI) B" }, - "latitude": 42.173596087, - "longitude": -8.730918928, + "latitude": 42.170159671, + "longitude": -8.68735086, "lines": [ - "7" + "A" ] }, { - "stopId": 20169, + "stopId": "vitrasa:8740", "name": { - "original": "Estrada do Freixo (despois 235)" + "original": "Telecomunicacións (CUVI)" }, - "latitude": 42.173616782, - "longitude": -8.730810863, + "latitude": 42.170123888, + "longitude": -8.687270393, "lines": [ - "7" + "A", + "15C", + "U1", + "U2" ] }, { - "stopId": 20170, + "stopId": "vitrasa:8750", "name": { - "original": "Rúa de Álvaro Cunqueiro, 4" + "original": "Rúa de Urzáiz - Est. Intermodal - C.C." }, - "latitude": 42.224544805, - "longitude": -8.730413561, + "latitude": 42.233722977, + "longitude": -8.714502762, "lines": [ + "A", + "4A", + "4C", "5A", - "5B", - "12A" + "6", + "9B", + "11", + "15B", + "15C", + "24", + "28", + "N4", + "PSA 4" ] }, { - "stopId": 20171, + "stopId": "vitrasa:8770", "name": { - "original": "Estrada Clara Campoamor (cruce Camiño da Pousa)" + "original": "Rúa de Urzáiz, 13" }, - "latitude": 42.204380762, - "longitude": -8.726688445, + "latitude": 42.235420929, + "longitude": -8.718721877, "lines": [ + "A", + "4A", + "4C", + "5A", + "6", + "7", + "9B", + "11", "12B", - "H1", - "H2" + "14", + "15B", + "15C", + "16", + "17", + "18A", + "18B", + "18H", + "24", + "28", + "N1", + "N4", + "PSA 4" ] }, { - "stopId": 20172, + "stopId": "vitrasa:880", "name": { - "original": "Estrada Clara Campoamor (cruce Camiño da Nogueira)" + "original": "Avda. do Aeroporto, 484" }, - "latitude": 42.203736336, - "longitude": -8.726617869, + "latitude": 42.23544051, + "longitude": -8.662354939, "lines": [ "A", - "12B", - "U1", - "H1", - "H2", - "H", - "PTL" + "9B", + "27" ] }, { - "stopId": 20173, + "stopId": "vitrasa:8820", "name": { - "original": "Avda. de Castrelos, 502" + "original": "Rúa de Urzáiz, 28" }, - "latitude": 42.192504056, - "longitude": -8.721215121, + "latitude": 42.23516998, + "longitude": -8.718398782, "lines": [ + "C1", + "A", + "4A", + "4C", + "5A", "7", - "U1" + "9B", + "12B", + "14", + "15B", + "15C", + "16", + "17", + "18A", + "18B", + "18H", + "24", + "28", + "N1", + "N4" ] }, { - "stopId": 20174, + "stopId": "vitrasa:8840", "name": { - "original": "Baixada ao Pontillón S/N" + "original": "Rúa de Urzáiz, 60 - Est. Intermodal - C.C." }, - "latitude": 42.21519917, - "longitude": -8.726793773, + "latitude": 42.233986283, + "longitude": -8.71541048, "lines": [ - "A" + "A", + "4A", + "4C", + "5A", + "9B", + "11", + "15B", + "15C", + "24", + "28", + "N1", + "N4" ] }, { - "stopId": 20177, + "stopId": "vitrasa:8850", "name": { - "original": "Rúa de Pizarro, 16" + "original": "Rúa de Urzáiz, 97" }, - "latitude": 42.230767817, - "longitude": -8.715105964, + "latitude": 42.232341315, + "longitude": -8.710892054, "lines": [ - "C3i", + "A", + "4A", + "4C", + "5A", "6", + "9B", "11", - "15A", - "23", - "25", - "28" - ] - }, - { - "stopId": 20178, - "name": { - "original": "Estrada de Camposancos (cruce Camiño da Estea)" - }, - "latitude": 42.172412443, - "longitude": -8.799591567, - "lines": [ - "12A" + "15B", + "15C", + "28", + "N4", + "PSA 4" ] }, { - "stopId": 20180, + "stopId": "vitrasa:8870", "name": { - "original": "Rúa do Reiseñor, 10" + "original": "Rúa de Venezuela, 4" }, - "latitude": 42.229527407, - "longitude": -8.70843784, + "latitude": 42.234250043, + "longitude": -8.724361531, "lines": [ - "H2" + "4A", + "4C", + "5B", + "11", + "12A", + "12B", + "17", + "27", + "N1" ] }, { - "stopId": 20186, + "stopId": "vitrasa:8880", "name": { - "original": "Rúa da Rabadeira, 71" + "original": "Rúa de Venezuela, 20" }, - "latitude": 42.23755404, - "longitude": -8.651558138, + "latitude": 42.233188126, + "longitude": -8.72155331, "lines": [ - "9B" + "4A", + "4C", + "5B", + "11", + "12A", + "12B", + "17", + "27", + "N1" ] }, { - "stopId": 20187, + "stopId": "vitrasa:8890", "name": { - "original": "Rúa da Rabadeira, 46" + "original": "Rúa de Venezuela, 21" }, - "latitude": 42.237422128, - "longitude": -8.65153195, + "latitude": 42.233283503, + "longitude": -8.721378959, "lines": [ - "9B", - "27" + "4A", + "4C", + "5B", + "7", + "12B", + "16", + "17", + "PSA 4" ] }, { - "stopId": 20188, + "stopId": "vitrasa:890", "name": { - "original": "Rúa da Saa (fronte 43)" + "original": "Avda. do Aeroporto, 491" }, - "latitude": 42.201670402, - "longitude": -8.708928464, + "latitude": 42.232066419, + "longitude": -8.653842977, "lines": [ - "18B", - "H3" + "A" ] }, { - "stopId": 20189, + "stopId": "vitrasa:8900", "name": { - "original": "Rúa da Saa, 10" + "original": "Rúa de Venezuela, 45" }, - "latitude": 42.201625853, - "longitude": -8.712945043, + "latitude": 42.232243383, + "longitude": -8.718524158, "lines": [ - "18B", - "H3" + "4A", + "4C", + "5B", + "7", + "12B", + "16", + "17", + "PSA 4" ] }, { - "stopId": 20190, + "stopId": "vitrasa:8910", "name": { - "original": "Avda. das Camelias (fronte Praza do Rei)" + "original": "Rúa de Venezuela, 42" }, - "latitude": 42.234906013, - "longitude": -8.72662052, + "latitude": 42.232224046, + "longitude": -8.718985824, "lines": [ "4A", "4C", + "5B", "11", + "12A", "12B", "17", "27", @@ -14891,324 +15202,279 @@ ] }, { - "stopId": 20191, + "stopId": "vitrasa:8916", "name": { - "original": "Rúa das Figueiras, 200" + "original": "Rúa de Venezuela, 60" }, - "latitude": 42.229676205, - "longitude": -8.657383392, + "latitude": 42.231593651, + "longitude": -8.71714227, "lines": [ - "15A", - "25" + "27" ] }, { - "stopId": 20192, + "stopId": "vitrasa:8930", "name": { - "original": "Rúa de Colón, 26" + "original": "Rúa de Vilagarcía de Arousa (cruce Rúa do Grove)" + }, + "latitude": 42.22014115, + "longitude": -8.745082757, + "lines": [ + "C3i", + "5B" + ] + }, + { + "stopId": "vitrasa:8950", + "name": { + "original": "Rúa de Marín, 5" + }, + "latitude": 42.218712573, + "longitude": -8.75011435, + "lines": [ + "C3i", + "5B" + ] + }, + { + "stopId": "vitrasa:8970", + "name": { + "original": "Rúa do Seixo, 45" }, - "latitude": 42.237168511, - "longitude": -8.720373767, + "latitude": 42.197425383, + "longitude": -8.713700535, "lines": [ - "4A", - "4C", - "5B", - "7", - "12B", - "16", - "17", - "24", - "PSA 4" + "A", + "H3" ] }, { - "stopId": 20193, + "stopId": "vitrasa:8980", "name": { - "original": "Rúa de Policarpo Sanz, 25" + "original": "Rúa do Seixo, 38" }, - "latitude": 42.23767601188501, - "longitude": -8.721582630122455, + "latitude": 42.197532685, + "longitude": -8.713614705, "lines": [ - "C3i", "A", - "5A", - "5B", - "6", - "9B", - "10", - "11", - "15B", - "15C", - "28", - "N1", - "N4", - "H1", - "VTS" - ], - "amenities": [ - "shelter", - "display" + "H3" ] }, { - "stopId": 20195, + "stopId": "vitrasa:8990", "name": { - "original": "Praza de Compostela (fronte 35)" + "original": "Rúa do Seixo, 75" }, - "latitude": 42.2393606, - "longitude": -8.724131464, + "latitude": 42.200673849, + "longitude": -8.714185609, "lines": [ - "C3i", "A", - "5A", - "5B", - "6", - "9B", - "10", - "11", - "15B", - "15C", - "28", - "N1", - "N4", - "H1", - "VTS" + "18B", + "H3" ] }, { - "stopId": 20196, + "stopId": "vitrasa:90", "name": { - "original": "Estrada de Camposancos, 498" + "original": "Aeroporto de Peinador" }, - "latitude": 42.175325155, - "longitude": -8.799594139, + "latitude": 42.225956918, + "longitude": -8.63286469, "lines": [ - "12A" + "A" ] }, { - "stopId": 20197, + "stopId": "vitrasa:900", "name": { - "original": "Rúa de Pi i Margall, 3-5" + "original": "Avda. do Aeroporto, 531" }, - "latitude": 42.23558703, - "longitude": -8.728830897, + "latitude": 42.233527998, + "longitude": -8.648237616, "lines": [ - "5B", - "12A" + "A" ] }, { - "stopId": 20199, + "stopId": "vitrasa:9000", "name": { - "original": "Rúa de Puerto Rico, 12" + "original": "Rúa do Seixo (Parque)" }, - "latitude": 42.228802205, - "longitude": -8.718136653, + "latitude": 42.200719549, + "longitude": -8.714115872, "lines": [ - "H2" + "A", + "H3" ] }, { - "stopId": 20202, + "stopId": "vitrasa:9010", "name": { - "original": "Estación Marítima" + "original": "Rúa de Xeme, 71" }, - "latitude": 42.2404374, - "longitude": -8.726048008, + "latitude": 42.203157887, + "longitude": -8.694293108, "lines": [ - "TUR" + "14" ] }, { - "stopId": 20203, + "stopId": "vitrasa:9020", "name": { - "original": "Avda. da Gran Vía, 47" + "original": "Xestoso" }, - "latitude": 42.230881062, - "longitude": -8.718397577, + "latitude": 42.207584622, + "longitude": -8.670108196, "lines": [ - "7", - "12B", - "14", - "16", - "18A", - "18B", - "18H" + "15B", + "15C" ] }, { - "stopId": 20206, + "stopId": "vitrasa:9030", "name": { - "original": "Rúa do Marqués de Valladares (fronte 19)" + "original": "Xestoso (B)" }, - "latitude": 42.238271922, - "longitude": -8.723353532, + "latitude": 42.207537397, + "longitude": -8.670071905, "lines": [ - "C1", - "C3d", - "A", - "5A", - "9B", - "10", "15B", - "15C", - "28", - "N4", - "H1" + "15C" ] }, { - "stopId": 20208, + "stopId": "vitrasa:9040", "name": { - "original": "Rúa de Colón, 12" + "original": "Estrada das Plantas (cruce Camiño Monte Vello)" }, - "latitude": 42.238028627, - "longitude": -8.720556548, + "latitude": 42.20831564, + "longitude": -8.670282438, "lines": [ - "C1", - "A", - "5A", - "9B", "15B", "15C", - "28", - "N4", - "H1" + "U2" ] }, { - "stopId": 20209, + "stopId": "vitrasa:9050", "name": { - "original": "Avda. do Alcalde Portanet, 23" + "original": "Estrada da Igrexa, 45" }, - "latitude": 42.211481651, - "longitude": -8.734440746, + "latitude": 42.154646971, + "longitude": -8.688349062, "lines": [ - "H1" + "7" ] }, { - "stopId": 20210, + "stopId": "vitrasa:910", "name": { - "original": "Estrada de Camposancos, 108" + "original": "Avda. do Aeroporto, 54" }, - "latitude": 42.19824056, - "longitude": -8.763182189, + "latitude": 42.234679919, + "longitude": -8.699623994, "lines": [ - "11", - "29" + "A", + "4A", + "9B", + "24", + "27", + "28" ] }, { - "stopId": 20211, + "stopId": "vitrasa:920", "name": { - "original": "Estrada de Camposancos, 109" + "original": "Avda. do Aeroporto (cruce Camiño das Cereixeiras)" }, - "latitude": 42.198422825, - "longitude": -8.762538026, + "latitude": 42.233499069, + "longitude": -8.643325214, "lines": [ - "11", - "29" + "A" ] }, { - "stopId": 20212, + "stopId": "vitrasa:930", "name": { - "original": "Rúa do Canabido, 18" + "original": "Avda. do Aeroporto, 570" }, - "latitude": 42.188388732, - "longitude": -8.805956864, + "latitude": 42.231979036, + "longitude": -8.65372496, "lines": [ - "10" + "A" ] }, { - "stopId": 20214, + "stopId": "vitrasa:940", "name": { - "original": "Rúa da República Argentina, 21" + "original": "Avda. do Aeroporto, 605" }, - "latitude": 42.237538973, - "longitude": -8.718186356, + "latitude": 42.230493878, + "longitude": -8.638023273, "lines": [ - "C3i", - "A", - "5A", - "5B", - "10", - "11", - "15B", - "15C" + "A" ] }, { - "stopId": 20215, + "stopId": "vitrasa:950", "name": { - "original": "Rúa da Coruña, 21" + "original": "Avda. do Aeroporto, 614" }, - "latitude": 42.223880296, - "longitude": -8.735520196, + "latitude": 42.233626818, + "longitude": -8.647811163, "lines": [ "A", - "5A", - "5B", - "10", - "11", - "13", - "N4", - "U1", - "H1", - "H", - "VTS" + "25" ] }, { - "stopId": 20216, + "stopId": "vitrasa:960", "name": { - "original": "Avda. de Cesáreo Vázquez (fronte 43)" + "original": "Avda. do Aeroporto, 686" }, - "latitude": 42.179747589, - "longitude": -8.802157388, + "latitude": 42.230918888, + "longitude": -8.638532893, "lines": [ - "11" + "A" ] }, { - "stopId": 20217, + "stopId": "vitrasa:970", "name": { - "original": "Rosalía de Castro, 4" + "original": "Avda. do Aeroporto, 91" }, - "latitude": 42.238229421, - "longitude": -8.719950346, + "latitude": 42.232787318, + "longitude": -8.693473285, "lines": [ - "C3d", - "10" + "A", + "9B", + "27" ] }, { - "stopId": 20218, + "stopId": "vitrasa:980", "name": { - "original": "Rúa de Oporto, 28" + "original": "Avda. da Atlántida, 99" }, - "latitude": 42.23721395, - "longitude": -8.716444794, + "latitude": 42.221170087, + "longitude": -8.763656977, "lines": [ - "C3d", - "10" + "10", + "15B", + "15C" ] }, { - "stopId": 20219, + "stopId": "vitrasa:990", "name": { - "original": "Avda. do Aeroporto (fronte 90)" + "original": "Avda. da Atlántida (fronte 148)" }, - "latitude": 42.234830699, - "longitude": -8.695443515, + "latitude": 42.222451366, + "longitude": -8.769134894, "lines": [ - "A", - "9B", - "27", - "28" + "10", + "15B", + "15C" ] } ] \ No newline at end of file diff --git a/src/gtfs_vigo_stops/src/stops.py b/src/gtfs_vigo_stops/src/stops.py index 44a6d2d..bb54fa4 100644 --- a/src/gtfs_vigo_stops/src/stops.py +++ b/src/gtfs_vigo_stops/src/stops.py @@ -36,14 +36,16 @@ def get_all_stops_by_code(feed_dir: str) -> Dict[str, Stop]: all_stops = get_all_stops(feed_dir) for stop in all_stops.values(): - if stop.stop_code: - stop_25829_x, stop_25829_y = transformer.transform( - stop.stop_lon, stop.stop_lat - ) - stop.stop_25829_x = stop_25829_x - stop.stop_25829_y = stop_25829_y + stop_25829_x, stop_25829_y = transformer.transform( + stop.stop_lon, stop.stop_lat + ) + stop.stop_25829_x = stop_25829_x + stop.stop_25829_y = stop_25829_y + if stop.stop_code: stops_by_code[get_numeric_code(stop.stop_code)] = stop + else: + stops_by_code[stop.stop_id] = stop CACHED_BY_CODE[feed_dir] = stops_by_code diff --git a/src/stop_downloader/vigo/download-stops.py b/src/stop_downloader/vigo/download-stops.py index 8771e53..eda5bde 100644 --- a/src/stop_downloader/vigo/download-stops.py +++ b/src/stop_downloader/vigo/download-stops.py @@ -4,6 +4,7 @@ # "PyYAML>=6.0.2", # For YAML support # ] # /// +import csv import json import os import sys @@ -13,6 +14,9 @@ import yaml # Add YAML support for overrides OVERRIDES_DIR = "overrides" OUTPUT_FILE = "../../frontend/public/stops/vigo.json" +SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) + + def load_stop_overrides(file_path): """Load stop overrides from a YAML file""" if not os.path.exists(file_path): @@ -22,12 +26,14 @@ def load_stop_overrides(file_path): try: with open(file_path, 'r', encoding='utf-8') as f: overrides = yaml.safe_load(f) - print(f"Loaded {len(overrides) if overrides else 0} stop overrides") + print( + f"Loaded {len(overrides) if overrides else 0} stop overrides") return overrides or {} except Exception as e: print(f"Error loading overrides: {e}", file=sys.stderr) return {} + def apply_overrides(stops, overrides): """Apply overrides to the stop data and add new stops""" # Track existing stop IDs @@ -118,10 +124,8 @@ def apply_overrides(stops, overrides): return stops -def main(): - print("Fetching stop list data...") - # Download stop list data +def download_stops_vitrasa() -> list[dict]: url = "https://datos.vigo.org/vci_api_app/api2.jsp?tipo=TRANSPORTE_PARADAS" req = urllib.request.Request(url) @@ -141,7 +145,7 @@ def main(): name = name.replace(" ", ", ").replace('"', '').replace("'", "") processed_stop = { - "stopId": stop.get("id"), + "stopId": "vitrasa:" + str(stop.get("id")), "name": { "original": name }, @@ -151,9 +155,69 @@ def main(): } processed_stops.append(processed_stop) + return processed_stops + except Exception as e: + print(f"Error processing vigo stops data: {e}", file=sys.stderr) + return [] + + +def download_stops_renfe() -> list[dict]: + url = "https://data.renfe.com/dataset/1146f3f1-e06d-477c-8f74-84f8d0668cf9/resource/b22cd560-3a2b-45dd-a25d-2406941f6fcc/download/listado_completo_av_ld_md.csv" + req = urllib.request.Request(url) + + # CÓDIGO;DESCRIPCION;LATITUD;LONGITUD;DIRECCIÓN;C.P.;POBLACION;PROVINCIA;PAIS + + try: + with urllib.request.urlopen(req) as response: + content = response.read() + data = csv.DictReader( + content.decode('utf-8').splitlines(), + delimiter=';', + fieldnames=["CODE", "NAME", "LAT", "LNG", + "ADDRESS", "ZIP", "CITY", "PROVINCE", "COUNTRY"] + ) + + stops = [row for row in data] + + print(f"Downloaded {len(stops)} stops") + + # Process the data + processed_stops = [] + for stop in stops: + if stop.get("PROVINCE") != "Pontevedra": + continue + + name = stop.get("NAME", "").strip() + + processed_stop = { + "stopId": "renfe:" + str(stop.get("CODE", 0)), + "name": { + "original": name + }, + "latitude": float(stop.get("LAT", 0).replace(',', '.')), + "longitude": float(stop.get("LNG", 0).replace(',', '.')), + "lines": [] + } + processed_stops.append(processed_stop) + + print(f"Processed {len(processed_stops)} Renfe stops in Pontevedra") + return processed_stops + except Exception as e: + print(f"Error processing Pontevedra stops data: {e}", file=sys.stderr) + return [] + + +def main(): + print("Fetching stop list data...") + + vigo_stops = download_stops_vitrasa() + renfe_stops = download_stops_renfe() + + all_stops = vigo_stops + (renfe_stops if renfe_stops else []) + + try: # Load and apply overrides - script_dir = os.path.dirname(os.path.abspath(__file__)) - overrides_dir = os.path.join(script_dir, OVERRIDES_DIR) + overrides_dir = os.path.join(SCRIPT_DIR, OVERRIDES_DIR) # For each YML/YAML file in the overrides directory, load and apply the overrides for filename in os.listdir(overrides_dir): if not filename.endswith(".yml") and not filename.endswith(".yaml"): @@ -162,16 +226,18 @@ def main(): print(f"Loading overrides from {filename}") overrides_file = os.path.join(overrides_dir, filename) overrides = load_stop_overrides(overrides_file) - processed_stops = apply_overrides(processed_stops, overrides) + all_stops = apply_overrides(all_stops, overrides) # Filter out hidden stops - visible_stops = [stop for stop in processed_stops if not stop.get("hide")] - print(f"Removed {len(processed_stops) - len(visible_stops)} hidden stops") + visible_stops = [ + stop for stop in all_stops if not stop.get("hide")] + print( + f"Removed {len(all_stops) - len(visible_stops)} hidden stops") # Sort stops by ID ascending visible_stops.sort(key=lambda x: x["stopId"]) - output_file = os.path.join(script_dir, OUTPUT_FILE) + output_file = os.path.join(SCRIPT_DIR, OUTPUT_FILE) with open(output_file, 'w', encoding='utf-8') as f: json.dump(visible_stops, f, ensure_ascii=False, indent=2) @@ -181,7 +247,11 @@ def main(): except Exception as e: print(f"Error processing stops data: {e}", file=sys.stderr) + # Print full exception traceback + import traceback + traceback.print_exc() return 1 + if __name__ == "__main__": sys.exit(main()) diff --git a/src/stop_downloader/vigo/overrides/amenities.yaml b/src/stop_downloader/vigo/overrides/amenities.yaml index fa2067a..014b235 100644 --- a/src/stop_downloader/vigo/overrides/amenities.yaml +++ b/src/stop_downloader/vigo/overrides/amenities.yaml @@ -1,23 +1,23 @@ -5520: # García Barbón, 7 +vitrasa:5520: # García Barbón, 7 amenities: - shelter - display -5530: # García Barbón, 18 +vitrasa:5530: # García Barbón, 18 amenities: - shelter - display -6620: #Policarpo Sanz, 40 +vitrasa:6620: #Policarpo Sanz, 40 amenities: - shelter - display -14264: # Urzáiz - Príncipe +vitrasa:14264: # Urzáiz - Príncipe amenities: - shelter - display -20193: # Policarpo Sanz, 25 +vitrasa:20193: # Policarpo Sanz, 25 amenities: - shelter - display -20198: # Policarpo Sanz, 26 +vitrasa:20198: # Policarpo Sanz, 26 amenities: - shelter diff --git a/src/stop_downloader/vigo/overrides/fix-gregorio-espino.yaml b/src/stop_downloader/vigo/overrides/fix-gregorio-espino.yaml index 2e035a2..849eea1 100644 --- a/src/stop_downloader/vigo/overrides/fix-gregorio-espino.yaml +++ b/src/stop_downloader/vigo/overrides/fix-gregorio-espino.yaml @@ -1,20 +1,20 @@ # Fix the position of the stops in Gregorio Espino, which are "opposite" to the actual location of the bus stops. -5720: # Gregorio Espino, 33 +vitrasa:5720: # Gregorio Espino, 33 location: latitude: 42.23004933454558 longitude: -8.706947409683313 -5710: # Gregorio Espino, 22 +vitrasa:5710: # Gregorio Espino, 22 location: latitude: 42.23003666347398 longitude: -8.707266671978003 -5730: # Gregorio Espino, 44 +vitrasa:5730: # Gregorio Espino, 44 location: latitude: 42.227850036119314 longitude: -8.708105429626789 -5740: # Gregorio Espino, 57 +vitrasa:5740: # Gregorio Espino, 57 location: latitude: 42.22783722597372 - longitude: -8.707849091551859 \ No newline at end of file + longitude: -8.707849091551859 diff --git a/src/stop_downloader/vigo/overrides/hide-virtual-stops.yaml b/src/stop_downloader/vigo/overrides/hide-virtual-stops.yaml index a2bf0b1..5978a35 100644 --- a/src/stop_downloader/vigo/overrides/hide-virtual-stops.yaml +++ b/src/stop_downloader/vigo/overrides/hide-virtual-stops.yaml @@ -1,17 +1,17 @@ # The Vitrasa network has several virtual stops created for internal purposes, like # end of certain lines with a "nice" name. -20223: # Castrelos (Pavillón) - Final U1 +vitrasa:20223: # Castrelos (Pavillón) - Final U1 hide: true -20146: # García Barbón 7 - final líneas A y 18A +vitrasa:20146: # García Barbón 7 - final líneas A y 18A hide: true -20220: # (Samil) COIA-SAMIL - Final L15A +vitrasa:20220: # (Samil) COIA-SAMIL - Final L15A hide: true -20001: # (Samil) Samil por Beiramar - Final L15B +vitrasa:20001: # (Samil) Samil por Beiramar - Final L15B hide: true -20002: # (Samil) Samil por Torrecedeira - Final L15C +vitrasa:20002: # (Samil) Samil por Torrecedeira - Final L15C hide: true -20144: # (Samil) Samil por Coia - Final C3D+C3i +vitrasa:20144: # (Samil) Samil por Coia - Final C3D+C3i + hide: true +vitrasa:20145: # (Samil) Samil por Bouzas - Final C3D+C3i hide: true -20145: # (Samil) Samil por Bouzas - Final C3D+C3i - hide: true \ No newline at end of file diff --git a/src/stop_downloader/vigo/overrides/improve-coordinates-misc.yaml b/src/stop_downloader/vigo/overrides/improve-coordinates-misc.yaml index 922f103..a96c84b 100644 --- a/src/stop_downloader/vigo/overrides/improve-coordinates-misc.yaml +++ b/src/stop_downloader/vigo/overrides/improve-coordinates-misc.yaml @@ -1,35 +1,40 @@ # Improves coordinates for some locations in the dataset to be more accurate, and avoid clustering -6620: # Policarpo Sanz, 40 +vitrasa:6620: # Policarpo Sanz, 40 location: latitude: 42.23757846151978 longitude: -8.721031378896738 -20193: # Policarpo Sanz, 25 +vitrasa:20193: # Policarpo Sanz, 25 location: latitude: 42.23767601188501 longitude: -8.721582630122455 -3130: #Avda. de Cesáreo Vázquez 169 +vitrasa:3130: #Avda. de Cesáreo Vázquez 169 location: latitude: 42.191024803868736 longitude: -8.799397387002196 -3090: # Avda. de Cesáreo Vázquez 182 +vitrasa:3090: # Avda. de Cesáreo Vázquez 182 location: latitude: 42.191019711713736 longitude: -8.799628565094565 -14294: # Avda. de Ricardo Mella 406 +vitrasa:14294: # Avda. de Ricardo Mella 406 location: latitude: 42.190684424876565 longitude: -8.799308812770041 -3120: # Cesáreo Vázquez 141 +vitrasa:3120: # Cesáreo Vázquez 141 location: latitude: 42.187488521491225 longitude: -8.801226626055183 -3080: # Cesáreo Vázquez 136 +vitrasa:3080: # Cesáreo Vázquez 136 location: latitude: 42.1873653089623 longitude: -8.800886236766305 + +renfe:22308: # Vigo Guixar + location: + latitude: 42.2394426820947 + longitude: -8.712087821668435 -- cgit v1.3