重要

翻訳は あなたが参加できる コミュニティの取り組みです。このページは現在 100.00% 翻訳されています。

11.2. レイヤを作成する

レイヤは下記も含め、様々な方法で作成することができます。

  • ゼロから空のレイヤを作成する

  • 既存のレイヤからレイヤを作成する

  • クリップボードからレイヤを作成する

  • 一つ又は複数のレイヤを素材としたSQLライクなクエリの結果としてレイヤを作成する( 仮想レイヤ を参照)

また、QGISは様々なフォーマットからインポートしたり、様々なフォーマットへエクスポートするためのツールも提供しています。

11.2.1. 新しいベクタレイヤを作成する

QGISでは、新しいレイヤを様々な形式で作成できます。QGISにはGeoPackage、シェープファイル、SpatiaLite、GPX形式、及び一時スクラッチレイヤ(別名メモリレイヤ)を作成するためのツールがあります。 新規GRASSレイヤ の作成はGRASSプラグインでサポートされています。

11.2.1.1. 新しいGeoPackageレイヤを作成する

新しい GeoPackage レイヤを作成するには、 レイヤ ► 新規レイヤ ► メニュー、又は データソースマネージャ ツールバーから newGeoPackageLayer 新しいGeopackageレイヤ... ボタンを押します。また、 ブラウザパネル から 新規データベースとレイヤ... を選択して新しい GeoPackage レイヤを作ることもできます。 図 11.24 に示すように 新しいGeoPackageレイヤ ダイアログが表示されます。

../../../_images/editNewGeoPackage.png

図 11.24 新規GeoPackageレイヤの作成ダイアログ

  1. 最初のステップは、データベースファイルの場所を指定することです。 データベース フィールドの右にある ... ボタンを押して、既存のGeoPackageファイルを選択するか、新しいGeoPackageファイルを作成します。QGISは、指定した名前に適切な拡張子を自動的に追加します。

  2. 新しいレイヤ / テーブルの名前を付けます( テーブル名 )

  3. ジオメトリ型 を定義します。 ジオメトリなしのレイヤではない場合には、 Z次元を含む や M値を含む を指定できます。

  4. setProjection ボタンを使用し、座標参照系を指定します

作成するレイヤにフィールドを追加するには、

  1. フィールドの 名前 を入力します

  2. データの 型 を選択します。サポートされているタイプは、 テキストデータ 、 整数値 (integer と integer64)、 小数点付き数値 、 日付 と 日付時間 、 バイナリ(BLOB) そして ブール値 です。

  3. 選択したデータ型にもよりますが、値の 最大長さ を入力します。

  4. newAttribute 属性リストに追加 ボタンをクリックします

  5. 追加する必要のある各属性について、上記の手順を繰り返します

  6. arrowUp 上へ移動 と arrowDown 下へ移動 ボタンを使用して後からフィールドの順序を変更できます

  7. 属性の設定に満足したら、 OK をクリックします。QGISが新しいレイヤを凡例に追加し、 既存レイヤのデジタイズ セクションで説明するように編集することができます。

デフォルトでは、GeoPackageレイヤを作成する際にQGISは fid という名前の 地物IDカラム を作成します。このカラムはレイヤの主キーとして機能します。この名前は変更することが可能です。ジオメトリフィールドがある場合には geometry という名前になり、これに対して 空間インデックスを作成する かを選択することができます。 これらのオプションは 高度なオプション の下にあり、この他に レイヤ識別子 (人間が読める短いレイヤ名)と レイヤの説明 フィールドがあります。

GeoPackageレイヤのさらなる管理は、 DBマネージャ で行うことができます。

11.2.1.2. 新しいシェープファイルレイヤを作成する

新しいESRIシェープファイル形式のレイヤを作成するには、 レイヤ ► レイヤの作成 ► メニューもしくは データソースマネージャ ツールバーの newVectorLayer 新規シェープファイルレイヤ... ボタンを押します。 図 11.25 に示すように、 新規シェープファイルレイヤ ダイアログが表示されます。

  1. ファイル名 の隣にある ... ボタンを使用し、ファイルパスとファイル名を指定します。QGISは、指定した名前に適切な拡張子を自動的に追加します。

  2. 次に、データの ファイルエンコーディング を指定します

  3. レイヤの ジオメトリ型 を選択します:ジオメトリなし( .DBF 形式ファイルのみ)、ポイント、マルチポイント、ライン、ポリゴン

  4. ジオメトリが追加次元を持っているかを指定します: なし 、 Z値(+M値) 、 M値

  5. setProjection ボタンを使用し、座標参照系を指定します

../../../_images/editNewVector.png

図 11.25 新規シェープファイルレイヤ作成ダイアログ

作成するレイヤにフィールドを追加するには、

  1. フィールドの 名前 を入力します

  2. データの 型 を選択します。 小数点付き数値 、 整数値 、 テキストデータ 、 日付、ブール値 データ型の属性のみをサポートしています。

  3. 選択したデータ形式に応じて、 長さ と 精度 を入力します。

  4. newAttribute 属性リストに追加 ボタンをクリックします

  5. 追加する必要のある各属性について、上記の手順を繰り返します

  6. arrowUp 上へ移動 と arrowDown 下へ移動 ボタンを使用して後からフィールドの順序を変更できます

  7. 属性の設定に満足したら、 OK をクリックします。QGISが新しいレイヤを凡例に追加し、 既存レイヤのデジタイズ セクションで説明するように編集することができます。

デフォルトでは、最初に整数値タイプの id カラムが追加されますが、これは削除できます。

11.2.1.3. 新しいSpatiaLiteレイヤを作成する

新しいSpatiaLiteレイヤを作成するには、 レイヤ ► レイヤの作成 ► メニューもしくは データソースマネージャ ツールバーの newSpatiaLiteLayer 新規SpatiaLiteレイヤ... ボタンを押します。 図 11.26 に示すように、 新しいSpatiaLite レイヤ ダイアログが表示されます。

../../../_images/editNewSpatialite.png

図 11.26 新規SpatiaLiteレイヤの作成ダイアログ

  1. 最初のステップは、データベースファイルの場所を指定することです。 データベース フィールドの右にある ... ボタンを押して、既存のSpatiaLiteファイルを選択するか、新しいSpatiaLiteファイルを作成します。QGISは、指定した名前に適切な拡張子を自動的に追加します。

  2. 新しいレイヤの名前( レイヤ名 ) を指定します

  3. ジオメトリ型 を定義します。 ジオメトリなしのレイヤではない場合には、 Z次元を含む や M値を含む を指定できます。

  4. setProjection ボタンを使用し、座標参照系を指定します

作成するレイヤにフィールドを追加するには、

  1. フィールドの 名前 を入力します

  2. データ型 を選択します。サポートしている型は、 テキストデータ 、 整数値 、 小数点付き数値 、 日付 および 日付時刻 です。

  3. newAttribute 属性リストに追加 ボタンをクリックします

  4. 追加する必要のある各属性について、上記の手順を繰り返します

  5. arrowUp 上へ移動 と arrowDown 下へ移動 ボタンを使用して後からフィールドの順序を変更できます

  6. 属性の設定に満足したら、 OK をクリックします。QGISが新しいレイヤを凡例に追加し、 既存レイヤのデジタイズ セクションで説明するように編集することができます。

必要に応じて、 checkbox 詳細オプション セクション下にある checkbox 自動インクリメントするプライマリキーを作成する を選択することができます。また、 ジオメトリカラム の名前(デフォルトは geometry )を変えることもできます。

SpatiaLiteレイヤのさらなる管理は、 DBマネージャ で行うことができます。

11.2.1.4. 新しいメッシュレイヤを作成する

新しいメッシュレイヤを作成するには、 レイヤ ► レイヤを作成 ► メニューもしくは データソースマネージャ ツールバーの newMeshLayer 新規メッシュレイヤ... ボタンを押します。 図 11.27 に示すように、 新規メッシュレイヤ ダイアログが表示されます。

../../../_images/editNewMesh.png

図 11.27 新規メッシュレイヤの作成ダイアログ

  1. 最初のステップは、メッシュファイルの場所を指定することです。 ファイル名 フィールドの右にある ... ボタンを押して、既存のメッシュファイルを選択するか、新しいメッシュファイルを作成します。

  2. 名前( レイヤ名 )、つまりは レイヤ パネルに表示されるレイヤの名前を指定します。

  3. ファイル形式 を選択します。現在のところサポートしているメッシュファイル形式は、 2DM Mesh File (*.2dm) 、 Selafin File (*.slf) および UGRID (*.nc) です。

  4. データセットに割り当てる 座標参照系 を指定します。

  5. 上記のステップによって空のレイヤが生成され、その後、頂点をデジタイズしたりデータセットグループを追加できます。一方で、既存のメッシュレイヤを使用して初期化する、つまり、新しいレイヤに既存のレイヤの頂点や面を取り込むことも可能です。これを行うためには、次のようにします:

    1. checkbox メッシュ初期化の方法 にチェックを入れます

    2. 現在のプロジェクトのメッシュ または ファイルから を選択します。確認のために、選択したメッシュファイルの情報が表示されます。

    新規メッシュレイヤにコピーされるのは、メッシュレイヤのフレームのみであることに注意してください。データセットはコピーされません。

11.2.1.5. 新しいGPXレイヤを作成する

新しいGPXファイルを作成するには:

  1. レイヤ メニューから レイヤを作成 ► newGpx 新規GPXレイヤ... を選択します。

  2. ダイアログで新しいファイルを保存する場所を選択し、ファイル名を指定して 保存 ボタンを押します。

  3. レイヤパネル に新しく3つのレイヤが追加されます。

    • 位置をデジタイズするポイントレイヤ( waypoints )。 name、elevation、comment、description、source、url、url name を保存するフィールドを持ちます。

    • 計画されたルートを構成する、一連の位置をデジタイズするラインレイヤ( routes )。name、symbol、number、comment、description、source、url、url name を保存するフィールドを持ちます。

    • 受信機の時間的な動きをたどるラインレイヤ( tracks )。name、symbol、number、comment、description、source、url、url name を保存するフィールドを持ちます。

  4. これらのレイヤのいずれも、 既存レイヤのデジタイズ のセクションで説明されている方法で編集できます。

11.2.1.6. 新しい一時スクラッチレイヤを作成する

一時スクラッチレイヤはインメモリレイヤであり、ディスク上には保存されておらず、QGISを終了する時に破棄されます。これは一時的に必要な地物を保持したり、ジオプロセシング操作中の中間レイヤとして使用する場合に便利です。

新しい一時スクラッチレイヤを作成するには、 レイヤ ► レイヤの作成 ► メニューもしくは データソースマネージャ ツールバーの createMemory 新しい一時スクラッチレイヤ... エントリを選択します。 図 11.28 に示すように、 新規一時スクラッチレイヤ ダイアログが表示されます。その後、次の手順で操作します:

  1. レイヤ名 を指定します

  2. ジオメトリタイプ を選択します。下記タイプのレイヤを作成できます:

    • ジオメトリなし タイプのレイヤは、シンプルなテーブルです

    • ポイント または マルチポイント レイヤ

    • ラインストリング / 複合曲線 または マルチラインストリング / マルチカーブ レイヤ

    • ポリゴン / カーブポリゴン または マルチポリゴン / マルチサーフェス レイヤ

  3. ジオメトリタイプについて、データセットの次元を定義します: Z次元を含む かつ/または M値を含める かどうかをチェックボックスで設定します。

  4. setProjection ボタンを使用し、座標参照系を指定します

  5. レイヤにフィールドを追加します。他の多くの形式とは異なり、一時スクラッチレイヤはフィールドなしでも作成できることに注意してください。従ってこのステップは任意です。

    1. フィールドの 名前 を入力します

    2. データの 型 を選択します: テキスト 、 整数値 、 小数点付き数値(decimal) 、 ブール値(boolean) 、 日付(Date) 、 時刻(Time) 、 日付時刻(Datetime) そして バイナリ(BLOB) 型をサポートしています。

    3. 選択したデータ型に応じて、 長さ や 精度 を入力します。

    4. newAttribute 属性リストに追加 ボタンをクリックします

    5. 追加する必要のある各フィールドについて、上記の手順を繰り返します

    6. arrowUp 上へ移動 と arrowDown 下へ移動 ボタンを使用して後からフィールドの順序を変更できます

  6. 設定に満足したら、 OK をクリックします。QGISは新しいレイヤを レイヤ パネルに追加し、 既存レイヤのデジタイズ のセクションで説明するように編集することができます。

../../../_images/editNewTemporaryLayer.png

図 11.28 新しい一時スクラッチレイヤの作成ダイアログ

また、フィールド入力済みの一時レイヤを作成する方法には、例えば、クリップボードを使用して( クリップボードから新しいレイヤを作成する )や、 プロセシングアルゴリズム の出力結果などもあります。

Tip

メモリレイヤをディスク上に永続的に保存する

プロジェクトを閉じたときに一時スクラッチレイヤのデータが失われないようにするために、これらのレイヤを次の方法でQGISがサポートする任意のベクタ形式に保存することができます:

  • レイヤの横にある indicatorMemory 表示アイコンをクリックする

  • レイヤのコンテキストメニューの 保存... エントリを選択する

  • レイヤのコンテキストメニューの エクスポート ► エントリ、または レイヤ ► 名前を付けて保存... メニューを使用する

これらのコマンドはいずれも、 既存のレイヤから新しいレイヤを作成する セクションで説明する ベクタレイヤを名前を付けて保存... ダイアログを開きます。保存されたファイルは レイヤ パネルの一時スクラッチレイヤを置き換えます。

11.2.2. 既存のレイヤから新しいレイヤを作成する

レイヤ(ラスタ、ベクトル、点群)は レイヤ ► 名前を付けて保存... メニューを使うか、 レイヤパネル でレイヤを右クリックして選択することで、別のフォーマットや別の座標参照系(CRS)に再投影しても保存することができます:

  • エクスポート ► 名前を付けて保存... ラスタと点群レイヤの場合

  • ベクタレイヤの場合は エクスポート ► 地物の保存... または エクスポート ► 選択地物の保存...

  • レイヤツリーからレイヤを ブラウザパネル のPostGISエントリへとドラッグ&ドロップします。 ブラウザパネル でPostGISへの接続が必要であることに注意してください。

11.2.2.1. 共通のパラメータ

名前を付けて保存... ダイアログには、レイヤを保存する際の動作を変更するパラメータがいくつかあります。ラスタとベクタで共通のパラメータは次のとおりです:

  • ファイル名 :ディスク上のファイルの場所です。これは出力レイヤ、またはレイヤを格納するコンテナ(例えばGeoPackageやSpatiaLite、Open Document Spreadsheetsといったデータベースライクな形式)を参照できます。

  • CRS :変更して、データを再投影することができます。

  • 領域 : 範囲セレクタ ウィジェットを使用して、エクスポートされる入力の範囲を制限します

  • 保存されたファイルを地図に追加する :新しいレイヤをマップキャンバスに追加します。

ただし、いくつかのパラメータは特定のフォーマットの固有のものです:

11.2.2.2. ラスタに固有のパラメータ

エクスポートの形式によっては、これらのオプションが利用できない場合があります:

  • 出力モード ( 生データ または 画像 )

  • 形式 :GeoTiff、GeoPackage、MBTiles、Geospatial PDF、SAGA GIS Binary Grid、Intergraph Raster、ESRI .hdr Labelled など、GDALが書き出せる任意のラスタ形式にエクスポートします。

  • 解像度

  • 作成オプション :ファイルを生成する際に、出力フォーマットに関連した 既定の作成プロファイル を使用するか、各パラメータを設定することで高度なオプション(ファイル圧縮、ブロックサイズ、測色など)を使用します。

  • ピラミッド 作成

  • VRTタイル : checkbox VRT作成 にチェックを入れた場合

  • nodata値

../../../_images/saveasraster.png

図 11.29 新しいラスタレイヤとして保存する

11.2.2.3. ベクタに固有のパラメータ

エクスポートの形式によりますが、これらのオプションが利用できます:

  • 形式 :GeoPackage、GML、ESRI Shapefile、AutoCAD DXF、ESRI FileGDB、Mapinfo TABやMapinfo MIF、SpatiaLite、CSV、KML、ODS など、GDALが書き出せる任意のベクタ形式にエクスポートします。

  • レイヤ名 : ファイル名 がコンテナライクな形式を参照している場合には、このエントリは出力レイヤの名前を表します。

  • 文字コード

  • 選択地物のみ保存

  • エクスポートするフィールドとエクスポートオプションを選択: カスタム名と フォームウィジェット 設定を持つフィールドをエクスポートする手段を提供します:

    • 名前 カラムの下の行をチェックして、出力レイヤに残すフィールドを選択するか、 すべて選択 または すべての選択を解除 ボタンを押します

    • エクスポート名にエイリアスを使う チェックボックスを切り替えると、 エクスポート名 カラムに対応するフィールドのエイリアスが入力されるか、元のフィールド名にリセットされます。セルをダブルクリックすると名前の編集もできます。

    • 属性フォームカスタムウィジェットが使用されているかどうかによって、選択したすべてのRawフィールド値を表示値で置き換える ことができます。例えば、value map ウィジェットがフィールドに適用されている場合、出力レイヤは元の値の代わりに説明の値を含みます。置換はフィールドごとに 表示の値で置き換える カラムで行うこともできます。

  • レイヤメタデータを保持 :ソースレイヤに存在する、レイヤの任意の メタデータ がコピーして保存されます

    • 出力がGeoPackage形式の場合は、新規に作成されるレイヤ内に保存されます

    • その他の形式の場合は、出力レイヤとともに .qmd ファイルとして保存されます。複数のデータセットをサポートするファイルベースの形式(例:SpatiaLite、DXF 等)の場合には、意図しない動作をすることがあることに注意してください。

  • シンボロジのエクスポート :主にDXFのエクスポートに使われますが、DXF、KML、tabファイル形式など、OGR Feature Styles(下記注を参照)を扱うことのできるすべてのファイル形式で使用できます。

    • シンボロジなし :データ読み込むアプリケーションのデフォルトのスタイル

    • 地物シンボロジ :OGR Feature Styles によるスタイルの保存(下記を参照)

    • シンボルレイヤシンボロジ :OGR Feature Styles で保存(下記の注を参照)しますが、レイヤがマルチシンボロジのシンボルを使用している場合、同じジオメトリを複数回エクスポートします

    • 縮尺 の値は、現在のキャンバス縮尺値を設定することができます。

注釈

OGR Feature Styles は、スタイルを隠し属性としてデータ内に直接保存する方法です。この種の情報を扱うことができるのは一部のファイル形式だけです。KML、DXF、TABファイル形式がそのような形式です。さらなる詳細については、 OGR Feature Styles specification ドキュメントを参照してください。

  • ジオメトリ :出力レイヤのジオメトリ機能を設定できます

    • ジオメトリタイプ : 自動 に設定されている場合には地物のオリジナルのジオメトリを保持し、そうでない場合には削除または任意のジオメトリタイプで上書きします。属性テーブルに空のジオメトリカラムを追加し、空間レイヤのジオメトリカラムを削除することもできます。

    • マルチタイプにする :レイヤにマルチジオメトリ地物を強制的に作成します。

    • Z次元を含める :ジオメトリにZ次元を含めます。

Tip

レイヤのジオメトリタイプを上書きすることで、ジオメトリを持たないテーブル(例えば .csv ファイル)を任意のタイプのジオメトリ(ポイント、ライン、ポリゴン)を持ったシェープファイルに保存して、 addPart 部分の追加 ツールを使用してジオメトリを手動で行に追加できるようになります。

  • データソースオプション 、 レイヤオプション 、 カスタムオプション では、出力形式に応じて高度なパラメータ設定を行えます。一部は データ形式とフィールドを探究する で説明されていますが、完全な詳細は GDAL のドライバドキュメントを参照してください。ファイル形式ごとににそれぞれ独自のカスタムパラメータを持っています。例えば、 GeoJSON 形式については、 GDAL GeoJSON のドキュメントを参照してください。

../../../_images/saveasvector.png

図 11.30 新しいベクタレイヤとして保存する

ベクタレイヤを既存のファイルに保存する場合、出力形式(GeoPackage、SpatiaLite、FileGDB等)の機能に応じて、ユーザーは下記操作を行うかどうかを決めることができます:

  • ファイル全体を上書きする

  • ターゲットレイヤだけを上書きする(レイヤ名は設定可能です)

  • 既存のターゲットレイヤに地物を追加する

  • 地物を追加し、新しいフィールドがあれば追加する

ESRIシェープファイル、MapInfo .TAB 等の形式は、地物の追加も可能です。

11.2.2.4. 点群固有のパラメータ

ラスタレイヤやベクタレイヤと同様に、点群レイヤも異なるフォーマットや異なる座標参照系(CRS)に再投影しても保存することができます。これにより、点群レイヤをベクトルまたは点群フォーマットにエクスポートできます。現在サポートされているフォーマットは以下の通りです: 一時スクラッチ(メモリレイヤ)、GeoPackage、ESRI シェープファイル、DXF、LAS/LAZ 点群。上記の共通パラメータに加え、点群レイヤのエクスポートには以下のオプションがあります:

  • ポリゴンレイヤによるフィルタ: ポリゴンレイヤに基づいて点群データをフィルタリングできるようにします。

  • 標高範囲: 指定したZ範囲に基づいて点群データのフィルタリングを有効にします。

  • 点の数の制限: 点群レイヤからエクスポートされる点の数を制限するオプションを提供します。

../../../_images/saveas_pointcloud.png

図 11.31 点群レイヤを新規レイヤとして保存

11.2.3. 新しいDXFファイルを作成する

単一のレイヤを *.DXF を含む別の形式にエクスポートするオプションを提供する 名前を付けて保存... ダイアログの他に、QGISは複数のレイヤを単一のDXFレイヤとしてエクスポートするための別のツールを提供しています。これは プロジェクト ► インポートとエクスポート ► プロジェクトをDXFにエクスポート... メニューからアクセスできます。

../../../_images/export_dxf.png

図 11.32 プロジェクトをDXFにエクスポートダイアログ

DXFエクスポート ダイアログで以下の設定を行います:

  1. 保存先のファイルを指定します。

  2. 該当する場合は、シンボロジーモードとシンボルの縮尺を選択します( OGR Feature Styles の注釈参照)。

  3. データの 文字コード を選択します。

  4. 適用する CRS を選択します。選択したレイヤは指定したCRSに再投影されます。

  5. DXFファイルに含めるレイヤを、テーブルウィジェットでチェックを付けるか、既存の 地図のテーマ からの自動抽出で選択します。 すべて選択 ボタンと すべての選択を解除 ボタンは、エクスポートするデータを素早く設定するのに役立ちます。

    各レイヤについて、以下のことが可能です:

    • 元のプロジェクトレイヤを変更せずに、出力レイヤ名を上書きします。そのためには、ダイアログの レイヤ 名をクリックし、使用する出力名を記述します。

    • 出力レイヤ属性: すべての地物を1つのDXFレイヤにエクスポートするか、フィールドの値を使って地物をDXF出力のレイヤに分割するかを選びます。後者の場合、各レイヤの名前は対応するフィールド値から取られます。

    • データ定義されたシンボルブロックを許可します。:

    • 最大シンボルブロック数: 指定された上限までのシンボルブロックを作成し、参照数が最も多いものから始めます。他のシンボルはそのまま書かれます。-1``は制限なしを意味します。

下記オプションを選択することもできます:

  • unchecked :guilabel:レイヤ名そのものではなくレイヤのタイトルを使用します。このタイトルはプロパティレイヤの metadata または server から取得できます。

  • unchecked 現在のマップ範囲が交差する特徴をエクスポートをします。;

  • unchecked 2D出力を強制する(例えばポリライン幅をサポートするため)

  • checkboxラベルをMTEXT要素 またはTEXT要素としてエクスポートします;

  • unchecked :選択した機能だけを使用します;

  • unchecked線の幅をゼロでエクスポート: 有効にすると、すべての線が最小幅 0 (ヘアライン) でエクスポートされます。これは、ズームレベルに関係なく、ファイル内の線を最小に保つのに役立ち、特に地図上で多くの地物が隣り合っている場合、エクスポートされたdxfでさらにCAD編集を行うのに便利です。

注釈

出力レイヤ名の定義の優先順位は以下の通りです。

  1. 出力レイヤ属性 のフィールド値

  2. レイヤ カラムで名前の上書き保存をします。

  3. The :guilabel:`セットする場合レイヤタイトルを名前として使います。

  4. レイヤ名

DXF エクスポート ダイアログで定義された現在の設定は、 他のセッションで再利用するためにXMLファイルに保存することができます。そのために 設定 コンボボックスには ファイルから設定をロード... と ファイルに設定を保存... の二つのオプションがあります。.

11.2.4. クリップボードから新しいレイヤを作成する

クリップボードにある地物は新しいレイヤに貼り付けできます。これを行うには、いくつかの地物を選択してクリップボードにコピーし、 編集 ► 新規レイヤへの地物貼り付け ► で以下のどちらかを選択することで、新しいレイヤに地物を貼り付けます。

  • 新規ベクタレイヤ... : ベクタレイヤを名前を付けて保存... ダイアログが現れます(パラメータについては 既存のレイヤから新しいレイヤを作成する を参照)

  • 一時スクラッチレイヤ... :レイヤ名を指定する必要があります

選択した地物とその属性を持った新しいレイヤが作成され(そしてマップキャンバスに追加され)ます。

注釈

クリップボードからのレイヤ作成は、well-known text(WKT)を使用してジオメトリが定義されていれば、QGIS内で選択してコピーした地物でも、ほかのアプリケーションの地物でも可能です。

11.2.5. 仮想レイヤを作成する

仮想レイヤは特別な種類のベクタレイヤです。これは、QGISが開くことができる任意の数の他のベクタレイヤに関するSQLクエリの結果としてレイヤを定義します。仮想レイヤは、それ自体はデータを保持しておらず、ビューと見なすことができます。

仮想レイヤを作成するためには、下記の方法で仮想レイヤの作成ダイアログを開きます:

  • レイヤ ► レイヤの追加 ► メニュー内の addVirtualLayer 仮想レイヤの追加 / 編集 エントリを選択する

  • データソースマネージャ ダイアログ内で addVirtualLayer 仮想レイヤ タブを有効にする

  • DBマネージャ ダイアログのツリーを使用する

ダイアログでは、 レイヤ名 とSQL クエリ を指定します。クエリでは、読み込まれたベクタレイヤの名前(またはid)をテーブルとして、フィールド名をカラムとして使用することができます。

例えば、 airports という名前のレイヤがある場合、 public_airports という名前の新しい仮想レイヤを次のようなSQLクエリで作成できます。

SELECT *
FROM airports
WHERE USE = "Civilian/Public"

このSQLクエリは airports レイヤの元のプロバイダが直接にはSQLクエリをサポートしていなくとも、プロバイダに関係なく実行されます。

../../../_images/create_virtual_layers.png

図 11.33 仮想レイヤの作成ダイアログ

結合(JOIN)や、複雑なクエリを使用して作成することもできます。例えば、 airports と country の情報を結合するには、次のようにします:

SELECT airports.*, country.population
FROM airports
JOIN country
ON airports.country = country.name

注釈

DBマネージャプラグイン のSQLウィンドウを使用して仮想レイヤを作成することもできます。

11.2.5.1. クエリで使用するためのレイヤの埋め込み

マップキャンバスで利用できるベクタレイヤの他に、 埋め込みレイヤ リストにレイヤを追加することができます。埋め込みレイヤは、マップキャンバスやレイヤパネルに表示することなくクエリ内で使用することができます。

レイヤを埋め込むには、 追加 をクリックし ローカル名 、 プロバイダ 、 エンコーディング および ソース へのパスを指定します。

インポート ボタンを押すと、マップキャンバスのレイヤを埋め込みレイヤリストに追加できます。そのレイヤは既存のクエリを壊すことなくレイヤパネルから削除できます。

11.2.5.2. サポートされているクエリ言語

クエリ操作の基本エンジンはSQLiteとSpatiaLiteを使用しています。

これはすなわち、ローカルインストールのSQLiteが理解できるSQLはすべて使用できることを意味します。

SQLiteの関数や SpatiaLiteの空間関数も仮想レイヤのクエリで使用できます。例えば、属性のみのレイヤからポイントレイヤを作成するには、次のようなクエリを使用します:

SELECT id, MakePoint(x, y, 4326) as geometry
FROM coordinates

QGIS式の関数 も仮想レイヤのクエリ内で使用できます。

レイヤのジオメトリ列を参照するため、名前 geometry を使用します。

純粋なSQLクエリとは違い、仮想レイヤのクエリのフィールドには全て名前を付けなければなりません。計算や関数呼び出しの結果としてカラムに名前を付ける場合には、 as キーワードを使用することを忘れないでください。

11.2.5.3. パフォーマンスの問題

デフォルトのパラメータを使用すると、仮想レイヤのエンジンは、クエリのさまざまなカラムの型を検出するために最善を尽くそうとします。もしある場合には、ジオメトリカラムも含め型検出を行います。

型検出は、可能な場合にはクエリをイントロスペクトするか、最後の手段としてクエリの最初の行(LIMIT 1)をフェッチすることで行われます。レイヤを作成するためだけに結果の最初の行をフェッチするのは、パフォーマンス上好ましくないかもしれません。

作成ダイアログのパラメータには以下のものがあります:

  • ユニークな識別子カラム :QGISが行の識別子として使用可能なユニークな整数値を表すクエリのフィールドを指定します。デフォルトでは、自動的インクリメントの整数値が使用されます。ユニークな識別子カラムを定義すると、IDによる行の選択を高速化します。

  • ジオメトリなし :仮想レイヤのジオメトリフィールドを強制的に無視します。結果として得られるレイヤは属性のみのレイヤとなります。

  • ジオメトリカラム : ジオメトリカラムの名前を指定します。

  • タイプ :ジオメトリの種類を指定します。

  • CRS :仮想レイヤの座標参照系を指定します。

11.2.5.4. 特別なコメント

仮想レイヤエンジンは、クエリの各列の型を決定しようとします。それが失敗した場合、列の型を決定するためにクエリの最初の行をフェッチします。

いくつかの特別なコメントを使用することで、特定の列の型をクエリ内で直接指定できます。

構文は、 /*:type*/ のようになります。これはカラム名の直後に記述しなければなりません。 type は、整数の場合は int 、浮動小数点数の場合は real 、テキストの場合は text です。

例:

SELECT id+1 as nid /*:int*/
FROM table

ジオメトリカラムの型と座標参照系は、構文 /*:gtype:srid*/ 形式の特別なコメントで設定できます。ここで、 gtype はジオメトリタイプ( point 、 linestring 、 polygon 、 multipoint 、 multilinestring 、 multipolygon )、 srid は座標参照系のEPSGコードを表す整数です。

11.2.5.5. インデックスの使用

仮想レイヤを介してレイヤをリクエストする場合、ソースレイヤのインデックスは以下の方法で使用されます:

  • レイヤの主キーカラムに = 述語が使用されている場合、元のデータプロバイダには、特定のID(FilterFid)が要求されます。

  • 他の述語( > 、 <= 、 != など)や、主キーのないカラムについては、元のベクタデータプロバイダへのリクエストには、式から構築されたリクエストが使用されます。これは、データベースプロバイダにインデックスがある場合には、インデックスが使用される可能性があることを意味します。

リクエスト内の空間的述語を処理し、空間インデックスの使用をトリガーするための特定の構文が存在します: _search_frame_ という名前の隠しカラムが各仮想レイヤーに対して存在します。このカラムは、バウンディングボックスに等しいかどうかを比較できます。例:

SELECT *
FROM vtab
WHERE _search_frame_=BuildMbr(-2.10,49.38,-1.3,49.99,4326)

ST_Intersects のような空間二項述語は、この空間インデックス構文と組み合わせて使用すると、大幅に高速化されます。