Saya seorang pengembang dan memiliki alat yang menghasilkan aset geojson untuk tim data kami untuk bekerja dengan menggunakan aplikasi QGIS. Karena sumber asli data, fitur ini memiliki beberapa atribut yang direpresentasikan sebagai data hierarkis yang kompleks, tidak mungkin diproyeksikan ke skema datar.
Kita harus dapat melihat / mengedit bidang atribut sebagai gumpalan JSON secara efektif, alih-alih string literal.
Fasilitas apa yang tersedia untuk melakukan ini di QGIS? Apakah ada plugin pengeditan bidang yang akan mendukung pekerjaan seperti itu? Idealnya beberapa jenis editor JSON popup dengan validasi format dokumen dan node yang dapat dilipat, mirip dengan cara kerja editor Visual Studio (Code).
Atau beberapa alur kerja lain yang memungkinkan kami untuk mengelola data ini dalam alat eksternal dan menyuntikkan kembali ke fitur sumber.
UPDATE: Got Postgres berputar dan membuat kolom JSON dari kolom teks yang ada yang berisi JSON. QGIS menyembunyikannya di tabel atribut. Adakah rekomendasi lebih lanjut tentang bekerja dengan atribut JSON langsung di DB?
Jawaban:
Periksa ini: https://github.com/qgis/QGIS/pull/7869 Sekarang atribut tipe json / jsonb terlihat menggunakan QGIS 3.3.0 Nighly (versi master dev)
sumber
Dalam versi QGIS terbaru (> 3.3), jika Anda memiliki bidang JSON dalam database PostgreSQL, Anda dapat menggunakan
map_get
fungsi di mana saja dengan Dialog Ekspresi untuk mengekstraksi nilai tertentu.Misalnya jika Anda memiliki bidang JSON yang dipanggil
"extraData"
dan isinya adalah:maka
map_get(extraData,'param1')
akan menghasilkanSome string
Saya kira (meskipun saya belum mencobanya) Anda dapat secara rekursif menggunakan fungsi untuk mengambil nilai yang sangat bersarang.
Ada fungsi lain seperti
from_json
fungsi yang mengembalikan seluruh konten. Lihatlah bagian Peta di dalam Dialog Ekspresi.sumber
Misalkan kita memiliki bidang / kolom yang disebut ' lokasi ' dengan konten / nilai berikut (ini adalah string tetapi memiliki json struct) ke dalam QGIS:
dan Anda ingin akses ke properti 'subregion', jadi ungkapan:
akan mengembalikan 'Jaén'
Diuji dengan basis data geopackage.
sumber