Criar índice espacial no PostGIS em um esquema inteiro
9
Carreguei vários shapefiles usando o SPIT (plugin QGIS) no meu banco de dados PostGIS. Essas camadas não tinham um índice espacial criado durante o carregamento. Gostaria de saber se existe uma maneira de criar um índice espacial para cada camada no esquema sem escrever uma consulta para cada camada. Como não sou um bom escritor de scripts PostGIS, qualquer ajuda seria muito apreciada.
Muito obrigado, isso parece ótimo. Eu executei isso, mas parece haver um problema, lembre-se, isso pode ser devido à minha falta de capacidade de script. Mas quando executo as instruções SELECT, recebo o seguinte erro: ERRO: a função batchindex (desconhecido, variação de caracteres, variação de caracteres) não existe LINHA 1: selecione BatchIndex ('public', f_table_name, f_geometry_column) ... Não tenho certeza se devo adicionar algo para obter o lote ou se esse é apenas um espaço reservado para algo diferente. A consulta CREATE foi executada sem problemas, mas nenhum índice foi gerado.
Ryan Garnett
Hmm ... não tenho certeza do que está acontecendo lá então. O fato de ele achar que o primeiro parâmetro que você está passando é do tipo, em unknownvez de character varyingacionar alarmes, mas não consigo ver onde há um problema. Vou pensar um pouco, enquanto algum guru do PostgreSQL gosta de tentar? :)
MerseyViking
2
A resposta superior não funcionará se você tiver vistas com geometria. Alterar a instrução 'SE' para verificar se você não está tentando criar um índice em uma exibição resolve esse problema. Se você deseja usar vistas com geometria, substitua esta linha:
IF i_exists =0
com isso:
IF i_exists =0AND tn IN(SELECT table_name, table_type FROM information_schema.tables WHERE table_type ='BASE TABLE')
unknown
vez decharacter varying
acionar alarmes, mas não consigo ver onde há um problema. Vou pensar um pouco, enquanto algum guru do PostgreSQL gosta de tentar? :)A resposta superior não funcionará se você tiver vistas com geometria. Alterar a instrução 'SE' para verificar se você não está tentando criar um índice em uma exibição resolve esse problema. Se você deseja usar vistas com geometria, substitua esta linha:
com isso:
fonte
diga que sua tabela está "construindo", você pode indexar usando GIST
É isso que você está procurando?
fonte