J'ai un collègue qui gère une grande base de données MS Access qui contient des champs X & Y pour divers emplacements qu'il suit. Nous avons précédemment exporté les données vers CSV et utilisé le plug-in de texte délimité QGIS pour tracer les emplacements.
Nous aimerions maintenant tracer ces données directement dans QGIS en nous connectant à la base de données MS Access via une connexion ODBC (par opposition à l'exportation vers CSV).
- QGIS peut-il consommer les données de la connexion ODBC pour tracer les emplacements XY?
- Peut-il être «lié en direct» à la connexion ODBC de sorte que lorsqu'un projet est rouvert, la couche «replotte» dynamiquement tous les emplacements anciens et nouvellement ajoutés (par opposition à l'exportation vers un fichier de formes, ce qui créerait un instantané dans le temps)?
- Pouvez-vous créer des connexions ODBC tabulaires qui peuvent être jointes à des tables spatiales dans QGIS?
Vous pouvez faire tout cela dans ArcGIS (outil "Ajouter des données XY"), donc ce serait génial si cette capacité existait dans QGIS. Je ne trouve aucun endroit qui mentionne son existence.
Je ne prévois pas de passer à une base de données spatiale. En tant que personne SIG moi-même, oui, je sais qu'il est logique de passer à une base de données spatiale, et oui, j'ai utilisé PostGIS pour gérer ce type de données. Mais ce ne sont pas des options pour le moment. L'utilisateur n'est pas un SIG et ne veut pas l'être, et il gère sa propre base de données dans MS Access et cela ne changera pas. Je suis et je le pousse à donner des coups de pied et à crier dans le monde SIG et je veux le rendre aussi facile que possible. Il peut vivre avec l'exportation vers CSV, j'espérais juste qu'il y avait une meilleure solution UTILISER ODBC POUR MS ACCESS et afficher les données XY dans QGIS.
Réponses:
Avertissement: je n'ai pas essayé cela, donc je suis prêt à m'incliner devant toute personne ayant une expérience directe.
Vous pouvez vous connecter à une source de données ODBC dans la boîte de dialogue "ajouter une couche vectorielle", sélectionnez simplement "base de données" comme type de source et ODBC comme type de base de données. QGIS utilise le pilote ODBC pour OGR , donc les mêmes mises en garde s'appliqueront - c'est-à-dire que vous aurez besoin d'une table appelée GEOMETRY_COLUMNS et ainsi de suite, donc votre collègue devra probablement modifier la base de données.
Je n'ai pas utilisé Access depuis peu de temps après la sortie de la version 1.0, mais comme il n'est pas activé dans l'espace, vous constaterez probablement que les performances sont un problème. Vraisemblablement, vous n'allez pas simplement abandonner Access et commencer à utiliser une base de données activée spatialement, car il est peu probable que cela soit économiquement viable, mais si votre collègue ressent jamais l'envie de changement, je peux fortement recommander de passer à quelque chose de plus. puissant.
la source
Avec les nouveaux outils de "traitement" disponibles dans QGIS 2, cela devient un peu plus facile. Bien que je n'aie toujours pas trouvé de moyen de "lier en direct" les données (de sorte que si vous modifiez les valeurs dans la table MS Access, le point se déplace automatiquement), cette méthode semble fonctionner assez bien.
Nous remercions "Christina" et "Bernd" dans la section commentaires de cette page (et bien sûr @underdark pour le blog) pour avoir créé la connexion ODBC à votre base de données MS Access:
Créez une connexion ODBC:
Pour Win7, 32 bits: Accédez au panneau de configuration / outils d'administration / sources de données (ODBC)
Pour Win7, 64 bits: au lieu d'utiliser le "panneau de contrôle / outils d'administration / sources de données (ODBC)" par défaut, avec les versions 64 bits, vous devez utiliser C: \ Windows \ SysWOW64 \ odbcad32.exe!
Chargez la couche dans QGIS:
Convertissez les données XY en points:
la source
Bien que je sois toujours intéressé à savoir s'il existe d'autres options, j'ai rencontré un message qui mentionnait que cela était possible en utilisant le plug-in eVis .
La documentation décrit dans la section Connexion à la base de données comment vous pouvez vous connecter à une connexion MS Access ou ODBC pour créer des emplacements de points XY à partir de la base de données, sans créer un instantané statique. J'ai simplement tapé "select * from" et eVis a fait apparaître une boîte de dialogue qui demande le nom du calque et les champs XY.
Malheureusement, cela ne semble pas créer une connexion "liée en direct" à la base de données MS Access car la prochaine fois que le projet s'ouvre, QGIS est confus ("impossible d'ouvrir une ou plusieurs couches de projet"). Cependant, la solution consiste à créer une requête XML prédéfinie que l'utilisateur peut sélectionner.
Bien que ce ne soit pas une solution parfaite, c'est une étape de mieux que d'exporter vers CSV. À l'avenir, je pense que ce serait formidable de voir le plugin Delimited Text développé pour accepter les connexions ODBC à cet effet.
la source
une autre approche consisterait à déplacer les données vers les postgis. vous pouvez lire le fichier csv directement avec la commande de copie postgresql. alors vous pouvez créer des points à partir des champs xy.
ensuite, si vous souhaitez utiliser certains rapports ou d'autres fonctionnalités dans l'accès, vous pouvez vous connecter à postgis à partir de l'accès.
l'avantage serait que vous placiez les données spatiales à leur place, dans une base de données spatiales, puis que vous utilisiez odbc pour accéder au traitement des données non spatiales si, pour une raison quelconque, vous souhaitez toujours voir vos données en accès.
il existe d'excellents tutoriels pour postgis / postgresql pour accéder à la connexion sur postgresonline.com. des tutoriels sur l'import vers postgis / postgresql que vous pouvez trouver par les mêmes auteurs sur bostongis.org
/ Nicklas
la source
Il existe plusieurs produits de conversion qui peuvent convertir les données d'accès ms en postgres ou SQLite et vice-versa. Le déplacement très rapide des données d'un côté à l'autre. L'utilisation de l'une de ces applications peut vous donner la possibilité d'exécuter QGIS sur un instantané des données.
la source