Je suis développeur et j'ai un outil qui génère un atout geojson pour que notre équipe de données puisse travailler avec l'application QGIS. En raison de la source d'origine des données, ces fonctionnalités ont certains attributs qui sont représentés comme des données hiérarchiques complexes, impossibles à projeter dans un schéma plat.
Nous devons être en mesure d'afficher / modifier le champ d'attribut aussi efficacement qu'un blob JSON, au lieu d'un littéral de chaîne.
Quelles sont les installations disponibles pour le faire dans QGIS? Existe-t-il des plugins d'édition de champ qui pourraient prendre en charge un tel travail? Idéalement, une sorte d'éditeur JSON contextuel avec validation du format de document et nœuds réductibles, semblable au fonctionnement des éditeurs Visual Studio (Code).
Alternativement, un autre flux de travail qui nous permettrait de gérer ces données dans un outil externe et de les réinjecter dans la fonction source.
MISE À JOUR: Postgres a été créé et a créé une colonne JSON à partir d'une colonne de texte existante contenant JSON. QGIS le cache dans la table attributaire. Avez-vous d'autres recommandations sur l'utilisation des attributs JSON directement dans la base de données?
Réponses:
Vérifiez ceci: https://github.com/qgis/QGIS/pull/7869 Maintenant, les attributs de type json / jsonb sont visibles à l'aide de QGIS 3.3.0 Nighly (version principale de développement)
la source
Dans les versions récentes de QGIS (> 3.3), si vous avez un champ JSON dans une base de données PostgreSQL, vous pouvez utiliser la
map_get
fonction n'importe où avec la boîte de dialogue d'expression pour extraire une valeur spécifique.Par exemple, si vous avez un champ JSON appelé
"extraData"
et que le contenu est:puis
map_get(extraData,'param1')
produiraitSome string
Je suppose (même si je ne l'ai pas essayé) que vous pouvez utiliser récursivement la fonction pour récupérer des valeurs profondément imbriquées.
Il existe d'autres fonctions telles que la
from_json
fonction qui renvoie l'intégralité du contenu. Jetez un œil à la section Cartes dans la boîte de dialogue Expression.la source
Supposons que nous ayons un champ / colonne appelé « emplacement » avec le contenu / la valeur suivante (c'est une chaîne mais a une structure json) dans QGIS:
et vous voulez accéder à la propriété "sous-région", donc l'expression:
retournera 'Jaén'
Testé avec une base de données de géopackage.
la source