Saya mencoba mengikuti instruksi di sini untuk memuat raster ke dalam database PostGIS:
python raster2pgsql.py -s 4269 -I -r *.tif -F myschema.demelevation -o elev.sql
Saya mengerti bahwa saya mengganti *
dengan jalan ke raster saya, tetapi saya tidak mengerti bagian myschema.demelevation
atau elev.sql
. Haruskah saya memiliki skema sendiri untuk file ini? Dan apa arti elev.sql
bagian itu?
Saya juga membaca driver raster PostGIS gdal untuk mencoba dan memahami ini dengan lebih banyak contoh. Demikian pula, mereka menyarankan memuat rasterkatrina
python raster2pgsql.py -r /path/to/katrina.tif -t katrina -l 1 -k 64x64 -o katrina.sql -s 4326 -I -M
Menggunakan pengaturan saya saat ini, saya mencoba memuat katrina
raster di:
python2.6 ~/src/postgis-2.0.0SVN/raster/scripts/python/raster2pgsql.py -r ~/tmp/katrina.tif -t katrina -l 1 -k 64x64 -o katrina.sql -s 4326 -I -M
Namun, saya mendapat kesalahan berikut:
Traceback (most recent call last):
File "/home/src/postgis-2.0.0SVN/raster/scripts/python/raster2pgsql.py", line 34, in <module>
from osgeo import gdal
File "/home/lib/python2.6/GDAL-1.8.1-py2.6-linux-i686.egg/osgeo/__init__.py", line 21, in <module>
_gdal = swig_import_helper()
File "/home/lib/python2.6/GDAL-1.8.1-py2.6-linux-i686.egg/osgeo/__init__.py", line 17, in swig_import_helper
_mod = imp.load_module('_gdal', fp, pathname, description)
ImportError: /home/lib/python2.6/GDAL-1.8.1-py2.6-linux-i686.egg/osgeo/_gdal.so: undefined symbol: GDALSetRasterUnitType
Saya tidak sepenuhnya mengerti kesalahan ini artinya; ketika saya mengkompilasi gdal
haruskah saya menentukan argumen untuk GDALSetRasterUnitType
?
Secara umum, saya mengalami kesulitan memahami mengapa saya tidak menentukan basis data tempat saya mencoba memuat data ini.
Setelah mengikuti saran MerseViking saya berlari:
python /usr/lib/postgresql/8.4/bin/raster2pgsql.py -r /home/celenius/Downloads/katrina.tif -t katrina -l 1 -k 64x64 -o katrina.sql -s 4326 -I -M
yang mengembalikan output berikut:
------------------------------------------------------------
Summary of GDAL to PostGIS Raster processing:
------------------------------------------------------------
Number of processed raster files: 1 (/home/celenius/Downloads/katrina.tif)
List of generated tables (number of tiles):
1 katrina (256)
Lalu aku berlari:
psql -d test -f katrina.sql - U postgres -W
yang mengembalikan yang berikut:
addrastercolumn
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public.katrina.rast srid:4326 pixel_types:{8BUI,8BUI,8BUI} out_db:false regular_blocking:true nodata_values:NULL scale_x:'0.029325513196481' scale_y:'-0.029325513196481' blocksize_x:'64' blocksize_y:'64' extent:POLYGON((-100.014662756598 9.98533724340176,-100.014662756598 40.0146627565982,-69.9853372434018 40.0146627565982,-69.9853372434018 9.98533724340176,-100.014662756598 9.98533724340176))
(1 row)
(END)
Pesan ini dan kursor yang berkedip muncul di layar. Saya berasumsi bahwa itu memuat ke dalam database, tapi saya tidak yakin. The tif
file hanya 3MB - saya telah diasumsikan bahwa itu tidak akan butuh waktu lama untuk memuat file ukuran ini tetapi kursor berkedip sudah berada pada layar untuk ~ 1 jam. Apakah ini macet atau apakah saya hanya perlu menunggu lama? Saya memiliki 4GB RAM dan prosesor ganda 2,5 GHz.
q
, itu mengeksekusi perintah ini, dan memasukkan data ke dalam databasetest
. Apakah ini perilaku normal dan haruskah saya melakukan ini?Jawaban:
Tampaknya ada kesalahan ketik pada halaman itu; dalam barisan:
The
-F
parameter harus-t
yang menentukan nama tabel untuk mengimpor data ke dalam. Bagian sebelum.
adalah nama skema opsional jika Anda ingin tabel Anda dalam skema selainpublic
. The-o
parameter menentukan file yang dihasilkan oleh script Python. File ini adalah representasi SQL dari definisi tabel Anda dan data aktual dari raster sumber, sehingga bisa menjadi cukup besar. Setelah file ini dibuat, Anda harus menjalankannyapsql -d <db_name> -f elev.sql
untuk benar-benar mengisi database, setelah itu dapat dihapus.Namun, yang menurut saya aneh adalah Anda menelepon
raster2pgsql.py
dari direktori sumber PostGIS 2.0 . Sudahkah Anda mengkompilasi (dengan menjalankanmake
) dan menginstal (dengan menjalankanmake install
sebagai root) PostGIS 2.0? Karena itu harus di jalur Anda, dan IIRC installer secara otomatis memperbaruiPYTHON_PATH
variabel lingkungan Anda .Adapun yang hilang
GDALSetRasterUnitType
, hal pertama yang saya akan periksa adalah bahwa Anda tidak memiliki versi sebelumnya dari pustaka GDAL diinstal bahwa Python mengambil alih-alih 1.8.1. Cobagdalinfo --version
Situs ini dapat menjelaskan masalah Anda.sumber
make
danmake install
; Saya seharusnya memanggilnya dari./bin/raster2pgsql.py
. Saya menggunakan shared hosting yang tidak memiliki akses root, tetapi saya dapat menginstal program. Ketika saya berlarigdalinfo --version
saya mendapatkanGDAL 1.5.3, released 2008/09/09
; yang merupakan versi server; Saya telah menginstal GDAL 1.8.1 tetapi tidak diambil oleh perintah ini.