ArcGIS API for Python で増減率を地図上にビジュアライゼーション!

【Esri Community Blog】

はじめに

今回はPython ベースのAPI である ArcGIS API for Python を用いたデータの可視化のご紹介です。

先日、ArcGIS StoryMaps にて「全国の海苔生産量に位置情報を追加する」を公開いたしました。今回はそのストーリーで作成したデータを元にビジュアライゼーションを行っていきます。

TakumiHOSHI_0-1698283450095.png

海苔の生産量データに着目し、農林水産省出典の海面漁業生産調査から全国の海苔生産量データを使用し、2021年の生産量データを対象に過去5年間(2017年~2021年)の平均生産量を比較し、増減率をマップ上でビジュアライゼーションを行いました。

データの準備

では実際に可視化していきます。

まず、先日公開した ArcGIS StoryMaps 内の手順で苔生産量が格納されたフィーチャ レイヤーを ArcGIS Online から取得してきます。今回はアイテムIDを用いて取得しています。

# ArcGIS Online へのアクセス権限を取得
from arcgis.gis import GIS

gis = GIS()

#該当のフィーチャ レイヤーを取得
item = gis.content.get("レイヤーID")

マップの作成

♯日本のマップを指定
jp_map = gis.map("日本",5)
jp_map.legend=True
jp_map_renderer = {"renderer": "autocast",  #JavaScriptの autocast を使用するよう指定

                 "type": "classBreaks",  
                 "field":"year2021", # 対象フィールドを2021年のものに指定
                 "transparency":80,
                 "minValue":0}

フィーチャ レイヤーの表示のベースとなるレンダラを定義します。

jp_map_renderer["classBreakInfos"] = [{   "symbol": {
                                            "color": [170,170,170,204],
                                            "outline": {
                                                "color": [255,255,255,0],
                                                "width": 0.375,
                                                "type": "esriSLS",
                                                "style": "esriSLSSolid"
                                            },
                                            "type": "esriSFS",
                                            "style": "esriSFSSolid"
                                        },
                                        "classMaxValue": 2000000
                                    }]

field にて今回は対象となる2021年の全国の海苔生産量データを指定し、増減率毎にフィーチャーレイヤーの配色を指定していきます。

jp_map_renderer["visualVariables"] = [{   "type": "colorInfo",
                                        "field": "year2021",
                                        "normalizationField": "Average",
                                        "stops": [
                                            {   "value": 0.7,
                                                "color": [43, 0, 255,204],
                                                "label": "<70%"
                                            },
                                            {   "value": 0.8,
                                                "color": [0, 64, 255,204],
                                                "label": "80%"
                                            },
                                            {   "value": 0.9,
                                                "color": [0, 166, 248,204],
                                                "label": "90%"
                                            },
                                            {   "value": 1,
                                                "color": [247,247,247,204],
                                                "label": "100%"
                                            },
                                            {   "value": 1.1,
                                                "color": [255, 104, 0,204],
                                                "label": "110%"
                                            },
                                            {   "value": 1.2,
                                                "color": [224,16,16,204],
                                                "label": "120%"
                                            },
                                            {   "value": 1.3,
                                                "color": [163, 0, 0,204],
                                                "label": "130%<"
                                            }]
                                    }]

マップの表示

最後に作成したレイヤーをマップに追加して表示させます。

jp_map.add_layer(item,
               { "type": "FeatureLayer",
                 "renderer": jp_map_renderer,
                 "field_name":"year2021", #2021年の生産量が格納されているフィールドを指定する
                 "normalizationType": "esriNormalizeByField",
                 "normalizationField": "Average"}) ♯比較するフィールド

jp_map ♯作成したマップの表示
TakumiHOSHI_2-1698283613034.png

このようにJupyter Notebook 上で増減率毎に可視化することができました。

マップ全体が青色で目立っていることから、2021年度の生産量は過去5年の平均生産量と比較し70%~80%台と著しく減少している都道府県が多く見受けられ、全国的に海苔生産量は低下していることがマップ上から確認できます。

さいごに

今回はArcGIS API for Python を用いて全国の海苔生産量データのビジュアライゼーションを行ってきました。このほかにもArcGIS API for Python ではJupyter Notebook を用いて様々な手法で可視化ができますので、ぜひお試しください。

関連資料

ArcGIS StoryMaps

全国の海苔生産量データに位置情報を追加する

製品ページ

ArcGIS Developers

ArcGIS API for Python

Advanced Cartography (Part 1)

農林水産省

海面漁業生産統計調査