[Gfoss] Ottimizzare "informazione elementi"

Buongiorno a tutti. E' una domanda che mi frulla in mente da parecchio e
volevo chiedere a voi se sia possibile.

Io ho dei vettori poligonali che interagiscono attraverso il join con
diverse tabelle. Se vado a chiedere informazioni di un poligono del vettore
attraverso il tool "informazione elementi" mi si apre la solita finestra con
tutti gli elementi presenti nelle tabelle. Se ad esempio faccio il join con
10 tabelle, avrò la lista di tutti i campi di tutte e 10 le tabelle e quindi
una lista molto lunga di informazioni.
Ma se molte di queste informazioni sono campi vuoti è possibile modificare
in qualche maniera il tool di richiesta informazioni in modo che mi
visualizzi solo i campi in cui è presente un'informazione o magari solo i
campi che decido di far visualizzare?
Renderebbe tutto più snello e pratico, non credete? :slight_smile:

Ciao a tutti!

--
View this message in context: http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/Ottimizzare-informazione-elementi-tp7587297.html
Sent from the Gfoss -- Geographic Free and Open Source Software - Italian mailing list mailing list archive at Nabble.com.

ciao Nicola,

Io ho dei vettori poligonali che interagiscono attraverso il join con
diverse tabelle. Se vado a chiedere informazioni di un poligono del vettore
attraverso il tool "informazione elementi" mi si apre la solita finestra con
tutti gli elementi presenti nelle tabelle. Se ad esempio faccio il join con
10 tabelle, avrò la lista di tutti i campi di tutte e 10 le tabelle e quindi
una lista molto lunga di informazioni.
Ma se molte di queste informazioni sono campi vuoti è possibile modificare
in qualche maniera il tool di richiesta informazioni in modo che mi
visualizzi solo i campi in cui è presente un'informazione o magari solo i
campi che decido di far visualizzare?
Renderebbe tutto più snello e pratico, non credete? :slight_smile:

non l'ho mai fatto con tabelle collegate via join ma prova a fare così:
- apri le proprieta' del layer;
- scheda "campi";
- nella colonna "widget per la modifica" dovresti trovare come valore
"modifica valore";
- click su questo pulsante e si apre una finestra;
- seleziona "Nascosto" e dai OK;
- fallo per ogni campo che vuoi nascondere.

hth
ciao
flavio

--
/"\ ASCII Ribbon Campaign
\ / Respect for low technology.
X Keep e-mail messages readable by any computer system.
/ \ Keep it ASCII.

hth
ciao
flavio

chiedo scusa: davo per scontato stessi lavorando su QGIS...

ciao
flavio
--
/"\ ASCII Ribbon Campaign
\ / Respect for low technology.
X Keep e-mail messages readable by any computer system.
/ \ Keep it ASCII.

Ciao! Scusa tu.. non avevo detto che ero in QGIS.

Ho capito la procedura che mi dicevi. Ma così facendo, dovrei andare a
vedere le caselle nulle su quale colonna si trova e andare di volta in volta
a nascondere il campo interessato.

Però dato che queste tabelle fanno i join su diversi layer poligonali, in
alcuni casi quel campo deve stare nascosto perché non ha nessun dato, in
altri no perché sono presenti dei dati. Per quello sarebbe utile riuscire
tipo a "filtrare" tutti i campi dove sono presenti dei dati e farmeli vedere
ed escludere gli altri.

Non so se sono riuscito a spiegarmi :slight_smile:

--
View this message in context: http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/Ottimizzare-informazione-elementi-tp7587297p7587310.html
Sent from the Gfoss -- Geographic Free and Open Source Software - Italian mailing list mailing list archive at Nabble.com.

Studiandomi bene la procedura che mi descrivi sopra, potrebbe essere anche
un'ottima strada.

C'è un modo per modificare nel "widget per la modifica" i campi a gruppi?
Perché se ho 100 campi da nascondere, farlo 1 per 1 comincia a diventare
snervante :slight_smile:

Grazie!

--
View this message in context: http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/Ottimizzare-informazione-elementi-tp7587297p7587337.html
Sent from the Gfoss -- Geographic Free and Open Source Software - Italian mailing list mailing list archive at Nabble.com.

Mm.. niente, è troppo macchinoso farlo elemento per elemento in tabelle dove
ho più di 100 campi.. :frowning:

La migliore strada sarebbe proprio la possibilità di filtrare solo i
risultati non nulli quando vado a richiedere le informazioni di un poligono
con il tasto "informazioni elementi".

Nessuno sa come fare?
Grazie mille!

--
View this message in context: http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/Ottimizzare-informazione-elementi-tp7587297p7587380.html
Sent from the Gfoss -- Geographic Free and Open Source Software - Italian mailing list mailing list archive at Nabble.com.

2014-03-20 14:24 GMT+01:00 NicoPez <nico.pezzotta@gmail.com>:

Mm.. niente, è troppo macchinoso farlo elemento per elemento in tabelle dove
ho più di 100 campi.. :frowning:

La migliore strada sarebbe proprio la possibilità di filtrare solo i
risultati non nulli quando vado a richiedere le informazioni di un poligono
con il tasto "informazioni elementi".

Nessuno sa come fare?
Grazie mille!

Che formato dati stai usando?
Se usi PostGIS o Spatialite e non devi fare operazione di editing
potresti risolvere il problema con una vista.
Con shapefile o altro potresti provare a crearti un virtual layer con
GDAL/OGR sfruttando il nuovo supporto SQL Join [1]
ciao
p

[1] http://www.gdal.org/ogr/ogr_sql.html

--
Paolo Corti
Geospatial software developer
web: http://www.paolocorti.net
twitter: @capooti
skype: capooti

Ciao Paolo e grazie per la risposta!
I miei dati sono in dbf che poi vanno in join con dei shapefile.
La soluzione da te indicata in fondo è molto interessante, stavo leggendo
l'argomento sul link che hai aggiunto. Non è che puoi indicarmi come fare?
Perché non ho ancora un livello così avanzato :stuck_out_tongue:
Per utilizzare il supporto SQL Join devo per caso scaricare qualche
pacchetto?

Grazie mille

--
View this message in context: http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/Ottimizzare-informazione-elementi-tp7587297p7587432.html
Sent from the Gfoss -- Geographic Free and Open Source Software - Italian mailing list mailing list archive at Nabble.com.

2014-03-24 9:23 GMT+01:00 NicoPez <nico.pezzotta@gmail.com>:

Ciao Paolo e grazie per la risposta!
I miei dati sono in dbf che poi vanno in join con dei shapefile.
La soluzione da te indicata in fondo è molto interessante, stavo leggendo
l'argomento sul link che hai aggiunto. Non è che puoi indicarmi come fare?
Perché non ho ancora un livello così avanzato :stuck_out_tongue:
Per utilizzare il supporto SQL Join devo per caso scaricare qualche
pacchetto?

Grazie mille

Ciao

Supponendo che tu abbia uno shapefile e una tabella dbf da joinare
cosi costituiti (il driver vrt supporta comunque qualsiasi formato
vettoriale di OGR, quindi potresti joinare un layer postgis con un dbf
o uno shapefile con un file csv, tanto per fare due esempi):

layer.shp
* id
* field1
* field2

table.dbf
* id
* field1
* field2

Ipotizzando che tu voglia joinare queste due entita' e visualizzare il
solo campo field1 di layer.shp e field2 di table.dbf, creati un file
joined_layer.vrt cosi fatto:

<OGRVRTDataSource>
    <OGRVRTLayer name="layer">
        <SrcDataSource>layer.shp</SrcDataSource>
        <SrcSQL>SELECT layer.field1, table.field2 FROM layer LEFT JOIN
'table.dbf'.table ON layer.id = table.layer_id</SrcSQL>
    </OGRVRTLayer>
</OGRVRTDataSource>

Ora aggiungi tale file a QGIS come virtual layer: interrogando le
singole feature o aprendo la tabella attributi dovresti vedere solo i
campi layer.field1 e table.field2.

Ciao
p

--
Paolo Corti
Geospatial software developer
web: http://www.paolocorti.net
twitter: @capooti
skype: capooti

Grazie! Ho capito il procedimento.. appena posso mi ci applico e vi faccio
sapere.

Però mi è sorto un dubbio. Così facendo, in entrambi i procedimenti (sia
virtual layer, che postgis), posso andare a nascondere le colonne
interamente nulle.
Ma se io in pratica ho un layer vettoriale che fa join con un dbf (o altro)
nella maniera che mi hai descritto, e su questo dbf ci sono alcune colonne
che hanno campi vuoti e campi pieni per diversi poligoni, quando, ad
esempio, vado a chiedere le informazioni di un certo poligono A1 avrò magari
tutta la lista compilata nella finestra informativa (perché per quel
poligono tutti i campi sono non nulli), mentre quando andrò a interrogare un
certo poligono B2 nella finestra avrò solo due righe compilate e tutte le
restanti nulle (proprio perché quel poligono ha molti campi nulli).
E' possibile appunto riuscire a nascondere questi campi nulli di volta in
volta in automatico?

Spero di essermi riuscito a spiegare, anche se non molto certo! :slight_smile:

Grazie!

--
View this message in context: http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/Ottimizzare-informazione-elementi-tp7587297p7587462.html
Sent from the Gfoss -- Geographic Free and Open Source Software - Italian mailing list mailing list archive at Nabble.com.

2014-03-25 11:38 GMT+01:00 NicoPez <nico.pezzotta@gmail.com>:

Grazie! Ho capito il procedimento.. appena posso mi ci applico e vi faccio
sapere.

Però mi è sorto un dubbio. Così facendo, in entrambi i procedimenti (sia
virtual layer, che postgis), posso andare a nascondere le colonne
interamente nulle.
Ma se io in pratica ho un layer vettoriale che fa join con un dbf (o altro)
nella maniera che mi hai descritto, e su questo dbf ci sono alcune colonne
che hanno campi vuoti e campi pieni per diversi poligoni, quando, ad
esempio, vado a chiedere le informazioni di un certo poligono A1 avrò magari
tutta la lista compilata nella finestra informativa (perché per quel
poligono tutti i campi sono non nulli), mentre quando andrò a interrogare un
certo poligono B2 nella finestra avrò solo due righe compilate e tutte le
restanti nulle (proprio perché quel poligono ha molti campi nulli).
E' possibile appunto riuscire a nascondere questi campi nulli di volta in
volta in automatico?

Se non ho capito male, vuoi far vedere dinamicamente solo i campi che
contentono almeno un record con valore non nullo.
Non puoi farlo, come da te ipotizzato, con i metodi prospettati.
Se puoi scrivere codice con Python e pyqgis, potresti crearti un tuo
tool di identificazione customizzato, magari partendo dalla classe
QGSMapToolIdentify, modificando l'output della funzione IdentifyResult

ciao
p

[1] http://qgis.org/api/2.2/classQgsMapToolIdentify.html#details

--
Paolo Corti
Geospatial software developer
web: http://www.paolocorti.net
twitter: @capooti
skype: capooti

Molto interessante.. sicuramente sarà il prossimo passo. :slight_smile: Ma dovrò
studiarmi un po' di roba visto che non l'ho mai fatto!

Grazie mille Paolo!

Intanto stavo utilizzando SpatialiteSQL e visto che è la prima volta che mi
metto a far ciò, volevo chiederti se potresti darmi una mano. Ho caricato i
2 layer che mi interessano: il 1° (Foglio_1Ok2) è un layer vettoriale
geometrico, il 2° (T0) è di dati. Per vedere se ottengo i risultati che mi
interessano col join ho eseguito il seguente comando:

Select *
from Foglio_1Ok2 As F1
Left Join T0 As Terreni On (F1.ID_CATASTO = Terreni.A0_Id_Catasto);

Però ora, so che sarà una domanda banale, come faccio a salvare questo
risultato in una nuova tabella? Non ho bisogno di una "view" ma un vero e
proprio layer vettoriale nuovo. Pensavo che sicuramente dovrò fare un CREATE
TABLE, ma come posso immettere il join all'interno del CREATE TABLE? Non ho
trovato nulla sulla rete di esauriente.

Grazie mille :slight_smile:

--
View this message in context: http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/Ottimizzare-informazione-elementi-tp7587297p7587521.html
Sent from the Gfoss -- Geographic Free and Open Source Software - Italian mailing list mailing list archive at Nabble.com.

2014-03-28 10:27 GMT+01:00 NicoPez <nico.pezzotta@gmail.com>:

Intanto stavo utilizzando SpatialiteSQL e visto che è la prima volta che mi
metto a far ciò, volevo chiederti se potresti darmi una mano. Ho caricato i
2 layer che mi interessano: il 1° (Foglio_1Ok2) è un layer vettoriale
geometrico, il 2° (T0) è di dati. Per vedere se ottengo i risultati che mi
interessano col join ho eseguito il seguente comando:

Select *
from Foglio_1Ok2 As F1
Left Join T0 As Terreni On (F1.ID_CATASTO = Terreni.A0_Id_Catasto);

Però ora, so che sarà una domanda banale, come faccio a salvare questo
risultato in una nuova tabella? Non ho bisogno di una "view" ma un vero e
proprio layer vettoriale nuovo. Pensavo che sicuramente dovrò fare un CREATE
TABLE, ma come posso immettere il join all'interno del CREATE TABLE? Non ho
trovato nulla sulla rete di esauriente.

Non conosco bene Spatialite, ma dovrebbe essere cosi:

CREATE TABLE nuova_tabella AS
   Select *
   from Foglio_1Ok2 As F1
   Left Join T0 As Terreni On (F1.ID_CATASTO = Terreni.A0_Id_Catasto);

e a quel punto registri la colonna geografica del layer usando AddGeometryColumn

ciao
p

--
Paolo Corti
Geospatial software developer
web: http://www.paolocorti.net
twitter: @capooti
skype: capooti

Grazie mille :slight_smile:

--
View this message in context: http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/Ottimizzare-informazione-elementi-tp7587297p7587587.html
Sent from the Gfoss -- Geographic Free and Open Source Software - Italian mailing list mailing list archive at Nabble.com.