Estou tentando seguir as instruções aqui para carregar uma varredura em um banco de dados PostGIS:
python raster2pgsql.py -s 4269 -I -r *.tif -F myschema.demelevation -o elev.sql
Entendo que substituo *
pelo caminho da minha varredura, mas não entendo a parte myschema.demelevation
ou elev.sql
. Devo ter meu próprio esquema para este arquivo? E o que a elev.sql
parte significa?
Também li o driver de varredura gdal PostGIS para tentar entender isso com mais exemplos. Da mesma forma, eles sugerem carregar uma varredurakatrina
python raster2pgsql.py -r /path/to/katrina.tif -t katrina -l 1 -k 64x64 -o katrina.sql -s 4326 -I -M
Usando minha configuração atual, tentei carregar a katrina
varredura em:
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
No entanto, eu recebi os seguintes erros:
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
Eu não entendo completamente esses erros; quando eu compilei eu gdal
deveria ter especificado um argumento para GDALSetRasterUnitType
?
De maneira mais geral, estou tendo dificuldade em entender por que não estou especificando o banco de dados no qual estou tentando carregar esses dados.
Depois de seguir o conselho de MerseViking, corri:
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
que retornou a seguinte saída:
------------------------------------------------------------
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)
Então eu corri:
psql -d test -f katrina.sql - U postgres -W
que retornou o seguinte:
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)
Esta mensagem e um cursor piscando aparecem na tela. Presumo que ele esteja carregando no banco de dados, mas não tenho certeza. O tif
arquivo tem apenas 3 MB - presumi que não demoraria muito para carregar um arquivo desse tamanho, mas o cursor piscante já estava na tela por aproximadamente 1 hora. Isso travou ou eu só preciso esperar muito tempo? Eu tenho 4 GB de RAM e um processador duplo de 2,5 GHz.
fonte
q
, ele executa esse comando e insere os dados no banco de dadostest
. Esse é um comportamento normal e devo estar fazendo isso?Respostas:
Parece que há um erro de digitação nessa página; na linha:
O
-F
parâmetro deve ser o-t
que especifica o nome da tabela na qual os dados serão importados. A parte anterior a.
é o nome do esquema opcional, se você desejar que sua tabela seja um esquema diferente depublic
. O-o
parâmetro especifica o arquivo que é gerado pelo script Python. Este arquivo é a representação SQL da sua definição de tabela e os dados reais da varredura de origem, para que possa ficar bem grande. Depois que esse arquivo é gerado, você precisa executá-lopsql -d <db_name> -f elev.sql
para preencher o banco de dados, após o qual ele pode ser excluído.No entanto, o que me parece estranho é que você está ligando
raster2pgsql.py
do diretório de origem do PostGIS 2.0 . Você realmente compilou (executandomake
) e instalou (executandomake install
como root) o PostGIS 2.0? Como ele deve estar no seu caminho, e o IIRC o instalador atualiza automaticamente suaPYTHON_PATH
variável de ambiente.Quanto à falta
GDALSetRasterUnitType
, o que eu procuraria primeiro é que você não possui uma versão anterior das bibliotecas GDAL instalada pelo Python, em vez da 1.8.1. Experimentegdalinfo --version
Este site pode lançar alguma luz sobre o seu problema.fonte
make
emake install
, eu deveria estar ligando./bin/raster2pgsql.py
. Estou usando hospedagem compartilhada que não tem acesso root, mas posso instalar programas. Quando corro,gdalinfo --version
eu receboGDAL 1.5.3, released 2008/09/09
; qual é a versão do servidor; Eu instalei o GDAL 1.8.1, mas ele não está sendo captado por este comando.