J'écris un tutoriel pour les étudiants MSc qui utilise QGIS. Une des tâches nécessite la modification des données d'attribut (voir le brouillon pdf du tutoriel ici si vous êtes intéressé)
La question est de savoir comment les amener à modifier les données d'attribut. Je sais que cette question a déjà été posée , et la réponse était simple: il suffit d'utiliser LibreOffice calc pour la modifier, puis l'enregistrer, en veillant à ce que l'ordre des lignes et les titres des colonnes restent les mêmes. J'ai déjà utilisé cette approche avec grand succès.
Malheureusement, la solution ne fonctionne plus: l'enregistrement du fichier .dbf, dans LibreOffice (5.4.2) ou OpenOffice (3.4.1) Calc brouille les données du point de vue de QGIS (seuls les nombres entiers aléatoires apparaissent dans le tableau des attributs), et crée un fichier .dbt supplémentaire à la place.
Donc, pour arriver à la question: comment dire à une classe d'étudiants MSc de le faire la semaine prochaine? J'ai considéré les options suivantes:
- Utilisez plutôt R (super pour moi, mais effrayant pour les étudiants)
- Modifiez le fichier en tant que .csv, puis joignez-vous en fonction de l'horodatage (bien, mais semble trop complexe, et pourrait introduire plus d'erreur dans la pratique de 2 heures)
- Utilisez un programme alternatif: j'ai essayé Gnumeric et Excel, aucun des deux n'a généré rapidement de bons résultats.
Pour aider à répondre à cette question, j'ai créé un exemple reproductible . Ouvrez le fichier "points.shp" dans QGIS, observez la table attributaire puis fermez. Modifiez quelques cellules dans la table attributaire "points.dbf" dans LibreOffice - enregistrez. Rouvrez "points.shp" dans QGIS et observez la table des attributs brouillés. Les autres fichiers de formes dans le dossier .zip ont déjà été corrompus par LibreOffice et OpenOffice pour illustrer à quoi ressemble le problème pour moi.
En bref, comment résoudre au mieux ce problème?
la source
Réponses:
Réponse la plus simple que j'ai trouvée, basée sur les conseils de Ryan Garnett pour le faire dans QGIS:
Utilisez regexp_replace
Cette capacité a été ajoutée au calculateur de terrain il y a 1 an par Jürgen Fischer (comme illustré par ce rapport de bogue ). J'ai essayé pendant un certain temps de découvrir comment procéder, mais j'ai échoué dans la recherche de "qgis regex" et d'autres termes vagues.
Sa fonctionnalité est probablement mieux illustrée par la nécessité de normaliser toutes les valeurs dans la colonne "nom". Par exemple, si nous devons remplacer toutes les cellules qui contiennent le motif «Tesc» par «Tesco», en supprimant les informations superflues comme «Tesco, Infirmary Road» (que les contributeurs OSM ajoutent fréquemment), la fonction suivante peut être utilisée:
regexp_replace ("nom", 'Tesc. *', 'Tesco')
Je suppose que c'est une fonctionnalité d'expression régulière Pythonic, car elle est un peu différente de grep, que j'ai utilisée auparavant.
Je pense que plus de documentation (les détails sur le site Web de QGIS sont limités à quelques mots) est nécessaire sur la façon dont cela fonctionne, j'ai donc mis en signet les pages suivantes pour référence future:
Cette solution présente deux avantages:
Toutes mes excuses pour avoir répondu à ma propre question et un grand merci aux autres pour m'avoir guidé vers la lumière! J'espère que ce fil de questions sera utile à d'autres personnes confrontées à des problèmes similaires.
la source
Cela peut être une réponse stupide, car cela peut être un objectif d'apprentissage pour les étudiants diplômés, mais y a-t-il une raison pour laquelle vous ne modifiez pas les attributs dans QGIS avec l'utilisation de la calculatrice de champ? Dans les versions précédentes de QGIS (pré-1.7), la modification des attributs directement dans QGIS n'était pas possible; d'où la nécessité d'éditer les fichiers .DBF dans OpenOffice etc.
Depuis les versions 1.7 et 1.8, vous pouvez modifier les données d'attribut directement dans la calculatrice de champ, avec la possibilité d'effectuer des expressions conditionnelles. Il existe également des plugins d'attributs Python disponibles, qui peuvent fournir des options supplémentaires pour la modification des attributs. Cela peut être une solution et / ou une option pour votre didacticiel.
En tant qu'ancien étudiant à la maîtrise et maintenant employé de l'université, je comprends ce problème, l'exigence précédente de l'exécuter en dehors de QGIS, et j'apprécie maintenant la possibilité d'effectuer toutes les modifications d'attribut dans QGIS. Je serais heureux de vous aider davantage si vous le souhaitez.
la source
Vous pouvez utiliser la base de LibreOffice pour modifier vos fichiers dbf .
Vous pouvez maintenant commencer à les modifier. J'espère que cela devrait suffire à vos besoins.
Vous pouvez également essayer DBF Explorer bien que ce soit uniquement Windows. Il a cependant la recherche et le remplacement.
la source