Mais

Como importar um raster para PostGIS?

Como importar um raster para PostGIS?


Estou tentando seguir as instruções aqui para carregar um raster em um banco de dados PostGIS:

python raster2pgsql.py -s 4269 -I -r * .tif -F myschema.demelevation -o elev.sql

Eu entendo que eu substituo*com o caminho para o meu raster, mas não entendo a partemyschema.demelevationouelev.sql. Devo ter meu próprio esquema para este arquivo? E o que oelev.sqlparte significa?

Eu também li o driver raster gdal PostGIS para tentar entender isso com mais exemplos. Da mesma forma, eles sugerem carregar um rasterKatrina

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 oKatrinaraster 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, recebi os seguintes erros:

Traceback (última chamada mais recente): Arquivo "/home/src/postgis-2.0.0SVN/raster/scripts/python/raster2pgsql.py", linha 34, em  from osgeo import gdal File "/home/lib/python2.6/GDAL-1.8.1-py2.6-linux-i686.egg/osgeo/__init__.py", linha 21, em  _gdal = swig_import_helper () Arquivo "/home/lib/python2.6/GDAL-1.8.1-py2.6-linux-i686.egg/osgeo/__init__.py", linha 17, em 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: símbolo indefinido: GDALSetRasterUnitType

Eu não entendo totalmente o que esses erros significam; quando eu compileigdaleu deveria ter especificado um argumento paraGDALSetRasterUnitType?

De forma mais geral, estou tendo dificuldade para entender por que não estou especificando o banco de dados no qual estou tentando carregar esses dados.


Depois de seguir o conselho da MerseViking, eu 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:

-------------------------------------------------- ---------- Resumo de GDAL para processamento Raster PostGIS: -------------------------------- ---------------------------- Número de arquivos raster processados: 1 (/home/celenius/Downloads/katrina.tif) Lista de gerados tabelas (número de peças): 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:' (-100.014662756598 9.98533724340176, -100.014662756598 40.0146627565982, -69.9853372434018 40.0146627565982, -69.9853372434018 9.98533724340176, -100.0146627565982, -69.9853372434018 40.0146627565982, -69.9853372434018 9.98533724340176, -100.0146627565982) (1983.014662756598) (940533) 940533D

Esta mensagem e um cursor piscando aparecem na tela. Presumo que esteja carregando no banco de dados, mas não tenho certeza. Otifarquivo tem apenas 3 MB - presumi que não demoraria muito para carregar um arquivo desse tamanho, mas o cursor piscando já está na tela há cerca de 1 hora. Travou ou só preciso esperar muito tempo? Tenho 4 GB de RAM e um processador duplo de 2,5 GHz.


Parece que há um erro de digitação nessa página; na linha:

python raster2pgsql.py -s 4269 -I -r * .tif -F myschema.demelevation -o elev.sql

O-Fparâmetro deve ser-tque especifica o nome da tabela para a qual importar os dados. A parte antes do.é o nome do esquema opcional se você quiser que sua tabela em um esquema diferente depúblico. O-oparâmetro especifica o arquivo que é gerado pelo script Python. Este arquivo é a representação SQL da definição da sua tabela e os dados reais do raster de origem, portanto, pode ficar bem grande. Uma vez que este arquivo é gerado, você precisa executá-lopsql -d -f elev.sqlpara realmente preencher o banco de dados, após o qual ele pode ser excluído.

No entanto, o que me parece estranho é que você está ligandoraster2pgsql.pydo PostGIS 2.0 fonte diretório. Você realmente compilou (executandofaço) e instalado (executandofaça a instalaçãocomo root) PostGIS 2.0? Porque deve estar no seu caminho, e IIRC, o instalador atualiza automaticamente o seuPYTHON_PATHvariável de ambiente.

Quanto aos desaparecidosGDALSetRasterUnitType, o que eu verificaria primeiro é se você não tem uma versão anterior das bibliotecas GDAL instalada que o Python está pegando em vez da 1.8.1. Experimentargdalinfo --versionEste site pode lançar alguma luz sobre o seu problema.


Assista o vídeo: Como importar um raster para PostGIS