opendatasicilia / tansignari

"T'ansignari e t'appeddiri"
http://tansignari.opendatasicilia.it
Creative Commons Attribution 4.0 International
18 stars 10 forks source link

[scripting] come convertire un JSON in CSV usando la CLI #39

Closed pigreco closed 5 years ago

pigreco commented 5 years ago

Come convertire un JSON che contiene dati GIS (coordinate lat, lon) in CSV

se puo' essere di aiuto, il JSON proviene dalla issue #38

aborruso commented 5 years ago

@pigreco tante domande tutte insieme :)

in un formato GIS (GeoJSON, CSV)

Quindi va bene anche un CSV?

pigreco commented 5 years ago

@aborruso ho modificato la domanda, sì, da JSON a CSV usando al CLI grazie

aborruso commented 5 years ago

Caro @pigreco lo puoi fare in mille modi. Qui ti mostro uno di quelli che uso. Nota bene: il JSON è un formato che può avere una gerarchia molto ricca, è come un db relazionale con più tabelle dentro. Quindi le utility che fanno conversione diretta in CSV, se il JSON non è semplice, vanno in difficoltà.

Per i JSON, se vuoi usare un utlity a riga di comando (utilizzabile in tutti i sistemi operativi) l'utility più usata (per merito) è jq.

Per trasformare

{
  "place_id": 120403399,
  "licence": "Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright",
  "osm_type": "way",
  "osm_id": 191532974,
  "lat": "38.0052595",
  "lon": "12.9971424",
  "display_name": "Alcamo, TP, SIC, 91027, Italia",
  "address": {
    "town": "Alcamo",
    "county": "TP",
    "state": "SIC",
    "postcode": "91027",
    "country": "Italia",
    "country_code": "it"
  },
  "boundingbox": [
    "37.9874419",
    "38.0068403",
    "12.9894177",
    "13.000404"
  ]
}

in "38.0052595","12.9971424","Alcamo, TP, SIC, 91027, Italia"

La query jq è .|[.lat,.lon,.display_name]|@csv.

A riga di comando è

curl -L "http://nominatim.openstreetmap.org/reverse.php?format=json&lat=38&lon=13&addressdetails=1" | \
jq -r '.|[.lat,.lon,.display_name]|@csv'

Questa è una query semplice. È possibile scendere negli alberi complessi di oggetti e usare e trasformare quello che serve

pigreco commented 5 years ago

wow, @aborruso grazie per la veloce e dettagliata risposta.

a breve unirò questa issue con la #38 e realizzerò una ricetta.

pigreco commented 5 years ago

snippet by jqplay

https://jqplay.org/s/4fZpHUeQRJ