Try   HackMD

QGIS FAQ (のネタ)

とりあえず、ひとつひとつに時間をかけずネタ出し。

QGIS について

  • GIS とは
    • Geographic Information System
    • 地理情報を取り扱うシステム
      • Google Earth のようなソフト、 Google マップのようなウェブ地図、カーナビも GIS
      • 表示を伴わないデータベースやライブラリなども GIS
    • 情報の可視化や分析などに役立つツール
      • 浸水想定区域図と避難所の重ね合わせなど
    • 主に
      • ArcGIS や QGIS などの可視、データ作成、分析などが可能なアプリケーションである「デスクトップ GIS」
      • Google マップや、マクドナルドの店舗一覧などブラウザ上で表示される「ウェブ GIS」
      • 座標系の変換などの機能を提供するライブラリ
      • 大量のデータを効率よく管理するデータベース
  • QGIS とは
    • オープンソースの GIS
    • 無償で利用できる
    • 機能も非常に充実している
    • GRASS GIS や SAGA GIS の機能が QGIS 内から利用でき、水文などの地形分析が可能
      • ただしうまく機能しないことも多く、直接 GRASS GIS や SAGA GIS で処理することをおすすめする
  • オープンソースとは
    • プログラムのソースコード(設計図)が公開されている
    • ライセンス(利用規約)に沿って、自由に使用することができる
      • 改造したり、営利利用することも自由
    • FOSS ツール
      • FOSS4G
  • オープンソースは危険では?
    • 多くの人に使われるソフトは、問題がみつかりやすい
    • ソースコードが公開されているため、どこが問題か判明しやすく、修正されやすい
      • 修正が頻繁にあるソフトウェアは、むしろ安全
    • ただし、開発・修正が活発なオープンソースプロジェクトもあれば、滞っているプロジェクトもある
  • ArcGIS を利用しなくても GIS の作業は可能なの?
    • ArcGIS で使用するために規定された ESRI Shapefile 形式のデータがよく利用されているが、 QGIS で読み書きすることは可能
      • 仕様が公開されているため、基本的に互換性の問題はない
    • QGIS でも可能なこと
      • 地物の形状、属性情報など GIS データの作成、追加、修正、整備
      • 既存の GIS データを読み込み、色分け、重ね合わせ、分析、主題図作成など
    • ArcGIS でないとできないこと
      • ArcGIS のプロジェクトファイルの読み書き
  • 無償(オープンソース)のソフトを、仕事で使用していいの?
    • オープンソースソフトウェアは、自由に使用することができるが、原則的に無保証
    • 最終的に使用を認めるかは企業次第
    • (自治体や準公的な団体など)有用であると理解しているが、無償であること自体に懸念があれば、有償でサポートを請け負う企業も存在する
    • 国土交通省や総務省などで、(提供されているデータを) QGIS で使用するマニュアルが公開される程度には国(役所)から信頼されている
  • サポートは
    • ヘルプ文書が公開されている
      • ただし邦訳は完全ではない
    • バグや問題点、要望などを投稿する公式の掲示板 (issues) がある
      • ただし開発者による回答がない場合もある
    • 有償ソフトウェアの保守サービスのような、電話やメールでの問い合わせはない
      • 有志のフォーラムやメーリングリストがある
      • 保守サービスを請け負う第三者の企業も存在する

インストールなど

  • インストーラがたくさんあるけど、どれを選べばいいの?
    • 最新版と LTR
    • Windows
      • ネットワークインストーラ、スタンドアロンインストーラ
    • mac
      • All in One インストーラ、代替インストーラ
  • メニューに〇〇がない
    • バージョンによって、メニューの位置が変わったり、メニューからなくなりプロセシングツールから実行となったりする
    • バージョンによって、翻訳が変化する
    • 参考書などの場合、どのバージョンに準拠した記載かを確認する
  • プラグインがみつからない
    • プラグインには、どの QGIS バージョンで使用できるかという情報が設定されている。未対応(サポート外)のバージョンの QGIS で検索しても表示されないようになっている
    • プラグインの機能が QGIS 本体に統合され、それ以降プラグインは提供されないケースもある

メニュー

  • ベクタ/ラスタメニューの項目が少ない
  • ベクタ/ラスタメニューの項目が表示されない
  • プロセシングツールが表示できない
    • Processing プラグインが有効になっていない
    • 初期状態では基本的に有効なはずだが、まれに無効状態となっている場合がある

データ構造について

  • ベクタデータとは
    • 位置情報(形状情報)
      • ジオメトリタイプ
      • シングルパートとマルチパート
    • 属性データ
  • ラスタデータとは
    • 位置情報
      • 基準点(左上点)および解像度
    • 格納できるデータは数値のみ
    • 層状に複数のデータを格納することができる(マルチバンド)
    • 主に実情報を持つラスタデータと、色情報を持つラスタ画像データがある
      • 標高、傾斜量、日射量、地価、土地利用コードなどの情報を持つラスタデータ
      • 背景画像、衛星写真、陰影起伏図などの色情報を持つラスタ画像データ
  • メッシュデータとは
    • 網状の形状をしたポリゴンデータを指して使われることが多いが、そのようなデータは QGIS では「グリッドデータ(格子状データ)」と呼ぶ
    • 気象や海洋分野などで使われる netCDF や GRIB などの形式のデータをメッシュデータと呼び、 QGIS にメッシュレイヤとして読み込むことができる(ラスタレイヤとして読み込むことができる形式もある)

データについて

  • GIS で取り扱うデータについて
    • QGIS で作成することができる
    • 既存のデータを読み込むことができる
      • オープンデータとして国や地方自治体等から頒布されているデータも多々存在する
  • オープンデータ
    • 地理空間情報活用推進基本法(平19)、官民データ活用推進基本法(平28)
  • XYZ Tiles

レイヤの表示全般

  • データが正しい位置に表示されない
    • まず確認を行う
      • レイヤプロパティの領域や設定されている座標系の確認
      • XYZ Tiles 形式の背景地図を表示し、意図する位置でないのか確認
      • 複数のレイヤが存在している場合、間違っているのはどちらなのかを確認
    • 座標系情報は正しく指定されているか
      • prj ファイルなしの Shapefile や多くのラスタなどは座標系情報を持っていない
        • ワールドファイルのみのラスタは座標値は保持しているが、座標系情報はもってない
        • 座標系情報なしのデータを読み込んだときの動作はオプションで設定
          • 未知の CRS
          • CRS のダイアログ
          • プロジェクトの CRS
          • デフォルトの CRS
        • 未知の CRS のまま、もしくはプロジェクトやデフォルトの CRS が誤って適用されている可能性がある
      • ファイルとして正しい座標系情報を持っていても、異なる座標系情報を指定している
        • データ本来の CRS を認識せず、よくわからないまま JGD2011 などの経緯度座標系や、平面直角座標系を指定するケース
    • データとして間違った座標系情報で作成、変換された
      • 変換の過程で異なる座標系情報が与えられた
        • 一旦間違った座標系で表示している状態で座標系変換などが行われた場合、その結果に対し適切な設定を指定しても正しくない位置となる
    • パラメータが不十分で座標系変換(測地系変換)に誤差が生じる
      • Tokyo to JGD2000
      • JGD2000 to JGD2011
  • スケールがまったく違って表示される
    • 経緯度座標系で作成されたデータに対し平面直角座標系などを指定すると、「度」を「m」として表示してしまう
    • CAD データなどからインポートしたデータの場合、データ単位がミリメートル実寸になっていることがある
  • レイヤが表示されない(ように見える)
    • レイヤは重ね合わせされて描画される。上に別のレイヤが存在していると覆い隠されてしまう
    • 不透明度の設定により描画されない
    • 地物(データ)は存在するか
      • 一時レイヤはプロジェクト終了時にデータが削除される
        • 新規スクラッチレイヤなどはメモリ上のデータとして作成される
        • プロセシングツールの出力結果はテンポラリ領域に作成される
        • プロセシングの処理は、結果の出力先を明示しなければ一時レイヤで出力するものがほとんど
        • QGIS のプロジェクトを閉じるとき、一時レイヤが存在したら警告が表示される
      • 解析の結果、(場合によりエラーなどで)レイヤは作成されるが地物が0件ということもありうる
      • ラスタの場合は値の max / min の値がおかしい
    • ジオメトリが NULL ではないか
    • 想定していない場所(地図として表示不可能な場所含む)に位置しており、現在の範囲内には存在しない
      • cf. 正しい位置に表示されない
  • (北海道などが)つぶれたように表示される
  • 正方形のグリッドが長方形、点バッファ(円)が楕円に表示される
    • 地図はいろんな表現の仕方がある
    • プロジェクト CRS が経緯度座標系の場合、投影図法としては正距円筒図法で表示されるため、横長となる
    • cf. ティソーの指示円
  • 作業中の地図の表示が遅い
    • ラスタデータ(背景地図)を投影変換するには処理に時間がかかる
      • 作業時はラスタデータと同じ座標系をプロジェクト CRS にするとよい
      • 一部、プロジェクト CRS 依存の処理があるので注意
      • レイアウト(印刷物)では表示として目的の座標系を設定
    • マルチコアオプションが入ってなければ設定する
    • 空間インデックスを作成する、または有効となる形式に変換する( CSV -> GeoPackage など)
    • 細かい地物が多数ある場合等は、スケールによる非表示設定を行う
    • 大きなラスタを背景地図としている場合、 MBTiles 化する
      • XYZ タイルの生成 (MBTiles 形式)
        • 出力ファイルは一時ファイルではなく、保存先を明示する
  • 背景地図を表示させたい
    • XYZ Tiles
  • XYZ Tiles が表示されない
    • URL の設定が間違っている
    • プロキシ等のネットワーク設定が不適切
    • タイル地図の提供範囲外
    • タイズ地図の提供ズームレベル外
  • オフライン(現場)でも背景地図を使いたい
    • 背景地図を MBTiles 化する
      • XYZ タイルの生成 (MBTiles 形式)
    • 背景地図のラスタ画像化

ベクタの表示、スタイル

  • データを読み込むたびに色が変わる
    • GIS データ自体には色情報は持っておらず、スタイルはプロジェクトで設定する
  • スタイルを保存したい
    • スタイルのファイル保存
    • スタイルを保持できる GeoPackage などの形式を利用
  • KML を読み込んでも、スタイルが反映されない
    • Google Earth 等で表示可能な情報は直接認識できない(ただの属性値としてしか解釈しない)
      • だったはず。要確認
    • KML Tools などのプラグインを使用
  • 条件により表示を変えたい
    • シンボロジの設定で、属性値やルールをもとにシンボルのスタイルを設定する
    • シンボルスタイルの設定で、属性値や式で値を設定する(たとえば線の太さ)
  • 縮尺に応じて、一緒にラベルの大きさを変化させたい
    • スタイルの単位をピクセルにすると、縮尺に関わらず表示された画面上の数値
    • 単位をメートルなどにすると、地図上の距離に即した数値となるため、縮尺に応じて一緒に大きさが変わる
  • 複数のレイヤでスタイルを共通にしたい
    • スタイルのコピー
    • スタイルのファイル保存

ベクタの編集

  • データの座標系の変換
    • 投影法(CRS)を設定
    • レイヤのエクスポートでも可能
  • データのファイル形式の変換
    • レイヤのエクスポート
  • CSV を読み込んだら属性が意図しない型
    • GeoCSV の csvt ファイルを用意
    • QGIS 3.24 からレイヤを読み込む際に型を手動で設定できる
  • 属性データをエクセルで解析等したい(結果を GIS データに反映する必要はない)
    • 属性テーブルから、コピペすることができる
    • データによっては勝手に日付などに変更しやがりますので、あらかじめエクセルの全セルの形式を文字列にしておくとよい
      • その後、適宜数値として取り扱う
    • 1列目に座標値が付け加わる
      • 設定→オプション→データソース→地物をコピー で、「ジオメトリなし」「 WKT ジオメトリ」「 GeoJSON 」のいずれかを選択できる
  • 属性データをエクセルで編集したい(結果を GIS データに反映したい)
    • GeoCSV のすすめ
      • 属性テーブルからコピペ
      • CSV で保存(デリミタはタブなどコロン以外がおすすめ)
    • dbf のエクセルや LibreOffice で開くこともできるが、データが壊れる可能性がある
  • 属性の編集ができない
    • CSV など形式によっては読み込んだレイヤは編集に制限
    • エクスポート等で形式の変換してから編集
  • 属性値の文字化け
    • エンコーディング設定
    • Shapefile は規定のエンコーディングがなく、エンコーディングを指定するファイル( *.cpg )も普及していないため、実際のエンコーディングと読み取り設定が一致しないことがある
    • GeoPackage や FlatGeobuf を使おう
  • 属性名称の最後の文字が文字化け、途中で切れる
    • Shapefile は dBase (dbf) の制限により属性名称が10バイト
    • Shift_JIS は日本語1文字2バイト、 UTF-8 は日本語1文字3バイトが一般的
    • 他の形式から Shapefile に変換した場合、10バイトで切断され、途中で切れたり、最後の文字が壊れたりする
    • Shift_JIS の Shapefile から UTF-8 の Shapefile に変換してもそうなる
  • 列の順番や形式を変えたい
    • 属性のリファクタリング
    • エクセルで編集し GeoCSV で読み込む
  • 地物の順番を変えたい
    • 式によるソート
    • エクセルで編集し GeoCSV で読み込む

ベクタの分析処理

  • 近傍分析
    • 最寄りのハブの距離
    • ハブ&スポーク図
    • 距離行列 (distance matrix)
  • 不正なジオメトリでエラー
    • エラーメッセージに書いてるやん
    • ジオメトリの修復
    • 無視する設定もある
  • バッファを作成すると距離がおかしい
    • バッファなどの処理は、基準とするデータのレイヤ CRS を使って処理されるものが多い
    • いったんレイヤの再投影を行い、横メルカトルなどの座標系に変換
  • プロセシングの処理でパラメータに特定の属性を選べない
    • 処理によっては、数値属性しか選択できないことがある
    • 属性のリファクタリング
    • CSV レイヤの場合は QGIS 3.24 から読み込み時に属性型の指定が行えるようになった
  • 距離や面積を計測したとき、正しく計測されない
    • 計測する基準として、投影座標系におけるデカルト座標(地図上の座標)と回転楕円体がある
    • 回転楕円体の方が3次元の地球をモデル化しており「正しい」
    • 投影座標系におけるデカルト座標(地図上の座標)は、いったん地図(平面)にしているため、地球上の距離や面積とは異なる
    • 平面直角座標系は正確と信じられているが、横メルカトル図法であるため、誤差が存在し正確ではない
  • length($geometry)$length の違い
    • length($geometry) は地図座標系の距離
      • 経緯度座標系の場合は単位は度になる
      • メートル座標系の場合も、あくまでその地図座標での距離
      • メルカトル図法の場合は高緯度帯ほど引き伸ばされた地図であるため、実際の距離より長い距離が得られる
    • $length は回転楕円体における距離
      • レイヤが経緯度座標系であっても正しく計算される
    • area, perimeter も同様
  • 1km メッシュの面積が 1km2 にならない
    • 「1km メッシュ」と呼ばれるものが「1km 四方」とは限らない
    • 統計等で用いられる 1km メッシュや、標高データで用いられる 5m メッシュは 5m 間隔ではない
      • これらは通称
      • 経緯度で定義され、だいたいこのくらいの大きさ
      • 地域によって大きさが異なる
    • 投影地図上での 1km は、楕円体上において 1km とは限らない
      • メルカトルであれば日本の緯度帯では大きく違うし、平面直角などの横メルカトルでも誤差は存在する
  • 処理が遅い
    • 空間インデックスを作成する(自動で作成される形式もある)
    • 計算させるデータを分割し、結果をマージさせる(分割統治法)
  • 空間インデックスに関する warning
    • warning は error ではないので、処理に失敗したわけではない
    • インデックスを作っておいた方が速いけれども、別になくてもよい
    • 地物数が少ない場合には、差は感じられない
  • 重複率
    • 重なり分析
  • 集計
    • 空間結合(集計つき)
    • ゾーン統計量
    • がっつり使うなら R や Python 、SQL を使おう

ラスタの表示、スタイル

  • 表示の白と黒を反転させたい
    • シンボロジの設定
  • ラスタデータの境界間で不連続に表示される
    • ラスタデータも表示設定はシンボロジで設定する(色情報が保存されているわけではない)
    • デフォルトでは最低値~最大値でスケールあわせしたシンボロジ。それが個々のレイヤで設定されているため、各レイヤで設定が異なる状態
    • 全ラスタをひとまとめにした仮想レイヤ( vrt )を作成し、その仮想レイヤでシンボロジ設定を行う
    • または、とあるレイヤでスタイルを作成し、そのスタイルをコピー

ベクタ、ラスタの分析処理

  • プロセシングで GRASS GIS や SAGA GIS の処理でエラー
    • パス(ファイル名、ディレクトリ名、ユーザ名)に日本語等がないか確認
    • 日本語ロケールだと、入力側で日本語がなくても、出力側で日本語が入り込んでエラー
    • QGIS から統合的に使えるといっても、機能を取り込んだわけではなく外部呼び出しを行っている状態
    • 特に日本語環境の Windows ではまだまだ連携が不十分でエラーも起こりやすい
    • 水文解析、地形解析などがっつり行う場合には直接 GRASS GIS や SAGA GIS を使ったほうがよい。 Windows の場合、一緒にインストールされる
  • 重なる地物の情報を加える
    • 属性の空間結合
    • ドレープ
  • 地理院タイル等の XYZ Tiles に対し、ドレープ等のラスタ処理を行いたい
    • XYZ Tiles のレイヤは形式的にはラスタレイヤだが、データそのものは保持しておらず都度読み込むため、ラスタ処理ができない
    • 地図を画像にエクスポートなどで画像ラスタ化し読み込む
  • 点データからラスタ
    • グリッドまたは TIN 補間などでラスタ化
    • TIN は不規則点群ならまだしも、比較的規則的な点群(地理院 DEM データを点データとして読み込んだ場合等)は規則的な三角形の形状に由来する系統的な誤差が生じるイメージがある
    • グリッドツール( gdal_grid )で、線形補間、最近傍補間、 IDW 補間など
  • 点データからラスタ(ヒートマップ)
    • ヒートマップ(カーネル密度推定)
  • ラスタデータから点
    • ラスタのベクタ化 (pixels to points)
    • gdal2xyz
  • ラスタデータからポリゴン
    • ラスタのベクタ化 (pixels to polygons)
      • 各ピクセルをグリッドポリゴンに
    • ポリゴン化 (Polygonize)
      • 同一の値を持つピクセル領域をポリゴンに
  • ラスタのリサンプリング(サイズ変更)
    • gdal_translate などのプロセシングツールの処理に、追加のオプションが指定できる
    • 解像度(ピクセルあたりサイズ)や縦横ピクセル数を指定するとリサンプリングが可能
  • ラスタ計算機で条件
    • ラスタ計算機の比較演算子は、真なら 1 、偽なら 0 を返す
    • このため、演算結果を掛け算することで条件分岐的な式が可能

印刷

  • レイアウトの座標参照系
    • プロジェクト CRS は作業などにより変更させることがある
    • そのため、レイアウトの座標参照系はプロジェクト CRS ではなく、必ず指定した方がよい
  • 印刷時に複数地点を設定
    • 地図帳機能
    • 印刷枠を制御するためのレイヤを作成する(カバレッジレイヤ)
  • 印刷時に不要な地物の表示を抑制する
    • 地図帳用の変数 @atlas_* を利用したルールでシンボロジの設定を行う

プラグイン

  • プラグインでエラー
    • (コアプラグイン以外)基本的にはプラグインのサポートページ( github など)へ
      • 最新版の確認
      • ファイルの最終更新日(開発活発度)の確認
      • 掲示板( issues )で同様のトラブルの有無の確認
        • それに対する返信、フィックス方針の確認
      • 報告がなければ自身で報告

質問の仕方

  • 同様の質問が行われていないか、事前に検索
    • 検索したうえで、回答を試してみたがうまくいかないのであれば、その情報も記載
  • OS のバージョン、 QGIS のバージョンなどを記載
  • プラグインに関する質問は、プラグインのページで行うのが原則
  • 文章で表現することが難しければ、画面のキャプチャ、手書きの絵などでイメージを伝える
  • 回答者が、同じことを試してみることができるだけの情報を提示する
    • どのようなデータが存在するか
    • どのような結果を求めているか
    • どのように処理を実行したか(パラメータ等)
    • どのような結果になったか(エラーメッセージがあれば全文)