0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

QGISでPostGISでのPBFデータの読み込み方法

Posted at

目次

  1. はじめに
  2. 必要なツール
  3. 手順
  4. サンプル表示
  5. おわりに

はじめに

地理空間データを管理するためのPostGISとQGISは非常に強力なツールです。本記事では、OpenStreetMapのPBF形式データをPostGISにインポートし、QGISで地図データとして可視化する方法を説明します。同様のユースケースにおいて少しでもお役に立てれば嬉しいです。

PBF (Protocolbuffer Binary Format) は、OpenStreetMapの地理データを格納する効率的なバイナリ形式です。従来のXML形式(.osmファイル)に比べ、コンパクトで高速に処理できるのが特徴です。PBFファイルの詳細については、別の記事の機会としたいと思います。

この記事では、Mac環境を前提に説明しますが、Windows環境でも実行可能です。Windowsでは、インストール方法やファイルパスの記述が一部異なるため、必要に応じて該当箇所に補足を入れています。

また、大規模なデータをそのままQGISで使用すると、パフォーマンスの問題が発生する場合があります。インポートしたデータを効率的に処理し、QGISプロジェクト上で快適に活用する方法は続編で解説したいと思います。

必要なツール

以下のツールを事前に準備してください:

  • PostgreSQL(バージョン14以上推奨)
  • PostGIS(PostgreSQLの空間拡張機能)
  • osm2pgsql(PBFデータをPostGISにインポートするツール)
  • QGIS(地理情報システムソフトウェア)

Windows環境についての補足

  • PostgreSQLは、公式インストーラーを使用してインストールします。
  • osm2pgsqlは、公式ページからバイナリをダウンロードして設定します。

手順

3.1 PostgreSQLとPostGISのインストール

macOSの場合

Homebrewを使用してインストールします:

brew install postgresql postgis

その後、PostgreSQLサーバーを起動します:

brew services start postgresql

サーバーの状態を確認するには以下を実行します:

brew services list

Windowsの場合

  1. PostgreSQLの公式サイトからインストーラーをダウンロードします:
    PostgreSQL公式サイト
  2. インストール時に「Additional Components」でPostGISを選択してください。
  3. デフォルトインストール先は C:\Program Files\PostgreSQL\<バージョン> です。
  4. サーバーを起動するには、pgAdminを使用するか、以下のコマンドを実行します:

<バージョン> にはインストールされているPostgreSQLのバージョン(例: 15)を置き換えてください。

net start postgresql-x64-<バージョン>

3.2 データベースの作成

macOSの場合

以下をターミナルで実行して接続します:

psql -U postgres

psql -U postgres は、デフォルトで作成されるスーパーユーザー「postgres」で接続するためのコマンドです。しかし、PostgreSQLのインストール環境によっては、現在のOSログインユーザー名(例: $(whoami) の結果)が自動的にPostgreSQLのユーザーとして登録されることがあります。そのため、psql -U $(whoami) でも接続可能な場合があります。接続できるユーザー一覧を確認するには、psql に接続後に \du コマンドを実行してください。

その後、以下のコマンド(sql)で新しいデータベースを作成します:

CREATE DATABASE gis_database;

作成したデータベースでPostGIS拡張を有効化します:

\c gis_database
CREATE EXTENSION postgis;

最後に、プロンプトを終了します:

\q

Windowsの場合

psqlが環境変数に登録されていない場合、以下のようにPostgreSQLのインストールディレクトリにある実行ファイルを直接指定して接続します:

"C:\Program Files\PostgreSQL\<バージョン>\bin\psql" -U postgres

<バージョン> には、インストールされているPostgreSQLのバージョン番号(例: 15)を記載してください。通常はインストールディレクトリに記載されています。

以降の操作はmacOSと同様です。

3.3 osm2pgsqlのインストール

macOSの場合

Homebrewを使用してインストールします:

brew install osm2pgsql

Windowsの場合

osm2pgsql公式サイトからバイナリをダウンロードしてください。
1. ダウンロードしたZIPファイルを展開します。
2. フォルダのパスをシステムの環境変数「Path」に追加します。
3. 確認のため、以下を実行します:

osm2pgsql --help

3.4 PBFデータのインポート

今回はサンプルとしてGeofabrik社のダウンロードページから、対象地域のPBFデータを取得します。ここでは、例としてオーストラリアのデータを使用します。ご自身で利用されるPBFデータの仕様にもよりますが、基本的には本稿の手順で読み込みが可能かと思います。

以下のコマンドでPBFファイルをPostGISにインポートします。

macOSの場合

osm2pgsql -d gis_database -U postgres ~/Downloads/australia-latest.osm.pbf

Windowsの場合

osm2pgsql -d gis_database -U postgres "C:\Users\Username\Downloads\australia-latest.osm.pbf"

インポートが成功すると、次のテーブルがデータベースに作成されます:
• planet_osm_point
• planet_osm_line
• planet_osm_polygon

3.5 データの確認

インポート後、データベースに接続してテーブルを確認します:

psql -U postgres -d gis_database

以下のコマンドでテーブル一覧を表示します:

\dt

例えば、planet_osm_pointテーブルの内容を確認するには以下を実行(sql)します:

SELECT * FROM planet_osm_point LIMIT 10;

3.6 QGISでデータを可視化

  1. QGISを起動します。
  2. 「レイヤー」 → 「PostGISレイヤーを追加」を選択します。
  3. 新しい接続を作成し、以下の情報を設定します:
    • ホストlocalhost
    • ポート5432
    • データベースgis_database
  4. 接続後、planet_osm_pointplanet_osm_lineplanet_osm_polygonの各テーブルを追加します。

PostgreSQLの認証設定(pg_hba.conf)がローカル接続を自動認証するように設定されている場合パスワードやユーザー名が求められず接続できます。接続できない場合は、データベース設定を確認し、該当のパスワードやユーザー名を設定ください。

サンプル表示

以下は、Geofabrik社から取得したオーストラリアのPBFデータをQGISで表示した例です。この画像では、道路や建物、地物などの情報がPostGISデータベースから読み込まれ、QGIS上で表示されています。
AU.jpeg

おわりに

これで、PBFデータをPostGISデータベースにインポートし、QGISで地図として表示するまでの手順を紹介しました。

この手順を参考に、ぜひ地理空間データの活用を進めてみてください!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?