緯度経度から最寄り出口を経由して経路探索する
緯度経度から最寄り駅を検索し、その駅にある最寄り出口を経由した経路探索をします。
例として、自宅(35.689308746399576,139.69820022583008)から東京駅までの経路を探索する手順をご説明します。
関連URL
- 緯度経度からの周辺駅検索 /geo/station
- 地点生成 /toolbox/course/point
- 経路探索 /search/course/extreme
手順
1. addGateGroup=trueパラメータを付与して、緯度経度から最寄り駅と出口情報を取得する
GET /v1/xml/geo/station?key=アクセスキーを入力してください&geoPoint=35.689308746399576,139.69820022583008,wgs84,1000&type=train&addGateGroup=true
<?xml version="1.0" encoding="UTF-8"?>
<ResultSet apiVersion="1.27.0.0" engineVersion="201712_04a">
<Point>
<Station code="22741">
<Name>新宿</Name>
<Type>train</Type>
<Yomi>しんじゅく</Yomi>
<GateGroup>
<Gate code="G4265">
<Name>西口1</Name>
<GeoPoint longi="139.42.9.8" lati="35.41.17.62" longi_d="139.702524" lati_d="35.68823" gcs="tokyo" />
<Distance>258</Distance>
</Gate>
:
</GateGroup>
<GateGroup>
<Gate code="G4167">
<Name>東南口</Name>
<GeoPoint longi="139.42.16.22" lati="35.41.10.86" longi_d="139.704506" lati_d="35.686351" gcs="tokyo" />
<Distance>282</Distance>
</Gate>
</GateGroup>
<GateGroup>
<Gate code="G16766">
<Name>A1(都営線)</Name>
<GeoPoint longi="139.42.9.30" lati="35.41.0.96" longi_d="139.702586" lati_d="35.683601" gcs="tokyo" />
<Distance>295</Distance>
</Gate>
</GateGroup>
<Prefecture code="13">
<Name>東京都</Name>
</Prefecture>
<GeoPoint longi="139.42.11.0" lati="35.41.15.0" longi_d="139.703056" gcs="tokyo" lati_d="35.6875" />
<Distance>216</Distance>
</Station>
</Point>
<Point>
:
</Point>
</ResultSet>
ResultSet/Point/Station/GateGroup/Gate
が最寄り駅にある出口の情報を表します。
ResultSet/Point/Station/GateGroup/Gate/Distance
が指定された緯度経度から出口までの直線距離になります。
GateGroup
要素ごとに、Distance
要素の値が最小になるGate
要素を1つずつ選び、そのcode
属性を控えておきます。
※ GateGroup
要素の意味については、出口グループをご参照ください。
※ GateGroup
要素を利用せずに、単にDistance
要素が最小になるGate
要素を選んで経路探索した場合、その出口からは乗車できない路線が存在すると、期待する経路結果にならない可能性があります。
ResultSet/Point/Station/GateGroup/Gate/Distance
は指定された緯度経度から出口までの直線距離です。
道路に沿った距離を取得したい場合は、アプリケーション側で地図サービスとの連携するなどが必要となります。
2. 出口コードから地点生成する
1. で控えておいた各グループの出口コードをすべて指定して地点生成します。
※リクエスト例では日本語で記述しておりますが、リクエストパラメータに日本語が含まれる場合には、日本語の部分をUTF8でURLエンコード(パーセントエンコード)してください。
GET /v1/xml/toolbox/course/point?key=アクセスキーを入力してください&name=自宅&station=G4265:G4167:G16766&time=15:15:15&traffic=徒歩:徒歩:徒歩
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ResultSet apiVersion="1.27.0.0" engineVersion="201711_02a">
<Point>
<SerializeData>P-%E8%87%AA%E5%AE%85-G4265,G4167,G16766-15,15,15--%E5%BE%92%E6%AD%A9,%E5%BE%92%E6%AD%A9,%E5%BE%92%E6%AD%A9--0----</SerializeData>
</Point>
</ResultSet>
3. 生成した地点を出発地として経路探索する
2. で生成した地点データと到着地を指定して、経路探索を行います。
リクエスト例では経路探索 /search/course/extreme
を使用していますが、経路簡易探索 /search/course
も使用可能です。
※リクエスト例では日本語で記述しておりますが、リクエストパラメータに日本語が含まれる場合には、日本語の部分をUTF8でURLエンコード(パーセントエンコード)してください。
GET /v1/xml/search/course/extreme?key=アクセスキーを入力してください&viaList=P-%E8%87%AA%E5%AE%85-G4265,G4167,G16766-15,15,15--%E5%BE%92%E6%AD%A9,%E5%BE%92%E6%AD%A9,%E5%BE%92%E6%AD%A9--0----:東京&searchType=departure
<?xml version="1.0" encoding="UTF-8"?>
<ResultSet apiVersion="1.27.0.0" engineVersion="201712_04a">
<Course searchType="departure" dataType="onTimetable">
<Route timeOther="3" timeOnBoard="14" exhaustCO2="226" index="1" exhaustCO2atPassengerCar="1730" distance="103" timeWalk="15" transferCount="0">
<Point index="1">
<Name>自宅</Name>
</Point>
<Line stopStationCount="0" timeOnBoard="15" exhaustCO2="0" index="1" exhaustCO2atPassengerCar="0" distance="0">
<Name>徒歩</Name>
<ArrivalState>
<Gate>
<Name>東南口</Name>
<GeoPoint longi="139.42.16.22" lati="35.41.10.86" longi_d="139.704506" lati_d="35.686351" gcs="tokyo" />
</Gate>
<Type>normal</Type>
<Datetime operation="today">2017-12-19T17:12:00+09:00</Datetime>
</ArrivalState>
<Destination />
<TimeReliability>average</TimeReliability>
<DepartureState>
<Type>normal</Type>
<Datetime operation="today">2017-12-19T16:57:00+09:00</Datetime>
</DepartureState>
<Color>000000000</Color>
</Line>
<Point index="2">
<Station code="22741">
<Name>新宿</Name>
<Type>train</Type>
<Yomi>しんじゅく</Yomi>
</Station>
<Prefecture code="13">
<Name>東京都</Name>
</Prefecture>
<GeoPoint longi="139.42.11.0" lati="35.41.15.0" longi_d="139.703056" gcs="tokyo" lati_d="35.6875" />
</Point>
<Line stopStationCount="3" teiki3Index="1" teiki6Index="1" timeOnBoard="14" track="railway" exhaustCO2="226" fareIndex="1" index="2" exhaustCO2atPassengerCar="1730" distance="103" teiki1Index="1">
<Name>JR中央線快速・東京行</Name>
<Type>train</Type>
<ArrivalState no="2">
<Type>normal</Type>
<Datetime operation="today">2017-12-19T17:29:00+09:00</Datetime>
</ArrivalState>
<Destination>東京</Destination>
<TimeReliability>onTimetable</TimeReliability>
<DepartureState no="8">
<Type>normal</Type>
<Datetime operation="today">2017-12-19T17:15:00+09:00</Datetime>
</DepartureState>
:
<Color>250060002</Color>
</Line>
<Point index="3">
<Station code="22828">
<Name>東京</Name>
<Type>train</Type>
<Yomi>とうきょう</Yomi>
</Station>
<Prefecture code="13">
<Name>東京都</Name>
</Prefecture>
<GeoPoint longi="139.46.13.59" lati="35.40.41.9" longi_d="139.770444" gcs="tokyo" lati_d="35.678083" />
</Point>
</Route>
:
</Course>
:
</ResultSet>
以上で、出口を考慮した上で自宅から新宿駅まで最適の経路が得られました。