QGISを使用してシェープファイルフィールドから個別の値のリストを取得していますか?


18

クエリダイアログでwhere句を指定してフィルター処理できる機能を持つシェープファイルがあります。Fx「city_name」という名前のフィールドがあり、where句に「city_name = "London"」と記述することで、ロンドンのみが表示されます。ここでやりたいことは、属性テーブルから「city_name」のすべての値を取得することです。

そんな感じ:

select distinct city_name from [attribute table]

QGISでいくつかのツールが明らかにSQLを処理していることを発見し、さまざまなプラグインを簡単に確認しました。しかし、データベースまたはテーブル名に接続できません...その場合、どのデータベースまたはテーブルですか?

最後に、結果リストをエクスポートし、さらに処理するために使用します。

QGIS 1.8を使用しています。

回答:


32

回答の更新(QGISバージョン> = 2.14)

QGIS 2.14以降仮想レイヤーを使用して、ロードされたベクターレイヤーでSQLステートメントを実行できます。

  1. レイヤーを QGISにロードしたら、[レイヤー]> [レイヤーの追加]> [仮想レイヤーの追加/編集]に移動します。
  2. [仮想レイヤーの作成]ダイアログで、[クエリ]フィールドにSQLステートメントを入力します。何かのようなもの:

    layer_nameからDISTINCT city_nameを選択

  3. ジオメトリセットジオメトリなし

  4. [OK]をクリックすると、テーブルが必要な一意の値とともにQGISに読み込まれます。

注:新しい値がcity_name列に追加されると、このテーブルが更新されます。

レガシーアンサー(QGISバージョン<2.14)

求めることを行うにはいくつかの選択肢があります。

  1. SpatialiteまたはPostgisデータベースにシェープファイルをインポートすると、完全なSQLステートメントを使用してテーブルをクエリできます。
  2. フィールド「city_name」を使用してシェープファイルをディゾルブするには、ディゾルブツール(ベクター>ジオプロセシングツール>ディゾルブ)を使用します。奇妙な方法ですが、結果のシェープファイルのdbfファイルは必要なリストを提供します。
  3. 見てみましょうグループの統計プラグイン(1.6)を、あなたは、分類フィールドとして「CITY_NAME」、およびプレス計算を使用することができます。各都市に関するいくつかの統計を計算し、結果をコピーして都市リストを抽出できます。

私はちょうどで、ということに気づいたベクトル>分析ツールがあり、リストのユニークな値まさにこの作業のための1つのニーズであるツールが。とても簡単です...回避策もプラグインも必要ありません。


6

QGIS DBマネージャーを使用し、「仮想レイヤー」経由でシェープファイルにアクセスします

その後、SQLウィンドウを使用してクエリを記述できます。

ここに画像の説明を入力してください


1
これが正しい答えです(QGIS 2.14以降)。
アレクサンドルネト


-1

QGISでクエリビルダーを使用し、クエリビルダーのフィールドの都市名フィールドに移動します。値に移動して、すべてを追加します。nullを削除します。

名前の完全なリストを取得してスクリプトを実行するまで、都市名= "london"および都市名= "paris"のようなスクリプトを作成します。これで、すべての都市名が選択されました。選択した形状ファイルとしてエクスポートし、postgresqlデータベースにインポートできます。

QGISにpostgresqlバックエンドを使用するには、postgresqlでgeoserver、postgresql、およびpostgis対応のデータベースでpostgresqlスタックをインストールします。QGISをサーバーに接続する必要があります。少し遊んでみてください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.