J'ai une table attributaire avec deux champs vides dans QGIS.
Je souhaite importer une base de données Excel pour remplir mes champs vides dans QGIS. Mon fichier Excel correspond aux colonnes de ma table d'attributs QGIS.
Je suis en mesure de joindre correctement mon fichier Excel (.CSV) à mon fichier de formes. Cependant, le processus, au lieu de remplir les champs vides comme je le souhaite, a créé des doublons. Avec l'aide de «Table Manager», je suis en mesure de corriger la situation, mais cela demande beaucoup de temps. Je cherche un moyen plus efficace de joindre mes données Excel.
Comment puis-je joindre mon fichier Excel à ma table d'attributs sans créer de doublons?
qgis
attribute-table
attribute-joins
excel
Laurent Robitaille-Lainesse
la source
la source
Réponses:
Je ferais les choses suivantes pour vous faciliter la vie:
Avant cela, effectuez une sauvegarde de votre fichier de formes.
c'est l'onglet Champ dont je parle
N'oubliez pas de basculer l'édition avant et après la suppression d'un champ inutile
la source
Vous voudrez joindre le fichier Excel au fichier de formes. Vous les joindrez sur un attribut commun et le résultat sera une couche jointe où chaque enregistrement contiendra les attributs du fichier de formes et du fichier Excel.
Ok, vous chargez d'abord votre fichier Excel et votre vecteur plus tard dans les couches. J'ai utilisé certaines données de test que j'ai faites, mais votre configuration devrait ressembler à ci-dessous.
Maintenant, faites un clic droit sur le calque (dans le panneau des calques) et choisissez les propriétés, puis choisissez joindre. Appuyez d'abord sur le signe vert + en bas à gauche (grosse flèche rouge dans l'image ci-dessous) et cela fera apparaître un nouveau menu Ajouter un vecteur de jointure (comme ci-dessous) Ici, votre couche de jointure sera le fichier excel (choisissez donc le fichier excel approprié & feuille) le champ de jointure est le champ du fichier Excel qui contient l'attribut commun au fichier de formes. Le champ cible est le champ correspondant dans le fichier de formes. (dans mon cas, les deux champs communs se trouvaient être nommés unité, mais si le champ était appelé UNIT_ dans le fichier de formes, j'aurais utilisé cela au lieu de UNIT pour mon champ cible)
Il y a quelques autres options avec lesquelles vous pouvez jouer avec la jointure, comme si vous ne souhaitez voir que certains champs, etc. il a maintenant les attributs correspondants du fichier Excel comme ci-dessous.
Voici quelques tutoriels pratiques pour vous montrer étape par étape comment le faire:
https://www.mapbox.com/tilemill/docs/guides/joining-data/
http://maps.cga.harvard.edu/qgis/wkshop/join_csv.php
http://qgis.spatialoughtts.com/2012/03/using-tabular-data-in-qgis.html
Comment joindre des tables externes avec la table attributaire d'un fichier de formes dans QGIS?
http://www.digital-geography.com/qgis-tutorial-ii-how-to-join-data-with-shapefiles/#.Vs9vpmHXKUk
et le tutoriel ArMoraer mentionné dans les commentaires.
la source
Juste pour ajouter une autre méthode, vous pouvez configurer une macro de projet qui, une fois chargée:
IP1
etIP2
Créez d'abord un projet si vous ne l'avez pas déjà fait, puis accédez à la barre d'outils:
Projet> Propriétés du projet ...> Macros
Utilisez ensuite le code suivant dans la
def openProject():
fonction et entrez les noms de vos couches et les champs que vous souhaitez joindre. J'ai utilisé "Exemple" et "feuille de calcul" pour mon fichier shapefile et csv respectivement avec le champID
:Assurez-vous que les calques ne sont pas joints, enregistrez le projet et activez les macros en allant dans la barre d'outils:
Paramètres> Général> Activer les macros
Maintenant, lorsque vous fermez le projet et modifiez le fichier csv, la prochaine fois que vous chargez le projet, les champs doivent être automatiquement mis à jour:
la source
Ma suggestion est d'utiliser l'open source LibreOffice / Open Office pour éditer votre fichier Excel et créer un fichier .dbf. J'ai préparé un cahier de test pour vous. Cahier de test - lien
Tableau de résultats sans doublons dans QGIS:
la source
Pourquoi les champs vides sont-ils là pour commencer? Pouvez-vous commencer sans les champs vides et utiliser simplement les deux colonnes produites dans la jointure? Je pense que c'est l'approche la plus simple. Soit cela, soit trouvez un outil similaire à l'outil "Charger" dans ArcGIS.
https://desktop.arcgis.com/en/arcmap/latest/extensions/production-mapping/loading-data-into-a-geodatabase.htm
Si vous n'utilisez pas de géodatabase, je le recommande vivement.
la source
Je ne sais pas s'il existe un moyen direct de rejoindre sans doublon depuis la prise en charge de ce fichier .shp par attribut dans .DBF (fichier de base de données). Ce DBF a une déclaration de type de colonne comme entier, réel, chaîne, etc. avec des détails sur sa longueur et sa précision. Le fichier CSV n'a qu'une colonne normale sans aucun type déclaré. Je ne sais pas quelle est la taille de votre fichier. Pour moi, je garderai les champs en double puis j'utiliserai le caluclator de champ avec la formule générale:
Ensuite, supprimez tous ces champs dupliqués (via QGIS ou un programme de base de données)
la source
Je crois que le moyen le plus simple de résoudre ce problème serait de simplement supprimer les deux colonnes en question dans la table QGIS avant la jointure. Ensuite, lorsque vous joignez le fichier de formes, les deux colonnes souhaitées ne seront pas des doublons et conserveront leurs noms de colonnes d'origine.
la source