ACT距離計算サービスのサーバ構成
ACT距離計算サービスは、1台の管理サーバ、複数台の距離計算サーバおよび住所検索サーバから構成されています。

●管理サーバ
ユーザIDやパスワードが正しいかを判定するユーザ認証機能、どの距離計算サーバがどのような計算用道路データを保持しているかといった状態管理機能を有しています。
●距離計算サーバ
道路ネットワークデータ(「計算用道路データ」といいます)を保持しており、クライアントから受信した計算要求をもとに、距離計算を実行し、計算結果をクライアントに返信します。1台の距離計算サーバには複数の計算用道路データが設定されている場合があります。
●住所検索サーバ
住所データを保持しており、クライアントから受信した検索要求をもとに、漢字住所文字列・住所コード・郵便番号から当該地点の経緯度を検索し、検索結果をクライアントに返信します。
サービスの種類
管理サーバと距離計算サーバには、次のようなWebサービスが存在します。
距離計算を行うには、管理サーバと距離計算サーバの両方のサービスを呼び出す必要があります。
| サーバ | サービス | 解説 |
| 管理サーバ | 計算用道路データ情報 取得サービス | 指定ユーザが計算可能な計算用道路データのリストを取得する |
距離計算サーバ 取得サービス | 指定計算用道路データで計算可能な距離計算サーバのURLを取得する |
| 距離計算サーバ | 距離計算サービス | 距離計算を実行する |
| 住所検索サーバ | 住所検索サービス | 住所検索を実行する |
|
呼び出し手順
ACT距離計算サービスを呼び出すプログラミング方法には、2つのパターンがあります。
- XML/Webサービスに対応している開発環境の場合
「ACT距離計算サービスWSDLファイル」を使用して直接距離計算サービスを呼び出す
- XML/Webサービスに対応していない開発環境の場合
ACT距離計算サービスとWin32アプリケーションとの橋渡しを行う「ACT距離計算サービス-Win32 ブリッジDLL」を使用して間接的に距離計算サービスを呼び出す
以下は、「ACT距離計算サービスWSDLファイル」を使用して距離計算サービスを呼び出す一般的な手順です。
- 計算用道路データ情報取得サービス呼び出し
ユーザ毎に与えられるユーザIDで、距離計算が可能な計算用道路データのリストを取得するサービスを呼び出します。
- 計算用道路データのリスト取得
管理サーバから計算用道路データのリストを取得します。クライアントでは、このリストを画面に表示し、ユーザ操作により選択、計算したい計算用道路データを決定します。
- 距離計算サーバ取得サービス呼び出し
計算したい計算用道路データで距離計算可能な距離計算サーバの情報を取得するサービスを呼び出します。
- 距離計算サーバの情報取得
距離計算サーバのURL、IPアドレス、ポート番号を取得します。
- 距離計算サービス呼び出し
4. で取得した距離計算サーバのURL、IPアドレス、ポート番号を用いて、距離計算サービスを呼び出します。
- 計算結果の取得
計算結果を取得し、所要時間、道のり、走行ルートなどの情報を画面や地図上に表示します。
サンプルコード
流入圏計算(Visual Basic Ver.6)
' 東京都庁までの流入圏計算とポリゴン取得を行うサンプル
Dim Environ As DCWSInc.Environ ' 環境設定構造体
Dim CAParam As DCWSInc.CAParam ' 到達圏/流入圏パラメータ構造体
DimNWInfo As DCWSInc.NWInfo ' 計算用道路データ情報構造体
DimResultMsg As String ' 距離計算結果文字列
DimnRet As Integer ' ブリッジ関数の戻り値
' ユーザID、パスワード設定
Environ.szUserID = " UserID "
Environ.szUUID = " Password "
Environ.szHWUID = ""
Environ.szHost = ""
Environ.szWSUrl = "http://distcalc.act-inc.co.jp/dcadmin/admin.asmx"
nRet = ACT_DCWS_SetEnviron(Environ)
' 計算用道路データ情報取得サービス呼び出し
MsgBox("計算用道路データ数:" & ACT_DCWS_GetUsableNWInfosCount())
' 距離計算サーバ取得サービス呼び出し
nRet = ACT_DCWS_GetUsableNWInfo(NWInfo, 0) ' 最初の計算用道路データを指定
nRet = ACT_DCWS_GetUsableDCServer(NWInfo)
nRet = ACT_DCWS_GetEnviron(Environ)
MsgBox ("距離計算サーバエンドポイントURL:" & Environ.szWSUrl)
MsgBox ("距離計算サーバIP:" & Environ.szHost)
MsgBox ("距離計算サーバPort:" & Environ.nPort)
' パラメータ(時間最短、高速使用する、流入圏計算、90分圏、時間圏、
' 単一ポリゴン、ポリゴンレベル3)を設定
CAParam.nCalcKind = CALCKIND_TIME
CAParam.nNotUseHiway = USEHIGHWAY_USE
CAParam.nAreaDirection = AREADIRECTION_INFLOW
CAParam.nAreaRange = CLng (90) * 60 * 10
CAParam.nAreaKind = AREAKIND_TIME
CAParam.nPolygonKind = POLYGONKIND_SINGLE
CAParam.nPolygonLevel = 3
CAParam.nDonutPolygonLevel = -2
CAParam.StartGeoPnt.szLon = "139.695000"
CAParam.StartGeoPnt.szLat = "35.686389"
nRet = ACT_DCWS_SetCAParam(CAParam)
' 距離計算サービス呼び出し
ResultMsg = Space(MAX_RESULTMSG_LEN)
nRet = ACT_DCWS_CalcArea()
MsgBox("流入圏ポリゴンのポイント数:" & ACT_DCWS_GetPntsCount())