今回は、ArcGIS Velocity のフィードへ Python を使ってデータを送信する方法をご紹介します。フィードは HTTP 受信機 を使用します。ArcGIS 認証付きの設定とするため、トークンの取得や指定方法も合わせてご紹介します。
ArcGIS Velocity の概要、フィードやリアルタイム解析の作成や実行については、過去ブログ( ArcGIS Velocity でリアルタイム データをマップに表示してみよう / Python を使ってリアルタイム解析を監視してみよう! )を合わせてご覧ください。
それでは、フィードの設定から始めていきましょう。
ArcGIS Velocity へサインインし、「フィードの作成」から新規でフィードを作成します。
フィード タイプは、「Web およびメッセージング」の中から「HTTP 受信機」を選択します。
HTTP 受信機の設定では、認証タイプを ArcGIS とし、スキーマの指定に進みます。
スキーマの指定では、X (経度)および Y (緯度)、対象となるデータの ID と日時を含めるようにします。
キー フィールドの識別では、X (経度)および Y (緯度)や日時、Track ID をそれぞれ設定します。
フィード タイトルを設定して、フィードの作成は完了です。
データを受信するため、フィードを開始しておきます。また、データの送信先となる HTTP エンドポイントのパスを控えておきます。
Python が実行できる環境(ArcGIS Pro の Python ウィンドウやジオプロセンシングツールなど)で、コードを実行します。
GIS モジュールを利用して GIS オブジェクトを取得し、そこからアクセストークンを取得します。GIS モジュールの使い方については、過去のブログ ( さわって覚える ArcGIS API for Python : 基本編 (GIS モジュール編) ) を合わせてご覧ください。
ここで指定するユーザー名は、フィードを作成したユーザー(フィードの所有者)である必要があります。
from arcgis.gis import GIS
gis = GIS(url, user_name, password)
token = gis._con.token
※ arcpy.SignInToPortal を使って ArcGIS Online へサインインし、arcpy.GetSigninToken でアクセストークンを取得する方法もあります。
次に送信するデータをJSON 形式で作成します。
import json
payload = {}
payload["target"] = 142965
payload["name"] = "QZS-4"
payload["point_x"] = 127.01639277655924
payload["point_y"] = 25.87437988031315
payload["point_z"] = 20140.516486993427
payload["epoch"] = "2024/05/31 00:00"
payload["save"] = False
payload["speed"] = 13972.45538915335
payload_json = json.dumps(payload)
※テストデータとなるため、ここではデータの中身は適当な数値や文字列を設定しています。
作成した JSON データを HTTP で送信します。HTTP ヘッダーに取得したアクセストークンを設定し、送信先には控えておいた HTTP エンドポイントのパスを設定します。
import requests
headers = {
"Content-Type": "application/json",
"Authorization': "Bearer {0}".format(token)
}
res = requests.post(endpoint, headers=headers, data=payload_json)
データの送信に成功しているかどうか、戻り値から HTTP ステータスコードを確認します。200 (OK) となっていれば送信は成功です。失敗する場合は、以下のような原因が考えられますので、再度確認してみてください。
フィードで受信したデータの確認は、ArcGIS Velocity のフィードの詳細画面、もしくは、「Map Viewer で開く」から Map Viewer 上での確認ができます。
「メトリクス」タブでは、平均レートやグラフでの確認もできます。
リアルタイム解析を既に作成している場合は、「ノード データのサンプリング」から受信データの中身を確認することも可能です。
Python を使った ArcGIS Velocity のフィード (HTTP 受信機) へのデータ送信をご紹介しました。フィードには HTTP 受信機だけでなく、他にも様々なタイプのフィードがありますので、今後もご紹介できればと思います。リアルタイム データの取り込みや解析に是非 ArcGIS Velocity をご活用ください。
ArcGIS Velocity:
ArcGIS Developers: