{
  "routes": [
    {
      "route_name": "Ketapang - Gilimanuk 07.00 WIB",
      "route_forecast": {
        "coordinates": [
          {
            "lat": -8.142169,
            "lng": 114.401092,
            "distance_from_start": 0,
            "weather": {
              "weather": "Berawan",
              "visibility": 8,
              "wave_height": 0.7,
              "wind_speed": 12,
              "wind_from": "Selatan",
              "wind_gust": 16,
              "current_speed": 1.5,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.144378677625022,
            "lng": 114.4039570904799,
            "distance_from_start": 0.21586756267918503,
            "weather": {
              "weather": "Berawan",
              "visibility": 8,
              "wave_height": 0.7,
              "wind_speed": 12,
              "wind_from": "Selatan",
              "wind_gust": 16,
              "current_speed": 1.5,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.146588355250042,
            "lng": 114.40682218095981,
            "distance_from_start": 0.43173512535837005,
            "weather": {
              "weather": "Berawan",
              "visibility": 8,
              "wave_height": 0.7,
              "wind_speed": 12,
              "wind_from": "Selatan",
              "wind_gust": 16,
              "current_speed": 1.5,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.148316049106139,
            "lng": 114.40999914363965,
            "distance_from_start": 0.647602688037555,
            "weather": {
              "weather": "Berawan",
              "visibility": 8,
              "wave_height": 0.7,
              "wind_speed": 13,
              "wind_from": "Barat Daya",
              "wind_gust": 17,
              "current_speed": 1.7,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.149967837569728,
            "lng": 114.4132252216285,
            "distance_from_start": 0.8634702507167401,
            "weather": {
              "weather": "Berawan",
              "visibility": 8,
              "wave_height": 0.7,
              "wind_speed": 13,
              "wind_from": "Barat Daya",
              "wind_gust": 17,
              "current_speed": 1.7,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.151619626033316,
            "lng": 114.41645129961735,
            "distance_from_start": 1.079337813395925,
            "weather": {
              "weather": "Berawan",
              "visibility": 8,
              "wave_height": 0.7,
              "wind_speed": 13,
              "wind_from": "Barat Daya",
              "wind_gust": 17,
              "current_speed": 1.7,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.153271414496905,
            "lng": 114.4196773776062,
            "distance_from_start": 1.29520537607511,
            "weather": {
              "weather": "Berawan",
              "visibility": 8,
              "wave_height": 0.7,
              "wind_speed": 13,
              "wind_from": "Barat Daya",
              "wind_gust": 17,
              "current_speed": 2.3,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.154923202960495,
            "lng": 114.42290345559506,
            "distance_from_start": 1.5110729387542952,
            "weather": {
              "weather": "Berawan",
              "visibility": 8,
              "wave_height": 0.7,
              "wind_speed": 13,
              "wind_from": "Barat Daya",
              "wind_gust": 17,
              "current_speed": 2.3,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.156574991424083,
            "lng": 114.42612953358392,
            "distance_from_start": 1.7269405014334802,
            "weather": {
              "weather": "Berawan",
              "visibility": 8,
              "wave_height": 0.7,
              "wind_speed": 13,
              "wind_from": "Barat Daya",
              "wind_gust": 17,
              "current_speed": 2.3,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.158226779887672,
            "lng": 114.42935561157277,
            "distance_from_start": 1.942808064112665,
            "weather": {
              "weather": "Berawan",
              "visibility": 8,
              "wave_height": 0.7,
              "wind_speed": 14,
              "wind_from": "Barat Daya",
              "wind_gust": 18,
              "current_speed": 2.9,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.160243769725778,
            "lng": 114.43231396196947,
            "distance_from_start": 2.15867562679185,
            "weather": {
              "weather": "Berawan",
              "visibility": 8,
              "wave_height": 0.7,
              "wind_speed": 14,
              "wind_from": "Barat Daya",
              "wind_gust": 18,
              "current_speed": 2.9,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.162332,
            "lng": 114.43511,
            "distance_from_start": 2.3745431894710354,
            "weather": {
              "weather": "Berawan",
              "visibility": 8,
              "wave_height": 0.7,
              "wind_speed": 14,
              "wind_from": "Barat Daya",
              "wind_gust": 18,
              "current_speed": 2.9,
              "current_to": "Selatan"
            }
          }
        ],
        "departure_time": "2026-08-24T07:00",
        "arrival_time": "2026-08-24T10:00",
        "timezone": "Asia/Jakarta",
        "speed": 1,
        "distance": "2.37"
      },
      "port_forecast": {
        "origin": {
          "name": "Pelabuhan Ketapang",
          "province": "Jawa Timur",
          "weather": {
            "wind_speed": 12,
            "wind_gust": 16,
            "wind_from": "Selatan",
            "current_speed": 1.5,
            "current_to": "Selatan",
            "wave_height": 0.7,
            "weather": "Berawan",
            "temp_avg": 23.96,
            "rh_avg": 81.09,
            "visibility": 8
          }
        },
        "destination": {
          "name": "Pelabuhan ASDP Gilimanuk",
          "province": "Bali",
          "weather": {
            "wind_speed": 14,
            "wind_gust": 18,
            "wind_from": "Barat Daya",
            "current_speed": 2.9,
            "current_to": "Selatan",
            "wave_height": 0.7,
            "weather": "Berawan",
            "temp_avg": 27.17,
            "rh_avg": 67.83,
            "visibility": 8
          }
        }
      }
    },
    {
      "route_name": "Ketapang - Gilimanuk 10.00 WIB",
      "route_forecast": {
        "coordinates": [
          {
            "lat": -8.142169,
            "lng": 114.401092,
            "distance_from_start": 0,
            "weather": {
              "weather": "Berawan Tebal",
              "visibility": 8,
              "wave_height": 0.7,
              "wind_speed": 14,
              "wind_from": "Barat Daya",
              "wind_gust": 18,
              "current_speed": 2.9,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.144378677625022,
            "lng": 114.4039570904799,
            "distance_from_start": 0.21586756267918503,
            "weather": {
              "weather": "Berawan Tebal",
              "visibility": 8,
              "wave_height": 0.7,
              "wind_speed": 14,
              "wind_from": "Barat Daya",
              "wind_gust": 18,
              "current_speed": 2.9,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.146588355250042,
            "lng": 114.40682218095981,
            "distance_from_start": 0.43173512535837005,
            "weather": {
              "weather": "Berawan Tebal",
              "visibility": 8,
              "wave_height": 0.7,
              "wind_speed": 14,
              "wind_from": "Barat Daya",
              "wind_gust": 18,
              "current_speed": 2.9,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.148316049106139,
            "lng": 114.40999914363965,
            "distance_from_start": 0.647602688037555,
            "weather": {
              "weather": "Berawan Tebal",
              "visibility": 8,
              "wave_height": 0.7,
              "wind_speed": 14,
              "wind_from": "Selatan",
              "wind_gust": 19,
              "current_speed": 3.7,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.149967837569728,
            "lng": 114.4132252216285,
            "distance_from_start": 0.8634702507167401,
            "weather": {
              "weather": "Berawan Tebal",
              "visibility": 8,
              "wave_height": 0.7,
              "wind_speed": 14,
              "wind_from": "Selatan",
              "wind_gust": 19,
              "current_speed": 3.7,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.151619626033316,
            "lng": 114.41645129961735,
            "distance_from_start": 1.079337813395925,
            "weather": {
              "weather": "Berawan Tebal",
              "visibility": 8,
              "wave_height": 0.7,
              "wind_speed": 14,
              "wind_from": "Selatan",
              "wind_gust": 19,
              "current_speed": 3.7,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.153271414496905,
            "lng": 114.4196773776062,
            "distance_from_start": 1.29520537607511,
            "weather": {
              "weather": "Berawan Tebal",
              "visibility": 8,
              "wave_height": 0.8,
              "wind_speed": 15,
              "wind_from": "Barat Daya",
              "wind_gust": 19,
              "current_speed": 3.7,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.154923202960495,
            "lng": 114.42290345559506,
            "distance_from_start": 1.5110729387542952,
            "weather": {
              "weather": "Berawan Tebal",
              "visibility": 8,
              "wave_height": 0.8,
              "wind_speed": 15,
              "wind_from": "Barat Daya",
              "wind_gust": 19,
              "current_speed": 3.7,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.156574991424083,
            "lng": 114.42612953358392,
            "distance_from_start": 1.7269405014334802,
            "weather": {
              "weather": "Berawan Tebal",
              "visibility": 8,
              "wave_height": 0.8,
              "wind_speed": 15,
              "wind_from": "Barat Daya",
              "wind_gust": 19,
              "current_speed": 3.7,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.158226779887672,
            "lng": 114.42935561157277,
            "distance_from_start": 1.942808064112665,
            "weather": {
              "weather": "Berawan Tebal",
              "visibility": 8,
              "wave_height": 0.8,
              "wind_speed": 16,
              "wind_from": "Barat Daya",
              "wind_gust": 20,
              "current_speed": 3.3,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.160243769725778,
            "lng": 114.43231396196947,
            "distance_from_start": 2.15867562679185,
            "weather": {
              "weather": "Berawan Tebal",
              "visibility": 8,
              "wave_height": 0.8,
              "wind_speed": 16,
              "wind_from": "Barat Daya",
              "wind_gust": 20,
              "current_speed": 3.3,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.162332,
            "lng": 114.43511,
            "distance_from_start": 2.3745431894710354,
            "weather": {
              "weather": "Berawan Tebal",
              "visibility": 8,
              "wave_height": 0.8,
              "wind_speed": 16,
              "wind_from": "Barat Daya",
              "wind_gust": 20,
              "current_speed": 3.3,
              "current_to": "Selatan"
            }
          }
        ],
        "departure_time": "2026-08-24T10:00",
        "arrival_time": "2026-08-24T13:00",
        "timezone": "Asia/Jakarta",
        "speed": 1,
        "distance": "2.37"
      },
      "port_forecast": {
        "origin": {
          "name": "Pelabuhan Ketapang",
          "province": "Jawa Timur",
          "weather": {
            "wind_speed": 14,
            "wind_gust": 18,
            "wind_from": "Barat Daya",
            "current_speed": 2.9,
            "current_to": "Selatan",
            "wave_height": 0.7,
            "weather": "Berawan Tebal",
            "temp_avg": 27.1,
            "rh_avg": 66.89,
            "visibility": 8
          }
        },
        "destination": {
          "name": "Pelabuhan ASDP Gilimanuk",
          "province": "Bali",
          "weather": {
            "wind_speed": 16,
            "wind_gust": 20,
            "wind_from": "Barat Daya",
            "current_speed": 3.3,
            "current_to": "Selatan",
            "wave_height": 0.8,
            "weather": "Berawan Tebal",
            "temp_avg": 27.5,
            "rh_avg": 69.01,
            "visibility": 8
          }
        }
      }
    },
    {
      "route_name": "Ketapang - Gilimanuk 13.00 WIB",
      "route_forecast": {
        "coordinates": [
          {
            "lat": -8.142169,
            "lng": 114.401092,
            "distance_from_start": 0,
            "weather": {
              "weather": "Berawan Tebal",
              "visibility": 8,
              "wave_height": 0.8,
              "wind_speed": 16,
              "wind_from": "Barat Daya",
              "wind_gust": 20,
              "current_speed": 3.3,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.144378677625022,
            "lng": 114.4039570904799,
            "distance_from_start": 0.21586756267918503,
            "weather": {
              "weather": "Berawan Tebal",
              "visibility": 8,
              "wave_height": 0.8,
              "wind_speed": 16,
              "wind_from": "Barat Daya",
              "wind_gust": 20,
              "current_speed": 3.3,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.146588355250042,
            "lng": 114.40682218095981,
            "distance_from_start": 0.43173512535837005,
            "weather": {
              "weather": "Berawan Tebal",
              "visibility": 8,
              "wave_height": 0.8,
              "wind_speed": 16,
              "wind_from": "Barat Daya",
              "wind_gust": 20,
              "current_speed": 3.3,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.148316049106139,
            "lng": 114.40999914363965,
            "distance_from_start": 0.647602688037555,
            "weather": {
              "weather": "Berawan Tebal",
              "visibility": 8,
              "wave_height": 0.9,
              "wind_speed": 17,
              "wind_from": "Barat Daya",
              "wind_gust": 21,
              "current_speed": 2.5,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.149967837569728,
            "lng": 114.4132252216285,
            "distance_from_start": 0.8634702507167401,
            "weather": {
              "weather": "Berawan Tebal",
              "visibility": 8,
              "wave_height": 0.9,
              "wind_speed": 17,
              "wind_from": "Barat Daya",
              "wind_gust": 21,
              "current_speed": 2.5,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.151619626033316,
            "lng": 114.41645129961735,
            "distance_from_start": 1.079337813395925,
            "weather": {
              "weather": "Berawan Tebal",
              "visibility": 8,
              "wave_height": 0.9,
              "wind_speed": 17,
              "wind_from": "Barat Daya",
              "wind_gust": 21,
              "current_speed": 2.5,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.153271414496905,
            "lng": 114.4196773776062,
            "distance_from_start": 1.29520537607511,
            "weather": {
              "weather": "Berawan Tebal",
              "visibility": 8,
              "wave_height": 0.9,
              "wind_speed": 17,
              "wind_from": "Selatan",
              "wind_gust": 21,
              "current_speed": 1.9,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.154923202960495,
            "lng": 114.42290345559506,
            "distance_from_start": 1.5110729387542952,
            "weather": {
              "weather": "Berawan",
              "visibility": 8,
              "wave_height": 0.9,
              "wind_speed": 17,
              "wind_from": "Selatan",
              "wind_gust": 21,
              "current_speed": 1.9,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.156574991424083,
            "lng": 114.42612953358392,
            "distance_from_start": 1.7269405014334802,
            "weather": {
              "weather": "Berawan",
              "visibility": 8,
              "wave_height": 0.9,
              "wind_speed": 17,
              "wind_from": "Selatan",
              "wind_gust": 21,
              "current_speed": 1.9,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.158226779887672,
            "lng": 114.42935561157277,
            "distance_from_start": 1.942808064112665,
            "weather": {
              "weather": "Berawan",
              "visibility": 8,
              "wave_height": 0.9,
              "wind_speed": 15,
              "wind_from": "Selatan",
              "wind_gust": 20,
              "current_speed": 1.7,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.160243769725778,
            "lng": 114.43231396196947,
            "distance_from_start": 2.15867562679185,
            "weather": {
              "weather": "Berawan",
              "visibility": 8,
              "wave_height": 0.9,
              "wind_speed": 15,
              "wind_from": "Selatan",
              "wind_gust": 20,
              "current_speed": 1.7,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.162332,
            "lng": 114.43511,
            "distance_from_start": 2.3745431894710354,
            "weather": {
              "weather": "Berawan",
              "visibility": 8,
              "wave_height": 0.9,
              "wind_speed": 15,
              "wind_from": "Selatan",
              "wind_gust": 20,
              "current_speed": 1.7,
              "current_to": "Selatan"
            }
          }
        ],
        "departure_time": "2026-08-24T13:00",
        "arrival_time": "2026-08-24T16:00",
        "timezone": "Asia/Jakarta",
        "speed": 1,
        "distance": "2.37"
      },
      "port_forecast": {
        "origin": {
          "name": "Pelabuhan Ketapang",
          "province": "Jawa Timur",
          "weather": {
            "wind_speed": 16,
            "wind_gust": 20,
            "wind_from": "Barat Daya",
            "current_speed": 3.3,
            "current_to": "Selatan",
            "wave_height": 0.8,
            "weather": "Berawan Tebal",
            "temp_avg": 27.64,
            "rh_avg": 66.87,
            "visibility": 8
          }
        },
        "destination": {
          "name": "Pelabuhan ASDP Gilimanuk",
          "province": "Bali",
          "weather": {
            "wind_speed": 15,
            "wind_gust": 20,
            "wind_from": "Selatan",
            "current_speed": 1.7,
            "current_to": "Selatan",
            "wave_height": 0.9,
            "weather": "Berawan",
            "temp_avg": 26.21,
            "rh_avg": 74.3,
            "visibility": 8
          }
        }
      }
    },
    {
      "route_name": "Ketapang - Gilimanuk 16.00 WIB",
      "route_forecast": {
        "coordinates": [
          {
            "lat": -8.142169,
            "lng": 114.401092,
            "distance_from_start": 0,
            "weather": {
              "weather": "Berawan",
              "visibility": 8,
              "wave_height": 0.9,
              "wind_speed": 15,
              "wind_from": "Selatan",
              "wind_gust": 20,
              "current_speed": 1.7,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.144378677625022,
            "lng": 114.4039570904799,
            "distance_from_start": 0.21586756267918503,
            "weather": {
              "weather": "Berawan",
              "visibility": 8,
              "wave_height": 0.9,
              "wind_speed": 15,
              "wind_from": "Selatan",
              "wind_gust": 20,
              "current_speed": 1.7,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.146588355250042,
            "lng": 114.40682218095981,
            "distance_from_start": 0.43173512535837005,
            "weather": {
              "weather": "Berawan",
              "visibility": 8,
              "wave_height": 0.9,
              "wind_speed": 15,
              "wind_from": "Selatan",
              "wind_gust": 20,
              "current_speed": 1.7,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.148316049106139,
            "lng": 114.40999914363965,
            "distance_from_start": 0.647602688037555,
            "weather": {
              "weather": "Berawan",
              "visibility": 8,
              "wave_height": 0.9,
              "wind_speed": 15,
              "wind_from": "Selatan",
              "wind_gust": 20,
              "current_speed": 1.5,
              "current_to": "Utara"
            }
          },
          {
            "lat": -8.149967837569728,
            "lng": 114.4132252216285,
            "distance_from_start": 0.8634702507167401,
            "weather": {
              "weather": "Berawan",
              "visibility": 8,
              "wave_height": 0.9,
              "wind_speed": 15,
              "wind_from": "Selatan",
              "wind_gust": 20,
              "current_speed": 1.5,
              "current_to": "Utara"
            }
          },
          {
            "lat": -8.151619626033316,
            "lng": 114.41645129961735,
            "distance_from_start": 1.079337813395925,
            "weather": {
              "weather": "Berawan",
              "visibility": 8,
              "wave_height": 0.9,
              "wind_speed": 15,
              "wind_from": "Selatan",
              "wind_gust": 20,
              "current_speed": 1.5,
              "current_to": "Utara"
            }
          },
          {
            "lat": -8.153271414496905,
            "lng": 114.4196773776062,
            "distance_from_start": 1.29520537607511,
            "weather": {
              "weather": "Berawan",
              "visibility": 8,
              "wave_height": 0.8,
              "wind_speed": 15,
              "wind_from": "Selatan",
              "wind_gust": 19,
              "current_speed": 1.9,
              "current_to": "Utara"
            }
          },
          {
            "lat": -8.154923202960495,
            "lng": 114.42290345559506,
            "distance_from_start": 1.5110729387542952,
            "weather": {
              "weather": "Berawan",
              "visibility": 8,
              "wave_height": 0.8,
              "wind_speed": 15,
              "wind_from": "Selatan",
              "wind_gust": 19,
              "current_speed": 1.9,
              "current_to": "Utara"
            }
          },
          {
            "lat": -8.156574991424083,
            "lng": 114.42612953358392,
            "distance_from_start": 1.7269405014334802,
            "weather": {
              "weather": "Berawan",
              "visibility": 8,
              "wave_height": 0.8,
              "wind_speed": 15,
              "wind_from": "Selatan",
              "wind_gust": 19,
              "current_speed": 1.9,
              "current_to": "Utara"
            }
          },
          {
            "lat": -8.158226779887672,
            "lng": 114.42935561157277,
            "distance_from_start": 1.942808064112665,
            "weather": {
              "weather": "Berawan",
              "visibility": 6,
              "wave_height": 0.8,
              "wind_speed": 14,
              "wind_from": "Selatan",
              "wind_gust": 18,
              "current_speed": 2.3,
              "current_to": "Utara"
            }
          },
          {
            "lat": -8.160243769725778,
            "lng": 114.43231396196947,
            "distance_from_start": 2.15867562679185,
            "weather": {
              "weather": "Berawan",
              "visibility": 6,
              "wave_height": 0.8,
              "wind_speed": 14,
              "wind_from": "Selatan",
              "wind_gust": 18,
              "current_speed": 2.3,
              "current_to": "Utara"
            }
          },
          {
            "lat": -8.162332,
            "lng": 114.43511,
            "distance_from_start": 2.3745431894710354,
            "weather": {
              "weather": "Berawan",
              "visibility": 6,
              "wave_height": 0.8,
              "wind_speed": 14,
              "wind_from": "Selatan",
              "wind_gust": 18,
              "current_speed": 2.3,
              "current_to": "Utara"
            }
          }
        ],
        "departure_time": "2026-08-24T16:00",
        "arrival_time": "2026-08-24T19:00",
        "timezone": "Asia/Jakarta",
        "speed": 1,
        "distance": "2.37"
      },
      "port_forecast": {
        "origin": {
          "name": "Pelabuhan Ketapang",
          "province": "Jawa Timur",
          "weather": {
            "wind_speed": 15,
            "wind_gust": 20,
            "wind_from": "Selatan",
            "current_speed": 1.7,
            "current_to": "Selatan",
            "wave_height": 0.9,
            "weather": "Berawan",
            "temp_avg": 26.01,
            "rh_avg": 73.94,
            "visibility": 8
          }
        },
        "destination": {
          "name": "Pelabuhan ASDP Gilimanuk",
          "province": "Bali",
          "weather": {
            "wind_speed": 14,
            "wind_gust": 18,
            "wind_from": "Selatan",
            "current_speed": 2.3,
            "current_to": "Utara",
            "wave_height": 0.8,
            "weather": "Berawan",
            "temp_avg": 24.26,
            "rh_avg": 83.06,
            "visibility": 6
          }
        }
      }
    },
    {
      "route_name": "Ketapang - Gilimanuk 19.00 WIB",
      "route_forecast": {
        "coordinates": [
          {
            "lat": -8.142169,
            "lng": 114.401092,
            "distance_from_start": 0,
            "weather": {
              "weather": "Berawan",
              "visibility": 6,
              "wave_height": 0.8,
              "wind_speed": 12,
              "wind_from": "Selatan",
              "wind_gust": 17,
              "current_speed": 1.5,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.144378677625022,
            "lng": 114.4039570904799,
            "distance_from_start": 0.21586756267918503,
            "weather": {
              "weather": "Berawan",
              "visibility": 6,
              "wave_height": 0.8,
              "wind_speed": 12,
              "wind_from": "Selatan",
              "wind_gust": 17,
              "current_speed": 1.5,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.146588355250042,
            "lng": 114.40682218095981,
            "distance_from_start": 0.43173512535837005,
            "weather": {
              "weather": "Berawan",
              "visibility": 6,
              "wave_height": 0.8,
              "wind_speed": 12,
              "wind_from": "Selatan",
              "wind_gust": 18,
              "current_speed": 1.5,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.148316049106139,
            "lng": 114.40999914363965,
            "distance_from_start": 0.647602688037555,
            "weather": {
              "weather": "Berawan",
              "visibility": 6,
              "wave_height": 0.8,
              "wind_speed": 12,
              "wind_from": "Selatan",
              "wind_gust": 18,
              "current_speed": 1.5,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.149967837569728,
            "lng": 114.4132252216285,
            "distance_from_start": 0.8634702507167401,
            "weather": {
              "weather": "Berawan",
              "visibility": 6,
              "wave_height": 0.8,
              "wind_speed": 13,
              "wind_from": "Selatan",
              "wind_gust": 19,
              "current_speed": 1.7,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.151619626033316,
            "lng": 114.41645129961735,
            "distance_from_start": 1.079337813395925,
            "weather": {
              "weather": "Berawan",
              "visibility": 6,
              "wave_height": 0.8,
              "wind_speed": 13,
              "wind_from": "Selatan",
              "wind_gust": 19,
              "current_speed": 1.7,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.153271414496905,
            "lng": 114.4196773776062,
            "distance_from_start": 1.29520537607511,
            "weather": {
              "weather": "Berawan",
              "visibility": 6,
              "wave_height": 0.8,
              "wind_speed": 13,
              "wind_from": "Selatan",
              "wind_gust": 19,
              "current_speed": 1.7,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.154923202960495,
            "lng": 114.42290345559506,
            "distance_from_start": 1.5110729387542952,
            "weather": {
              "weather": "Berawan",
              "visibility": 6,
              "wave_height": 0.8,
              "wind_speed": 13,
              "wind_from": "Selatan",
              "wind_gust": 19,
              "current_speed": 1.7,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.156574991424083,
            "lng": 114.42612953358392,
            "distance_from_start": 1.7269405014334802,
            "weather": {
              "weather": "Berawan",
              "visibility": 6,
              "wave_height": 0.8,
              "wind_speed": 12,
              "wind_from": "Selatan",
              "wind_gust": 18,
              "current_speed": 1.9,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.158226779887672,
            "lng": 114.42935561157277,
            "distance_from_start": 1.942808064112665,
            "weather": {
              "weather": "Berawan",
              "visibility": 6,
              "wave_height": 0.8,
              "wind_speed": 12,
              "wind_from": "Selatan",
              "wind_gust": 18,
              "current_speed": 1.9,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.160243769725778,
            "lng": 114.43231396196947,
            "distance_from_start": 2.15867562679185,
            "weather": {
              "weather": "Berawan",
              "visibility": 6,
              "wave_height": 0.8,
              "wind_speed": 11,
              "wind_from": "Selatan",
              "wind_gust": 17,
              "current_speed": 1.9,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.162332,
            "lng": 114.43511,
            "distance_from_start": 2.3745431894710354,
            "weather": {
              "weather": "Berawan",
              "visibility": 6,
              "wave_height": 0.8,
              "wind_speed": 11,
              "wind_from": "Selatan",
              "wind_gust": 17,
              "current_speed": 1.9,
              "current_to": "Selatan"
            }
          }
        ],
        "departure_time": "2026-08-24T19:00",
        "arrival_time": "2026-08-24T22:00",
        "timezone": "Asia/Jakarta",
        "speed": 1,
        "distance": "2.37"
      },
      "port_forecast": {
        "origin": {
          "name": "Pelabuhan Ketapang",
          "province": "Jawa Timur",
          "weather": {
            "wind_speed": 12,
            "wind_gust": 13,
            "wind_from": "Selatan",
            "current_speed": 0.17,
            "current_to": "Selatan",
            "wave_height": 0.8,
            "weather": "Berawan",
            "temp_avg": 23.69,
            "rh_avg": 82.76,
            "visibility": 6
          }
        },
        "destination": {
          "name": "Pelabuhan ASDP Gilimanuk",
          "province": "Bali",
          "weather": {
            "wind_speed": 11,
            "wind_gust": 13,
            "wind_from": "Selatan",
            "current_speed": 0.29,
            "current_to": "Barat Daya",
            "wave_height": 0.8,
            "weather": "Berawan",
            "temp_avg": 23.14,
            "rh_avg": 82.75,
            "visibility": 6
          }
        }
      }
    },
    {
      "route_name": "Ketapang - Gilimanuk 22.00 WIB",
      "route_forecast": {
        "coordinates": [
          {
            "lat": -8.142169,
            "lng": 114.401092,
            "distance_from_start": 0,
            "weather": {
              "weather": "Berawan",
              "visibility": 6,
              "wave_height": 0.7,
              "wind_speed": 11,
              "wind_from": "Barat Daya",
              "wind_gust": 16,
              "current_speed": 2.1,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.144378677625022,
            "lng": 114.4039570904799,
            "distance_from_start": 0.21586756267918503,
            "weather": {
              "weather": "Berawan",
              "visibility": 6,
              "wave_height": 0.7,
              "wind_speed": 11,
              "wind_from": "Barat Daya",
              "wind_gust": 16,
              "current_speed": 2.1,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.146588355250042,
            "lng": 114.40682218095981,
            "distance_from_start": 0.43173512535837005,
            "weather": {
              "weather": "Berawan",
              "visibility": 6,
              "wave_height": 0.7,
              "wind_speed": 11,
              "wind_from": "Barat Daya",
              "wind_gust": 16,
              "current_speed": 2.1,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.148316049106139,
            "lng": 114.40999914363965,
            "distance_from_start": 0.647602688037555,
            "weather": {
              "weather": "Berawan",
              "visibility": 6,
              "wave_height": 0.7,
              "wind_speed": 11,
              "wind_from": "Barat Daya",
              "wind_gust": 16,
              "current_speed": 2.1,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.149967837569728,
            "lng": 114.4132252216285,
            "distance_from_start": 0.8634702507167401,
            "weather": {
              "weather": "Berawan",
              "visibility": 6,
              "wave_height": 0.7,
              "wind_speed": 12,
              "wind_from": "Barat Daya",
              "wind_gust": 17,
              "current_speed": 2.5,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.151619626033316,
            "lng": 114.41645129961735,
            "distance_from_start": 1.079337813395925,
            "weather": {
              "weather": "Berawan",
              "visibility": 6,
              "wave_height": 0.7,
              "wind_speed": 12,
              "wind_from": "Barat Daya",
              "wind_gust": 17,
              "current_speed": 2.5,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.153271414496905,
            "lng": 114.4196773776062,
            "distance_from_start": 1.29520537607511,
            "weather": {
              "weather": "Berawan",
              "visibility": 6,
              "wave_height": 0.7,
              "wind_speed": 12,
              "wind_from": "Barat Daya",
              "wind_gust": 17,
              "current_speed": 2.5,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.154923202960495,
            "lng": 114.42290345559506,
            "distance_from_start": 1.5110729387542952,
            "weather": {
              "weather": "Berawan",
              "visibility": 6,
              "wave_height": 0.7,
              "wind_speed": 12,
              "wind_from": "Barat Daya",
              "wind_gust": 17,
              "current_speed": 2.5,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.156574991424083,
            "lng": 114.42612953358392,
            "distance_from_start": 1.7269405014334802,
            "weather": {
              "weather": "Berawan",
              "visibility": 6,
              "wave_height": 0.7,
              "wind_speed": 11,
              "wind_from": "Barat Daya",
              "wind_gust": 16,
              "current_speed": 2.9,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.158226779887672,
            "lng": 114.42935561157277,
            "distance_from_start": 1.942808064112665,
            "weather": {
              "weather": "Berawan",
              "visibility": 6,
              "wave_height": 0.7,
              "wind_speed": 11,
              "wind_from": "Barat Daya",
              "wind_gust": 16,
              "current_speed": 2.9,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.160243769725778,
            "lng": 114.43231396196947,
            "distance_from_start": 2.15867562679185,
            "weather": {
              "weather": "Berawan",
              "visibility": 6,
              "wave_height": 0.7,
              "wind_speed": 11,
              "wind_from": "Barat Daya",
              "wind_gust": 16,
              "current_speed": 2.9,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.162332,
            "lng": 114.43511,
            "distance_from_start": 2.3745431894710354,
            "weather": {
              "weather": "Berawan",
              "visibility": 6,
              "wave_height": 0.7,
              "wind_speed": 11,
              "wind_from": "Barat Daya",
              "wind_gust": 16,
              "current_speed": 2.9,
              "current_to": "Selatan"
            }
          }
        ],
        "departure_time": "2026-08-24T22:00",
        "arrival_time": "2026-08-25T01:00",
        "timezone": "Asia/Jakarta",
        "speed": 1,
        "distance": "2.37"
      },
      "port_forecast": {
        "origin": {
          "name": "Pelabuhan Ketapang",
          "province": "Jawa Timur",
          "weather": {
            "wind_speed": 11,
            "wind_gust": 13,
            "wind_from": "Barat Daya",
            "current_speed": 0.56,
            "current_to": "Barat Daya",
            "wave_height": 0.7,
            "weather": "Berawan",
            "temp_avg": 22.96,
            "rh_avg": 79.61,
            "visibility": 6
          }
        },
        "destination": {
          "name": "Pelabuhan ASDP Gilimanuk",
          "province": "Bali",
          "weather": {
            "wind_speed": 10,
            "wind_gust": 12,
            "wind_from": "Barat Daya",
            "current_speed": 0.43,
            "current_to": "Barat Daya",
            "wave_height": 0.7,
            "weather": "Berawan",
            "temp_avg": 22.62,
            "rh_avg": 80.02,
            "visibility": 6
          }
        }
      }
    },
    {
      "route_name": "Ketapang - Gilimanuk 01.00 WIB",
      "route_forecast": {
        "coordinates": [
          {
            "lat": -8.142169,
            "lng": 114.401092,
            "distance_from_start": 0,
            "weather": {
              "weather": "Berawan",
              "visibility": 6,
              "wave_height": 0.6,
              "wind_speed": 10,
              "wind_from": "Barat Daya",
              "wind_gust": 15,
              "current_speed": 2.7,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.144378677625022,
            "lng": 114.4039570904799,
            "distance_from_start": 0.21586756267918503,
            "weather": {
              "weather": "Berawan",
              "visibility": 6,
              "wave_height": 0.6,
              "wind_speed": 10,
              "wind_from": "Barat Daya",
              "wind_gust": 15,
              "current_speed": 2.7,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.146588355250042,
            "lng": 114.40682218095981,
            "distance_from_start": 0.43173512535837005,
            "weather": {
              "weather": "Berawan",
              "visibility": 6,
              "wave_height": 0.6,
              "wind_speed": 11,
              "wind_from": "Barat Daya",
              "wind_gust": 15,
              "current_speed": 2.7,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.148316049106139,
            "lng": 114.40999914363965,
            "distance_from_start": 0.647602688037555,
            "weather": {
              "weather": "Berawan",
              "visibility": 6,
              "wave_height": 0.6,
              "wind_speed": 11,
              "wind_from": "Barat Daya",
              "wind_gust": 15,
              "current_speed": 2.7,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.149967837569728,
            "lng": 114.4132252216285,
            "distance_from_start": 0.8634702507167401,
            "weather": {
              "weather": "Berawan",
              "visibility": 6,
              "wave_height": 0.6,
              "wind_speed": 12,
              "wind_from": "Barat Daya",
              "wind_gust": 16,
              "current_speed": 2.3,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.151619626033316,
            "lng": 114.41645129961735,
            "distance_from_start": 1.079337813395925,
            "weather": {
              "weather": "Berawan",
              "visibility": 6,
              "wave_height": 0.6,
              "wind_speed": 12,
              "wind_from": "Barat Daya",
              "wind_gust": 16,
              "current_speed": 2.3,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.153271414496905,
            "lng": 114.4196773776062,
            "distance_from_start": 1.29520537607511,
            "weather": {
              "weather": "Berawan",
              "visibility": 6,
              "wave_height": 0.6,
              "wind_speed": 12,
              "wind_from": "Barat Daya",
              "wind_gust": 16,
              "current_speed": 2.3,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.154923202960495,
            "lng": 114.42290345559506,
            "distance_from_start": 1.5110729387542952,
            "weather": {
              "weather": "Berawan",
              "visibility": 6,
              "wave_height": 0.6,
              "wind_speed": 12,
              "wind_from": "Barat Daya",
              "wind_gust": 16,
              "current_speed": 2.3,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.156574991424083,
            "lng": 114.42612953358392,
            "distance_from_start": 1.7269405014334802,
            "weather": {
              "weather": "Berawan",
              "visibility": 6,
              "wave_height": 0.6,
              "wind_speed": 11,
              "wind_from": "Barat Daya",
              "wind_gust": 15,
              "current_speed": 1.9,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.158226779887672,
            "lng": 114.42935561157277,
            "distance_from_start": 1.942808064112665,
            "weather": {
              "weather": "Berawan",
              "visibility": 6,
              "wave_height": 0.6,
              "wind_speed": 11,
              "wind_from": "Barat Daya",
              "wind_gust": 15,
              "current_speed": 1.9,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.160243769725778,
            "lng": 114.43231396196947,
            "distance_from_start": 2.15867562679185,
            "weather": {
              "weather": "Berawan",
              "visibility": 6,
              "wave_height": 0.6,
              "wind_speed": 10,
              "wind_from": "Barat Daya",
              "wind_gust": 15,
              "current_speed": 1.9,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.162332,
            "lng": 114.43511,
            "distance_from_start": 2.3745431894710354,
            "weather": {
              "weather": "Berawan",
              "visibility": 6,
              "wave_height": 0.6,
              "wind_speed": 10,
              "wind_from": "Barat Daya",
              "wind_gust": 15,
              "current_speed": 1.9,
              "current_to": "Selatan"
            }
          }
        ],
        "departure_time": "2026-08-25T01:00",
        "arrival_time": "2026-08-25T04:00",
        "timezone": "Asia/Jakarta",
        "speed": 1,
        "distance": "2.37"
      },
      "port_forecast": {
        "origin": {
          "name": "Pelabuhan Ketapang",
          "province": "Jawa Timur",
          "weather": {
            "wind_speed": 10,
            "wind_gust": 12,
            "wind_from": "Barat Daya",
            "current_speed": 0.94,
            "current_to": "Barat Daya",
            "wave_height": 0.6,
            "weather": "Berawan",
            "temp_avg": 22.63,
            "rh_avg": 74.27,
            "visibility": 6
          }
        },
        "destination": {
          "name": "Pelabuhan ASDP Gilimanuk",
          "province": "Bali",
          "weather": {
            "wind_speed": 10,
            "wind_gust": 12,
            "wind_from": "Barat Daya",
            "current_speed": 0.38,
            "current_to": "Barat Daya",
            "wave_height": 0.6,
            "weather": "Berawan",
            "temp_avg": 22.26,
            "rh_avg": 83.2,
            "visibility": 6
          }
        }
      }
    },
    {
      "route_name": "Ketapang - Gilimanuk 04.00 WIB",
      "route_forecast": {
        "coordinates": [
          {
            "lat": -8.142169,
            "lng": 114.401092,
            "distance_from_start": 0,
            "weather": {
              "weather": "Berawan Tebal",
              "visibility": 6,
              "wave_height": 0.6,
              "wind_speed": 10,
              "wind_from": "Barat Daya",
              "wind_gust": 15,
              "current_speed": 2.1,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.144378677625022,
            "lng": 114.4039570904799,
            "distance_from_start": 0.21586756267918503,
            "weather": {
              "weather": "Berawan Tebal",
              "visibility": 6,
              "wave_height": 0.6,
              "wind_speed": 10,
              "wind_from": "Barat Daya",
              "wind_gust": 15,
              "current_speed": 2.1,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.146588355250042,
            "lng": 114.40682218095981,
            "distance_from_start": 0.43173512535837005,
            "weather": {
              "weather": "Berawan Tebal",
              "visibility": 6,
              "wave_height": 0.6,
              "wind_speed": 11,
              "wind_from": "Barat Daya",
              "wind_gust": 15,
              "current_speed": 2.1,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.148316049106139,
            "lng": 114.40999914363965,
            "distance_from_start": 0.647602688037555,
            "weather": {
              "weather": "Berawan Tebal",
              "visibility": 6,
              "wave_height": 0.6,
              "wind_speed": 11,
              "wind_from": "Barat Daya",
              "wind_gust": 15,
              "current_speed": 2.1,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.149967837569728,
            "lng": 114.4132252216285,
            "distance_from_start": 0.8634702507167401,
            "weather": {
              "weather": "Berawan Tebal",
              "visibility": 6,
              "wave_height": 0.6,
              "wind_speed": 12,
              "wind_from": "Barat Daya",
              "wind_gust": 15,
              "current_speed": 2.6,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.151619626033316,
            "lng": 114.41645129961735,
            "distance_from_start": 1.079337813395925,
            "weather": {
              "weather": "Berawan Tebal",
              "visibility": 6,
              "wave_height": 0.6,
              "wind_speed": 12,
              "wind_from": "Barat Daya",
              "wind_gust": 15,
              "current_speed": 2.6,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.153271414496905,
            "lng": 114.4196773776062,
            "distance_from_start": 1.29520537607511,
            "weather": {
              "weather": "Berawan Tebal",
              "visibility": 7,
              "wave_height": 0.6,
              "wind_speed": 12,
              "wind_from": "Barat Daya",
              "wind_gust": 16,
              "current_speed": 2.6,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.154923202960495,
            "lng": 114.42290345559506,
            "distance_from_start": 1.5110729387542952,
            "weather": {
              "weather": "Berawan Tebal",
              "visibility": 7,
              "wave_height": 0.6,
              "wind_speed": 12,
              "wind_from": "Barat Daya",
              "wind_gust": 16,
              "current_speed": 2.6,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.156574991424083,
            "lng": 114.42612953358392,
            "distance_from_start": 1.7269405014334802,
            "weather": {
              "weather": "Berawan Tebal",
              "visibility": 7,
              "wave_height": 0.6,
              "wind_speed": 11,
              "wind_from": "Barat Daya",
              "wind_gust": 16,
              "current_speed": 3.1,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.158226779887672,
            "lng": 114.42935561157277,
            "distance_from_start": 1.942808064112665,
            "weather": {
              "weather": "Berawan Tebal",
              "visibility": 7,
              "wave_height": 0.6,
              "wind_speed": 11,
              "wind_from": "Barat Daya",
              "wind_gust": 16,
              "current_speed": 3.1,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.160243769725778,
            "lng": 114.43231396196947,
            "distance_from_start": 2.15867562679185,
            "weather": {
              "weather": "Berawan Tebal",
              "visibility": 7,
              "wave_height": 0.6,
              "wind_speed": 11,
              "wind_from": "Barat Daya",
              "wind_gust": 16,
              "current_speed": 3.1,
              "current_to": "Selatan"
            }
          },
          {
            "lat": -8.162332,
            "lng": 114.43511,
            "distance_from_start": 2.3745431894710354,
            "weather": {
              "weather": "Berawan Tebal",
              "visibility": 7,
              "wave_height": 0.6,
              "wind_speed": 11,
              "wind_from": "Barat Daya",
              "wind_gust": 16,
              "current_speed": 3.1,
              "current_to": "Selatan"
            }
          }
        ],
        "departure_time": "2026-08-25T04:00",
        "arrival_time": "2026-08-25T07:00",
        "timezone": "Asia/Jakarta",
        "speed": 1,
        "distance": "2.37"
      },
      "port_forecast": {
        "origin": {
          "name": "Pelabuhan Ketapang",
          "province": "Jawa Timur",
          "weather": {
            "wind_speed": 10,
            "wind_gust": 12,
            "wind_from": "Barat Daya",
            "current_speed": 0.75,
            "current_to": "Barat Daya",
            "wave_height": 0.6,
            "weather": "Berawan Tebal",
            "temp_avg": 22.27,
            "rh_avg": 79.38,
            "visibility": 6
          }
        },
        "destination": {
          "name": "Pelabuhan ASDP Gilimanuk",
          "province": "Bali",
          "weather": {
            "wind_speed": 11,
            "wind_gust": 11,
            "wind_from": "Barat Daya",
            "current_speed": 0.29,
            "current_to": "Barat Daya",
            "wave_height": 0.6,
            "weather": "Berawan Tebal",
            "temp_avg": 24.36,
            "rh_avg": 76.15,
            "visibility": 7
          }
        }
      }
    }
  ]
}