मैं यह पता लगाने की कोशिश कर रहा हूं कि पोस्टगिस 2.0 डेटाबेस में एक रैस्टर को कैसे लोड किया जाए (मैंने इस विषय पर पिछले प्रश्न यहां और यहां पूछे हैं )। मैं raster2pgsql.exe
PostGIS2.0 के साथ प्रदान किए गए कार्यक्रम का उपयोग करने की कोशिश कर रहा हूं।
यह पता लगाने के बाद कि विंडोज़ में कमांड प्रॉम्प्ट को एक प्रशासक के रूप में चलाने की आवश्यकता है (एक प्रशासक के रूप में विंडोज 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
और के साथ परिणाम देता है 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)
मुझे निम्न आउटपुट मिलता है। यह निम्न संरचना के साथ एक नई तालिका में परिणाम करता है:
मुझे लगता है कि यह एक ठीक से भरी हुई रेखापुंज नहीं है क्योंकि मैं डेटा नहीं देख सकता। क्या कोई अन्य विकल्प हैं जो मैं कोशिश कर सकता हूं?
संपादित करें: इस अंतिम प्रयास ने काम किया, मैं सिर्फ सही ढंग से रेखापुंज तक नहीं पहुंच रहा था।