Modificare un JSON in GeoJSON

Modificare un insolito file JSON che contiene coordinate geografiche in un file GeoJSON leggibile da software GIS.

A cura di Totò Fiandaca  | issue #159 | guida/e Andrea Borruso


Caso d’uso: A partire da uno strano JSON con la seguente struttura:

{
  "GEOMETRIA": [
    "{ \"type\": \"Polygon\", \"coordinates\": [ [ [15.2500005, 37.9353124], [15.2538586, 37.9353124], [15.2538586, 37.9384931], [15.2500005, 37.9384931], [15.2500005, 37.9353124] ] ] }"
  ]
}

creare un file GeoJSON fruibile con software GIS, come QGIS per esempio.

L’idea di fondo: osservare come è strutturato un file GeoJSON e ricrearlo partendo dai dati presenti nel file JSON.

script bash

##!/bin/bash

set -x
# crea una cartella dentro la cartella principale
mkdir -p ./rawdata
# crea delle variabili
i1='{"type": "FeatureCollection","name":'
i2=',"crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } },"features": [{ "type": "Feature", "properties": { }, "geometry":'
i3='}]}'
# elimina eventuali file
rm ./rawdata/out-*.json
# crea loop
for i in $(ls *.json); do
  # crea variabile e la popola con la parte geometrica del JSON
  geom=$(cat "$i" | jq -r '.[] | .[]' | sed -e "s/^\"//g" | sed -e "s/\"$//g")
  # effettua le sostituzioni e crea file file leggibile da software GIS
  echo -e "$i1 \"$i\"\n$i2$geom\n$i3" | jq . >./rawdata/out-"$i"
done

Risultato

{
  "type": "FeatureCollection",
  "name": "ME-H405-1-1.json",
  "crs": {
    "type": "name",
    "properties": {
      "name": "urn:ogc:def:crs:OGC:1.3:CRS84"
    }
  },
  "features": [
    {
      "type": "Feature",
      "properties": {},
      "geometry": {
        "type": "Polygon",
        "coordinates": [
          [
            [
              15.2500005,
              37.9353124
            ],
            [
              15.2538586,
              37.9353124
            ],
            [
              15.2538586,
              37.9384931
            ],
            [
              15.2500005,
              37.9384931
            ],
            [
              15.2500005,
              37.9353124
            ]
          ]
        ]
      }
    }
  ]
}

Dati

  • file JSON scaricabili da qui

Riferimenti utili

Ultima modifica 18/10/2020: update script (63f8a97)