Tengo un compañero de trabajo que administra una gran base de datos de MS Access que contiene campos X e Y para varios lugares que rastrea. Anteriormente exportamos los datos a CSV y utilizamos el complemento de texto delimitado QGIS para trazar las ubicaciones.
Ahora nos gustaría trazar estos datos directamente en QGIS conectándonos a la base de datos MS Access a través de una conexión ODBC (en lugar de exportar a CSV).
- ¿Puede QGIS consumir los datos de la conexión ODBC para trazar las ubicaciones XY?
- ¿Se puede "vincular en vivo" a la conexión ODBC para que cuando se vuelva a abrir un proyecto, la capa "responda" dinámicamente todas las ubicaciones antiguas y recién agregadas (en lugar de exportar a shapefile, lo que crearía una instantánea en el tiempo)?
- ¿Se pueden crear conexiones tabulares ODBC que se puedan unir a tablas espaciales dentro de QGIS?
Puede 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 ningún lugar que mencione su existencia.
No planeo pasar a una base de datos espacial. Como persona SIG, 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 SIG ni quiere serlo, y administra su propia base de datos en MS Access y eso no cambiará. Lo estoy y lo estoy empujando pateando y gritando al mundo SIG y quiero que sea lo más fácil posible. Puede vivir exportando a CSV, solo esperaba que hubiera una mejor solución USANDO ODBC PARA MS ACCESS y mostrando los datos XY en QGIS.
Respuestas:
Advertencia: no he intentado esto, así que estoy dispuesto a inclinarme ante cualquiera 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 usa 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 deba 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, probablemente encontrará que el rendimiento es un problema. Presumiblemente, no solo va a soltar Access y comenzar a usar una base de datos habilitada espacialmente, porque es poco probable que sea económicamente viable, pero si su compañero de trabajo alguna vez siente la necesidad de un cambio, le recomiendo encarecidamente que vaya a algo un poco más poderoso.
fuente
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 una 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 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 bits: en lugar de usar el "panel de control / herramientas administrativas / fuentes de datos (ODBC)" predeterminadas, ¡con las versiones de 64 bits, debe usar C: \ Windows \ SysWOW64 \ odbcad32.exe!
Cargue la capa en QGIS:
Convierta los datos XY a Puntos:
fuente
Si bien todavía estoy interesado en saber si hay otras opciones disponibles, me encontré con una publicación de mensaje que mencionaba que esto era posible usando el complemento eVis .
La documentación describe en la sección Conexión de la base de datos cómo puede conectarse a una conexión MS Access u 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 pregunta por el nombre de la capa y los campos XY.
Desafortunadamente, esto no parece crear una conexión "vinculada en vivo" a la base de datos de MS Access porque la próxima vez que se abre el proyecto, QGIS está confundido ("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 pueda seleccionar.
Entonces, aunque no es una solución perfecta, este es un paso mejor que exportar a CSV. En el futuro, creo que sería genial ver el complemento de texto delimitado expandido para aceptar conexiones ODBC para este propósito.
fuente
un enfoque alternativo sería mover los datos a postgis. puede leer el archivo csv directamente con el comando postgresql copy. entonces puede 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 colocas los datos espaciales donde pertenecen, en una base de datos espacial y luego usas odbc back para acceder a manejar los datos no espaciales si por alguna razón aún quieres ver tus datos en acceso.
Hay excelentes tutoriales para postgis / postgresql para acceder a la conexión en postgresonline.com. tutoriales sobre impöorting a postgis / postgresql que puede encontrar por los mismos autores en bostongis.org
/ Nicklas
fuente
Hay varios productos de conversión que pueden convertir datos de acceso de ms a postgres o SQLite y viceversa. Mueven 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.
fuente