ラスタをPostGIS2.0データベースにロードする方法を理解しようとしています(このトピックに関する以前の質問は、こことここにあります)。raster2pgsql.exe
PostGIS2.0で提供されるプログラムを使用しようとしています。
Windowsのコマンドプロンプトを管理者として実行する必要があることを理解した後(Windows 7で管理者としてコマンドラインを実行するcmd
には、検索バーに入力してctrl
+ shift
+ enter
を押しraster2pgsql.exe
ます)、機能を有効にして並べ替えを管理しますラスタをデータベースにロードします。インストールのフォルダーras_test.tif
に一時的に配置したというラスターファイルがあります。次のコードを使用して、このラスターを変換してロードします。bin
postgresql
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
SRIDを提供する必要がありますか?
-s 4236
引数は
-I -C -M
すべてオプションですか?-t
タイルサイズのようです。カスタムスキーマがない場合、これを指定する必要がありますか?- 除外しても
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
とを持つテーブルが作成されますrast
。rid
4つの値があり、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)
次の出力が表示されます。これにより、次の構造を持つ新しいテーブルが作成されます。
データを表示できないため、これは適切にロードされたラスターではないと想定します。私が試すことができる他のオプションはありますか?
編集:この最後の試みは機能しましたが、ラスターに正しくアクセスしていませんでした。