Я намагаюся розібратися, як завантажити растр у базу даних 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
?
EDIT: Я включив результати пропозицій нижче:
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
та rast
. rid
має чотири значення, 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)
Я отримую наступний вихід. У результаті виходить нова таблиця з такою структурою:
Я припускаю, що це не правильно завантажений растр, оскільки я не можу переглянути дані. Чи є інші варіанти, які я можу спробувати?
EDIT: Ця остання спроба спрацювала, я просто не отримав правильний доступ до растру.