7 votos

QGIS y el rendimiento de las tablas espaciales de SQL Server

Estoy intentando poner en marcha una base de datos espacial de SQL Server 2008 R2 para agilizar la producción de mapas utilizando QGIS.

Actualmente solo tengo un puñado de tablas espaciales (una tabla de puntos a nivel de código postal y algunas tablas de polígonos para varios niveles de límites).

Mi plan inicial era utilizar estas tablas para crear vistas (principalmente recuentos de puntos en polígonos basados en códigos postales del Reino Unido) que luego podría utilizar en QGIS para hacer que el procesamiento de datos en la producción de mapas sea mucho más rápido y menos complicado.

Desafortunadamente, mi plan ha sido un poco arruinado por la cantidad de tiempo que lleva simplemente conectarse a mi SQL Server utilizando la herramienta de capas MSSQL. Parece que QGIS procesa cada tabla/vista antes de permitirme seleccionar alguna de ellas. No solo es extremadamente lento, sino que también significa que cada vez que añada una nueva vista o tabla a mi base de datos, todo el proceso se volverá más lento hasta que se vuelva inutilizable.

¿Alguien tiene algún consejo sobre cómo puedo acelerar el proceso de conexión QGIS-SQL Server?

Estoy empezando a pensar que guardar vistas es una mala idea y que tal vez debería usar scripts de 'select ... into...' para generar tablas y minimizar el procesamiento requerido. Me interesaría conocer las opiniones de las personas sobre esto.

7voto

Jauder Ho Puntos 3172

Will is correcto. Necesitas una tabla de geometry_columns. Sin la tabla de geometry_columns, QGIS escanea cada tabla para encontrar el tipo y srid.

El script CREATE se ve así:

CREATE TABLE [dbo].[geometry_columns](
    [f_table_catalog] [varchar](256) NOT NULL,
    [f_table_schema] [varchar](256) NOT NULL,
    [f_table_name] [varchar](256) NOT NULL,
    [f_geometry_column] [varchar](256) NOT NULL,
    [coord_dimension] [int] NOT NULL,
    [srid] [int] NOT NULL,
    [geometry_type] [varchar](30) NOT NULL
) ON [PRIMARY]

y una entrada de ejemplo:

introducir descripción de la imagen aquí

f_table_name también puede ser el nombre de una vista. Si se encuentra esta tabla, QGIS buscará aquí primero para encontrar los metadatos sobre la tabla y omitirá el escaneo completo de la tabla.

Asegúrate de decirle a QGIS que solo busque en la tabla de geometry_columns también:

introducir descripción de la imagen aquí

También debes asegurarte de que todas tus tablas tengan índices espaciales porque esto hará que su carga sea mucho más rápida. QGIS también buscará en la tabla de índices espaciales del sistema para encontrar las extensiones de la capa.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X