さわって覚える ArcGIS API for Python:ラスター編

Document created by makoto_maruyamaesrij-esridist Employee on Oct 1, 2020
Version 1Show Document
  • View in full screen mode

はじめに

以前、GeoNetブログでは、ArcGIS API for Python ガイドサンプルAPI リファレンスなどのリソースを最大限ご活用いただく第一歩として、ガイドの中で紹介されている主要なモジュールを中心にご紹介する「さわって覚える ArcGIS API for Python」シリーズを公開しました。

 

さわって覚える ArcGIS API for Python シリーズ

  1. 基本編 (GIS モジュール編)
  2. フィーチャ データ編
  3. 場所検索、ジオコーディング編
  4. ネットワーク解析編 (編) / ネットワーク解析編 (後編)
  5. マッピング、可視化編
  6. ラスター編

 

本記事では、ラスター編として前回ご紹介できなかった「イメージ レイヤーの使用」のノートブックをもとにご紹介します。紹介したノートブックは GitHub にも公開しますのでご参照ください。

 

ArcGIS API for Python の環境構築がお済みでない方は、開発リソース集のインストールガイドに掲載しておりますので、ご参照ください。

 

本記事では以下の内容でご紹介します。

イメージ レイヤーへのアクセス

・イメージ レイヤーの検索とアイテムの取得

ImageryLayer クラスへのアクセス

イメージ レイヤーの可視化

ラスター関数の使用したオンザフライの画像処理の例

 

イメージ レイヤーへのアクセス

 

イメージ レイヤーの検索とアイテムの取得

arcgis.raster モジュールにはラスター データやイメージ レイヤーを扱うためのクラスやラスターの解析を行う関数が含まれています。

ラスター データは各セルまたはピクセルが値を持つことのできるセルのグリッドで構成されており、衛星画像や化学物質の濃度面、標高のような連続的に変化するデータを扱うのに利用されます。

 

ここでは raster モジュールの中の ImageryLayer クラスへのアクセス方法についてご紹介します。

ImageryLayer クラスを使用することでイメージ サービスをレイヤーとして表示することができます。

まずは、イメージ レイヤーのアイテムを取得します。イメージ レイヤーは「基本編」でも紹介した方法と同様に search メソッドで検索、get メソッドでアイテムを取得することができます。

以下のコードでは、search メソッドの item_type パラメーターに “Imagery Layer” を指定することでイメージ レイヤーのみを検索対象としています。

 

# インポート
from arcgis.gis import GIS
from IPython.display import display

gis = GIS()

# イメージ レイヤーの検索
items = gis.content.search(“Landsat 8 Views”, item_type="Imagery Layer" max_items=2)

for item in items:
    display(item)

 

 

また、以下のように、get メソッドの引数にアイテム ID を指定することで、イメージ レイヤーをアイテムとして取得することができます。

 

# アイテムIDでイメージ レイヤーの取得
l8_views = gis.content.get(4ca13f0e4e29403fa68c46d188c4be73)

 

 

ImageryLayer クラスへのアクセス

イメージ レイヤーのアイテムを取得することができたら、次は ImageryLayer クラスへアクセスします。

ほかのレイヤー ベースのアイテムと同様にイメージ レイヤーもアイテムの layers プロパティを使用してImageryLayer クラスにアクセスすることができます。上記のコードで取得したアイテム (l8_views) の layers プロパティを使用して以下のように記述します。

 

l8_lyr = l8_views.layers[0]
l8_lyr

 

 

また、イメージ サービスの URL を使用して ImageryLayer にアクセスすることも可能です。以下の例では、先ほど使用したイメージ レイヤーを今度は URL (https://landsat2.arcgis.com/arcgis/rest/services/Landsat8_Views/ImageServer) からアクセスしています。

 

# ImageryLayer クラスのインポート
from arcgis.raster import ImageryLayer

# イメージ サービスの URL
img_svc_url = 'https://landsat2.arcgis.com/arcgis/rest/services/Landsat8_Views/ImageServer'
landsat_lyr = ImageryLayer(img_svc_url)
landsat_lyr

 

 

イメージ レイヤーの可視化

取得したイメージ レイヤーは以下のように add_layer メソッドを用いてマップ ウィジェットに追加して可視化することができます。まずは、イメージ レイヤーを追加するためのマップ ウィジェットを表示します。

 

# マップ ウィジェットの表示
map = gis.map(“Pallikaranai”, zoomlevel=13)

 

続いて、先ほどアクセスしたイメージ レイヤー (landsat_lyr) を引数として、add_layer メソッドを使用することで、以下の画像のようにイメージ レイヤーをマップ ウィジェットに追加して可視化することができます。

 

# イメージ レイヤーの追加
map.add_layer(landsat_lyr)
map

 

 

ラスター関数を使用したオンザフライの画像処理の例

イメージ レイヤーの画像処理にはさまざまなラスター関数を使用することができます。イメージ レイヤー自体に画像処理を含むラスター関数を追加することで処理が適用された状態に表示を切り替えることができます。

上記で表示したイメージ レイヤーに含まれているラスター関数は以下のように ImageryLayer クラスの properties で確認することができます。

 

for fn in landsat_lyr.properties.rasterFunctionInfos:
    print(fn['name'])

 

 

上記で確認したラスター関数のほかにも Rater function objects ページに記載されているラスター関数を使用することもできます。

その中のバンド演算関数SAVI 関数を使用した例をご紹介します。SAVI (Soil-Adjusted Vegetation Index) は土壌調整係数を用いて、土壌の明るさの影響を最小化することを目的とした植生指数であり、植生被覆が少ない乾燥した地域でよく使われます。

※SAVI関数の詳細はこちらのページの SAVI メソッドの項目をご参照ください。

 

以下の例では、SAVI の指標を使用して乾燥したサハラ砂漠の中、ナイル川の堤防やデルタ周辺の肥沃な土壌を表現しています。

 

# ナイル川周辺のマップを表示
savi_map = gis.map("Cairo", zoomlevel=6)
savi_map

 

#savi 関数をインポート
from arcgis.raster.functions import savi

#savi 関数を使用した結果をマップ ウィジェットに追加
savi_map.add_layer(savi(landsat_lyr, band_indexes="5 4 0.3"))

 

 

おわりに

今回は、ラスター編としてイメージ レイヤーのアイテムや ImageryLayer クラスへのアクセス方法や、ラスター関数を使った例をご紹介しました。ご紹介した以外にも多数のラスター関数が提供されており、それぞれを組み合わせたりすることで様々な分析や画像処理などが可能になります。ArcGIS API for Python を使用する際は冒頭でご紹介したガイドサンプルAPI リファレンスなどのリソースと併せて、本シリーズブログもご活用ください。

 

関連リンク

ArcGIS 関連ページ

ArcGIS API for Python(ESRIジャパン製品ページ)

ArcGIS for Developers(ESRIジャパン製品ページ)

ArcGIS Online(ESRIジャパン製品ページ)

ArcGIS for Developers 開発リソース集

ArcGIS API for Python(米国Esri ページ(英語))

 

シリーズブログ 関連ページ

ArcGIS API for Python を使ってみよう シリーズブログ

 

開発リソース集

ArcGIS for API for Pythonのコンセプト

インストールガイド

ArcGIS for API for Pythonのための基礎環境:conda入門

 

関連するノートブック

イメージ レイヤーの使用

Using Imagery Layers (英語)

Attachments

    Outcomes