Crear índice espacial en PostGIS en un esquema completo
9
He cargado varios archivos de forma usando SPIT (complemento QGIS) en mi base de datos PostGIS. Estas capas no tenían un índice espacial creado al cargar. Me pregunto si hay una manera de crear un índice espacial para cada capa en el esquema sin escribir una consulta para cada capa. No soy un buen escritor de guiones de PostGIS, por lo que cualquier ayuda sería muy apreciada.
Muchas gracias, esto se ve genial. He ejecutado esto, pero parece que hay un problema, tenga en cuenta que esto podría deberse a mi falta de capacidad de secuencias de comandos. Pero cuando ejecuto las instrucciones SELECT, aparece el siguiente error: ERROR: la función batchindex (desconocido, variable de caracteres, variable de caracteres) no existe LÍNEA 1: seleccione BatchIndex ('public', f_table_name, f_geometry_column) ... No estoy seguro si debo agregar algo para obtener el lote, o si esto es solo un marcador de posición para algo diferente. La consulta CREATE se ejecutó sin problemas, pero no se generaron índices.
Ryan Garnett
Hmm ... no estoy seguro de qué está pasando allí entonces. El hecho de que piense que el primer parámetro que está pasando es de tipo en unknownlugar de character varyingactivar alarmas, pero no puedo ver dónde tiene un problema. Pensaré un poco, mientras tanto, ¿a algún gurú de PostgreSQL le gustaría probarlo? :)
MerseyViking
2
La respuesta principal no funcionará si tiene vistas con geometría. Cambiar el enunciado 'IF' para verificar que no está intentando crear un índice en una vista resuelve ese problema. Si desea utilizar vistas con geometría, reemplace esta línea:
IF i_exists =0
con este:
IF i_exists =0AND tn IN(SELECT table_name, table_type FROM information_schema.tables WHERE table_type ='BASE TABLE')
unknown
lugar decharacter varying
activar alarmas, pero no puedo ver dónde tiene un problema. Pensaré un poco, mientras tanto, ¿a algún gurú de PostgreSQL le gustaría probarlo? :)La respuesta principal no funcionará si tiene vistas con geometría. Cambiar el enunciado 'IF' para verificar que no está intentando crear un índice en una vista resuelve ese problema. Si desea utilizar vistas con geometría, reemplace esta línea:
con este:
fuente
digamos que su tabla está 'construyendo', puede indexar usando GIST
¿Es esto lo que estás buscando?
fuente