영국 철도망 실시간 지도
요약
영국 철도망의 실시간 지도 구현 시 발생하는 데이터 불완전성과 위치 추정 알고리즘의 어려움을 분석합니다. 실제 위치 데이터 대신 열차 시간표, 지연 정보, 신호 시스템 피드 등을 활용한 추측 항법 및 보간 기술의 필요성을 다룹니다.
핵심 포인트
- 실시간 위치 데이터의 부재를 보완하기 위한 추측 항법(Dead Reckoning) 접근법 필요
- 신호 시스템(Train Describer) 피드와 GTFS 데이터 활용 가능성
- 데이터 불완전성을 해결하기 위한 열차 등급 및 노선 속도 기반의 위치 추정 모델링
- 사용자 경험을 위한 위치 데이터 보간(Interpolation) 알고리즘 설계의 중요성
멋진 지도이고 특정 시점에 주변에 기차가 얼마나 많은지 대략 파악하는 데 유용하지만, 실제 위치 데이터는 아니라는 점이 중요함
열차 시간표와 예상 지연을 결합해 선로상 위치를 추정하는 방식으로 보임. SBB가 지연 표시를 낮게 유지하려는 건지, 실제 데이터 공개를 보안 위험으로 보는 건지는 모르겠지만, 가짜처럼 보인 적이 여러 번 있었음
예를 들어 내가 탄 열차가 두 역 사이에 몇 분간 멈춰 있었는데 지도에서는 다음 몇 역까지 계속 간 것으로 표시됐고, 다시 움직이기 시작할 때 앱에서는 8분 지연으로 표시됐음
또 창밖으로는 열차가 막 역에 들어오고 있는데 지도에서는 이미 역 사이를 달리는 것으로 보인 적도 여러 번 있었음
Signalbox 기술은 스마트폰 데이터의 스냅샷을 열차 궤적 데이터와 매칭해 기기가 어떤 열차에 있는지 식별한다고 함
심하게 손상된 데이터에서도 동작하는 고급 알고리즘을 쓰며, 백그라운드 위치 추적이나 하드웨어 없이 어떤 종류의 열차에 탄 스마트폰인지 특정할 수 있다니, 꽤 흥미로운 방식임
이런 걸 만들어 보려 했는데, 답은 어렵다였음
열차의 마지막 보고 위치를 식별할 수 있는 메시지 큐가 있음. 노선에 따라 꽤 정확한 실시간 지도를 만들 수 있지만, 먼저 모든 위치 식별자를 동/북 좌표로 지리 참조해야 함
하지만 많은 노선은 역 정차 지점에서의 마지막 이동만 보고함. 주로 지방 노선이라서, 열차 종류와 네트워크 이용률을 고려한 일종의 추측 항법 네트워크를 만드는 게 가장 나은 접근처럼 보임
철도 신호 간격은 신호 운영 방식, 원하는 운전 간격, 최고 운행 속도, 노선 속도에서 차량의 상용 제동 거리, 분기기 같은 안전에 영향을 주는 선로 배치, 신호기의 색등 수, 신호 시인 거리, 햇빛 눈부심으로 신호 가시성이 영향을 받는지 등 여러 요인에 따라 크게 달라짐
게다가 이는 해당 구간이 실제로 선로변 신호를 쓴다는 전제임. 대부분의 네트워크는 그렇지만, 운전실 내 신호나 컴퓨터 기반 열차 제어를 쓰는 예외도 꽤 있음
해당 웹사이트와 아무 관련은 없지만, 궤도회로 폐색 원칙을 따르는 구간에서는 그 기사에서 말하는 “신호 정보”가 거의 확실히 Network Rail의 Train Describer 피드일 것임. 이 피드는 선로 배치상의 신호 berth에 대한 headcode를 보고하고, 신호 시스템은 열차가 연속된 궤도회로를 작동시키거나 차축 계수기를 지나갈 때 headcode를 자동으로 넘김
Train Describer는 berth 안의 headcode만 보고할 수 있고, berth는 꽤 길 수 있음. 초 단위 열차 진행 상황을 제공하지 않으므로, 이 사이트의 매핑 엔진은 열차 위치 표시가 실시간으로 “움직이는” 것처럼 보이게 하려고 독자적인 보간을 하고 있을 가능성이 큼. 알고리즘이나 모델 입력이 무엇이든, 이를 “AI”라고 부르면 기술적 구체성은 사라짐
내가 설계한다면 열차 등급, 차량 종류, 노선 속도를 섞어 해당 폐색 구간 안에서 현재 위치를 추정할 것 같음. 그리고 위치를 잘못 계산했을 때 지도상의 열차 표시를 뚝뚝 점프시킬지, 아니면 갑작스러운 이동을 피하려고 오차를 다음 구간에 걸쳐 부드럽게 흡수할지 제품 결정을 해야 함
다른 지역에서는 장착된 차량의 GPS로 열차 위치가 보고될 수도 있고, 일부 지역은 열차 통과가 신호원의 수동 보고에 의존하기도 해서, 지도에서 실시간 위치를 추론할 데이터가 많지 않을 수 있음. 스마트폰 앱에서 정확한 실시간 데이터를 많이 얻는다는 건 매우 가능성이 낮아 보이지만, 특정 berth를 열차가 보통 어떻게 통과하는지 모델을 개선하는 잡음 많고 불완전한 입력으로는 쓸 수 있음
예전에 GTFS(gtfs.org)를 좀 살펴봤음. 일정과 실시간 업데이트 모두에 쓰이는 데이터 피드 형식이고, protobuf 기반이며 이런 사이트들이 널리 사용함
대부분의 GTFS 위치 피드는 API 키가 필요하지만, 실제 위치 업데이트를 공개로 공유하는 곳도 몇 군데 있음
Google Maps 같은 서비스가 대중교통 일정 정보를 통합할 때도 이 방식을 씀. 접근 권한만 있으면 실시간 업데이트로 지도를 만드는 일 자체는 비교적 간단함
GTFS는 널리 쓰이고 “표준화”돼 있지만, 실제 세부사항으로 들어가면 꽤 무법지대임
2년 동안 여가 프로젝트로 http://mobility-bot.com/를 만들며 몇몇 제공자의 GTFS 알림 피드를 파싱했는데, 거의 모든 제공자마다 파이프라인에서 데이터를 정리해야 했음. 유니코드 문제 수정, 노선과 기관 ID 재매핑, 제목과 설명이 같지 않도록 다시 쓰기 같은 작업이 필요했음
또한 시간을 두고 데이터를 관찰하고 캡처해서, 파싱과 정리 규칙을 일반화할 말뭉치를 확보해야 함
이런 프로젝트 대부분이 단일 제공자나 관련된 소수 제공자에 집중한 건 현명한 선택임. 집계를 시도하는 순간 문제가 훨씬 까다로워짐
이건 표준 지상 철도만 보이는 듯함. London Underground 같은 도시철도망이나 Manchester의 경전철·트램까지 넣으면 최소 수백 대는 더 나올 것임
지도에는 잉글랜드 북동부의 Tyne and Wear Metro도 포함돼 있음. 완벽하진 않지만, 내가 본 실시간 열차 추적 중에서는 단연 가장 유용함
영국에는 서로 잘 맞물리지 않는 여러 철도 시스템이 꽤 많고, 앱 품질과 유용성도 제각각임
AI 자동 생성 콘텐츠
본 콘텐츠는 GeekNews의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기