opendatasicilia / tansignari

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

[script] Estrarre righe e mettere in colonne #234

Closed pigreco closed 1 year ago

pigreco commented 1 year ago

Ho un file testuale (il file è il risultato del comando ogrinfo -al -so DBGT_10K_22_V01.gdb) con migliaia di righe e vorrei estrarre le sole righe che iniziano con

layer_name feature_count geometry
pippo 123 None
pluto 12345 3D Multi Polygon

file: cucu_dbgt.csv

io riesco ad estrarre le singole righe usando:

grep "Layer name" nomefile.csv grep "Feature count" nomefile.csv grep "Geometry" nomefile.csv

ma non ho idea di come metterle assieme in un csv tramite uno script

PS: il DBGT_10K_22_V01.gdb (pesa oltre 5GB)

aborruso commented 1 year ago

Caro @pigreco con ogr 3.7 c'è finalmente l'output in JSON, quindi le info saranno dati e quindi sarà facilissimo ottenere quello che vuoi.

Adesso ogrinfo è un flusso di testo, strutturato, ma un po' scomodo.

A riga di comando si può fare in mille modi. Guardando la struttura penso a uno dei formati di Miller, l'XTAB, che ricorda un po' quell'output. È fatto infatti così (di default non ci sono i :)

Layer name    PROVIN
Geometry      None
Feature Count 5

Layer name    PROVIN_PROVIN_NOM_T
Geometry      None
Feature Count 5

E allora sfrutterei la cosa

# estrai soltanto le righe che servono e le righe bianche
<cucu_dbgt.csv grep -P '^(Layer na.+|Geometry:.+|Feature Count:.+|.{0,1})$' | \
# converti output in CSV
mlr --x2c --ips : clean-whitespace >cucu_dbgt_a.csv

Il comando miller:

Fammi sapere, che ho fatto di corsa

pigreco commented 1 year ago

@aborruso ottimo!!! sotto il risultato, grazie mille(r) image

pigreco commented 1 year ago

@aborruso volendo catturare anche la riga che inizia con PROJCRS, ho usato questa:

<ogrinfo_DBGT10kV01.csv grep -P '^(Layer na.+|Geometry:.+|PROJCRS\[.+|^Cature Count:.+|.{0,1})$'

che restituisce questo:

Layer name: DRE_SUP_PLG
Geometry: 3D Measured Multi Polygon
Feature Count: 570
PROJCRS["RDN2008 / UTM zone 32N",

ma non è una riga pulita come le precedenti, quindi occorre un passaggio in più e rimuovere [ e la , finale

aborruso commented 1 year ago

@pigreco in questo caso la mia modalità non è comodamente applicabile.

E farei qualcosa come:

pigreco commented 1 year ago

in questo caso la mia modalità non è comodamente applicabile.

ok, allora chiudo issue ;-)

pigreco commented 1 year ago

Ricetta fatta e pubblicata:

https://tansignari.opendatasicilia.it/ricette/bash/estrarre_righe_e_emetterle_in_colonne/

chiudo, grazie

aborruso commented 1 year ago

Grande