WindowsでPostGIS 2.0データベースにラスターをロードする


18

ラスタをPostGIS2.0データベースにロードする方法を理解しようとしています(このトピックに関する以前の質問は、ここここにあります)。raster2pgsql.exePostGIS2.0で提供されるプログラムを使用しようとしています。

Windowsのコマンドプロンプトを管理者として実行する必要があることを理解した後(Windows 7で管理者としてコマンドラインを実行するcmdには、検索バーに入力してctrl+ shift+ enterを押しraster2pgsql.exeます)、機能を有効にして並べ替えを管理しますラスタをデータベースにロードします。インストールのフォルダーras_test.tifに一時的に配置したというラスターファイルがあります。次のコードを使用して、このラスターを変換してロードします。binpostgresql

C:\Program Files (x86)\PostgreSQL\9.1\bin>raster2pgsql -s 102003 ras_test.tif -t> elev.sql
Processing 1/1: ras_test.tif

C:\Program Files (x86)\PostgreSQL\9.1\bin>psql.exe -p 5434 -U postgres -d test2 -f elev.sql
BEGIN
psql:elev.sql:2: NOTICE:  CREATE TABLE will create implicit sequence "-t_rid_seq" for serial column "-t.rid"
psql:elev.sql:2: NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "-t_pkey" for table "-t"
CREATE TABLE
INSERT 0 1
COMMIT

このテーブルをPostGISで表示すると、次のようになります。

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

ただし、QGISでこれを表示できませんでした。このファイルにデータがないように見えるため、正しくロードしたかどうかはわかりません。データの内容ではなく、ファイル名をラスタとしてロードしたようです。データベースにラスターをロードすることを妨げる明白なエラーを犯しましたか?


PostGISのドキュメントには、ラスターのロード方法の例が記載されていますが、どの引数がオプションであるかはわかりません。また、デフォルトスキーマを使用する場合に何を使用すべきかはまだわかりません。たとえば、ドキュメントの次の例では:

raster2pgsql -s 4236 -I -C -M *.tif -F -t myschema.demelevation > elev.sql 
psql -d gisdb -f elev.sql
  1. SRIDを提供する必要がありますか? -s 4236

  2. 引数は-I -C -Mすべてオプションですか?

  3. -tタイルサイズのようです。カスタムスキーマがない場合、これを指定する必要がありますか?

  4. 除外してもmyschema.demelevationいいですか?

編集:私は以下の提案の結果を含めました:

C:\Program Files (x86)\PostgreSQL\9.1\bin>raster2pgsql -s 102003 -t 300x300 ras_test.tif ras_test | psql.exe -U postgres
 -d raster_analysis -h localhost -p 5434
Processing 1/1: ras_test.tif
BEGIN
NOTICE:  CREATE TABLE will create implicit sequence "ras_test_rid_seq" for serial column "ras_test.rid"
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "ras_test_pkey" for table "ras_test"
CREATE TABLE
INSERT 0 1
INSERT 0 1
INSERT 0 1
INSERT 0 1
COMMIT

これにより、2つの列ridとを持つテーブルが作成されますrastrid4つの値があり、nadにrastは値がありません。さらにいくつかの引数を使用しようとすると:

C:\Program Files (x86)\PostgreSQL\9.1\bin>raster2pgsql -I -C -e -Y -F -s 102003 -t 300x300 ras_test.tif ras_test1 | psql
.exe -U postgres -d raster_analysis -h localhost -p 5434
Processing 1/1: ras_test.tif
NOTICE:  CREATE TABLE will create implicit sequence "ras_test1_rid_seq" for serial column "ras_test1.rid"
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "ras_test1_pkey" for table "ras_test1"
CREATE TABLE
CREATE INDEX
ANALYZE
NOTICE:  Adding SRID constraint
CONTEXT:  PL/pgSQL function "addrasterconstraints" line 49 at RETURN
NOTICE:  Adding scale-X constraint
CONTEXT:  PL/pgSQL function "addrasterconstraints" line 49 at RETURN
NOTICE:  Adding scale-Y constraint
CONTEXT:  PL/pgSQL function "addrasterconstraints" line 49 at RETURN
NOTICE:  Adding blocksize-X constraint
CONTEXT:  PL/pgSQL function "addrasterconstraints" line 49 at RETURN
NOTICE:  Adding blocksize-Y constraint
CONTEXT:  PL/pgSQL function "addrasterconstraints" line 49 at RETURN
NOTICE:  Adding alignment constraint
CONTEXT:  PL/pgSQL function "addrasterconstraints" line 49 at RETURN
NOTICE:  Adding number of bands constraint
CONTEXT:  PL/pgSQL function "addrasterconstraints" line 49 at RETURN
NOTICE:  Adding pixel type constraint
CONTEXT:  PL/pgSQL function "addrasterconstraints" line 49 at RETURN
NOTICE:  Adding nodata value constraint
CONTEXT:  PL/pgSQL function "addrasterconstraints" line 49 at RETURN
NOTICE:  Unable to add constraint "enforce_nodata_values_rast"
CONTEXT:  PL/pgSQL function "_add_raster_constraint_nodata_values" line 40 at RETURN
PL/pgSQL function "addrasterconstraints" line 94 at assignment
PL/pgSQL function "addrasterconstraints" line 49 at RETURN
WARNING:  Unable to add constraint: 'nodata_values'.  Skipping
CONTEXT:  PL/pgSQL function "addrasterconstraints" line 49 at RETURN
NOTICE:  Adding maximum extent constraint
CONTEXT:  PL/pgSQL function "addrasterconstraints" line 49 at RETURN
 addrasterconstraints
----------------------
 t
(1 row)

次の出力が表示されます。これにより、次の構造を持つ新しいテーブルが作成されます。

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

データを表示できないため、これは適切にロードされたラスターではないと想定します。私が試すことができる他のオプションはありますか?

編集:この最後の試みは機能しましたが、ラスターに正しくアクセスしていませんでした。


raster2pgsqlはpostgis.org/documentation/manual-svn/…の参照を参照します
Mapperz

ここで提供されている構文「C:\ Program Files(x86)\ PostgreSQL \ 9.1 \ bin> raster2pgsql -I -C -e -Y -F -s 102003 -t 300x300」を使用して、ラスターファイル(jpg)をpost gisにロードしようとしました。 ras_test.tif ras_test1 | psql .exe -U postgres -d raster_analysis -h localhost -p 5434 "データベースに作成されたラスターテーブルを確認できました。Celeniusが示したように、特定のセルをクリックしない限り、「ラスターラスター」列の下に何も表示されません。これが私の実際の問題です。SQLクエリレイヤーを使用してArcGISからラスターレイヤーを表示する方法。このレイヤーを追加して検証しようとすると、「ラスターラスター
-GISTECH

より多くの回答が得られるので、これを新しい質問として尋ねるべきだと思います。ArcGISを使用して接続する方法はわかりませんが、QGISを使用してアクセスできます。
djq

1
注:pgAdminIIIは、特定のサイズを超えるデータの空白セルを表示します。チケット#297参照
マイク・T

上記のクエリーは動作しますが、ピクセル値/セル値をテーブルに保存する方法を教えてもらえますか?

回答:


5

SRID?-s 4236(必須)

引数-I -C -Mはすべてオプションですか?

-Cラスター制約を適用します-srid、pixelizeなどを使用して、raster_columnsビューにラスターが正しく登録されるようにします。(必須)

-M(バキュームはラスタテーブルを分析します。)オプション

-I(ラスター列にGiSTインデックスを作成します。)オプションですが推奨

-t TILE_SIZE(テーブル行ごとに挿入されるタイルにラスターをカットします。TILE_SIZEはWIDTHxHEIGHTとして表されます。)

myschema.demelevation 除外する(はい)

http://postgis.net/docs/using_raster_dataman.html#RT_Loading_Rasters


Mapperzのおかげで、raster2pgsqlがどのように機能するかを部分的に理解しましたが、postgresqlのラスターにはセルが1つしか含まれていないため、使用する引数を見つけようとしています。
djq

9

セレニウス、

-tサイズ寸法でオプションを使用しない場合、ラスターファイルは単一のレコードとして入ります。おそらくあなたを混乱させるのはドキュメントのエラーに気づいたところです。それを修正します。に-tは常にwidthxheightが続く必要があります。

Mapperzが言うように、100x100ピクセル幅の高さでチャンク化する場合は、-tオプションを使用します。

したがって、コマンドは次のようになります。

raster2pgsql -s 102003  -t 100x100 ras_test.tif ras_test > elev.sql

ドキュメントの空中の例をご覧ください。 http://www.postgis.org/documentation/manual-svn/using_raster.xml.html#RT_Raster_Loader

マニュアルの例の多くで使用されているものは次のとおりです。

raster2pgsql -I -C -e -Y -F -s 26986 -t 128x128 -l 2,4 bostonaerials2008/*.jpg aerials.boston | psql -U postgres -d gisdb -h localhost -p 5432

スイッチは非常に多く、ほとんどがオプションであるため、スイッチが少し気が遠くなることがあります。おそらく2.1ではshp2pgsql-gui、これを初心者向けに少し簡単にするために似たGUIがあります。

最新のバージョンでraster2pgsqlは、tifまたはその他のラスターファイルのジオリファレンス情報からsridを推測するロジックがあります(このバージョンは現在、ウィンドウバイナリとして利用可能です)。まだその機能を試していませんが、機能する場合は、sridを省いても推測できます(うまくいけば)。


提案をありがとう!まだ機能させることはできませんが、スイッチについて少し理解し始めています。
djq

うまくいきましたが、データベース内でこれがどのように見えるべきか理解できませんでした。ご協力ありがとうございます。
djq

ラスターをpgsqlにロードするためのGUIはついに到着しましたか?:)
アストロフアンル

-2

SQLビューでは、データが大きい場合は表示できません。クエリをファイルに実行すると、データが表示されます。


1
元の(古い)質問にはすでに受け入れられた答えがあり、あなたの質問は実際には質問の代替ソリューションではなく、視覚的な検査の呼び出しです。
Curlew
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.