postgisクエリからシェープファイルを取得するにはどうすればよいですか?


回答:


86

これを行うための推奨される方法は、pgsql2shpユーティリティを使用することです。これは、PostGISとともにインストールする必要があります。クエリにジオメトリ列を含める必要があることに注意してください。

$ pgsql2shp -f <path to output shapefile> -h <hostname> -u <username> -P <password> databasename "<query>"

例(qds_cnt.shp現在のディレクトリに作成):

$ pgsql2shp -f qds_cnt -h localhost -u postgres -P password gisdb "SELECT sp_count, geom FROM grid50_rsa WHERE province = 'Gauteng'"

Initializing... 
Done (postgis major version: 2).
Output shape: Polygon
Dumping: XXXXXXXXXXXXXXXXXXXX [1947 rows].

テーブル全体をシェープファイルとして保存する場合は、テーブル名をクエリとして使用します。

ogr2ogrユーティリティを使用することもできますが、依存関係が多いため、最初のオプションではありません。決定した場合、同等のコマンドは次のようになります。

$ ogr2ogr -f "ESRI Shapefile" qds_cnt.shp PG:"host=localhost user=postgres dbname=gisdb password=password" -sql "SELECT sp_count, geom FROM grid50_rsa WHERE province = 'Gauteng'"

こちらもご覧ください


pgsql2shpビューをシェープファイルにエクスポートすることは可能ですか?
リカルドバロスロウレンソ

8

rudivonstadenの答えにコメントするのに十分な評判ポイントはありませんが、大文字でのsqlコマンドの記述はpgsql2shpにとって重要であると付け加えます。

たとえば、これは機能しません。

$ pgsql2shp -f qds_cnt -h localhost -u postgres -P password gisdb "Select sp_count, geom from grid50_rsa where province = 'Gauteng'"

これは動作しますが:

$ pgsql2shp -f qds_cnt -h localhost -u postgres -P password gisdb "SELECT sp_count, geom FROM grid50_rsa WHERE province = 'Gauteng'"

7

エクスポートするデータに応じて、qgisまたは同様の製品を使用する別の方法があります。postgisの接続を開き、目的のデータを選択します。次に、シェープファイルとして保存します...

自動的に、および/またはデータの大部分をエクスポートしたい場合、rudivonstadenは適切な解決策を提供しました!

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