All Articles

M1 MacのQGISでGeoParquetを読み込む

QGIS で Geoparquet 形式の地理データを可視化しようとしたところ Mac の場合brewで QGIS を入れると GDAL のバージョンが古くて Parquet を読み込むことができず、 Parquet を読み込める QGIS のセットアップに手間取ったのでその際のメモ。

結論としてはcondaを使って QGIS をインストールすると GeoParquet を読み込むことができます。

目次

GeoParquet

Parquetは列指向のファイル形式でデータ分析でよく使われます。 データの圧縮率もよく csv はもちろん csv を gzip で圧縮した場合よりもファイルサイズが小さくなることが多いので分析対象のデータ大きくなってくると Parquet などのファイル形式を使った方が分析が捗ることが多いです。 カラムごとにデータ型を持つため、csv でよくあるデータをストレージに書き出したあと読み込み直すと ID の型が string から int に変わっていたみたいな事故も避けられます。 読み込み時に必要なカラムのみを読み込むことでファイルのリード量を削減できるなど他にもメリットはあるがその辺は Parquet についての記事を参照してください。

GeoParquetは Parquet で地理データを扱うためのファイル形式で 2023 年 7 月現在では v1.0.0-beta.1 が公開されている状況でそろそろ v1.0.0 が公開されそうな雰囲気です。 地理データを扱うために追加された仕様は大まかに言うとGeometry列としてBYTE_ARRAY型をもち、そこにWKB形式で地理データを保存するようになっています。 csv で地理データを保存する際は WKT 形式を使うことが多いですがテキストデータであるため複雑な Polygon などが多いとデータサイズがどんどん増えていくので WKB で地理データを保存するのはデータサイズの削減とデータの読み込み書き込み時間の点で有利です。 また、座標参照系の情報を Parquet の Metadata として保持することができるので座標参照系の情報も失われず座標参照系を間違える系のミスを抑制することもできます。

地理データを分析する際はプログラム言語としては Python や R を使うことが多いですが、Python の場合はgeopandas、R の場合はsfarrwなどで GeoParquet を取り扱うことができます。

QGIS

地理データを可視化する際 GIS は便利です。QGISは OSS の GIS で無償で利用することができます。 QGIS で Parquet を読み込む際はGDALを使用しており Parquet の読み込みに対応した v3.5.0 以上の GDAL がバンドルされた QGISs が必要なのですが、公式や Homebrew でダウンロードできる QGIS は GDAL のバージョンが v3.3.2 と古く Parquet の読み込みに対応していません。(詳しくはこちらを参照。)

QGIS はconda-forgeからインストールすることも可能で、こちらの方法では新しい GDAL をインストールすることができるので GeoParquet を使いたい場合は conda を使うと良いです。

Conda-forge から QGIS をインストールする

今回はmicromamba を使います。すでに conda 等を使用している場合はそちらを使っても問題ないです。

micromamba をインストールしてない場合は micromamba を入れましょう。Homebrew を使う場合は

brew install micromamba

zshでインストールスクリプトを使う場合は

curl micro.mamba.pm/install.sh | zsh

QGIS 用の仮想環境をまずは作ります。 QGIS 用の仮想環境をまずは作ります。 で入ります。

QGIS 用の仮想環境をまずは作ります。

micromamba create -n qgis

QGIS をインストールします。

micromamba install -c conda-forge qgis libgdal-arrow-parquet -n qgis

libgdal-arrow-parquetを入れておかないと Parquet を読み込めないので忘れずにインストールしましょう。

次のコマンドで QGIS が立ち上がります。

micromamba run -n qgis qgis

Start QGIS

試しにsample.parquetを読み込んでみます。 新しいプロジェクトを作って sample.parquet をドラック&ドロップするとレイヤーとして取り込むことができました。

QGIS Parquet file

以上です。大量の地理データをプログラムで分析していてストレージにデータを書き出すとき GeoParquet は便利です。一方で地理データを理解する上で可視化は欠かせません。Python や R で可視化するのもいいですが、GIS は地理データを可視化するためのソフトウェアなだけあって簡単に様々な可視化を試すことができます。道具を使い分けることでより便利に地理データ分析を進められるのではないかと思います。

Published Jul 3, 2023

スタートアップで働くデータエンジニア兼データサイエンティスト。興味の範囲はデータパイプラインの構築、データ分析、機械学習、クラウドなどなど。