Select to view content in your preferred language

Python を使って ArcGIS Velocity のフィードにデータを送信してみよう!

157
0
2 weeks ago
Labels (1)

Python を使って ArcGIS Velocity のフィードにデータを送信してみよう!

はじめに

 

今回は、ArcGIS Velocityフィード Python を使ってデータを送信する方法をご紹介します。フィードは HTTP 受信機 を使用します。ArcGIS 認証付きの設定とするため、トークンの取得や指定方法も合わせてご紹介します。

ArcGIS VelocityArcGIS Velocity

 

 

ArcGIS Velocity の概要、フィードやリアルタイム解析の作成や実行については、過去ブログ( ArcGIS Velocity でリアルタイム データをマップに表示してみよう / Python を使ってリアルタイム解析を監視してみよう! )を合わせてご覧ください。

 

フィードの設定

 

それでは、フィードの設定から始めていきましょう。

ArcGIS Velocity へサインインし、「フィードの作成」から新規でフィードを作成します。

KojiKUROSAWA_1-1718665690699.png

 

フィード タイプは、「Web およびメッセージング」の中から「HTTP 受信機」を選択します。

KojiKUROSAWA_2-1718665730973.png

 

KojiKUROSAWA_3-1718665775586.png

 

HTTP 受信機の設定では、認証タイプを ArcGIS とし、スキーマの指定に進みます。

KojiKUROSAWA_4-1718665801209.png

 

スキーマの指定では、X (経度)および Y (緯度)、対象となるデータの ID と日時を含めるようにします。

KojiKUROSAWA_5-1718665827534.png

 

キー フィールドの識別では、X (経度)および Y (緯度)や日時、Track ID をそれぞれ設定します。

KojiKUROSAWA_6-1718665848806.png

 

フィード タイトルを設定して、フィードの作成は完了です。

KojiKUROSAWA_7-1718665874611.png

 

データを受信するため、フィードを開始しておきます。また、データの送信先となる HTTP エンドポイントのパスを控えておきます。

KojiKUROSAWA_8-1718665903336.png

 

 

Python によるデータの送信

 

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 上での確認ができます。

KojiKUROSAWA_9-1718666368422.png

 

KojiKUROSAWA_10-1718666387390.png

 

「メトリクス」タブでは、平均レートやグラフでの確認もできます。

KojiKUROSAWA_11-1718666415005.png

 

リアルタイム解析を既に作成している場合は、「ノード データのサンプリング」から受信データの中身を確認することも可能です。

 

まとめ

 

Python を使った ArcGIS Velocity のフィード (HTTP 受信機) へのデータ送信をご紹介しました。フィードには HTTP 受信機だけでなく、他にも様々なタイプのフィードがありますので、今後もご紹介できればと思います。リアルタイム データの取り込みや解析に是非 ArcGIS Velocity をご活用ください。

 

関連リンク

 

ArcGIS Velocity:

 

ArcGIS Developers:

 

Labels (1)
Version history
Last update:
2 weeks ago
Updated by:
Contributors