駅すぱあと API BLOG

駅すぱあと APIの開発チームが作るブログです。

地図上に探索結果の経路を描画できるようになりました

f:id:ekispert_api:20211210161911p:plain

こんにちは、駅すぱあとWebサービス開発チームの山崎です。

この度「駅すぱあとWebサービス」では、ダイヤによる探索の経路をGoogle Maps などの地図サービス上で表示するための情報を取得できる、「経路探索結果のシェイプ情報」機能をリリースしました。

これにより、地図サービス上に探索結果の経路の線を表示した結果を表示できるため、経路が視覚的にわかりやすくなります。

具体的には?

新機能として、「経路探索結果のシェイプ情報」(/course/shape)が追加されます。

この機能を利用する場合、基本的な流れは以下のようになります。
1. ダイヤによる経路探索をする
2. 経路探索結果のシェイプ情報を取得する

まず最初に、ダイヤによる経路探索を行います。 例として、「高円寺駅から渋谷駅」の経路探索を行います。

「高円寺駅から渋谷駅」の経路探索は、以下のリクエストになります。

https://api.ekispert.jp/v1/xml/search/course/extreme?key=アクセスキーを入力してください&viaList=22671:22715&time=1000

※ レスポンスのフォーマットはJSON形式も選択可能です。
※ 22671は高円寺駅の駅コード、22715は渋谷駅の駅コードになります。

次に、経路探索の結果から、シェイプ情報を取得する経路を選択します。

例として、上記の探索結果から 高円寺--JR中央線快速--新宿--JR山手線内回り--渋谷 という経路を選択したとします。

(以下は経路の画面イメージです)

f:id:ekispert_api:20211210161946p:plain

探索結果から経路のシェイプ情報を取得するには、探索結果の経路シリアライズデータを使用します。 経路シリアライズデータのレスポンスのパラメータは以下になります。
ResultSet / Course / SerializeData

シェイプ情報を取得したい経路のシリアライズデータを、以下のようにserializeDataパラメータに指定し、「経路探索結果のシェイプ情報」をリクエストします。

https://api.ekispert.jp/v1/xml/course/shape?key=アクセスキーを入力してください&serializeData=経路のシリアライズデータ

レスポンスは以下のようになります。

<?xml version="1.0" encoding="UTF-8"?>
<ResultSet apiVersion="1.27.0.0" engineVersion="202112_05a">
  <Course dataType="onTimetable">
    <OperationLinePattern routeLineIndex="1">
      <Point index="1">
        <Station code="22671">
          <Name>高円寺</Name>
          <Type>train</Type>
          <Yomi>こうえんじ</Yomi>
        </Station>
        :
      </Point>
      <Line direction="Up" track="railway" toStationPos="200" index="1" fromStationPos="240" code="109">
        <Name>JR中央線快速</Name>
        <Shape index="1">
          <GeoPoint longi_d="139.6497" lati_d="35.70532406" gcs="wgs84" />
        </Shape>
        <Shape index="2">
          <GeoPoint longi_d="139.64992" lati_d="35.70533" gcs="wgs84" />
        </Shape>
        :
        <Shape index="65">
          <GeoPoint longi_d="139.70068" lati_d="35.69107" gcs="wgs84" />
        </Shape>
        <Shape index="66">
          <GeoPoint longi_d="139.7006171" lati_d="35.69018985" gcs="wgs84" />
        </Shape>
      </Line>
      <Point index="2">
        <Station code="22741">
          <Name>新宿</Name>
          <Type>train</Type>
          <Yomi>しんじゅく</Yomi>
        </Station>
        :
      </Point>
    </OperationLinePattern>
    <OperationLinePattern routeLineIndex="2">
      <Point index="1">
        <Station code="22741">
          <Name>新宿</Name>
          <Type>train</Type>
          <Yomi>しんじゅく</Yomi>
        </Station>
        <Prefecture code="13">
          <Name>東京都</Name>
        </Prefecture>
      </Point>
      <Line direction="Down" track="railway" toStationPos="350" index="1" fromStationPos="320" code="113">
        <Name>JR山手線内回り</Name>
        <Shape index="1">
          <GeoPoint longi_d="139.70014" lati_d="35.690465" gcs="wgs84" />
        </Shape>
        <Shape index="2">
          <GeoPoint longi_d="139.70024" lati_d="35.68926" gcs="wgs84" />
        </Shape>
        :
        <Shape index="49">
          <GeoPoint longi_d="139.70137" lati_d="35.6588" gcs="wgs84" />
        </Shape>
        <Shape index="50">
          <GeoPoint longi_d="139.7016399" lati_d="35.65810711" gcs="wgs84" />
        </Shape>
      </Line>
      <Point index="2">
        <Station code="22715">
          <Name>渋谷</Name>
          <Type>train</Type>
          <Yomi>しぶや</Yomi>
        </Station>
        :
      </Point>
    </OperationLinePattern>
  </Course>
</ResultSet>

このように、経路を地図上に表示するための緯度経度などの情報を取得することができます。

また、シェイプ情報は、ダイヤによる探索の経路の区間(ResultSet / Course / Route / Line)とインデックスで紐づく運行路線パターン(ResultSet / Course / OperationLinePattern)の区間毎に返ります。
この情報を利用することで、ダイヤによる経路探索の結果にある路線色の情報(ResultSet / Course / Route / Line / Color)を使い、地図上の線の色を路線のカラーに合わせることもできます。

なお、地図サービス上へのポリラインの描画方法につきましては、各サービスの仕様をご確認ください。

(以下は地図サービス上に表示した画面イメージです)

f:id:ekispert_api:20211210161911p:plain

「経路探索結果のシェイプ情報」機能の詳細については、以下の機能のリファレンスをご確認ください。
docs.ekispert.com

注意点

注意点は以下になります。

1. シェイプ情報は鉄道区間のみとなります。
2. ダイヤによる探索の経路シリアライズデータのみ利用できます。

・注意点1について
「経路探索結果のシェイプ情報」機能は、公共交通機関のうち、鉄道のみの対応となります。
そのため、鉄道以外の交通種別(路線バス、空路、海路、徒歩など)では、シェイプ情報は返りません。
鉄道と鉄道以外の交通種別を両方利用するような経路では、鉄道区間のみのシェイプ情報を返します。

・注意点2について
「経路探索結果のシェイプ情報」機能は、ダイヤによる探索の経路シリアライズデータのみの対応となります。平均待ち時間による探索の経路シリアライズデータではご利用できません。
ダイヤによる探索と、平均待ち時間による探索については、以下のドキュメントをご参照ください。 docs.ekispert.com docs.ekispert.com

おわりに

「経路探索結果のシェイプ情報」機能は、現在多くのサービスで利用されている地図サービス上で、経路を可視化し、利用者に分かりやすい案内ができるようになる機能となります。
ぜひご利用ください。


駅すぱあとWebサービスを使ってみるには? 駅すぱあとWebサービス スタンダードプランは90日間無料でお試しできます。 こちらから申し込みして気軽に触ってみてください!

ekiworld.net