ACT距離計算サービスのプログラミングについて
トップ開発者向け製品・サービスACT距離計算サービスACT距離計算サービスのプログラミングについて

ACT距離計算サービスのサーバ構成

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


●管理サーバ
ユーザIDやパスワードが正しいかを判定するユーザ認証機能、どの距離計算サーバがどのような計算用道路データを保持しているかといった状態管理機能を有しています。

●距離計算サーバ
道路ネットワークデータ(「計算用道路データ」といいます)を保持しており、クライアントから受信した計算要求をもとに、距離計算を実行し、計算結果をクライアントに返信します。1台の距離計算サーバには複数の計算用道路データが設定されている場合があります。

●住所検索サーバ
住所データを保持しており、クライアントから受信した検索要求をもとに、漢字住所文字列・住所コード・郵便番号から当該地点の経緯度を検索し、検索結果をクライアントに返信します。


サービスの種類

管理サーバと距離計算サーバには、次のようなWebサービスが存在します。
距離計算を行うには、管理サーバと距離計算サーバの両方のサービスを呼び出す必要があります。

サーバサービス解説
管理サーバ計算用道路データ情報
取得サービス
指定ユーザが計算可能な計算用道路データのリストを取得する
距離計算サーバ
取得サービス
指定計算用道路データで計算可能な距離計算サーバのURLを取得する
距離計算サーバ距離計算サービス距離計算を実行する
住所検索サーバ住所検索サービス住所検索を実行する

呼び出し手順

ACT距離計算サービスを呼び出すプログラミング方法には、2つのパターンがあります。
  • XML/Webサービスに対応している開発環境の場合
    「ACT距離計算サービスWSDLファイル」を使用して直接距離計算サービスを呼び出す
  • XML/Webサービスに対応していない開発環境の場合
    ACT距離計算サービスとWin32アプリケーションとの橋渡しを行う「ACT距離計算サービス-Win32 ブリッジDLL」を使用して間接的に距離計算サービスを呼び出す
以下は、「ACT距離計算サービスWSDLファイル」を使用して距離計算サービスを呼び出す一般的な手順です。


  1. 計算用道路データ情報取得サービス呼び出し
    ユーザ毎に与えられるユーザIDで、距離計算が可能な計算用道路データのリストを取得するサービスを呼び出します。
  2. 計算用道路データのリスト取得
    管理サーバから計算用道路データのリストを取得します。クライアントでは、このリストを画面に表示し、ユーザ操作により選択、計算したい計算用道路データを決定します。
  3. 距離計算サーバ取得サービス呼び出し
    計算したい計算用道路データで距離計算可能な距離計算サーバの情報を取得するサービスを呼び出します。
  4. 距離計算サーバの情報取得
    距離計算サーバのURL、IPアドレス、ポート番号を取得します。
  5. 距離計算サービス呼び出し
    4. で取得した距離計算サーバのURL、IPアドレス、ポート番号を用いて、距離計算サービスを呼び出します。
  6. 計算結果の取得
    計算結果を取得し、所要時間、道のり、走行ルートなどの情報を画面や地図上に表示します。

サンプルコード

流入圏計算(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())


チーム・マイナス6%
アドバンスド・コア・テクノロジーは、チーム・マイナス6%に参加しています。