ฉันพยายามหาวิธีโหลดแรสเตอร์ลงในฐานข้อมูล 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
ผลนี้ในตารางที่มีสองคอลัมน์และrid
มีสี่ค่า nad ไม่มีเลย เมื่อฉันลองใช้ข้อโต้แย้งเพิ่มเติม:rast
rid
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)
ฉันได้รับผลลัพธ์ต่อไปนี้ ผลลัพธ์นี้ในตารางใหม่ที่มีโครงสร้างต่อไปนี้:
ฉันคิดว่านี่ไม่ใช่แรสเตอร์ที่โหลดอย่างเหมาะสมเนื่องจากฉันไม่สามารถดูข้อมูลได้ มีตัวเลือกอื่น ๆ ที่ฉันสามารถลองได้หรือไม่?
แก้ไข: ความพยายามครั้งสุดท้ายนี้ได้ผลฉันแค่ไม่ได้เข้าถึงแรสเตอร์อย่างถูกต้อง