[QGIS-it-user] modificare stringa gdal/ogr2ogr da Processing

come avrete sicuramente notato, quando si esegue un modulo delle libreire
gdal/ogr2ogr da Processing, via via che si aggiungono opzioni si compone in
automatica la linea di comando corrispondente.
questo è molto utile per chi non ricorda le opzioni e la sintassi e così
compone la parte più corposa del comando nella finestra e poi eventualmente
la lancia dalla shell osgeo.

orbene, questa finestra contenente il comando completo non è modificabile.
ma che fare quando il comando viene scritto "sbagliato"?

l'esempio seguente è venuto fuori oggi su Facebook: utilizzo di ogr2ogr per
cambiare il SR di tutti i layer contenuti in un geopackage.

da linea di comando la sintassi è:
ogr2ogr -s_srs EPSG:4326 -t_srs EPSG:3857 -f GPKG output.gpkg input.gpkg

ma invece creato da processing ecco che cosa succede:
ogr2ogr -f "GPKG" -s_srs EPSG:32632 -t_srs EPSG:4326 Z:/depuratore_4326.gpkg
Z:/depuratori20180831.gpkg depuratori

viene aggiunto alla fine del comando "depuratori" che è uno dei layer
contenuti nel gpkg in ingresso con il risultato che il comando ogr2ogr non
coinvolge tutte le tabelle del geopackage in ingresso ma solo la prima.
ed infatti il geopackage in uscita contiene una sola tabella.

se ne è parlato per anni (issue aperta da paolo cavallini nel 2016) ma alla
fine si è deciso di non permettere più la modifica del comando nella
finestra perché non riguarda Processing.

che fare?

https://github.com/qgis/QGIS/issues/19619

--
Sent from: http://osgeo-org.1560.x6.nabble.com/QGIS-Italian-User-f5250612.html

non l'ho specificato, ma dovrebbe essere chiaro, che scrivendo da shell osgeo
il seguente comando, senza indicare alcunché alla fine, il geopackage in
uscita contiene tutte le tabelle presenti nel geopackage in ingresso.

ogr2ogr -f "GPKG" -s_srs EPSG:32632 -t_srs EPSG:4326 Z:/depuratore_4326.gpkg
Z:/depuratori20180831.gpkg

--
Sent from: http://osgeo-org.1560.x6.nabble.com/QGIS-Italian-User-f5250612.html

Stefano Campus wrote

che fare?

https://github.com/qgis/QGIS/issues/19619

Ho letto rapidamente la issue e sembra abbastanza chiaro che Nyall e
Alexander Bruy non sono d'accordo per modificare quell'algoritmo, anzi
sembra una cosa in più messa li solo per gli sviluppatori.

Non credo sia un bug, prende correttamente il nome del layer selezionato in
input.

Cosa fare? lo suggerisce Nyall nella stesso issue [0]:
1. un plugin,
2. altro processing

ma occorre sempre raccogliere dei fondi.

[0] https://github.com/qgis/QGIS/issues/19619#issuecomment-495837067

saluti

-----
https://pigrecoinfinito.com/
--
Sent from: http://osgeo-org.1560.x6.nabble.com/QGIS-Italian-User-f5250612.html

sì la unica scorciatoia sembra essere lanciare n volte il modulo via
processing caricando ogni singola tavola del geopackage e lanciando il
comando, avendo l'accortezza di aggiungere il parametro -append così non
genera un nuovo geopackage ma aggiunge il nuovo layer entro il gpkg
esistente.

peccato, un tempo si poteva editare direttamente la finestra della console

s.

--
Sent from: http://osgeo-org.1560.x6.nabble.com/QGIS-Italian-User-f5250612.html

peraltro non si può neanche fare "Processo in serie" perché non sono previsti
tutti i campi, in particolari i parametri liberi, come -s_srs EPSG:32632
-t_srs EPSG:4326 oppure -append

s.

--
Sent from: http://osgeo-org.1560.x6.nabble.com/QGIS-Italian-User-f5250612.html

Stefano Campus wrote

peraltro non si può neanche fare "Processo in serie" perché non sono
previsti
tutti i campi, in particolari i parametri liberi, come -s_srs EPSG:32632
-t_srs EPSG:4326 oppure -append

Ciao Stefano,
forse non ho capito bene il problema, ma a me sembra che sia possibile
inserire parametri opzionali "liberi" sia nell'esecuzione come processo
singolo, sia nell'esecuzione come processo batch, in serie.

A presto.

Andrea

--
Sent from: http://osgeo-org.1560.x6.nabble.com/QGIS-Italian-User-f5250612.html

se non ho capito male il problema più immediato di Stefano è quello di applicare il processing a tutte le tabelle di un gpkg.
Disponendo dei parametri opzionali liberi riusciresti a risolvere tramite i batch?

Giacomo

Il giorno ven 11 giu 2021 alle ore 23:05 Andrea Giudiceandrea <andreaerdna@libero.it> ha scritto:

Stefano Campus wrote

peraltro non si può neanche fare “Processo in serie” perché non sono
previsti
tutti i campi, in particolari i parametri liberi, come -s_srs EPSG:32632
-t_srs EPSG:4326 oppure -append

Ciao Stefano,
forse non ho capito bene il problema, ma a me sembra che sia possibile
inserire parametri opzionali “liberi” sia nell’esecuzione come processo
singolo, sia nell’esecuzione come processo batch, in serie.

A presto.

Andrea


Sent from: http://osgeo-org.1560.x6.nabble.com/QGIS-Italian-User-f5250612.html


QGIS-it-user mailing list
QGIS-it-user@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/qgis-it-user

Giacomo Fontanelli-2 wrote

se non ho capito male il problema più immediato di Stefano è quello di
applicare il processing a tutte le tabelle di un gpkg.

Ciao Giacomo,
sì, indubbiamente è un problema che andrebbe risolto.

Io però mi riferivo al secondo problema riscontrato da Stefano Campus:

Stefano Campus wrote

peraltro non si può neanche fare "Processo in serie" perché non sono
previsti
tutti i campi, in particolari i parametri liberi, come -s_srs EPSG:32632
-t_srs EPSG:4326 oppure -append

Questo secondo problema, però, io non lo riscontro.

A presto.

Andrea

--
Sent from: http://osgeo-org.1560.x6.nabble.com/QGIS-Italian-User-f5250612.html

Ciao Andrea

il pannello di ogr2ogr (converti vettore) a prima vista è molto scarno in ggis processing (ammetto che non lo avevo mai usato).
Però esiste l’opzione “Parametri avanzati > opzioni di creazioni aggiuntive” in cui si può scrivere la stringa con le istruzioni supplementari che ci servono.
In https://gdal.org/programs/ogr2ogr.html ce ne sono davvero tante.

Ho seguito lo scambio di battute in https://github.com/qgis/QGIS/issues/19619.
Per quanto riguarda la possibilità di reintrodurre l’editing dello script gdal (che prima esisteva)

Dawson è stato categorico "I’d be inclined to close this as a “won’t-fix”

mah…

Giacomo

Il giorno lun 14 giu 2021 alle ore 16:42 Andrea Giudiceandrea <andreaerdna@libero.it> ha scritto:

Giacomo Fontanelli-2 wrote

se non ho capito male il problema più immediato di Stefano è quello di
applicare il processing a tutte le tabelle di un gpkg.

Ciao Giacomo,
sì, indubbiamente è un problema che andrebbe risolto.

Io però mi riferivo al secondo problema riscontrato da Stefano Campus:

Stefano Campus wrote

peraltro non si può neanche fare “Processo in serie” perché non sono
previsti
tutti i campi, in particolari i parametri liberi, come -s_srs EPSG:32632
-t_srs EPSG:4326 oppure -append

Questo secondo problema, però, io non lo riscontro.

A presto.

Andrea


Sent from: http://osgeo-org.1560.x6.nabble.com/QGIS-Italian-User-f5250612.html


QGIS-it-user mailing list
QGIS-it-user@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/qgis-it-user

ciao a tutti, scusate per il ritardo della mia risposta.
dunque, riepilogando, per convertire il formato e al contempo riproiettare
un vettore da processing si utilizza il modulo ogr2ogr che si trova nel
gruppo GDAL.
Nella modalità "diretta" ci sono tutta una serie di parametri caratteristici
di ogr2ogr che possono essere inseriti come parametro libero nella finestra.
come detto sopra, automaticamente la finestra si completa inserendo via via
le opzioni scelte.
questo è molto utile perché basta copiarsi la stringa e portarla o in un
file batch da lanciare nella shell osgeo oppure direttamente dalla shell
stessa.

questa discussione trae origine dal fatto che se si vuole trasformare tutti
i layer contenuti in un geopackage, questo non è possibile perché nella
finestra di cui sopra si nota che alla fine della stringa viene inserito il
nome della prima tabella contenuta nel geopackage di ingresso, senza
possibilità di cambiare e quindi sostanzialmente è inutilizzabile, perché
non posso indicare nelle opzioni quale tabella voglio convertire se non
inserendo (credo) un filtro where.

non va meglio nella modalità "Esegui come processo in serie" perché
l'opzione " Parametri avanzati" non c'è proprio.

ci sono scorciatoie?
beh, sì, basta caricare nella TOC tutte le tabelle di un geopackage come
layer distinti e si fa, però, non puoi fare come processo in serie perché
mancando l'opzione dei parametri avanzati non posso aggiungere -append
(-append Append to existing layer instead of creating new) che mi evita la
sovrascrittura del nuovo geopackage ad ogni conversione.

peraltro ho notato in altri moduli di GDAl il fatto che il campo delle
opzioni libero non è disponibile nella modalità "Processo in serie" (vedi il
modulo raster "Riproiezione").

quindi, secondo me, l'integrazione non è completa e non capisco la sicurezza
con la quale queste osservazioni sono state liquidate.

credo sia necessario che tutta l'interfaccia di integrazione di GDAL/OGR in
processing sia da rivedere, modulo per modulo.

s.

ps: non appesantisco la mail con le schermate di cui parlo, ma se necessario
le invio.

--
Sent from: http://osgeo-org.1560.x6.nabble.com/QGIS-Italian-User-f5250612.html

Giacomo Fontanelli-2 wrote

il pannello di ogr2ogr (converti vettore) a prima vista è molto scarno in
ggis processing (ammetto che non lo avevo mai usato).
Però esiste l'opzione "Parametri avanzati > opzioni di creazioni
aggiuntive" in cui si può scrivere la stringa con le istruzioni
supplementari che ci servono.

Infatti. Per questo rispondevo a Stefano Campus che io non riscontravo
questo problema e che forse avevo compreso male quale fosse questo problema.

Comunque il problema principale non è risolvibile, che io sappia, con le
opzioni aggiuntive.

Purtroppo la gestione dei file contenitori multilayer come GPKG,
SQLite/SpatiaLite, FileGDB, non è perfetta.

A me viene in mente in modo molto semplice per modificare l'interfaccia
dell'algoritmo in modo che, nella creazione del comando ogr2ogr, non venga
specificato il nome del layer e quindi il comando venga eseguito su tutti i
layer.

Con una piccola modifica un po' grezza si potrebbe introdurre un nuovo
parametro booleano, ALL_LAYERS, che, tramite un checkbox permetta, se
selezionato, di non inserire il nome del layer nel comando ogr2ogr.

Se vuoi, puoi testare questa piccola modifica [1] scaricando il file
ogr2ogr.py da [2] e sostituendolo (dopo averne fatto una copia) a quello
presente nella directory
qgis\apps\qgis-ltr\python\plugins\processing\algs\gdal o
qgis\apps\qgis\python\plugins\processing\algs\gdal della tua installazione
di QGIS e poi avviando QGIS.

So già che questo sistema ha delle limitazioni dovute all'infrastruttura di
processing, ma è il più semplice che mi venga in mente e che sia in grado di
implementare.

Se decidi di testarlo, fammi sapere quali criticità incontri o quali
suggerimenti ti vengono in mente per apportare dei miglioramenti.

A presto.

Andrea

[1]
https://github.com/agiudiceandrea/QGIS/commit/859df2a6c18ed54ec0d5cf40526ef2bb09b88070
[2]
https://github.com/agiudiceandrea/QGIS/blob/859df2a6c18ed54ec0d5cf40526ef2bb09b88070/python/plugins/processing/algs/gdal/ogr2ogr.py

--
Sent from: http://osgeo-org.1560.x6.nabble.com/QGIS-Italian-User-f5250612.html

grazie mille, andrea.
provo stasera.

s.

--
Sent from: http://osgeo-org.1560.x6.nabble.com/QGIS-Italian-User-f5250612.html

Stefano Campus wrote

nella modalità "Esegui come processo in serie"
l'opzione " Parametri avanzati" non c'è proprio.

Ciao Stefano,
è proprio questo che non capisco, come ho già scritto varie volte.

Infatti, anche nel processo in serie (Batch Process) è possibile specificare
le "Opzioni di creazioni aggiuntive" ("Additional creation options"):
bisogna solo attivare la modalità avanzata ("Toggle advanced mode").

A presto.

Andrea

--
Sent from: http://osgeo-org.1560.x6.nabble.com/QGIS-Italian-User-f5250612.html

:frowning:
è la prima volta che noto la "rotella" delle impostazioni avanzate...

che vergogna...

anche in "riproiezione raster" le opzioni compaiono dopo avere premuto la
rotella.

potremmo eliminare questa discussione non solo dal server ma anche dalla
memoria di tutti?
:smiley:

rimane solo da provare la modifica di andrea per la gestione di tutti i
layer del geopackage.

cazz, che figura...

s.

--
Sent from: http://osgeo-org.1560.x6.nabble.com/QGIS-Italian-User-f5250612.html

Stefano Campus wrote

:frowning:
è la prima volta che noto la "rotella" delle impostazioni avanzate...

Ho dato un'occhiata alla documentazione sull'interfaccia di batch processing
[1] e, in effetti, sembra che questa funzionalità purtroppo non sia
documentata, pur esistendo da svariati anni...

Quindi, mi sa che non sei l'unico a non essersene mai accorto!

A presto.

Andrea

[1] https://docs.qgis.org/testing/en/docs/user_manual/processing/batch.html

--
Sent from: http://osgeo-org.1560.x6.nabble.com/QGIS-Italian-User-f5250612.html