Carregando geotiffs no PostGIS usando raster2pgsql

8

Tenho um problema ao carregar alguns dados de varredura da Pesquisa sobre munições no PostGIS. Eu tenho usado o seguinte comando raster2pgsql para carregar um tif que eu coloquei na minha pasta C: \ Arquivos de Programas \ PostgreSQL \ 9.1 \ bin no PostGIS:

raster2pgsql -s 27700 -t 5000x5000 -I -C -M  *.tif  > os_strview.sql

Em seguida, executo o seguinte comando psql:

psql -h localhost -U postgres -d raster_test -f os_strview.sql

Isso funciona bem, mas quando tentei visualizar os dados no QGIS, só pude ver a tabela raster_columns na caixa de seleção ao tentar adicionar uma camada PostGIS.

Tentei usar o plugin Load raster to PostGIS. Isso funciona, mas minha imagem raster não tinha cor. Eu então vi este post . Usei a técnica Raster> Convert> PCT to RGB para converter um único tif em um geotif.

Infelizmente, ao executar o comando psql acima, recebo esta mensagem de erro:

C: \ Arquivos de programas \ PostgreSQL \ 9.1 \ bin> psql -h localhost -U postgres -d raster_test -f os_strview.sql INICIAR psql: os_strview.sql: 2: AVISO: CREATE TABLE criará a sequência implícita "sx03 nw-geo_rid_seq" para a coluna serial "sx03nw-geo.rid" psql: os_strview.sql: 2: AVISO: CREATE TABLE / PRIMARY KEY criará o índice implícito "sx03nw-geo_pkey" para a tabela "sx03nw-geo_pkey" para a tabela "sx03nw-geo" CREATE TABLE psql: os_strview.sql: 3 : ERRO: não foi possível carregar a biblioteca "C: / Arquivos de Programas / PostgreS QL / 9.1 / lib / rtpostgis-2.0.dll": Acesso inválido ao local da memória.

LINHA 1: INSERIR EM "sx03nw-geo" ("rast") VALORES ('01000003000000000 ... ^ ROLLBACK

Acho que isso tem algo a ver com o tamanho do geotiff que estou tentando carregar no PostGIS - que é de 71 MB!

Existe outro método que eu deveria estar tentando? Qual é o limite para o tamanho de uma única imagem que você pode carregar no PostGIS?

Matt T
fonte
"Existe outro método que eu deveria estar tentando" Você tem acesso ao FME Desktop? O FME 2013 tem um escritor para o PostGIS 2.0 Raster
Mapperz
Não, não tem acesso. Limitado em fundos, tentando usar o código aberto. Já ouvi falar de coisas boas sobre a FME, por isso pode valer a pena o investimento.
Matt T

Respostas:

3

Não há limite para o tamanho de uma única imagem na varredura PostGIS, mas você será limitado por outros fatores, como a quantidade de memória que você tem no seu computador. O PostgreSQL impõe um limite de 1 GB em qualquer campo dos limites do PostgreSQL .

Se você possui o utilitário GDAL gdalinfo, pode executar o gdalinfo em um dos seus arquivos gtiff e postar a saída aqui? Ou se os dados estiverem disponíveis ao público (presumo que os dados da Pesquisa de Ordenanças estejam), você pode fornecer um ponteiro para quais tifs você está tentando carregar para que eu possa testá-los?

gdalinfo MYGEOTIFF.tiff

O tamanho do arquivo 71 MB é pequeno e não deve ser um problema. Atualmente, carrego conjuntos de dados de elevação de 10m (~ 500MB e 10812x10812 cada) e imagens aéreas de 1m (~ 170MB e 5820x7575 cada) sem problemas.

dustymugs
fonte
Obrigado dustymugs. Eu tentei carregar o geotiff do meu pc em casa e funcionou bem. Vou ter que verificar que memória tenho no trabalho. Consegui carregar o geotiff agora, mas há um problema com o texto cartográfico agora. Não é tão claro como era no original. Por enquanto, eu posso manter os zombadores fora do PostGIS.
Mt t
1

Eu também tive problemas semelhantes ao importar dados via Geotiff. Minha sugestão é que você traduza o arquivo para o arquivo Erdas Imagine, e deve funcionar. (recrie o script de importação, execute-o como você já fez)

U2ros
fonte
Obrigado pelo conselho U2ros. No entanto, a varredura que criei ficou cinza quando visualizada no QGIS.
Mt t
Bem, com o formato erdas, você pode (geralmente) aplicar paleta de cores / gradiente personalizados. No seu caso, uma escala de cinza padrão foi escolhida, eu acho.
U2ros
0

1) Conforme indicado nas Perguntas freqüentes sobre a varredura do PostGIS , raster2pgsql "rtpostgis.so/dll é construído com dependência do libgdal.dll / so. Verifique se o Windows possui o libgdal-1.dll na pasta bin da sua instalação do PostgreSQL. Para Linux A libgdal deve estar no seu caminho ou na pasta bin " .

2) Por outro lado, em um tíquete de erro relacionado ao mesmo erro aparece, eles dizem que "Tudo raster2psql faz uso das funções fornecidas rt_api, onde todas as funções operam na memória. Esse carregador depende da memória disponível em um máquina".

Isso significa que o uso de outra máquina, ao operar com grandes rasters no banco de dados com o raster2pgsql, pode resolver o problema. Ou tente usar rasters menores.

No meu caso, uma varredura de 35 MB falhou em um laptop com 4 GB de RAM e sistema operacional de 32 bits. Mudar para uma máquina de 16 GB de RAM com um sistema operacional de 64 bits funcionou bem.

Sorin Călinică
fonte