気候予測データの解析環境を構築する。その3-地理空間情報の処理環境を構築する。
はじめに
地理空間情報を扱うシステムをGIS(Geographic Information System)といいます。
GISは、地図や衛星画像などの空間データを管理・分析するためのシステムであり、気候変動予測シミュレーションの出力を地図上に表示したり、他の空間データと組み合わせたりすることで、気候変動の影響をより具体的に把握することができます。
本研究室では、オープンソースのソフトウェアとツールであるFOSS4G(Free and Open Source Software for Geospatial)を使っています。
FOSS4Gはオープンソースであり、コストをかけずに導入することができます。
QGISのインストール
QGISはオープンソースのGISソフトウェアで、様々なフォーマットの地理空間情報を扱うことができます。
使い方は、「改訂版(Ver.3.22対応)業務で使うQGISVer.3 完全使いこなしガイド(通称鈍器!?)」に詳しく載っていますので、参照ください。
公式のドキュメントに沿ってインストールしていきましょう。
リモートデスクトップーコンソールの起動
WSL2ーUbuntuにリモートデスクトップ接続し、コンソールを起動します。
ツールのインストール
インストールに必要なツールを入れます。
sudo apt update sudo apt install gnupg software-properties-common
GPG鍵を入手
aptを使用してQGISパッケージをインストールする際に、パッケージの信頼性を保証するためにGPG鍵が必要です。
"wget"で入手しておきます。
sudo wget -O /etc/apt/keyrings/qgis-archive-keyring.gpg https://download.qgis.org/downloads/qgis-archive-keyring.gpg
QGISリポジトリの追加
aptがパッケージをインストールする際に参照するリポジトリのリストに、QGISリポジトリを追加します。
"/etc/apt/sources.list.d/"にファイル名:"qgis.sources"を作成し、編集する。
sudo nano /etc/apt/sources.list.d/qgis.sources
Types: deb deb-src URIs: https://qgis.org/debian Suites: jammy Architectures: amd64 Components: main Signed-By: /etc/apt/keyrings/qgis-archive-keyring.gpg
”Ctrl-O”で編集内容を保存。 ”Ctrl-X”でnanoを終了できます。
QGISのインストール
sudo apt update sudo apt install qgis qgis-plugin-grass
QGISの起動
「アプリケーション」→「教育」→「QGISデスクトップ」でQGISが立ち上がります。
地理情報ライブラリのインストール
本研究室では基本、pythonでデータ処理をしています。pythonには地理空間情報を扱うために様々なライブラリが用意されており、次のツールを使っています。
- gdal : 地理空間情報フォーマットの変換ユーティリティです
- sqlalchemy : PyhtonでPostGISなどの空間データベースを含むリレーショナルデータベースを扱うためのライブラリです
- geopandas : pandasオブジェクトで地理データを扱うためのライブラリです
- cartpy : 地図上にデータを描くためのライブラリです
順にインストールしていきます。
gdalのインストール
前半の記事に従ってQGISをインストールすると、自動でインストールされます。 単独でインストールすることもできますが、QGISのインストールのほうがはるかに簡単です。
sqlalchemyのインストール
postgresqlをPythonから扱うためのlibpq-devと、SQLiteデータベースのインターフェースであるsqlite3をインストールしてから、pip3でインストールします。 -
sudo apt install libpq-dev sqlite3 sudo pip3 install psycopg2 sqlalchemy
geopandasのインストール
GeoPandasの公式ページでは、GeoPandas とそのすべての依存関係をインストールするためにconda パッケージ マネージャーを使用することがお勧めされています。
本研究室では、pip3からインストールしました。 (特に問題なくインストールできます。:QGISリポジトリを登録してあるので、依存関係でつまずかないのかも?)
sudo pip3 install geopandas
cartopyのインストール
libgeos-devをインストールしてからcartopyをインストールします。
sudo apt install libgeos-dev sudo pip3 install cartopy
地理情報ライブラリのテスト
実際に動くか確認してみます。
まず、サンプルデータとして、国土地理院から公開されている地球地図日本のデータをダウンロードします。
次の2つのファイルを入手して、ホームディレクトリに解凍しておきます。
出典:国土地理院ウェブサイト(https://www.gsi.go.jp/kankyochiri/gm_jpn.html)
ここでは、C:\Users\hoge\gm-jpnに解凍しました。※hogeはユーザー名です
QGISに読み込むとこんな感じになります。
Jupyterの対話型ウインドウを起動
実行結果がすぐ出力される、VSCodeの”Jupyter:対話型ウインドウ”を使います。
テスト1
PyGDALでgeotiffを読み込んでみる。
from osgeo import gdal, gdalconst import matplotlib.pyplot as plt gtif = gdal.Open("/mnt/c/Users/kazuh/gm-jpn/gm-jpn-el_u_1_1/jpn/el.tif",gdalconst.GA_ReadOnly) garr = gtif.GetRasterBand(1).ReadAsArray() plt.imshow(garr)
テスト2
sqlalchemyを使ってsqliteデータベースにアクセスしてみる。
以下を参考に、行政界データからSpatiaLiteデータベースを作成。
QGISに行政界データ(polbnda_jpn.shp)を読み込んでおく。
「polbnda_jpn」を右クリック→「エクスポート」→「新規ファイルに地物を保存」
保存形式の設定。
OKをクリック。
gm_jpn.sqliteデータベースのpolbnda_jpnテーブルを読み込む。
from sqlalchemy import create_engine import pandas as pd engine = create_engine('sqlite:////mnt/c/Users/hoge/gm-jpn/gm_jpn.sqlite', echo=True) df = pd.read_sql_query("SELECT * FROM polbnda_jpn",con=engine) df
テスト3
GeoPandasでShapeファイルを読み込んでみる。
import geopandas as gpd gdf = gpd.read_file("/mnt/c/Users/hoge/gm-jpn/gm-jpn-all_u_2_2/polbnda_jpn.shp") gdf
テスト4
cartpyで日本地図を描いてみる。
import matplotlib.pyplot as plt import cartopy.crs as ccrs ## 50m resolution plt.figure() ax1 = plt.subplot(projection=ccrs.PlateCarree()) ax1.coastlines(resolution='50m') ax1.set_extent([120,150,20,50], ccrs.PlateCarree()) ax1.set_title('50m coastline') plt.show()
動きましたか? 今回はここまで。次回はDocker-wgrib2環境を構築していきます。