ArcGIS API for Python バージョン 1.7.0 をリリースしました

python

2019 年 12 月 6 日付で ArcGIS API for Python バージョン 1.7.0 の国内サポートを開始しました。今回のバージョン アップでは新たに解析処理を非同期実行するためのクラス等が追加されました。本稿では新たに追加された機能の概要をご紹介いたします。

アップデートされた主な内容

ジオプロセシング関連のメソッドを非同期で実行可能にする GPJob クラスを追加

arcgis.features.analysis モジュールや、arcgis.network.analysis モジュール等の解析サービスの各メソッドに、future パラメーターが追加されました。True を指定することで、各メソッドを非同期実行する GPJob クラスのインスタンスが作成されます。

非同期処理のため実行結果を待たずに他の処理を実行でき、cancel メソッドで解析のキャンセルを行ったり ellapse_time プロパティで処理にかかった時間を取得したりすることも可能です。

 

ProfileManager、InvitationManager、CertificateManager クラスを追加

Web GIS の管理に関わるクラスとして新たに 3 つのクラスが追加されました。

ProfileManager でプロファイルを作成すると、ポータルにログインするためのパスワードが OS のパスワード マネージャー (Windows であれば資格情報マネージャー) にセキュアに保存され、それ以外のユーザー名等の情報がユーザーのホーム ディレクトリ (C:\Users\xxxx) に .arcgisprofile というファイルとして保存されます。プロファイル作成後は arcgis.gis.GIS の profile パラメーターに作成したプロファイル名を指定することで、通常のユーザー名やパスワードを指定せずにポータルにログインしたインスタンスを作成できます。

ProfileManager

ポータルにプロファイル名だけ指定してログインし、アイテムを検索

InvitationManager はメールで行った組織への招待を管理し、現在出されている招待のリストの確認や削除を行うことができ、CertificateManagerArcGIS Online の組織が信頼する証明書の管理を行うことができます。

GeoPackage をアイテムとして追加する機能をサポート

OGC 標準でもある GeoPackage をアイテムとしてポータルに追加し、サービスを公開できるようになりました。

find_routes、find_closest_facilities メソッド等に解析結果のルート データを保存するオプションを追加

arcgis.network.analysis モジュールの find_routesfind_closest_facilities 等に save_route_data オプションが追加されました。True を指定するとルート データのファイル ジオデータベースを zip 化したものが出力されます。次項の create_route_layers メソッドのインプットとして使用することでルートレイヤーを作成することができます。

create_route_layers メソッドの追加

arcgis.features.manage_data モジュールに create_route_layers メソッドが追加されました。事前に作成されたルート データを route_data パラメーターに指定し実行することで、ルート レイヤーをポータル上に作成することができます。

ルート レイヤーをポータル上に作成

arcgis.features.analysis モジュールにも同様のメソッドがあり、サンプルコードが公開 (Finding routes for appliance delivery with Vehicle Routing Problem Solver) されています。

generate_tessellation メソッドの追加

特定の範囲をカバーする正多角形のテッセレーション グリッドを生成します。形状は、三角形、四角形、六角形等をパラメーターで指定することができます。テッセレーション グリッドはポイントデータを集計する目的で使用されます。国内では四角形の地域メッシュで集計する例が多いと思われますが、その他の形状で集計したい場合や、任意のサイズで集計したい場合などにも活用できます。

テッセレーション グリッドを生成

arcgis.learn モジュールに 4 つのクラスを追加

今回のバージョン アップでは以下の4つのクラスが追加されました。

RetinaNet は Facebook AI Research (FAIR) が提案した手法で、Focal Loss と呼ばれる損失関数を用いることで高速かつ高精度で物体検出を行うため、近年最もポピュラーな手法の一つとなっています。

RetinaNet

精度 (縦軸) と推論速度 (横軸) を他の手法との比較 (出所: arXiv:1708.02002 [cs.CV])

PSPNet は他の手法では活用できていなかった画像全体のコンテキストを考慮することで精度を向上させた画像セグメンテーションの手法です。以下の画像の最上段では、青枠の FCN (fully convolutional network) では池の上のボートを車と認識していますが、赤枠の PSPNet では画像全体のコンテキストを元にしてボートと正しく認識しています。同様に誤りやすいビルと高層ビル、ベッドと枕といった色やテクスチャーが似たものも正確に分類できていることがわかります。

PSPNet

FCN (fully convolutional network) と PSPNet の比較 (出所: arXiv:1612.01105 [cs.CV])

MaskRCNN も FAIR により提案された手法です。Faster-RCNN という手法をベースにしており、物体検出と検出された物体のセグメンテーションを行う他、人の姿勢を推定するためにキーポイントを検出するといったタスクにも容易に拡張できます。

MaskRCNN

Mask-RCNN を用いた物体検出とセグメンテーションの結果 (出所: arXiv:1703.06870 [cs.CV])

EntityRecognizer は構造化されていないテキストのエンティティ抽出に対応しています。

SingleShotDetector クラスに predict_video メソッドを追加

物体検出を行う SingleShotDetector クラスに動画の中の物体を検出するためのメソッドが追加されました。今年の 2019 Esri Developer Summit では動画内の物体検出を TensorFlow を用いてデモンストレーションしていましたが、今回のバージョン アップで同様の機能が ArcGIS API for Python に実装されたことになります。

その他の機能拡張/不具合修正情報

その他の新機能や機能拡張、既知の制限事項等の詳細は「リリース ノート」(英語) をご参照ください。

■関連リンク

ESRIジャパン Web サイト:
ArcGIS API for Python
ArcGIS for Developers 開発リソース集:
製品コンセプト
ArcGIS API for Python のための基礎環境:conda入門
開発リソース集:インストールガイド
Jupyter Notebook を使ってみよう
JupyterLab を使ってみよう

米国 Esri 社 Web サイト:
ArcGIS API for Python
Release Note
API Reference