Soy desarrollador y tengo una herramienta que genera un activo geojson para que nuestro equipo de datos trabaje con la aplicación QGIS. Debido a la fuente original de los datos, estas características tienen algunos atributos que se representan como datos jerárquicos complejos, imposibles de proyectar en un esquema plano.
Necesitamos poder ver / editar el campo de atributo como efectivamente un blob JSON, en lugar de un literal de cadena.
¿Qué instalaciones están disponibles para hacer esto en QGIS? ¿Hay complementos de edición de campo que admitan dicho trabajo? Idealmente, algún tipo de editor JSON emergente con validación de formato de documento y nodos plegables, similar a cómo funcionan los editores de Visual Studio (Código).
Alternativamente, algún otro flujo de trabajo que nos permita administrar estos datos en una herramienta externa y volver a inyectarlos en la función de origen.
ACTUALIZACIÓN: Got Postgres hizo girar y creó una columna JSON a partir de una columna de texto existente que contiene JSON. QGIS lo oculta en la tabla de atributos. ¿Alguna otra recomendación sobre trabajar con atributos JSON directamente en la base de datos?
Respuestas:
Verifique esto: https://github.com/qgis/QGIS/pull/7869 Ahora los atributos de tipo json / jsonb son visibles usando QGIS 3.3.0 Nighly (versión maestra de desarrollo)
fuente
En versiones recientes de QGIS (> 3.3), si tiene un campo JSON en una base de datos PostgreSQL, puede usar la
map_get
función en cualquier lugar con el Diálogo de expresión para extraer un valor específico.Por ejemplo, si tiene un campo JSON llamado
"extraData"
y el contenido es:entonces
map_get(extraData,'param1')
produciríaSome string
Supongo (aunque no lo he probado) que puede usar la función de forma recursiva para recuperar valores profundamente anidados.
Hay otras funciones, como la
from_json
función que devuelve todo el contenido. Eche un vistazo a la sección Mapas dentro del cuadro de diálogo Expresión.fuente
Supongamos que tenemos un campo / columna llamada ' ubicación ' con el siguiente contenido / valor (es una cadena pero tiene estructura json) en QGIS:
y desea acceder a la propiedad 'subregión', entonces la expresión:
volverá 'Jaén'
Probado con la base de datos de geopaquete.
fuente