GIS開発研究所 > QGISのオフライン編集をPostGISへ同期する方法|複数人調査の設計

QGISのオフライン編集をPostGISへ同期する方法|複数人調査の設計

2026年7月30日

5分で読めます

QGISのオフライン編集でGeoPackageへ持ち出したデータをPostGISへ同期する手順を解説します。複数人の現地調査で競合や上書きを防ぐためのUUID、担当範囲、同期前確認、運用ルールまで具体的に紹介し、トラブル時の切り分けにも使える内容です。

QGIS
PostGIS
オフライン編集
現地調査

山間部や地下設備の点検では、通信できない場所でも地図と台帳を更新したいことがあります。ところが、複数人が同じPostGISレイヤーを持ち出すと、「誰の編集が最新なのか」「同期したら別の人の修正が消えないか」が心配になりますよね。

QGISには、PostGISなどのデータをGeoPackageへコピーし、現地での変更をネットワーク復帰後に同期するオフライン編集機能があります。この記事では、基本手順だけでなく、複数人調査で事故を減らす設計まで整理します。

先に結論:QGISの同期前に担当範囲を分ける

QGISのオフライン編集を使えば、次の流れを作れます。

  1. PostGISを正本データとして管理する
  2. 調査対象だけをGeoPackageへコピーする
  3. 現地で属性や位置を編集する
  4. 帰社後にPostGISへ同期する

ただし、複数人が同じ地物を同時に編集しない運用は別途必要です。担当エリア、設備ID、調査日などで持ち出す対象を分けておくと、同期時の競合を減らせます。

QGISでPostGISレイヤーをオフライン化する手順

最初に、オンライン状態でPostGISレイヤーをQGISへ追加します。編集対象を絞り込んだら、次の順で進めます。

  1. QGISのプラグイン管理画面で「オフライン編集」を有効にする
  2. 持ち出す地物を選択する
  3. 「データベース」から「オフライン編集」「オフラインプロジェクトに変換」を開く
  4. 保存形式にGeoPackageを選ぶ
  5. 対象レイヤーと「選択した地物のみ同期」を確認する
  6. オフラインプロジェクトを保存する

QGISの公式ドキュメントでも、GeoPackageまたはSpatiaLiteへデータをコピーし、オフライン中の変更を専用テーブルへ保存する仕組みが説明されています。

PostGIS側に用意したい管理項目

現地調査では、地物の形だけでなく「誰が、いつ、どの端末で更新したか」を残すことが大切です。最低限、次の項目を用意しておくと確認しやすくなります。

項目 用途
asset_id 設備を一意に識別するID
survey_status 未調査・調査済み・要確認などの状態
surveyed_at 現地で確認した日時
surveyed_by 調査担当者
updated_at レコードの最終更新日時
revision_no 更新回数を確認する番号

主キーには、端末ごとの連番よりUUIDのような重複しにくい値を使う方法があります。新しい地物を複数端末から登録する場合に、IDの衝突を避けやすくなります。

CREATE EXTENSION IF NOT EXISTS pgcrypto;

CREATE TABLE survey_assets (
  id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
  asset_id text NOT NULL UNIQUE,
  survey_status text NOT NULL DEFAULT '未調査',
  surveyed_at timestamptz,
  surveyed_by text,
  updated_at timestamptz NOT NULL DEFAULT now(),
  revision_no integer NOT NULL DEFAULT 1,
  geom geometry(Point, 4326) NOT NULL
);

既存テーブルへ追加する場合は、バックアップを取り、検証環境で同期できることを確認してから変更しましょう。

複数人のQGISオフライン編集で起きやすい問題

同じ設備を2人が更新する

同じレコードを別々の端末で変更すると、後から同期した内容で意図しない上書きが起きる可能性があります。担当エリアや設備IDで対象を分け、持ち出し対象が重複しないようにします。

オフライン中に正本データが更新される

事務所側でPostGISを更新すると、現地端末が持っているデータとの差が広がります。調査期間中は対象をロックする、またはupdated_atrevision_noを比較して差分を人が確認する流れを用意します。

写真が増えてGeoPackageが重くなる

大量の写真をGeoPackageのバイナリとして持つと、ファイルが大きくなります。写真本体は端末内のフォルダや外部ストレージへ置き、レコードにはファイル名やURLだけを保存する方法も検討しましょう。

QGISからPostGISへ同期する前の確認

帰社後は、いきなり全員分を同期せず、次の順で進めると原因を追いやすくなります。

  1. 元のGeoPackageをコピーして保管する
  2. QGISをPostGISへ接続できるネットワークに戻す
  3. 1人分ずつ「オフライン編集」「同期」を実行する
  4. 追加・更新件数を確認する
  5. 主キー重複や入力必須項目のエラーを確認する
  6. 地図と属性テーブルの両方で結果を見る

同期後は、PostGISで調査件数を確認します。

SELECT
  surveyed_by,
  count(*) AS surveyed_count,
  max(surveyed_at) AS latest_survey
FROM survey_assets
WHERE survey_status = '調査済み'
GROUP BY surveyed_by
ORDER BY surveyed_by;

本番運用では同期ログを残す

現場人数が増えるほど、QGISの画面だけでは状況を追いにくくなります。誰がどのGeoPackageを持ち出し、何件を同期したかを別テーブルで記録すると、問題が起きたときに戻りやすくなります。

オフライン編集は機能を有効にするだけでなく、担当分け、ID、更新履歴、バックアップを一緒に設計することが大切です。

QGISとPostGISを使った現地調査基盤の設計や、既存の点検台帳からの移行でお困りの場合は、GIS開発を無料相談する

参考資料

GISシステム開発・改善支援

既存GISの改善から新規開発まで相談できます

QGIS、PostGIS、GeoServer、MapLibre、GeoDjangoを使った現地調査基盤、Web地図、データ処理を支援します。

GIS開発の無料相談

同期・性能・地図表示の問題を相談できます

QGIS、PostGIS、GeoServer、MapLibre、GeoDjangoの構成を確認し、原因の切り分けと改善順を整理します。

著者
守高 成悟
守高 成悟

代表取締役 CEO

千葉県出身。10歳の頃からプログラミングを始め、ゲーム、Webサイト、ロボット、スマホアプリなどを制作。大阪大学基礎工学部情報科学科で情報工学と統計学を学び、大学時代はAIを研究。大学在学中にWeb広告代理店でのインターンや人材系Webサービスの立ち上げを経験し、卒業後はフリーランスエンジニアとしてGISシステム、データ基盤構築、Webシステムの開発に従事。10年以上のWebアプリ開発・データ分析経験を基に、2023年9月に株式会社ビットライトを設立し、現場業務の仕組み化からデータ基盤構築、データ活用支援までを一気通貫で支援。

運営会社
株式会社ビットライト
株式会社ビットライト

顧客が本当に必要だった価値を、実装する。

現場業務の仕組み化からデータ基盤構築、データ活用支援までを一気通貫で支援しています。

コーポレートサイトを見る