2020/1/28【コード付き】衛星画像を使って青森県の水田割合の変化を比較する~考察編~青森県中泊町の一部エリアの水田が2014年から2019年の間に10%減少していると衛星データによると分かりました。この結果は実際の政府統計データと比較しても傾向は同じなのか、検証してみました。衛星データを活用すれば「『青天の霹靂』に聞く!衛星データを用いた広大な稲作地帯の収穫時期予測」のように、美味しいお米作りにも役立てられる。青森県中泊町の一部エリアの水田が2014年から2019年の間に10%減少していると衛星データによると分かりました。この結果は実際の政府統計データと比較しても傾向は同じなのか、検証してみました。Notebookを使う方法は、「Tellusの開発環境でAPI引っ張ってみた」をご覧ください。」は、あくまで衛星画像からの水田の変化を捉えたものでした。実際に水田で育つ米の収量は衛星画像のように減少をしているのでしょうか。これを調べるために、政府の統計情報を取得します。米の収量データは、開発環境からe-StatのAPIを利用することで取得できます。得られたデータを表やグラフで表示し、衛星データで得られた結果がどれほど妥当であったのかを考察してみましょう。検証にあたって、事前に、可視化ライブラリ(matplotlib)で日本語を使うため、最初に日本語フォントを開発環境で使えるように準備します。「Launcher」から「Other」の項目にある「Terminal」を選択します。日本語フォントをダウンロードするには、Terminalから次のコマンドを実行してください。ipag00303.zip※ipafontのダウンロードサイトのURLが変化すると、wgetは失敗します。その場合はipaフォントのサイトからipag00303.zipを直接ダウンロードしてください。ダウンロード後は/work以下に解凍したフォルダをアップロードしてください。以上で日本語を使用する準備が完了しました。次にe-Statを使う準備を始めます。e-StatではAPIを提供しており、利用規約に従って、データベースから様々な統計データを取得することができます。ログインページをクリックし、ユーザー登録を済ませましょう。するためのメールが届きます。手順に従い空欄に記入をし、登録を完了してください。e-StatのAPIを利用するためには、アプリケーションIDを発行する必要があります。トップページからマイページをクリックしてください。API機能(アプリケーションID発行)を選択し、IDを発行します。URLは”http://localhost/”と入力してください。これでe-StatのAPIを使用する準備が完了しました。実際にAPIを使用して作物統計調査のデータを取得しましょう。(e-Stat)のAPI機能を使用していますが、サービスの内容は国によって保証されたものではありません)関数を実行して、e-Statから中泊町の米収量データを取得しましょう。main()nakadomari.head()データが取得できました。次はmatplotlibを用いてグラフを描写してみましょう。fontprop})plt.show()中泊町では2013年から2015年にかけて急激に米の収量が減少していることがわかります。2014年から2018年では、15,100トンから12,800トンへと減収しており、約1.5割の減収があったことが確認できました。上記データは中泊町全体のデータであるため、衛星データで取得した水田よりも多くの水田が対象とはなっていますが、傾向値として減少しているということは確認することができました。(2)なぜ米の収量が減ったのか、原因を探る水田が減ったから米の収量が下がるという仮説の元、政府統計データを確認しましたが、収穫量減少の原因は耕作面積減少の他にも、気象要因が考えられます。気象庁から青森県市浦観測所のデータを取得して、気象要因についても調査しておきましょう。気象庁はAPIを配布していませんので、Pythonからスクレイピングでデータを入手します。block_no=1119)を取得。var_list.append(rowData)取得したデータをcsvにして開発環境に保存します。lineterminator='\n')writer.writerows(var_list)保存したcsvからpandasデータフレームを作成します。sep=',')ichiura.head()月別データを作成するために、年月日のデータを年月、年、月、日の変数に分け、新しいデータフレームとして保存します。新しいデータフレームと既存のデータフレームを結合します。pd.concat((ichiura,df_date2),axis=1)ichiura2.head()次に、月別の平均日照時間を計算します。pd.concat((mean_sunlight,month_df),axis=1)mean_sunlight2.head()これでグラフを描く準備ができました。可視化モジュールを使い、実際に描画してみましょう。fontprop})plt.show()x軸が見にくいですが、2007年1月から2018年12月までのデータが示されています。6月、7月、8月を黄色でハイライトしています。中泊町では田植えの開始時期が5月中旬から下旬に集中しています。出穂は8月の1週目になりますので、6月から8月までの日照は稲の生育に重要と考えられます。加えて、降水量も調べてみましょう。fontprop})plt.show()上記が降水量のグラフになります。気象データは多少の増減はあるものの、一年を通してのパターンは一貫しているようです。日照時間であれば、冬場に少なく、春から夏へとかけて増加しており、降水量であれば、冬と夏にピークがあるというものです。2018年は2014年に注目すると、2018年は2014年と比べて、降水量が多く、日照量が少ないことが見て取れます。気象データのみで、収量の減少の原因を捉えることは難しそうです(厳密には、収量が気象データによってどのように変化するのかを統計モデルにより考えることもできます。機械学習で収量の予測モデルを作成することもできるでしょう)。米の消費が下がる中で、野菜や花卉などを合わせて行う複合経営が見られるようになったようです。このような流れの中で、一部の水田は畑地へと転換されてしまったのかもしれません。複合経営は労力がかかり、高齢の農業従事者には経営が難しいという欠点を抱えており、中泊町では若手人材の育成に積極的に取り組んでいます。2013年には「ばろかだる会」という若手経営者で構成される組織が出来上がり、奇しくも、米の収量減少時期と重なっています。以上、米の収量減少における、はっきりとした因果関係はさておき、衛星画像から米収量の低下を見積ることができたことで、当初掲げていた「衛星データを活用すれば水田の有無が分かるのか、また、面積をどのように測るのか」という目的はある程度達成できたと言えるのではないでしょうか。蛇足ではありますが、光学画像では雲の多い撮影シーンを利用できないなどの制限もあります。雲に対する解決策としては、SAR画像を用いることが考えられます。実際、雲の多い東南アジア地域の水田(圃場)面積を算出する際に、SAR画像は良く用いられています。特定時期に水を張る水田は、SAR画像で検出しやすいためです。高い精度で水田を抽出するためには機械学習を用いる、現地データも利用することも可能です。収量の予測モデルを立てるのであれば、複数の変数を様々なデータベースから取得して、妥当なモデルを勘案することまでもできるでしょう。いずれにしても、地上での変化を衛星データから簡易的に定量できるということは、非常に魅力的なことです。みなさんもAPIを活用し、Tellusの開発環境内で様々なデータ解析を行ってみませんか?今回利用したスクリプトです。threshold_ndvi(stack_img,min_val,max_val):"""閾値から当該のNDVI値を抽出。values_df関数を実行して、e-Statから中泊町の米収量データを取得しましょう。block_no=1119)を取得。東京の大学で生態学を専攻。現在は長崎の大学院で公衆衛生を専攻。大気汚染に興味があり、衛星データを触っている。~データ解析編~衛星データを使って魚が釣れる漁場を見つけたい宙畑編集部。これまで2回にわたって、衛星データの基礎知識と解析の1歩手前までを記事化いたしました。今回はいよいよ釣れるスポットを探す解析編です。2020/2/14【コード付き】Sentinel-2の衛星画像から指定した範囲のタイムラプスを作成する林野火災による被害が大きいオーストラリアを対象に、指定した期間の各月で最も被雲率の低い衛星画像を取得してタイムラプスを作成し、その被害状況を可視化する方法をご紹介します。植生の閾値調整、また、面積の計測にチャレンジしてみました。アクセス情報の取扱いについて©さくらインターネット。