¿Puede QGIS leer una conexión ODBC?

13

Tengo un compañero de trabajo que administra una gran base de datos de MS Access que contiene X & Y campos para varios lugares que rastrea. Anteriormente hemos exportado los datos a CSV y utilizamos el complemento de texto delimitado de QGIS para trazar las ubicaciones.

Ahora nos gustaría trazar estos datos directamente en QGIS conectándonos a la base de datos de MS Access a través de una conexión ODBC (en lugar de exportar a CSV).

  1. ¿Puede QGIS consumir los datos de la conexión ODBC para trazar las ubicaciones X-Y?
  2. ¿Se puede "vincular en vivo" a la conexión ODBC de modo que cuando se vuelve a abrir un proyecto, la capa "replantea" todas las ubicaciones antiguas y recién agregadas dinámicamente (en lugar de exportar a shapefile, lo que crearía una instantánea en tiempo)?
  3. ¿Se pueden crear conexiones ODBC tabulares que puedan unirse a tablas espaciales dentro de QGIS?

Puedes hacer todo esto en ArcGIS (herramienta "Agregar datos XY"), por lo que sería genial si esta capacidad existiera en QGIS. Simplemente no puedo encontrar en ningún lugar que mencione su existencia.

Gracias.

CLARIFICACIÓN: agradezco las sugerencias para pasar a una base de datos espacial, pero eso no es lo que busco. Como persona de GIS, sí, sé que tiene sentido pasar a una base de datos espacial, y sí, he usado PostGIS para administrar este tipo de datos. Pero estas no son opciones en este momento. El usuario no es una persona GIS ni quiere serlo, y administra su propia base de datos en MS Access ... eso no cambiará. Estoy y lo estoy tirando de él pateando y gritando en el mundo GIS y quiero hacerlo lo más fácil posible. Puede vivir con la exportación a CSV, solo esperaba que hubiera una mejor solución UTILIZANDO ODBC PARA MS ACCESS y mostrar los datos XY en QGIS.

    
pregunta RyanDalton 09.05.2011 - 17:39

5 respuestas

6

Con las nuevas herramientas de "Procesamiento" disponibles en QGIS 2, esto se vuelve un poco más fácil. Si bien todavía no he encontrado la forma de "vincular en vivo" los datos (de modo que si cambia los valores en la tabla de MS Access, el punto se mueve automáticamente), este método parece funcionar bastante bien.

El crédito va a "Christina" y "Bernd" en la sección de comentarios de esta página (y, por supuesto, @underdark para el blog) sobre cómo crear la conexión ODBC a su base de datos de MS Access:

Crear una conexión ODBC:

Para Win7, 32 bits: Vaya al panel de control / herramientas administrativas / fuentes de datos (ODBC)

Para Win7, 64 bit: En lugar de usar el "panel de control / herramientas administrativas / fuentes de datos (ODBC)" de manera predeterminada, con las versiones de 64 bits, tiene que usar C: \ Windows \ SysWOW64 \ odbcad32.exe!

  1. Haga clic en la pestaña DSN del usuario y luego en "agregar"
  2. Desplácese hasta Microsoft Access Driver (* mdb) y haga clic en "finalizar"
  3. Asigne un nombre a la conexión y luego elija ‘seleccionar’ para buscar la ubicación de la base de datos, luego haga clic en ‘ok’ para salir del diálogo y nuevamente para cerrar la ventana dsn.

Cargue la capa en QGIS:

  1. Ir a agregar capa vectorial y seleccionar la opción de base de datos.
  2. Asegúrese de que el cuadro de "tipo" de la base de datos diga "ODBC" y haga clic en "nuevo"
  3. En el cuadro de nombre, escriba un nombre para la conexión
  4. El host es localhost
  5. El nombre de la base de datos es el nombre del dsn que creó en el paso 4
  6. Todas las demás casillas deben estar en blanco, pero puede marcar la casilla "guardar contraseña".
  7. Pruebe la conexión y tome nota de cualquier error. Cuando tenga éxito, haga clic en "ok" para volver al diálogo "agregar capa vectorial"
  8. Haga clic en "abrir" para abrir esta conexión y, si se le solicita una contraseña, haga clic en "Aceptar". Elija su capa (tabla de la base de datos), teniendo en cuenta que es posible que no tenga ninguna geometría.

Convierta los datos XY en puntos:

  1. Con la tabla en la tabla de contenido, vaya a "Procesando" - > Caja de herramientas - > Geoalgoritmos - > Vector - > Creación - > "Capa de puntos de la tabla".
  2. Rellene el formulario como se muestra a continuación:

    
respondido por el RyanDalton 02.10.2013 - 17:45
6

Advertencia: no he intentado esto, así que estoy dispuesto a inclinarme ante cualquier persona con experiencia directa.

Puede conectarse a una fuente de datos ODBC en el cuadro de diálogo "agregar capa vectorial", simplemente seleccione "base de datos" como tipo de fuente y ODBC como tipo de base de datos. QGIS utiliza el controlador ODBC para OGR , por lo que se aplicarán las mismas advertencias, es decir, necesitará una tabla llamada GEOMETRY_COLUMNS y así sucesivamente, por lo que su colega probablemente deberá modificar la base de datos.

No he usado Access desde poco después del lanzamiento de la versión 1.0, pero como no está habilitado espacialmente, es probable que el rendimiento sea un problema. Es de suponer que no va a abandonar Access y comenzar a utilizar una base de datos habilitada espacialmente, porque es poco probable que sea económicamente viable, pero si su compañero de trabajo siente alguna vez la necesidad de un cambio, le recomiendo encarecidamente que vaya a algo un poco más poderoso.

    
respondido por el MerseyViking 09.05.2011 - 18:19
5

Aunque todavía estoy interesado en escuchar si hay otras opciones disponibles, encontré un mensaje que mencionó que esto era posible utilizando el eVis Plugin .

La documentación se describe en la Sección de conexión de base de datos sobre cómo puede conectarse a un MS Access o Conexión ODBC para crear ubicaciones de puntos XY desde la base de datos, sin crear una instantánea estática. Simplemente escribí "seleccionar * de" y eVis apareció un cuadro de diálogo que le pide el nombre de la capa y los campos X-Y.

Lamentablemente, esto parece no crear una conexión "en vivo" a la base de datos de MS Access porque la próxima vez que se abre el proyecto, QGIS se confunde ("no se puede abrir una o más capas de proyecto"). Sin embargo, la solución a esto es crear una consulta XML predefinida que el usuario puede seleccionar.

Entonces, si bien no es una solución perfecta, este es un paso mejor que exportar a CSV. En el futuro, creo que sería fantástico ver el complemento del Texto delimitado expandido para aceptar conexiones ODBC para este propósito.

    
respondido por el RyanDalton 09.05.2011 - 21:21
4

un enfoque alternativo sería mover los datos a postgis. Puede leer el archivo csv directamente con el comando de copia postgresql. entonces puedes crear puntos desde los campos xy.

luego, si desea utilizar algunos informes u otra funcionalidad en el acceso, puede conectarse a Postgis desde el acceso.

el beneficio sería que coloque los datos espaciales donde pertenecen, en una base de datos espacial y luego use odbc de nuevo para acceder a los datos no espaciales si, por alguna razón, aún desea ver sus datos en acceso.

hay excelentes tutoriales para postgis / postgresql para acceder a la conexión en postgresonline.com. tutoriales sobre la implementación de postgis / postgresql que pueden encontrar los mismos autores en bostongis.org

/ Nicklas

    
respondido por el Nicklas Avén 09.05.2011 - 18:56
0

Hay varios productos de conversión que pueden convertir datos de acceso de ms a postgres o SQLite y viceversa. El mover los datos muy rápidamente de un lado a otro. El uso de una de estas aplicaciones puede darle la opción de ejecutar QGIS en una instantánea de los datos.

    
respondido por el AndrewM 11.09.2013 - 03:34

Lea otras preguntas en las etiquetas