すでにQGISや他のツールで多くのデータベース操作を実行する方法を見てきましたが、今度は、この同じ機能の多くに加えてさらに管理指向のツールを提供するDB管理者ツールを検討します。
このレッスンの目標: QGIS DB Managerを使用して、空間データベースと対話する方法を学びます。
最初に DBマネージャのインターフェースを開く必要があります。それには データベース->DBマネージャ->DBマネージャ メニューを選択するか、ツールバー上のDBマネージャアイコンを選択します。
すでに設定した以前の接続が見えているはずであり、前のセクションで作業したテーブルを見るために myPG セクションとその public スキーマを展開できるはずです。
気づくかもしれない最初の事は、今データベースに含まれるスキーマに関するいくつかのメタデータを見ることができることです。
スキーマは、データテーブルおよびPostgreSQLデータベース内の他のオブジェクトと権限および他の制約のコンテナをグループ化する方法です。PostgreSQLのスキーマを管理することはこのマニュアルの範囲外ですが、それらについての詳細な情報は`スキーマに関するPostgreSQLのドキュメント<http://www.postgresql.org/docs/9.1/static/ddl-schemas.html> ` _に見つけることができます。DB Managerを使用して新しいスキーマを作成できますが、それらを効果的に管理するにはpgAdmin IIIのようなツールやコマンドライン・インタフェースを使用する必要があるでしょう。
DB Managerは、データベース内のテーブルを管理するために使用できます。すでに、コマンドライン上でテーブルを作成し、管理するためのさまざまな方法を見て、今はDBマネージャでこれを行う方法を見てみましょいます。
まず、ツリー内の名前をクリックし Info タブの中を見ることで、テーブルのメタデータをただ見ることは有用です。
このパネルでは、テーブルについての 一般Info も、幾何学と空間参照システムに関してPostGISの拡張子が維持している情報を見ることができます。
Info タブで下にスクロールした場合、表示しているテーブルに対して、 fields 、 Constraints 、 Indexes についての詳細な情報を見ることができます。
単にレイヤーツリーにレイヤの属性テーブルを表示することによって、これを行う可能性がありますほとんど同じ方法でデータベース内のレコードを見てDB Managerを使用することも非常に便利。 Table タブを選択して、データを閲覧できます。
地図プレビューでレイヤーのデータが表示される Preview タブもあります。
ツリー中のレイヤーを右クリックし、 キャンバスに追加 をクリックすると地図にこのレイヤーが追加されます。
これまでのところは唯一のデータベースのスキーマとテーブルとそのメタデータを閲覧されているが、おそらく追加の列を追加するテーブルを変更したい場合はどう?DB Managerは、直接これを行うことができます。
ツリーで、編集するテーブルを選択します
メニューから 表->表を編集 を選択し 表のプロパティ ダイアログを開きます。
列を追加するには、このダイアログを使用してジオメトリ列を追加し、既存の列を編集したり、列を完全に削除できます。
Constraints タブを使用、どのフィールドが主キーとして使用されるか、既存の制約を削除するために管理できます。
Indexes タブは、空間インデックスと通常のインデックスの両方を追加および削除するために使用できます。
データベース内の既存のテーブルでの作業のプロセスを一通り終えましたので、ここでDB マネージャを使用して新しいテーブルを作成してみましょう。
まだ開いていない場合は、DBマネージャウィンドウを開き、すでにデータベース内にあるテーブルのリストが表示されるまでツリーを展開します。
メニューから 表 - >Tableを作成 を選択し、 [表の作成]ダイアログを開きます。
デフォルトの Public スキーマを使用し 、テーブル places に名前を付けてください。
id 、 place_name 、および elevation フィールドを以下に示すように追加します
id フィールドが主キーとして設定されていることを確認してください。
ジオメトリCOLUMNを作成 の横にあるチェックボックスをクリックし、それが POINT のタイプと設定されていることを確認し、名前は geom のまま、 SRID として 4326 を指定します。
空間インデックスを作成 の横にあるチェックボックスをクリックし、作成 をクリックしてテーブルを作成します。
テーブルが作成されたことを知らせるダイアログを閉じ、 Close をクリックして「表を作成」ダイアログを閉じます。
これで、DBマネージャで、テーブルを検査できますし、もちろんその中にデータがないことがわかります。ここからレイヤーのメニューで 編集を切替 できます、テーブルに場所の追加を開始します。
DB マネージャによって、いくつかの基本的なデータベース管理タスクを実行できるようにもなります。それは確かにより完全なデータベース管理ツールに代わるものではありませんが、それはデータベースを維持するために使用できるいくつかの機能を提供します。
データベーステーブルは、多くの場合、非常に大きくなることができ、頻繁に変更されているテーブルは、もはやPostgreSQLで必要とされてないレコードの残党を中心に残して終わることがあります。 VACUUM コマンドでは、圧縮し、オプションのパフォーマンス向上のために、テーブルを分析するためのガベージコレクションのようなものをやってくれます。
DB Manager内から VACUUM ANALYZE コマンドを実行する方法を見てみましょう。
DBマネージャツリーでテーブルのいずれかを選択します。
メニューから 表 - >実行してくださいバキュームAnalyze 選択します。
それでおしまい!PostgreSQLは操作を実行します。テーブルの大きさに応じて、これは完了するまでに時間がかかる場合があります。
`ANALYZE VACUUMについてのPostgreSQLのドキュメント<http://www.postgresql.org/docs/9.1/static/sql-vacuum.html> ` _ANALYZE VACUUMの処理に関する詳細な情報を見つけることができます。
DB Managerはまた、データベーステーブルに対してクエリを記述し、結果を表示するための方法を提供します。すでにこの種の機能見てきた Browser パネルを、しかし、DBマネージャで再びここでそれを見てみましょう。
ツリー内で lines テーブルを選択してください。
DB Managerツールバーで SQLのwindow ボタンを選択します。
次の SQLクエリ を与えられたスペースに構成します
select * from lines where roadtype = 'major';
クエリを実行するには、 実行(F5) ボタンをクリックします。
Result パネルに一致するレコードが表示されているはずです。
新しいlayerとしてロード のチェックボックスをクリックして地図に結果を追加します。
id 列を 一意の整数値を持つ列 として、 geom 列を ジオメトリCOLUMN として選択します。
レイヤ名(接頭辞) を roads_primary と入力します。
今すぐロード! をクリックして地図に新しいレイヤーとして結果をロードします。
クエリと一致したレイヤーは今、地図上に表示されます。もちろんこのクエリツールは、以前のモジュールとセクション中で見たものなど、任意のSQLコマンドを実行するために使用できます。
コマンドラインツールを使用して空間データベースにデータを読み込みする方法はすでに見てきており、またSPITプラグインを使用する方法も見てきましたので、今は読み込みを行うためにDB Managerを使用する方法を学ぶことができます。
[DBマネージャ]ダイアログボックスのツールバー上の レイヤー/ ファイルを読み込み ボタンをクリックしてください。
exercise_data / projected_data から urban_33S.shp ファイルを入力データセットとして選択します。
フォームの値の一部を事前に埋めるために、 更新Options ボタンをクリックしてください。
新しいtableを作成 オプションが選択されていることを確認してください
元SRID を 32722 、 先SRID を 4326 として指定します。
空間Indexを作成 の横にあるチェックボックスをオンにします。
OK をクリックして読み込みを実行します。
読み込みが成功したことを知らせるダイアログを閉じます
DBマネージャのツールバー上の Refresh ボタンをクリックしてください。
今の木でそれをクリックすることで、データベース内のテーブルを調べることができます。空間REF は WGS 84(4326) のように表示されているデータは、そのチェックすることによって再投影されていることを確認し
右ツリーと選択して、テーブルをクリックして Canvas に追加する地図内のレイヤとしてテーブルを追加します。
もちろん、DB Managerは空間データベースからデータを書き出すために使用できます。そこで、それがどのように行われるかを見てみましょう。
ツリーで lines レイヤーを選択し、ツールバー上の Fileに書出 ボタンをクリック ベクトルファイルを書き出し ダイアログを開きます。
:guilabel:` ... ボタンがクリック :guilabel:`出力file とデータを保存 選択し の exercise_data ディレクトリとして urban_4326 。
ターゲットSRID を 4326 と設定します。
OK をクリックして書き出しを初期化します。
書き出しが成功したことを知らせるダイアログを閉じ、DBマネージャを閉じます。
ブラウザパネルで作成したシェープファイルを検査できます。
今まで、QGISで空間データベースを管理するためのDBマネージャインターフェースを使用して、データに対してSQLクエリを実行する方法、およびデータを読み込んだり書き出しする方法を見てきました。
次は spatialite データベースでこれらの同じ技術の多くを使用する方法を見ていきます。