Outdated version of the documentation. Find the latest one here.

サポートされるデータ形式

QGISは、ESRIシェープファイル、MapInfo社とのMicroStationファイル形式、AutoCADのDXF、PostGISに、SpatiaLite、Oracle SpatialのとMSSQL空間データベース、および多くを含む、ベクターデータ形式を読み書きするOGRライブラリを使用しています。GRASSベクトルとPostgreSQLのサポートは、ネイティブQGISデータプロバイダプラグインによって供給されています。ベクターデータもQGISにzipとgzipアーカイブから読み取りモードでロードできます。本書の日付の時点で、69のベクトル形式がOGRライブラリによってサポートされています( 文献とWeb参照 にOGR-SOFTWARE-SUITEを参照)。完全なリストは http://www.gdal.org/ogr/ogr_formats.html で入手可能です。

ノート

リストに含まれていないフォーマットのすべてが、様々な理由からQGISで動作する可能性があります。例えば、いくつかは、外部の商用ライブラリを必要としたり、OSのGDAL / OGRのインストールには、使用したい形式をサポートするために構築されていない可能性があります。QGISにベクトルをロードするときにのみ、十分にテストされているこれらのフォーマットは、ファイルタイプのリストに表示されます。他の未テストの形式は *.* を選択してロードできます。

GRASS ベクタデータの利用方法はセクション GRASS GIS の統合 に記述されています.

ESRIシェープファイル、PostGISレイヤ、SpatiaLiteレイヤー、OpenStreetMapのベクトル、およびカンマ区切りデータ(CSV):このセクションでは、いくつかの一般的なフォーマットで作業する方法について説明します。QGISで利用可能な地物の多くはベクターデータソースにの関係なく、同じように機能します。これは仕様であり、そしてそれは、識別、選択、ラベル、属性の機能が含まれており。

ノート

QGISでサポートするのは、(マルチ)ポイント、(マルチ)ライン、(マルチ)ポリゴン、CIRCULARSTRING、CompoundCurve、CurvePolygon、MULTICURVE、MultiSurface地物タイプ、すべてのZおよび/またはM値を有します。

いくつかのドライバーがCIRCULARSTRING、CompoundCurve、CurvePolygon、MULTICURVE、MultiSurface地物タイプといった、これらの地物の種類のいくつかをサポートしていないことにも注意してください。QGISではそれらを(マルチ)ポリゴンフィーチャに変換します。

ファイルからのレイヤーの読み込み

addOgrLayer (シェープファイル、MapInfoのまたはDXF層のような)ファイルからレイヤをロードするには、 addOgrLayer ベクトルLayerを追加 ツールバーボタンをクリックしてください、または Ctrlキー+Shiftキー+V とキーボード入力。これは、新しいウィンドウを開きます( figure_vector_1 参照)。

Figure Vector 1:

../../../_images/addvectorlayerdialog.png

ベクタレイヤーダイアログを追加

利用可能なオプションがチェックから radioButtonOn File[参照] をクリックします。これは、ファイルシステムをナビゲートし、シェープファイルまたはその他のサポートされているデータソースをロードすることを可能にする、( figure_vector_2 を参照)標準のファイルを開くダイアログが表示されます。選択ボックス Filter selectString いくつかのOGR-サポートされているファイル形式を事前に選択できます。

必要に応じて、ファイルのエンコードも選択できます。

Figure Vector 2:

../../../_images/shapefileopendialog.png

OGRサポートベクタレイヤーダイアログを開きます。

リストからファイルを選択し、QGISに [開く] ロード、それをクリックします。 Figure_vector_3alaska.shp ファイルをロードした後のQGISを示しています。

Figure Vector 3:

../../../_images/shapefileloaded.png

アラスカのシェープファイルとQGISロード

ちなみに

レイヤ色

地図にレイヤを追加するとランダムな色が割り当てられます.複数のレイヤを一度に追加することができますが,その場合それぞれのレイヤには異なる色が割り当てられます.

ファイルがロードされたら、地図のナビゲーションツールを使用して、それを中心にズームできます。レイヤーのスタイルを変更するには、レイヤ名上ダブルクリックするか、または凡例の名前を右クリックしてコンテキストメニューから Properties を選択することで、 レイヤProperties ダイアログを開きます。ベクタレイヤーのシンボルの設定の詳細は、 スタイルメニュー セクションを参照。

ちなみに

OS Xで外部ドライブからレイヤとプロジェクトをロードする

OS Xでプライマリハードドライブ以外にマウントされるポータブルドライブは File ‣ Open Project に期待されているように表示されません.私たちはOSX-ネイティブopen/saveダイアログを作ることでこの問題を解決しました.ファイル名ボックスで作業するときに ‘/Volumes’ と打ち込んでから return を押してください. そうすると外部ドライブやネットワークマウントの中を見ることができます.

ノート

いくつかのジオメトリタイプ(ポイント、ライン、および/またはポリゴン)を含むDXFファイルは、レイヤーの名前は、* <filename.dxf>エンティティから行われます <geometry type>*.

ノート

ファイルブラウザやQGISブラウザパネルのいずれかから レイヤーPanel にファイルをドラッグ&ドロップすることもできます。レイヤーは、複数のジオメトリタイプが含まれている場合は、新しいウィンドウがサブレイヤを選択するように求められます。これは、多くの場合、GPX、MapInfo社またはDXFファイル形式で発生します。

特定のディレクトリベース層のロード

addOgrLayer ArcInfoのバイナリカバレッジ、英国のようないくつかの特定のフォーマットをロードします。ナショナル転送フォーマットのほか、米国勢調査局やOpenfileGDBの生TIGER形式、をクリックしてください addOgrLayer ベクトルLayer ツールバーボタンまたはを押して追加します。の開くには Ctrl+Shiftキー+V ベクトルLayer ダイアログを追加します。選択| radioButtonOn | Directory として ソースtype が。ファイルの種類のフィルタを変更します type がのファイル selectString をフォーマットにたとえば「ARC / INFOバイナリカバレッジ」のため、開きたいです。カバレッジファイルまたはファイルを含むディレクトリに移動し、それを選択します。

ESRI Shapefiles

ESRIシェープファイルはまだQGISで最も使用されるベクトルファイル形式の一つです。ただし、このファイル形式にはいくつかの他のファイル形式は(Geopackage、spatialiteのように)持っていないいくつかの制限があります。インデックス:: `OGRシンプルな機能Library`(http://www.gdal.org/ogr/)サポートはによって提供されます。

ひとつのshapefileは実際多くのファイルで構成されています.以下の3個が必須のものです:

  1. .shp ファイルは地物のジオメトリを持ちます.

  2. .dbf ファイルはdBase形式で属性を保持します.

  3. .shx はインデックスファイルです.

Shapefilesではさらに .prj という拡張子のファイルが含まれることがあります, このファイルには投影法の情報が保持されています. プロジェクションファイルがあると便利ですが,このファイルは必須のファイルではありません. shapefile データセットは追加のファイルを持つことができます. さらに詳細な情報は ESRI technical specification at: http://www.esri.com/library/whitepapers/pdfs/shapefile.pdf を参照して下さい.

シェープファイルのためのパフォーマンスの改善

シェープファイルの描画のパフォーマンスを改善するには、空間インデックスを作成することができます。空間インデックスは、ズームとパンの両方の速度を向上させます。ファイル:: `.qix`延長QGISが使用する空間インデックスを持っています。

これらの手順でインデックスを作成できます:

  • クリックしてシェープファイルをロード| addOgrLayer | :SUP:のkbd: `Ctrlキー+ Shiftキー+ V`を`ベクトルLayer`は、ツールバーのボタンや押しを追加します。

  • Open the Layer Properties dialog by double-clicking on the shapefile name in the legend or by right-clicking and choosing Properties from the context menu.
  • In the General tab, click the [Create Spatial Index] button.

問題形状の.prjファイルをロードする

.prj ファイルを持つシェープファイルを読み込むと、QGISはそのファイルから座標参照系を読み取ることができません、レイヤーの レイヤProperties ダイアログの General タブ内の [...指定] ボタンをクリックすることによって手動で適切な投影を定義する必要があります。これは、 .prj ファイルでは多くの場合、QGISで使用され CRS ダイアログに一覧表示されているような完全な投影パラメータを提供していないという事実によるものです。

同じ理由で、QGISで新しいシェープファイルを作成した場合、二つの異なる投影ファイルが作成されます、ESRIソフトウェアと互換性が制限された投影パラメータ、.prj ファイル、および .qpj ファイルを、使用CRSの完全なパラメータを提供します。QGISが見つかるたび .prj .qpj ファイル、それが代わりに使用されます。

デリミテッドテキストファイル

表形式のデータは読みやすくシンプルなので広く共通に利用される形式です – データはプレインテキストエディタで閲覧や編集もできます. デリミテッドテキストファイルはそれぞれのカラムが指定された文字で区切られ各行がラインブレークで構成されている属性テーブルです. 通常最初の行にはカラム名が格納されます. 一般的なデリミテッドテキストファイルはそれぞれのカラムがコンマで区切られたCSVです (Comma Separated Values).

そのようなデータファイルは位置情報を2種類の形式で持つことができます:

  • 点の座標を区切られたカラムとして持ちます

  • ウェルノウンテキスト(WKT)としてジオメトリをあらわします

QGISは、レイヤーまたは順序テーブルとして区切られたテキストファイルをロードすることができます。しかし、最初のファイルは、以下の要件を満たしていることを確認してください。

  1. ファイルは区切り文字で区切られたフィールド名が記述されたヘッダ行が必要です. これはテキストファイルの先頭の行になければいけません.

  2. ヘッダ行はジオメトリが定義されたカラムを持たなければいけません. これらのフィールドは任意の名前をつけられます.

  3. x座標とy座標は(ジオメトリが座標で定義されている場合)数値である必要があります.座標系は重要ではありません.

有効なテキスト・ファイルの例として、標高地点データファイルのインポート elevp.csv QGISサンプルデータセットが付属しています( サンプルデータ セクションを参照):

X;Y;ELEV
-300120;7689960;13
-654360;7562040;52
1640;7512840;3
[...]

このサンプルテキストファイルについての解説:

  1. 例のテキストファイルでは ; (セミコロン) を区切り文字として使っています.どんな文字でもフィールドの区切り文字として使うことができます.

  2. 最初の行はヘッダーです.それには X, Y および``ELEV``のフィールドが含まれています.

  3. 引用符(")はテキストフィールドを区切るのに使われません

  4. X座標は``X`` フィールドに含まれています.

  5. y座標は``Y``フィールドに含まれています.

上級ユーザー向けのその他の貴重な情報

湾曲した幾何学的形状(CIRCULARSTRING、CurvePolygonとCompoundCurve)との機能がサポートされています。ここでWKTジオメトリで区切られたテキストなどのジオメトリタイプの3つの例である:

Label;WKT_geom
CircularString;CIRCULARSTRING(268 415,227 505,227 406)
CurvePolygon;CURVEPOLYGON(CIRCULARSTRING(1 3, 3 5, 4 7, 7 3, 1 3))
CompoundCurve;COMPOUNDCURVE((5 3, 5 13), CIRCULARSTRING(5 13, 7 15,
  9 13), (9 13, 9 3), CIRCULARSTRING(9 3, 7 1, 5 3))

区切りテキストもZサポートしており、Mは、ジオメトリの座標:

LINESTRINGM(10.0 20.0 30.0, 11.0 21.0 31.0)

デリミテッドテキストファイルをロードしています

ツールバーのアイコンをクリックしてください delimitedText 区切りテキストレイヤー を追加します 開くためにlayers ツールバーの管理を figure_delimited_text_1 に示すように、 区切りテキストファイル ダイアログからレイヤーを作成します。

Figure Delimited Text 1:

../../../_images/delimited_text_dialog.png

区切りテキストダイアログ

[参照] ボタンをクリックすることで、まずインポートするファイルを選択します( qgis_sample_data/CSV/elevp.csv など)。ファイルを選択すると、QGISは最近使用区切り文字でファイルを解析しようとします。正しくファイルを解析するQGISを有効にするには、正しい区切り記号を選択することが重要です。活性化することにより、区切り文字を指定できます radioButtonOn カスタムdelimiters 、または活性化することにより radioButtonOn 正規表現delimiter とにテキストを入力 Expression フィールド。たとえば、区切り文字をタブに変更するには、 ``t``(これはタブ文字の正規表現です)を使用します。

ファイルが解析されたら、 ジオメトリ定義radioButtonOn ポイント座標 に設定し、ドロップダウンリストから X Y フィールドを選択します。座標が度/分/秒のように定義されている場合は、checkbox DMS coordinates チェックボックスを有効にします。

figure_delimited_text_1 に示すように、最後に、レイヤ名( :file:`elevp`など)を入力します。マップにレイヤを追加するには、 [OK] をクリックしてください。区切りのテキストファイルは現在、QGIS内の他のマップレイヤとして動作します。

フィールドの前と後の空白を除去するヘルパーオプションがあります — checkbox 前後の空白削除. またこのオプションも使えますAlso checkbox 空フィールドを削除. 必要ならばコンマを数字の桁区切り文字にすることができます checkbox コンマを小数点区切りに利用.

空間情報は、WKTで表現されている場合は、 radioButtonOn ウェルノウンText オプションを有効にして、ポイント、ラインまたはポリゴンのオブジェクトのWKT定義にフィールドを選択します。ファイルに非空間データが含まれている場合は、 radioButtonOn NOジオメトリ(表のみを属性) を有効にして、それは序数テーブルとしてロードされます。

また、以下を有効にできます:

  • checkbox 空間インデックスの利用 をチェックすると表示のパフォーマンスや空間条件での地物選択パフォーマンスを向上させます.

  • checkbox サブセットインデックスの利用.

  • checkbox ウォッチfile QGISが実行されている間は、他のアプリケーションでファイルの変更を監視します。

OpenStreetMap データ

多くの国で、このようなデジタル道路地図などの無料の地理データが利用できないため、近年では、OpenStreetMapのプロジェクトが人気を博しています。OSMプロジェクトの目的は、GPSデータ、航空写真や地元の知識から、世界の自由な編集可能な地図を作成することです。この目的をサポートするために、QGISはOSMデータのサポートを提供します。

OpenStreetMapベクタの読み込み

QGISはコア機能として、OpenStreetMapのインポートを統合します。

  • OSM サーバに接続してデータをダウンロードするためにはメニューの ベクタ ‣ Openstreetmap ‣ Load data を選択して下さい. もし JOSMやOverpass APIや他のソースを使って .osm XMLファイルをすでに取得している場合はこのステップをスキップできます.

  • メニュー ベクタ‣ Openstreetmap ‣ XML からトポロジーインポート を使うと .osm ファイルを spatialite データベースに変換してdb接続を作成します.

  • メニュー ベクトル - > OpenStreetMapの - SpatiaLite へ]> [エクスポートトポロジは、データベース接続を開きます(ポイント、ライン、ポリゴン)したいデータの種類を選択して、インポートするタグを選択できます。これはをクリックしてプロジェクトに追加することができSpatiaLite・ジオメトリ・レイヤーを作成する addSpatiaLiteLayer :sup: addSpatiaLiteLayer SpatiaLite Layer`ツールバーボタンを追加するか、 :menuselection:`Layer メニューから :menuselection: SpatiaLiteレイヤ追加...`オプション選択することにより( :ref:`label_spatialite セクションを参照)。

PostGIS レイヤ

PostGISレイヤは、PostgreSQLデータベースに格納されています。PostGISの利点は、それが提供する空間索引、フィルタおよびクエリー機能です。PostGISを使用すると、選択や識別などのベクトル関数は、QGISでのOGRレイヤーでよりもより正確に機能します。

ストアドコネクションの作成

addPostgisLayer 初めてPostGISのデータソースを使用する時は、データが含まれているPostgreSQLデータベースへの接続を作成する必要があります。 addPostgisLayer PostGISのLayerを追加する ツールバーボタンをクリックして開始し、 Layer メニューから addPostgisLayer PostGISレイヤを追加... オプションを選択するか、または Ctrlキー+Shiftキー+D をキーボード入力します。また ベクトルLayerを追加 ダイアログを開いて radioButtonOn Database を選択できます。 PostGISテーブル(複数可)を追加 ダイアログが表示されます。接続マネージャにアクセスするには、 [新規] ボタンをクリックして 新しいPostGISのConnectionの作成] ダイアログボックスを表示します。接続に必要なパラメータは以下のとおりです。

  • Name: このコネクションの名前. Database と同じにすることも可能.

  • サービス:ホスト名/ポート(および潜在的にデータベース)に代わりに使用されるサービスパラメータ。これは pg_service.conf 中で定義できます。詳細は PG-サービス-file セクションを確認してください。

  • ホスト :データベースホストの名前。これは、telnet接続を開くかまたはホストにpingを実行するために使用されるような解決可能なホスト名でなければなりません。データベースがQGISと同じコンピュータ上にある場合は、単にここに 「localhost」 と入力します。

  • Port: PostgreSQL データベースサーバが接続待ちをしているポート番号. デフォルトポートは5432 です.

  • データベース: データベースの名称

  • SSLモード:SSL接続がサーバと交渉する方法。PostGISのレイヤーのレンダリングでの大幅な高速化は、接続エディタでSSLを無効にすることによって達成できることに注意してください。次のオプションが用意されています。

    • Disable: 暗号化されていないSSL接続の場合のみ試みる

    • allow: SSLコネクションの試行に失敗した場合非SSLコネクションの試行をする.

    • prefer (デフォルトです): SSLコネクションを試行します.もし失敗したら非SSLコネクションを試行します.

    • require: SSLコネクションのみを試行します.

  • Username: データベースにログインするユーザー名.

  • Password: データベースに接続するために Username と一緒に利用するパスワード.

オプションで以下のチェックボックスをアクティブにできます:

  • checkbox ユーザ名の保存

  • checkbox パスワードの保存

  • checkbox :guilabel: geometry_columns テーブルの中のみを参照する

  • checkbox 制限されていないカラム(GEOMETRY)の型解決を行わない

  • checkbox :guilabel:` ‘public’ スキーマのみを参照する`

  • checkbox ジオメトリを持たないテーブルもリストする

  • checkbox 推定されるテーブルメタデータを利用する

すべてのパラメータとオプションを設定した後で [接続テスト] ボタンをクリックして接続テストを行うことができます.

ちなみに

作業をスピードアップするために推定テーブルのメタデータを使用します

レイヤーを初期化するとき、様々なクエリは、データベーステーブルに格納されたジオメトリの特性を確立するために必要とされるかもしれません。 推定テーブルmetadataを使用 オプションがチェックされた場合は、これらのクエリは、行のサンプルだけを検査し、全体ではなく、テーブルよりも、テーブルの統計情報を使用しています。これは実際には大規模なデータセットの操作を大幅に高速化できますが、レイヤーの不正確な特性をもたらすことがあり(例えばフィルタされたレイヤーの地物数は正確に決定されることはないでしょう)、ユニークと想定されている列がそうでなかった場合に奇妙な行動を引き起こす可能性さえあります。

PostGIS レイヤの読み込み

addPostgisLayer 定義された1つまたは複数の接続を持っていたら、PostgreSQLデータベースからレイヤーを読み込むことができます。もちろん、これはPostgreSQLのデータを持つ必要です。データベースにデータをインポートすることの説明については PostgreSQLへのデータインポート セクションを参照。

PostGISからレイヤをロードするには、以下のステップを実行します:

  • PostGISレイヤーを追加 ダイアログがまだ開いていない場合は、 Layer メニューから addPostgisLayer PostGISレイヤを追加... ` オプションを選択するか、 :kbd:`Ctrl+Shiftキー+D をキーボード入力し、このダイアログを開きます。

  • ドロップダウンリストから接続を選択して [Connect] をクリックして下さい.

  • checkbox ジオメトリを持たないテーブルもリストする を選択または非選択にできます

  • オプションで checkbox Search Options 使うとレイヤからどの地物をロードするか定義できます,また [Build query] ボタンを使うと Query builder ダイアログを開始できます.

  • 有効なレイヤリストからあなたが利用したいレイヤを探してください.

  • クリックすると選択できます. Shift キーを押しながらクリックすると複数のレイヤを選択することができます. PostgreSQLクエリビルダを使ってレイヤを高度に利用する方法についてはセクション クエリビルダ を参照して下さい.

  • [追加] ボタンをクリックし、マップにレイヤを追加します。

ちなみに

PostGIS レイヤ

通常、PostGISのレイヤーはGEOMETRY_COLUMNSテーブル内のエントリによって定義されます。バージョン0.9.0以降は、QGISはGEOMETRY_COLUMNSテーブルにエントリを持っていないレイヤーを読み込むことができます。これは、テーブルとビューの両方を含んでいます。空間ビューを定義すると、データを視覚化するための強力な手段を提供します。ビューの作成については、お使いのPostgreSQLのマニュアルを参照してください。

サービス接続ファイル

サービスの接続ファイルで、PostgreSQLの接続パラメータを単一のサービス名に関連づけできます。そのときサービス名はクライアントによって指定でき、関連する設定が使用されます。

それは*nixシステム下(GNU / Linux、MacOSのなど) .pg_service.conf 、Windowsでは pg_service.conf と呼ばれています。

The service file looks like:

[water_service]
host=192.168.0.45
port=5433
dbname=gisdb
user=paul
password=paulspass

[wastewater_service]
host=dbserver.com
dbname=water
user=waterpass

ノート

water_service``と ``wastewater_service :上記の例では2つのサービスがあります。それに接続したいサービスの名前だけ(囲む括弧なし)を指定することにより、QGIS、pgAdminでなどから接続するためにこれらを使用できます。 psql でサービスを利用したい場合、psqlのコマンドを実行する前に export PGSERVICE=water_service のような何かをする必要があります。

ノート

すべてのパラメータは `ここ<https://www.postgresql.org/docs/current/static/libpq-connect.html#LIBPQ-PARAMKEYWORDS>`_ で見つかります

ノート

サービスファイルにパスワードを保存したくない場合は、 .pg_pass オプションを使用できます。

*nixのオペレーティング・システム(GNU / Linux、MacOSなど)では、 .pg_service.conf ファイルはユーザのホームディレクトリに保存でき、PostgreSQLのクライアントが自動的にそれに気付くでしょう。例えば、ログインしたユーザーが `` web``であれば、 .pg_service.conf が直接機能する(他の環境変数を指定せずに)ためには /home/web/ ディレクトリに保存する必要があります。。

例えば、一時的に設定するために*nixのOSの下で 輸出PGSERVICEFILE = /ホーム/ウェブ/ .pg_service.conf``コマンドを実行します( `` PGSERVICEFILE``環境変数を作成することにより、サービスファイルの場所を指定できます PGSERVICEFILE``変数)

以下いずれかにょってもサービスファイルをシステム全体(すべてのユーザー)で利用可能にできます: ``pg_config–sysconfdir``**/.pg_service.conf** 内にそれを配置する、またはサービスファイルを含むディレクトリを指定するために `` PGSYSCONFDIR``環境変数を追加する。ユーザーとシステムファイルに同じ名前のサービス定義が存在する場合、ユーザーのファイルが優先されます。

警告

Windowsでいくつかの注意点があります。

  • サービスファイルは .pg_service.conf として、 pg_service.conf でなく、保存する必要があります。

  • サービスファイルが機能するためには、Unixの形式で保存する必要があります。それを行うための1つの方法は、 メモ帳++ でそれを開き Edit -> EOL Conversion -> UNIX Format -> File save

  • 環境変数を追加した後は、コンピュータを再起動する必要もあるかもしれません。

PostgreSQLレイヤに関する詳細情報

このセクションでは、QGISは、PostgreSQLのレイヤーにアクセスする方法についていくつかの詳細が含まれています。ほとんどの時間、QGISは単純にロードできるデータベースのテーブルのリストを提供する必要があり、それはリクエストに応じてそれらをロードします。しかしながら、QGISにPostgreSQLのテーブルをロードするのがうまくいかない場合は、以下の情報が任意のQGISのメッセージを理解するのに役立ち、QGISでそれをロードできるようにするためにPostgreSQLのテーブルやビューの定義を変更することについての指示になるかもしれません。

QGISは、PostgreSQLレイヤーがレイヤーの一意のキーとして使用できる列を含むことが必要です。テーブルの場合、これは通常、テーブルに主キー、またはそれに一意制約を持つ列を必要とすることを意味します。QGISでは、この列は、型INT4(サイズ4バイトの整数)であることが必要です。あるいは、CTID列が主キーとして使用できます。テーブルには、これらの項目がない場合、OID列が代わりに使用されます。列がインデックス化されると性能が向上します(主キーはPostgreSQLでは自動的にインデックス化されていることに注意)。

PostgreSQLのレイヤーがビューである場合は、同じ要件が存在しますが、ビューはそれらの上にユニーク制約に主キーまたは列を持っていません。ビューをロードする前に、QGISダイアログ内の主キーフィールド(整数である必要があります)を定義する必要があります。適切な列がビューに存在しない場合、QGISはそのレイヤーをロードしません。このような場合、解決は、適切な列(整数の種類と主キーまたは一意性制約のいずれか、好ましくは索引付け)が含まないようにビューを変更することです。

QGISではデフォルトで有効化されているチェックボックス IDで選択 を提供しています。このオプションは、ほとんどの場合、高速である属性なしのIDを取得します。高価なビューを使用する場合は、このオプションを無効にすることは意味があります。

ちなみに

QGISで保存されたレイヤーでのPostGISデータベースのバックアップ

pg_dumppg_restore コマンドを使用してPostGISのデータベースのバックアップを作成したいが、QGISで保存されたようなデフォルトのレイヤースタイルをその後の復元に失敗する場合は、XMLオプションを DOCUMENT に設定する必要があり、そうすると復元が動作します。

QGISではサーバー側ですでに地物をフィルタできます。checkbox 可能な場合Postgresのサーバー側で式を実行(実験) チェックボックスをチェックしてそうします。サポートされる式だけが、データベースに送信されます。サポートされていない演算子や関数を使用する式は、優雅にローカルな評価にフォールバックします。

PostgreSQLへのデータインポート

データはDB Managerプラグインとコマンドラインツールのshp2pgsqlとogr2ogrなど、いくつかのツールを使用して、PostgreSQL/ PostGISにインポートできます。

DBマネージャ

QGISには dbManager DB Manager という名前のコアプラグインが付属しています。シェープファイルや他のデータ形式をロードするために使用でき、そしてそれは、スキーマをサポートしています。詳細は DB マネージャプラグイン セクションを参照。

shp2pgsql

PostGISはshapefileをPostGISにインポートする shp2pgsql というユーティリティを持っています. 例えば lakes.shp というshapefileを gis_data というPostgreSQLデータベースにインポートする場合以下のコマンドを使って下さい:

shp2pgsql -s 2964 lakes.shp lakes_new | psql gis_data

ここで gis_data データベースに lakes_new という名前の新しいレイヤが作成されます. 新しいレイヤは2964という空間参照識別子 (SRID) を持ちます. 空間参照システムと投影についてはセクション 投影法の利用方法 を参照して下さい.

ちなみに

PostGISからデータセットをエキスポートする

インポートツール shp2pgsql と同じように PostGIS-データセットをshapefileとしてエキスポートするツールがあります: pgsql2shp. これはあなたのPostGISディストリビューションと一緒に出荷されています.

ogr2ogr

shp2pgsqlDB Manager とともに PostGISにデータを供給する別のツールもあります: ogr2ogr です. GDALインストールの一部です.

shapefileをPostGISにインポートする手順は以下のとおりです:

ogr2ogr -f "PostgreSQL" PG:"dbname=postgis host=myhost.de user=postgres
password=topsecret" alaska.shp

これによって shapefile alaska.shp を サーバ myhost.de. の PostGISデータベース postgis にユーザ postgres パスワード topsecret でインポートします.

注 PostGISをサポートする場合はOGRがPostgreSQLを組み込んでビルドされていなければなりません.次のようにタイプすると確認できます( nix の場合)

ogrinfo --formats | grep -i post

もしデフォルトの INSERT INTO メソッドの代わりに PostgreSQLの COPY -command を使いたい場合は以下の環境変数をエキスポートすることができます(少なくても nixosx の場合は可能です):

export PG_USE_COPY=YES

ogr2ogrshp2pgsl のように空間インデックスを作成しません. 空間インデックスを作るためには特別ステップとして手動で通常のSQLコマンド CREATE INDEX を発行する必要があります (次のセクション パフォーマンスの改善 で説明しています).

パフォーマンスの改善

PostgreSQLデータベースから地物を取得することは、特に、ネットワークを介して、時間がかかります。 PostGISの空間index データベース内の各レイヤー上に存在することを確実にすることにより、PostgreSQLのレイヤの描画パフォーマンスを向上できます。PostGISではデータの空間検索をスピードアップするために GiST(一般検索木)index の作成をサポートしています(GiSTインデックス情報は http://postgis.net で入手可能なPostGISのドキュメントから取得されます)。

ちなみに

レイヤーにインデックスを作成するためにDBManagerを使用できます。最初にレイヤーを選択し 表>編集table をクリックし、 Indexes タブに行き、上、 [空間インデックスの追加] をクリックしなければならない。

GISTインデックス作成シンタックスは次のとおりです

CREATE INDEX [indexname] ON [tablename]
  USING GIST ( [geometryfield] GIST_GEOMETRY_OPS );

注 巨大テーブルでインデックスを作ると長い時間がかかります.一度インデックスを作成したら VACUUM ANALYZE を実行する必要があります. 詳しくは PostGIS ドキュメンテーション (POSTGIS-PROJECT 文献とWeb参照) を見て下さい.

以下はGISTインデックス作成の例です

[email protected]:~/current$ psql gis_data
Welcome to psql 8.3.0, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help with psql commands
       \g or terminate with semicolon to execute query
       \q to quit

gis_data=# CREATE INDEX sidx_alaska_lakes ON alaska_lakes
gis_data-# USING GIST (the_geom GIST_GEOMETRY_OPS);
CREATE INDEX
gis_data=# VACUUM ANALYZE alaska_lakes;
VACUUM
gis_data=# \q
[email protected]:~/current$

経度 180° をまたぐベクタレイヤ

多くのGISパッケージは、 180度経線をまたぐ 地理参照システム(緯度/経度)でベクトル地図をラップしない (http://postgis.refractions.net/documentation/manual-2.0/ST_Shift _Longitude.html)。結果として、QGISでこのような地図を開く場合、2つはお互いの近くに表示されるべきところ、離れた別個の位置に表示されます。 Figure_vector_4 では、これまでの地図キャンバス(チャタム諸島)の左上の小さな点は、ニュージーランドの主要な島の右側に、グリッド内でなければなりません。

Figure Vector 4:

../../../_images/vectorNotWrapping.png

180° 経線を横断する緯度/経度での地図

この問題の回避方法は経度の値を PostGIS の ST_Shift_Longitude 関数を使って変換することです この関数はジオメトリのそれぞれの地物のコンポーネント中の点/頂点を読んで,それの経度が < 0° の場合 360° を加算します. その結果は 0° - 360° の間になり 180° が中心の地図にプロットできます.

Figure Vector 5:

../../../_images/vectorWrapping.png

経度 180° をまたぐため ST_Shift_Longitude 関数の適用した結果

利用方法

  • DBマネージャプラグインを利用したPostGIS (PostgreSQLへのデータインポート) へのデータインポート例.

  • PostGISコマンドラインインターフェースを利用して以下のコマンドを発行して下さい (これは例で “TABLE” のところはあなたのPostGISテーブルの実際の名前にして下さい): gis_data=# update TABLE set the_geom=ST_Shift_Longitude(the_geom);

  • すべてがうまくいけば更新された地物の数についての確認を求められます,それから地図をロードして違いを見ることができるでしょう (Figure_vector_5).

SpatiaLite レイヤ

addSpatiaLiteLayer 初めてSpatiaLiteデータベースからデータをロードするときは、 addSpatiaLiteLayer SpatiaLite Layerを追加 ツールバーボタンをクリックして開始し、または Layer`メニューから |addSpatiaLiteLayer| :menuselection:`SpatiaLiteレイヤ追加... オプションを選択する、または Ctrlキー+Shiftキー+L をキーボード入力して。これは、いずれかのドロップダウンメニューから選択でき、または新しいデータベースへの新しい接続を定義するために、既にQGISに知られているSpatiaLiteデータベースに接続できるようになりますウィンドウが表示されます。新しい接続を定義するには、 [新規] をクリックし、ファイルブラウザを使用してSpatiaLiteデータベース、拡張子 .sqlite の付いたファイル、を指します。

ベクタレイヤをSpatiaLite形式で保存したい場合凡例でそのレイヤを右クリックして下さい. それから 名前をつけて保存.., を選択して出力ファイル名を指定して下さい, ‘SpatiaLite’ を形式として選択して CRSを指定して下さい. ‘SQLite’ を形式として選択することもできます, その場合 SPATIALITE=YES を OGR データソース作成オプションフィールドに指定して下さい. この指定で OGR に SpatiaLite データベースを作成することを伝えます. http://www.gdal.org/ogr/drv_sqlite.html も参照して下さい.

QGISもSpatiaLiteで編集可能なビューをサポートしています。

新規 SpatiaLite レイヤの作成

新しいSpatiaLiteレイヤを作成したい場合は 新規Spatialiteレイヤの作成. を参照して下さい.

ちなみに

SpatiaLite データ管理プラグイン

SpatiaLiteのデータ管理のために、いくつかのPythonプラグインも使用できます:QSpatiaLite、SpatiaLite Manager、または DBマネージャ (コア・プラグイン、推奨)。必要な場合は、プラグインのインストーラでダウンロードしてインストールできます。

MSSQL Spatial レイヤ

addMssqlLayer QGISはまた、ネイティブのMS SQLのサポートを提供します。、MSSQL空間データをロードする最初の時間、最初に addMssqlLayer MSSQL空間Layerを追加 ツールバーボタンをクリックするか、 Layer メニューから addMssqlLayer MSSQL空間レイヤを追加... オプションを選択することにより、または Ctrlキー+Shiftキー+M をキーボード入力して 。

Oracle Spatial レイヤ

Oracle Spatialの空間の特徴はOracleデータベース内のネイティブ型で地理的位置データを管理する上でユーザーを援助。QGISは今はこのようなレイヤーをサポートしています。

ストアドコネクションの作成

addOracleLayer 初めてOracle Spatialのデータソースを使用する時は、データを含むデータベースへの接続を作成する必要があります。 addOracleLayer Oracle SpatialのLayerを追加`ツールバーボタンをクリック、 :menuselection:`Layer から addOracleLayer Oracle Spatialのレイヤーを追加... オプションメニューを選択、または Ctrlキー+シフト+O をキーボード入力して開始します。接続マネージャにアクセスするには、 [新規] ボタンをクリックして 新しいOracle SpatialのConnectionを作成 ダイアログを表示します。接続に必要なパラメータは以下のとおりです。

  • Name: このコネクションの名前. Database と同じにすることも可能.

  • Database OracleインスタンスのSID または SERVICE_NAME.

  • ホスト :データベースホストの名前。これは、telnet接続を開くかまたはホストにpingを実行するために使用されるような解決可能なホスト名でなければなりません。データベースがQGISと同じコンピュータ上にある場合は、単にここに 「localhost」 と入力します。

  • Port: Oracle データベースサーバが接続待ちをしているポート番号. デフォルトポートは1521 です.

  • Username: データベースにログインするユーザー名.

  • Password: データベースに接続するために Username と一緒に利用するパスワード.

オプションで以下のチェックボックスをアクティブにできます:

  • checkbox Save Username は接続構成にデータベースユーザ名を保存するかどうかを示しています.

  • checkbox Save Password は接続構成にデータベースパスワードを保存するかどうかを示しています.

  • checkbox Only look in meta data table は all_sdo_geom_metadata ビューに存在するテーブルのみ表示するように制限を行います. これをチェックすると空間情報テーブルの初期表示を高速化します.

  • checkbox Only look for user’s tables 空間テーブルを検索する場合に指定ユーザが所有するテーブルのみを検索する制約.

  • checkbox Also list tables with no geometry デフォルトでジオメトリを持たないテーブルもリストすることを示します.

  • checkbox Use estimated table statistics for the layer metadata Oracleテーブルのレイヤ設定するときに様々なメタデータが必要です.ここにはテーブルの行数,ジオメトリタイプ,空間の領域等のデータが含まれます .テーブルの行数がとても多い場合このメタデータ作成に時間がかかります. このオプションを有効にすると以下の高速メタデータ操作が実行されます: 行数はall_tables.num_rows から取得されます. テーブルの領域はフィルターが適用されていても常に SDO_TUNE.EXTENTS_OF 関数で取得されます. テーブルのジオメトリは先頭のNULLでない100行のデータで判定されます.

  • checkbox Only existing geometry types 存在しているジオメトリタイプのみリストを行い他の型の追加は行いません.

警告

Authentication タブ、 ユーザー名パスワード を保存するには、接続構成で保護されていない資格情報を維持します。例えば、誰かとプロジェクトファイルを共有し、あればそれら 資格情報 は表示されます( configurations タブ)。したがって、代わりに 認証の設定 で資格情報を保存することをお勧めします。詳細は 認証システム 参照。

すべてのパラメータとオプションを設定した後で [接続テスト] ボタンをクリックして接続テストを行うことができます.

ちなみに

QGISユーザ設定とセキュリティ

お使いのコンピューティング環境によっては、お使いのQGISの設定でパスワードを保存すると、セキュリティ上のリスクがあります。パスワードは、システム構成にし、プロジェクトファイルにクリアテキストで保存されます!QGISのためにカスタマイズした設定は保存されたオペレーティングシステムに基づいています。

  • nix 設定 はあなたのホームディレクトリの .qgis2/ に格納されます.

  • win 設定はレジストリに格納されます.

ORACLE Spatial レイヤの読み込み

addOracleLayer 1つ以上の接続が定義されていれば、Oracleデータベースからレイヤーを読み込むことができます。もちろんこれはOracleにデータがあることが必要です。

ORACLE Spatialからレイヤをロードするには、以下のステップを実行してください:

  • Oracle Spatialレイヤーを追加 ダイアログがまだ開いていない場合は、 addOracleLayer Oracle Spatialレイヤーを追加 ツールバーボタンをクリックしてください。

  • ドロップダウンリストから接続を選択して [Connect] をクリックして下さい.

  • checkbox ジオメトリを持たないテーブルもリストする を選択または非選択にできます

  • オプションで checkbox Search Options 使うとレイヤからどの地物をロードするか定義できます,また [Build query] ボタンを使うと Query builder ダイアログを開始できます.

  • 有効なレイヤリストからあなたが利用したいレイヤを探してください.

  • クリックするとそれを選択できます. Shift キーを押しながらクリックすると複数のレイヤを選択することができます. PostgreSQLクエリビルダを使ってレイヤを高度に利用する方法についてはセクション クエリビルダ を参照して下さい.

  • [追加] ボタンをクリックし、マップにレイヤを追加します。

ちなみに

Oracle Spatial レイヤ

通常 ORACLE Spatial レイヤは USER_SDO_METADATA テーブルのエントリで定義されています.