大きなラスターをPostGIS 2.0データベースにインポートして、いくつかの障害にぶつかっています。
最初にraster2pgsqlを使用してラスターをインポートしようとすると、次のエラーが表示されます 。rt_band_set_pixel_line:座標が範囲外です
見つけたら、このページを、そしてgdalinfoを使用して、私は、ラスタが65535 X 65535の最大許容サイズを超えたことがわかりました。
gdalinfoの出力:
$ gdalinfo ari100.tif
ドライバー:GTiff / GeoTIFF
...サイズは42971、77138
座標系は:
GEOGCS ["WGS 84"、
...
AUTHORITY ["EPSG"、 "4326"]] Origin =(152.741676637167842、-26.215302802012008 )
ピクセルサイズ=(0.000009239757419、-0.000009239757419)
メタデータ:
AREA_OR_POINT =エリア
イメージ構造メタデータ:
INTERLEAVE = BAND
コーナー座標:
左上(152.7416766、-26.2153028)(152d44'30.04 "E、26d12'55.09" S)
左下(152.7416766 、-26.9280392)(152d44'30.04 "E、26d55'40.94" S)
右上(153.1387183、-26.2153028)(153d 8'19.39 "E、26d12'55。09 "S)
右下(153.1387183、-26.9280392)(153d 8'19.39 "E、26d55'40.94" S)
センター(152.9401974、-26.5716710)(152d56'24.71 "E、26d34'18.02" S)
バンド1ブロック= 42971x1タイプ=フロート32 、ColorInterp = Gray
...
そのため、raster2pgsqlで-Rフラグを使用してout-db機能を使用することにしました。
ドキュメントから:ラスタをファイルシステム(out-db)ラスタとして登録します。 ラスタのメタデータとラスタへのパスの場所のみがデータベースに保存されます(ピクセルではありません)。
次のコマンドを使用してラスターをインポートしました。
raster2pgsql /gis/Flood/ari100.tif -R | psql -U username database
しかし、私がクエリを試したとき:
SELECT ST_Value(rast, ST_PointFromText('POINT(152.9632 -26.4878)')) FROM ari100
次のエラーが発生します。
NOTICE: Attempting to get pixel value with out of range raster coordinates: (23975, 29491)
CONTEXT: PL/pgSQL function "st_value" line 13 at RETURN
ただし、GDAL(Pythonを使用)を使用して、このスクリプトを直接使用してラスターをクエリすると、
python val_at_coord.py 152.9632 -26.4878
値を正しく取得できます。
データベースでラスターの範囲を見つけることにしました。
SELECT ST_Height(rast) As rastheight, ST_Width(rast) As rastwidth from ari100;
rastheight | rastwidth
11602 | 42971
高さが完全に正しくありません(77138である必要があります)。
だから私の質問は:(raster2pgsqlを使用して)何か間違ったことをしたのですか、それともPostGISでout-dbラスターを使用するのに制限がありますか?
ありがとう