PostGIS2.0 veritabanına bir raster yüklemek nasıl anlamaya çalışıyorum (ben burada ve burada bu konuda önceki soruları sordum ). raster2pgsql.exe
PostGIS2.0 ile sağlanan programı kullanmaya çalışıyorum .
Windows'taki komut isteminin yönetici olarak çalıştırılması gerektiğini anladıktan sonra (Windows 7'de komut satırını yönetici olarak çalıştırmak cmd
için arama çubuğuna yazın ve ctrl
+ shift
+ enter
tuşuna raster2pgsql.exe
basın) veritabanına bir tarama yükle. ras_test.tif
Geçici olarak yüklememin bin
klasörüne yerleştirdiğim bir raster dosyası var postgresql
. Aşağıdaki kodu kullanarak bu raster dönüştürmek ve yüklemek:
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'de bu tabloyu gördüğümde şöyle görünür:
Ancak, bunu QGIS'de görüntüleyemedim ve bu dosyada veri yok gibi göründüğünden emin değilim. Görünüşe göre dosya adını veri içeriği yerine raster olarak yükledim. Veritabanıma raster yüklememi engelleyen bariz hatalar yaptım mı?
PostGIS belgeleri bir raster yükleme örneği sağlar, ancak hangi argümanların isteğe bağlı olduğunu anlamıyorum ve varsayılan şemayı kullanmak istersem ne kullanmam gerektiği konusunda hala net değilim. Örneğin, aşağıdaki örnekte belgelerden:
raster2pgsql -s 4236 -I -C -M *.tif -F -t myschema.demelevation > elev.sql
psql -d gisdb -f elev.sql
Bir SRID sağlamam gerekir mi?
-s 4236
-I -C -M
Tüm argümanlar isteğe bağlı mı?-t
döşeme boyutu gibi görünüyor; Özel bir şemam yoksa bunu belirtmem gerekir mi?- Sadece dışarıda kalabilir miyim
myschema.demelevation
?
EDIT: Aşağıdaki önerilerin sonucunu ekledim:
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
Bu iki sütun rid
ve bir tablo ile sonuçlanır rast
. rid
dört değeri vardır, nad rast
hiçbirine sahip değildir. Biraz daha argüman kullanmayı denediğimde:
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)
Aşağıdaki çıktıyı alıyorum. Bu, aşağıdaki yapıya sahip yeni bir tablo ile sonuçlanır:
Verileri görüntüleyemediğim için bunun düzgün yüklenmiş bir raster olmadığını varsayalım. Deneyebileceğim başka seçenekler var mı?
EDIT: Bu son girişim işe yaradı, ben sadece raster doğru erişim değildi.