ArcGIS Business Analyst で使える変数を ArcGIS API for Python から取得 ~商圏作成から人口統計集計まで~

502
0
02-24-2022 11:28 PM
Labels (1)

ArcGIS Business Analyst で使える変数を ArcGIS API for Python から取得 ~商圏作成から人口統計集計まで~

※ 本記事は ArcGIS Business Analyst in the ArcGIS API for Python! (esri.com) を参考に作成しています。

ArcGIS Business Analyst は、商圏分析エリアマーケティング特化型 GIS ソリューションであり、組織のスマートな意思決定のために必要な機能とデータを搭載しています。ArcGIS Business Analyst のデスクトップ型アプリケーションである ArcGIS Business Analyst Pro (以下、BA Pro) で利用できるオフライン データセットには 1,000 以上の変数が搭載されているため、使用する変数を探すために手間がかかっていました。 

ArcGIS Pro 2.9 以降で標準搭載されている ArcGIS API for Python (バージョン 1.9.1 以上) には、オフライン データセットで利用可能な変数を簡単に検索・使用するための arcgis.geoenrichment モジュールが追加されています。本記事では、その使用方法をサンプルも交えてご紹介いたします。

なお、本記事のスクリプトを実行するには ArcGIS Pro 2.9 以上で、かつ  BA Pro を利用可能なライセンスを保持している必要がありますのでご注意ください。

image1.png

 

1.オフライン データの検索

BA Pro で利用できるデータセットを取得します。gis = GIS(“Pro”) と指定することで、オフライン データセットのみを検出できるようになります。ArcGIS API for Python 1.9.1 as_df パラメーターが追加され、利用可能なデータセットを Pandas Dataframe 形式で取得できるようになりました。

gis = GIS("Pro")
cntry_df = get_countries(gis, as_df=True)

 

2.データセット内の変数を取得

取得したデータセットで利用可能な変数の一覧を Pandas Dataframe 形式で簡単に取得することができます。取得した Dataframe を自由にフィルタリングして、必要な変数のみを抽出できます。

# Country オブジェクトを取得
jp = Country('JPN', gis)
# 利用可能な全変数を取得
ev = jp.enrich_variables
# この例では以下の条件でフィルタリングしています
kv = ev[
    (ev.alias.str.startswith(u'2015')  # 2015 からエイリアス名が始まる
    & ev.alias.str.contains(u"人口総数") # かつ人口総数を含む
    & ev.data_collection.str.contains("Totals")) # かつ DataCollection Totals を含む
].reset_index(drop=True)

 

3.情報付加対象のポリゴンを生成

情報付加(Enrich Layer)ツールを実行して、任意の区画内に統計データを集計します。今回は、ArcGIS Online 上の優良コンテンツを集めた ArcGIS Living Atlas of the World から都道府県庁所在地を取得し、その周辺に 5km のリング商圏を生成して、情報付加対象のポリゴンとします。

from arcgis.gis import Item
item = Item(gis=gis, itemid='4d1349c0f93a4844b4b9f725bf101181')
# itemid はアイテム詳細ページの id= 以下の id を指します

# Business Analyst エクステンションのチェックアウト(※要 Business Analyst ライセンス)
arcpy.CheckOutExtension="BusinessPrem"

# item から一つ目のレイヤーの service URL を取得
serviceURL = item.layers[0].url
ring_ta = r"memory\tmp5kmRings"
# リング商圏の生成ツールを実行
arcpy.ba.GenerateTradeAreaRings(in_features=serviceURL, # 入力データ
out_feature_class=ring_ta, # memoryワークスペースに出力(上書き不可)
radii=[5], units="KILOMETERS")# 半径 5km

 

4.情報付加を実行

ステップ3で生成したポリゴンに対して、情報付加ツールを実行します。memory ワークスペースに出力しているため、結果の上書きはできないのでご注意ください。情報付加する変数は、ステップ2で取得した結果を利用しています。

enrich_fc = arcpy.ba.EnrichLayer(in_features=ring_ta, # 入力データ
out_feature_class=r'memory\ring_enrich', # memory ワークスペースに出力(上書き不可)
variables=list(kv.enrich_name) # Series から List 作成
)[0]

 

5.出力結果のクリーンアップおよび CSV 出力

memory ワークスペースに出力したフィーチャクラスを Pandas Dataframe に変換して、スキーマの調整を行います。最終的に必要なカラム以外は削除して、CSV への保存を行っています。

from arcgis.features import GeoAccessor
enrich_df = GeoAccessor.from_featureclass(enrich_fc)
# 不要なカラムをドロップ
drop_cols = [c for c in enrich_df.columns if not
(c in kv.enrich_field_name.values # 情報付加した変数の出力名(フィールド名)
or c.lower() == "name") # もしくは name フィールド
]
enrich_df.drop(columns=drop_cols, inplace=True)
# 結果をCSVに保存
enrich_df.to_csv('enrich_local.csv', index=False)

 

以上の手順で、BA Pro 上で利用できる統計データの検索、商圏の作成、情報付加、結果の CSV の出力を行うことができました。arcgis.geoenrichment モジュールを利用することで、以前と比べて、対話的に情報付加可能な変数を抽出することが可能となります。

本サンプル ノートブックの全容と内容については、GitHub にて公開していますので、よろしければご参照ください。また、ArcGIS Business Analyst in the ArcGIS API for Python! (esri.com) はオンライン データセットに対する処理も紹介されているので、興味のある方はご覧ください。

 

参考

Labels (1)
Version history
Last update:
‎02-24-2022 11:34 PM
Updated by:
Contributors