Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang
Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
Bạn có thể sử dụng tính năng chuyển khối (còn gọi là chuyển chỗ ngồi) khi một nhóm chuyến đáp ứng các điều kiện sau:
Các chuyến đi liên tiếp nhau.
Cùng một xe thực hiện cả hai chuyến đi.
Các chuyến đi được cấp phát cùng một giá trị block_id trong tệp trips.txt trong nguồn cấp dữ liệu phương tiện công cộng.
Điều kiện tiên quyết
Để Google Maps nhận ra rằng bạn có thể chuyển khối giữa các chuyến đi, bạn phải đáp ứng các điều kiện tiên quyết sau:
Các chuyến đi phải sử dụng cùng một giá trị block_id trong trips.txt. Điều này cho biết các chuyến đi sử dụng cùng một xe.
Các chuyến đi phải hoạt động vào cùng ngày hoặc vào các ngày liên tiếp nếu một chuyến đi diễn ra sau nửa đêm.
Các chuyến đi phải liên tiếp và không trùng lặp.
Điểm dừng cuối cùng của chuyến đến và điểm dừng đầu tiên của chuyến đi phải giống nhau (nên dùng) hoặc ở gần nhau.
Sử dụng block_id để bật tính năng chuyển khối
Bạn có thể chuyển chặng giữa các chuyến đi liên tiếp trên các tuyến khác nhau hoặc trên cùng một tuyến nếu tuyến đó là tuyến vòng tròn. Sử dụng trường block_id để chỉ định chuyến đi nào nằm trong một khối và nơi có thể chuyển đổi chỗ ngồi.
Ví dụ 1: Chặn việc chuyển đổi cho các chuyến đi theo lịch
Trong ví dụ này, hãy xem xét các giá trị sau trong mỗi tệp:
trips.txt
route_id
trip_id
block_id
RouteA
RouteATrip1
Block1
RouteB
RouteBTrip1
Block1
stop_times.txt
trip_id
arrival_time
departure_time
stop_id
stop_sequence
RouteATrip1
12:00:00
12:01:00
A
1
RouteATrip1
12:05:00
12:06:00
B
2
RouteATrip1
12:15:00
C
3
RouteBTrip1
12:18:00
C
1
RouteBTrip1
12:22:00
12:23:00
D
2
RouteBTrip1
12:30:00
E
3
Trong ví dụ này:
Người dùng tìm kiếm tuyến đường từ trạm dừng A đến trạm dừng E sẽ được hướng dẫn lên xe tại trạm dừng A lúc 12:00 trên tuyến đường A và tiếp tục ở trên xe khi xe đến trạm dừng C sau khi kết thúc RouteATrip1. Điều này là do cùng một xe phục vụ RouteBTrip1 cho Tuyến B.
Những hành khách trên RouteATrip1 muốn tiếp tục đến một điểm dừng trên RouteBTrip1 có thể ở lại trên xe để chuyển đổi.
Hành khách của các chuyến đi khác trên các xe khác dọc theo những tuyến đường này không có lựa chọn này vì họ sử dụng các xe khác nhau cho mỗi chuyến đi.
Ví dụ 2: Chặn các lượt chuyển đổi cho các chuyến đi dựa trên tần suất có thời gian chính xác
Tính năng chuyển khối chỉ được hỗ trợ cho các chuyến đi dựa trên tần suất đáp ứng một trong các điều kiện sau, ngoài các yêu cầu được liệt kê trong phần Điều kiện tiên quyết:
Nếu là hành trình vòng tròn, thì hành trình đó phải bắt đầu và kết thúc tại cùng một điểm dừng.
Trong frequencies.txt, giá trị của trường exact_times phải là 1.
Ví dụ sau đây mô tả cách đặt giá trị cho điều kiện thứ hai:
trips.txt
route_id
trip_id
block_id
route1
route1_trip1
block_2
route2
route2_trip1
block_2
stop_times.txt
trip_id
arrival_time
departure_time
stop_id
stop_sequence
route1_trip1
08:00:00
08:04:00
stop1
1
route1_trip1
08:10:00
08:14:00
stop2
2
route1_trip1
08:20:00
stop3
3
route2_trip1
08:24:00
stop3
1
route2_trip1
08:30:00
08:34:00
stop4
2
route2_trip1
08:40:00
08:44:00
stop5
3
frequencies.txt
trip_id
start_time
end_time
headway_secs
exact_times
route1_trip1
08:00:00
08:20:00
600
1
route2_trip1
08:24:00
08:44:00
600
1
Trong ví dụ này:
Người dùng tìm kiếm tuyến đường từ stop1 đến stop5 sẽ được hướng dẫn lên tàu tại stop1 lúc 8:00 ngày route1. Sau đó, người dùng sẽ ở lại trên xe khi xe đến stop3 sau khi kết thúc route1_trip1. Điều này là do cùng một dịch vụ xe route2_trip1 cho route2.
Những hành khách trên route1_trip1 muốn tiếp tục đến một điểm dừng trên route2_trip1 có thể ở lại trên xe để chuyển đổi.
Hành khách của các chuyến đi khác trên các xe khác dọc theo những tuyến đường này không có lựa chọn này vì họ sử dụng các xe khác nhau cho mỗi chuyến đi.
Lấy route1_trip1 làm ví dụ. Giá trị của headway_secs bằng một nửa khoảng thời gian giữa start_time và end_time. Trong trường hợp này, có nghĩa là có hai chuyến đi. Để tìm hiểu thêm về cách sử dụng headway_secs, hãy tham khảo Tài liệu tham khảo về lịch trình GTFS trên gtfs.org.
Chuyển khối trong dòng lặp
Trong tuyến đường lặp lại, điểm dừng đầu tiên và điểm dừng cuối cùng của một chuyến đi giống nhau và có cùng stop_id. Đây là yêu cầu bắt buộc đối với cả chuyến đi dựa trên lịch trình và tần suất.
Miễn là các chuyến đi vòng lặp liên tiếp có cùng một block_id, bạn có thể bật tính năng chuyển đổi chặng hoặc chuyển đổi tại chỗ để cho phép hành khách của chuyến đi đầu tiên vẫn ở trên xe khi xe tiếp tục đi vòng lặp tiếp theo.
Các khối hợp lệ trong nguồn cấp dữ liệu GTFS
Để có thể chuyển khối, bạn phải xác định đúng một hoặc nhiều khối trong nguồn cấp dữ liệu. Để vượt qua quy trình xác thực, các chuyến đi thuộc cùng một khối không được trùng lặp và phải có cùng một route_type (tàu điện ngầm, tàu hỏa, xe buýt, v.v.).
Các chuyến đi có thể thuộc cùng một khối, ngay cả khi chúng diễn ra vào các ngày khác nhau. Nếu có bất kỳ khối nào được xác định trong nguồn cấp dữ liệu tĩnh, thì các khối đó sẽ xuất hiện trong Báo cáo xác thực, trên thẻ Tổng quan.
[null,null,["Cập nhật lần gần đây nhất: 2025-07-25 UTC."],[[["\u003cp\u003eBlock transfers, or in-seat transfers, allow passengers to stay on the same vehicle across consecutive trips using the same \u003ccode\u003eblock_id\u003c/code\u003e in \u003ccode\u003etrips.txt\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eTo enable block transfers, trips must use the same \u003ccode\u003eblock_id\u003c/code\u003e, operate on the same or consecutive days, be consecutive without overlapping, and have the last/first stops be the same or nearby.\u003c/p\u003e\n"],["\u003cp\u003eBlock transfers work with frequency-based trips if they are loops starting and ending at the same stop, or if \u003ccode\u003eexact_times\u003c/code\u003e is set to \u003ccode\u003e1\u003c/code\u003e in \u003ccode\u003efrequencies.txt\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eIn loop lines, consecutive trips with the same \u003ccode\u003eblock_id\u003c/code\u003e enable in-seat transfers for passengers to remain on the vehicle for the next loop.\u003c/p\u003e\n"],["\u003cp\u003eValid blocks in GTFS feeds require trips within the same block to be non-overlapping, have the same \u003ccode\u003eroute_type\u003c/code\u003e, and can span across different days.\u003c/p\u003e\n"]]],["Block transfers, or in-seat transfers, require consecutive trips using the same vehicle, indicated by the same `block_id` in `trips.txt`. Trips must operate on the same or consecutive days, not overlap, and their start/end stops should be the same or close. Frequency-based trips must have `exact_times=1` in `frequencies.txt`. Loop line trips require identical start and end stops. Correctly defining blocks enables transfers, verified in a feed's Validation Report. Google does not support linked trips via transfer_type 4 or 5.\n"],null,["# Block transfer example\n\n| **Note:** To make block transfer an available option, you need to use `block_id` in `trips.txt`. Google doesn't support the [linked trips](https://gtfs.org/schedule/reference/#linked-trips) feature through `transfer_type` values of `4` or `5`.\n\nBlock transfer, also called in-seat transfer, is available when a set of\ntrips meets the following conditions:\n\n1. The trips are consecutive.\n2. The same vehicle operates both trips.\n3. The trips are provisioned with the same `block_id` value in the `trips.txt` file in the transit feed.\n\nPrerequisites\n-------------\n\nFor Google Maps to recognize that block transfers between trips are\npossible, the following prerequisites must be met:\n\n1. The trips must use the same `block_id` value in `trips.txt`. This indicates that the trips use the same vehicle.\n2. The trips must operate on the same days, or on consecutive days if a trip crosses midnight.\n3. The trips must be consecutive and not overlap.\n4. The last stop of the arriving trip and the first stop of the departing trip must either be the same (recommended) or physically close.\n\nUse `block_id` to enable block transfers\n----------------------------------------\n\nBlock transfers can be made between consecutive trips on different routes or on\nthe same route if the route is a loop line. Use the `block_id` field to specify\nwhich trips are in one block and where in-seat transfers are an available\noption.\n\n### Example 1: Block transfers for scheduled trips\n\nIn this example, consider the following values in each file:\n\n`trips.txt`\n\n| `route_id` | `trip_id` | `block_id` |\n|------------|---------------|------------|\n| `RouteA` | `RouteATrip1` | `Block1` |\n| `RouteB` | `RouteBTrip1` | `Block1` |\n\n\u003cbr /\u003e\n\n*** ** * ** ***\n\n`stop_times.txt`\n\n| `trip_id` | `arrival_time` | `departure_time` | `stop_id` | `stop_sequence` |\n|---------------|----------------|------------------|-----------|-----------------|\n| `RouteATrip1` | `12:00:00` | `12:01:00` | `A` | `1` |\n| `RouteATrip1` | `12:05:00` | `12:06:00` | `B` | `2` |\n| `RouteATrip1` | `12:15:00` | | `C` | `3` |\n| `RouteBTrip1` | | `12:18:00` | `C` | `1` |\n| `RouteBTrip1` | `12:22:00` | `12:23:00` | `D` | `2` |\n| `RouteBTrip1` | `12:30:00` | | `E` | `3` |\n\n\u003cbr /\u003e\n\nIn this example:\n\n- A user who searches for a route from stop A to stop E is directed to embark at stop A at 12:00 on Route A and to stay on the vehicle when it reaches stop C after the end of `RouteATrip1`. This is because the same vehicle services `RouteBTrip1` for Route B.\n- Passengers on `RouteATrip1` who want to continue on to a stop on `RouteBTrip1` can stay on the vehicle for this transfer.\n- Passengers of other trips on other vehicles along these same routes don't have this option because they use different vehicles for each trip.\n\n### Example 2: Block transfers for frequency-based trips with exact times\n\nBlock transfers are supported only for frequency-based trips that meet one of\nthe following conditions, in addition to the requirements listed in the\n[Prerequisites](#prerequisites) section:\n\n- If the trip is a loop, it must start and end at the same stop.\n- In `frequencies.txt`, the value of the `exact_times` field must be `1`.\n\nThe following example describes how to set the values for the second condition:\n\n`trips.txt`\n\n| `route_id` | `trip_id` | `block_id` |\n|------------|----------------|------------|\n| `route1` | `route1_trip1` | `block_2` |\n| `route2` | `route2_trip1` | `block_2` |\n\n\u003cbr /\u003e\n\n*** ** * ** ***\n\n`stop_times.txt`\n\n| `trip_id` | `arrival_time` | `departure_time` | `stop_id` | `stop_sequence` |\n|----------------|----------------|------------------|-----------|-----------------|\n| `route1_trip1` | `08:00:00` | `08:04:00` | `stop1` | `1` |\n| `route1_trip1` | `08:10:00` | `08:14:00` | `stop2` | `2` |\n| `route1_trip1` | `08:20:00` | | `stop3` | `3` |\n| `route2_trip1` | | `08:24:00` | `stop3` | `1` |\n| `route2_trip1` | `08:30:00` | `08:34:00` | `stop4` | `2` |\n| `route2_trip1` | `08:40:00` | `08:44:00` | `stop5` | `3` |\n\n\u003cbr /\u003e\n\n*** ** * ** ***\n\n`frequencies.txt`\n\n| `trip_id` | `start_time` | `end_time` | `headway_secs` | `exact_times` |\n|----------------|--------------|------------|----------------|---------------|\n| `route1_trip1` | `08:00:00` | `08:20:00` | `600` | `1` |\n| `route2_trip1` | `08:24:00` | `08:44:00` | `600` | `1` |\n\n\u003cbr /\u003e\n\nIn this example:\n\n- A user who searches for a route from `stop1` to `stop5` is directed to embark at `stop1` at 08:00 on `route1`. The user then stays on the vehicle when it reaches `stop3` after the end of `route1_trip1`. This is because the same vehicle services `route2_trip1` for `route2`.\n- Passengers on `route1_trip1` who want to continue on to a stop on `route2_trip1` can stay on the vehicle for this transfer.\n- Passengers of other trips on other vehicles along these same routes don't have this option because they use different vehicles for each trip.\n- Take `route1_trip1` for example. The value of `headway_secs` is half the interval between `start_time` and `end_time`. In this case, it means there are two trips. To learn more about the usage of `headway_secs`, refer to the [GTFS Schedule Reference on\n gtfs.org](https://gtfs.org/schedule/reference/#frequenciestxt).\n\nBlock transfer in a loop line\n-----------------------------\n\nIn a loop line, the first stop and the last stop of a trip are the same and have\nthe same `stop_id`. This is required for both schedule-based and frequency-based\ntrips.\n\nProvided that consecutive loop trips have the same `block_id`, block or in-seat\ntransfer is enabled, which lets passengers of the first trip remain on the\nvehicle when it continues on the next loop.\n\nValid blocks in GTFS feeds\n--------------------------\n\nFor block transfer to be possible, you must properly define one or more blocks\nin the feed. To pass validation, trips that belong to the same block can't\noverlap and must have the same `route_type` (subway, rail, bus, and so forth).\nTrips can belong to the same block even if they're on different days. If any\nblocks are defined in a static feed, they show in the Validation Report, on the\n**Overview** tab.\n| **Note:** The feed validator only checks the integrity of the feed. It doesn't check for any of the other conditions that make block transfer possible."]]