Ich bin Entwickler und habe ein Tool, das ein Geojson-Asset generiert, mit dem unser Datenteam mithilfe der QGIS-App arbeiten kann. Aufgrund der ursprünglichen Datenquelle weisen diese Features einige Attribute auf, die als komplexe hierarchische Daten dargestellt werden und nicht in ein flaches Schema projiziert werden können.
Wir müssen in der Lage sein, das Attributfeld als effektives JSON-Blob anstelle eines Zeichenfolgenliterals anzuzeigen / zu bearbeiten.
Welche Einrichtungen stehen dazu in QGIS zur Verfügung? Gibt es Plugins zur Feldbearbeitung, die einen solchen Job unterstützen würden? Idealerweise eine Art Popup-JSON-Editor mit Überprüfung des Dokumentformats und reduzierbaren Knoten, ähnlich wie Visual Studio (Code) -Editoren.
Alternativ ein anderer Workflow, mit dem wir diese Daten in einem externen Tool verwalten und erneut in die Quellfunktion einfügen können.
UPDATE: Postgres wurde gestartet und eine JSON-Spalte aus einer vorhandenen Textspalte mit JSON erstellt. QGIS versteckt es in der Attributtabelle. Weitere Empfehlungen zum Arbeiten mit JSON-Attributen direkt in der Datenbank?
Antworten:
Überprüfen Sie Folgendes : https://github.com/qgis/QGIS/pull/7869 Jetzt sind die Attribute des Typs json / jsonb mit QGIS 3.3.0 Nighly (Master-Dev-Version) sichtbar.
quelle
Wenn Sie in neueren QGIS-Versionen (> 3.3) ein JSON-Feld in einer PostgreSQL-Datenbank haben, können Sie die
map_get
Funktion überall im Ausdrucksdialog verwenden, um einen bestimmten Wert zu extrahieren.Beispiel: Wenn Sie ein JSON-Feld aufgerufen haben
"extraData"
und der Inhalt wie folgt lautet:dann
map_get(extraData,'param1')
würde produzierenSome string
Ich nehme an (obwohl ich es nicht ausprobiert habe), dass Sie die Funktion rekursiv verwenden können, um tief verschachtelte Werte abzurufen.
Es gibt andere Funktionen wie die
from_json
Funktion, die den gesamten Inhalt zurückgibt. Schauen Sie sich den Abschnitt "Karten" im Ausdrucksdialog an.quelle
Angenommen, wir haben ein Feld / eine Spalte mit dem Namen ' location ' mit dem folgenden Inhalt / Wert (es ist eine Zeichenfolge, hat aber eine json-Struktur) in QGIS:
und Sie möchten Zugriff auf die Eigenschaft 'subregion', also der Ausdruck:
wird 'Jaén' zurückgeben
Getestet mit Geopackage-Datenbank.
quelle