Tôi đang cố gắng tìm ra cách tải raster vào cơ sở dữ liệu PostGIS2.0 (tôi đã hỏi những câu hỏi trước về chủ đề này ở đây và đây ). Tôi đang cố gắng sử dụng raster2pgsql.exe
chương trình được cung cấp với PostGIS2.0.
Sau khi nhận ra rằng dấu nhắc lệnh trong windows cần được chạy với tư cách quản trị viên (Trong Windows 7 để chạy dòng lệnh với tư cách quản trị viên, hãy nhập cmd
vào thanh tìm kiếm và nhấn ctrl
+ shift
+ enter
) để bật raster2pgsql.exe
chức năng tôi có chức năng quản lý tải một raster vào cơ sở dữ liệu của tôi. Tôi có một tệp raster được gọi là ras_test.tif
tôi tạm thời đặt trong bin
thư mục postgresql
cài đặt của mình . Sử dụng mã sau đây tôi chuyển đổi và tải raster này:
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
Khi tôi xem bảng này trong PostGIS, nó trông như thế này:
Tuy nhiên, tôi chưa thể xem nội dung này trong QGIS và tôi không chắc liệu mình đã tải đúng chưa vì dường như không có dữ liệu trong tệp này. Có vẻ như tôi đã tải tên tệp dưới dạng raster, thay vì nội dung dữ liệu. Tôi đã thực hiện bất kỳ lỗi rõ ràng nào đang ngăn tôi tải raster vào cơ sở dữ liệu của mình chưa?
Tài liệu PostGIS cung cấp một ví dụ về cách tải raster, nhưng tôi không hiểu đối số nào là tùy chọn và vẫn chưa rõ về những gì tôi nên sử dụng nếu tôi muốn sử dụng lược đồ mặc định. Ví dụ, trong ví dụ sau từ tài liệu:
raster2pgsql -s 4236 -I -C -M *.tif -F -t myschema.demelevation > elev.sql
psql -d gisdb -f elev.sql
Tôi có phải cung cấp SRID không?
-s 4236
Là các đối số
-I -C -M
tất cả tùy chọn?-t
dường như là kích thước gạch; Tôi có cần chỉ định điều này nếu tôi không có lược đồ tùy chỉnh không?- Tôi có thể rời khỏi đây
myschema.demelevation
không?
EDIT: Tôi đã bao gồm kết quả của các đề xuất dưới đây:
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
Điều này dẫn đến một bảng có hai cột rid
và rast
. rid
có bốn giá trị, rast
không có giá trị . Khi tôi thử sử dụng thêm một số đối số:
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)
Tôi nhận được đầu ra sau đây. Điều này dẫn đến một bảng mới với cấu trúc sau:
Tôi giả định rằng đây không phải là một raster được tải đúng cách vì tôi không thể xem dữ liệu. Có lựa chọn nào khác mà tôi có thể thử không?
EDIT: Lần thử cuối cùng này đã có hiệu quả, tôi chỉ không truy cập raster chính xác.