すでにQGISや他のツールで多くのデータベース操作を実行する方法を見てきましたが、今度は、この同じ機能の多くに加えてさらに管理指向のツールを提供するDB管理者ツールを検討します。
このレッスンの目標: QGISのDBマネージャを使用して、空間データベースと対話する方法を学びます。
最初にDBマネージャのインターフェイスを開く必要があります。それには データベース –> DBマネージャ –> DBマネージャ メニューを選択するか、ツールバー上のDBマネージャアイコンを選択します。
すでに設定した以前の接続が見えているはずであり、前のセクションで作業したテーブルを見るために myPG セクションとその public スキーマを展開できるはずです。
気づくかもしれない最初の事は、今データベースに含まれるスキーマに関するいくつかのメタデータを見ることができることです。
Schemas are a way of grouping data tables and other objects in a PostgreSQL database and a container for permissions and other constraints. Managing PostgreSQL schemas is beyond the scope of this manual, but you can find more information about them in the PostgreSQL documentation on Schemas. You can use the DB Manager to create new Schemas, but will need to use a tool like pgAdmin III or the command line interface to manage them effectively.
DBマネージャは、データベース内のテーブルを管理するために使用できます。すでに、コマンドライン上でテーブルを作成し管理するためのさまざまな方法を見てきていますが、ここでDBマネージャでこれを行う方法を見てみましょう。
まず、ツリー内の名前をクリックして 情報 タブの中を見ることで、テーブルのメタデータを見てみることは有用です。
このパネルでは、テーブルについての 一般情報 も、ジオメトリと空間参照系に関してPostGIS拡張が維持している情報を見ることができます。
情報 タブで下にスクロールした場合、表示しているテーブルに対して、 フィールド 、 制約 、 索引 についての詳細な情報を見ることができます。
単にレイヤーツリーにレイヤーの属性テーブルを表示することによって、これを行う可能性がありますほとんど同じ方法でデータベース内のレコードを見てDBマネージャを使用することも非常に便利。 テーブル タブを選択して、データを閲覧できます。
地図プレビューでレイヤーのデータが表示される プレビュー タブもあります。
ツリー中のレイヤーを右クリックし、 キャンバスに追加 をクリックすると地図にこのレイヤーが追加されます。
これまでのところはデータベース、そのスキーマとテーブル、それらのメタデータを閲覧しているだけですが、おそらく追加の列を追加するとかテーブルを変更したい場合はどう?DBマネージャでは、直接これを行うことができます。
ツリーで、編集するテーブルを選択します
メニューから テーブル ‣ テーブルを編集 を選択し テーブルのプロパティ ダイアログを開きます。
列を追加するには、このダイアログを使用してジオメトリ列を追加し、既存の列を編集したり、列を完全に削除できます。
制約 タブを使用、どのフィールドが主キーとして使用されるか、既存の制約を削除するために管理できます。
索引 タブは、空間索引と通常の索引の両方を追加および削除するために使用できます。
データベース内の既存のテーブルでの作業のプロセスを一通り終えましたので、ここでDB マネージャを使用して新しいテーブルを作成してみましょう。
まだ開いていない場合は、DBマネージャウィンドウを開き、すでにデータベース内にあるテーブルのリストが表示されるまでツリーを展開します。
メニューから テーブル –> テーブルを作成 を選択し、 [テーブルの作成]ダイアログを開きます。
デフォルトの Public スキーマを使用し 、テーブル places に名前を付けてください。
id 、 place_name 、および elevation フィールドを以下に示すように追加します
id フィールドが主キーとして設定されていることを確認してください。
ジオメトリ列を作成 の横にあるチェックボックスをクリックし、それが POINT のタイプと設定されていることを確認し、名前は geom のまま、 SRID として 4326 を指定します。
空間索引を作成 の横にあるチェックボックスをクリックし、作成 をクリックしてテーブルを作成します。
テーブルが作成されたことを知らせるダイアログを閉じ、 閉じる をクリックして「表を作成」ダイアログを閉じます。
これで、DBマネージャで、テーブルを検査できますし、もちろんその中にデータがないことがわかります。ここからレイヤーのメニューで 編集を切替 できます、テーブルに場所の追加を開始します。
DB マネージャによって、いくつかの基本的なデータベース管理作業を実行できるようにもなります。それは確かにより完全なデータベース管理ツールに代わるものではありませんが、それはデータベースを維持するために使用できるいくつかの機能を提供します。
データベーステーブルは、多くの場合、非常に大きくなることがありえますし、頻繁に変更されているテーブルは、もはやPostgreSQLで必要とされてないレコードの残渣を残したままにすることがあります。 VACUUM コマンドでは、ガベージコレクションのようなものをして、パフォーマンス向上のためにテーブルを圧縮したりオプションで分析します。
DB マネージャ内から VACUUM ANALYZE コマンドを実行する方法を見てみましょう。
DBマネージャツリーでテーブルのいずれかを選択します。
メニューから テーブル ‣ Vacuum Analyzeを実行 を選択します。
それでおしまい!PostgreSQLは操作を実行します。テーブルの大きさに応じて、これは完了するまでに時間がかかる場合があります。
You can find more information about the VACUUM ANALYZE process in the PostgreSQL Documentation on VACUUM ANALYZE
DBマネージャはまた、データベーステーブルに対してクエリを記述し、結果を表示するための方法を提供します。すでに ブラウザ パネルの中のこの種の機能を見てきましたが、再びここでDBマネージャでそれを見てみましょう。
ツリー内で lines テーブルを選択してください。
[DB マネージャ]ツールバーで SQLウィンドウ ボタンを選択します。
次の SQLクエリ を与えられたスペースに構成します
select * from lines where roadtype = 'major';
クエリを実行するには、 実行(F5) ボタンをクリックします。
Result パネルに一致するレコードが表示されているはずです。
新しいレイヤーとしてロード のチェックボックスをクリックして地図に結果を追加します。
id 列を 一意の整数値を持つ列 として、 geom 列を ジオメトリ列 として選択します。
レイヤー名(接頭辞) を roads_primary と入力します。
今すぐロード! をクリックして地図に新しいレイヤーとして結果をロードします。
クエリと一致したレイヤーは今、地図上に表示されます。もちろんこのクエリツールは、以前のモジュールとセクション中で見たものなど、任意のSQLコマンドを実行するために使用できます。
コマンドラインツールを使用して空間データベースにデータをインポートする方法をすでに見てきました。次に、DBマネージャを使用してインポートを行う方法を学習しましょう。
[DBマネージャ]ダイアログボックスのツールバー上の レイヤー/ファイルを読み込み ボタンをクリックしてください。
exercise_data/projected_data から urban_33S.shp ファイルを入力データセットとして選択します。
フォームの値の一部を事前に埋めるために、 オプションを更新 ボタンをクリックしてください。
新しいテーブルを作成 オプションが選択されていることを確認してください
元SRID を 32722 、 先SRID を 4326 として指定します。
空間索引を作成 の横にあるチェックボックスをオンにします。
OK をクリックして読み込みを実行します。
読み込みが成功したことを知らせるダイアログを閉じます
DBマネージャのツールバー上の Refresh ボタンをクリックしてください。
今の木でそれをクリックすることで、データベース内のテーブルを調べることができます。空間REF: が WGS 84(4326) としてリストに挙がっていることを確認することで、データが再投影されていることを確認してください
ツリー中のテーブルを右クリックして キャンバスに追加 を選択すると地図にレイヤーとしてテーブルが追加されます。
DB マネージャは空間データベースからデータを書き出すためにも当然使用できますので、それがどのように行われるかを見てみましょう。
ツリーで lines レイヤーを選択し、ツールバー上の ファイルに書出 ボタンをクリックして ベクターファイルを書き出し ダイアログを開きます。
... ボタンをクリックして 出力ファイル を選択し、データを exercise_data ディレクトリに urban_4326 として保存します。
ターゲットSRID を 4326 と設定します。
OK をクリックして書き出しを初期化します。
書き出しが成功したことを知らせるダイアログを閉じ、DBマネージャを閉じます。
ブラウザパネルで作成したシェープファイルを検査できます。
QGISで空間データベースを管理するためのDBマネージャインターフェイスを使用して、データに対してSQLクエリを実行する方法、およびデータを読み込んだり書き出しする方法を見てきました。
次は spatialite データベースでこれらの同じ技術の多くを使用する方法を見ていきます。