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? :) Ciao a tutti! |
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? :) 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. _______________________________________________ [hidden email] http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss Questa e' una lista di discussione pubblica aperta a tutti. I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it. 666 iscritti al 22.7.2013 |
> 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. _______________________________________________ [hidden email] http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss Questa e' una lista di discussione pubblica aperta a tutti. I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it. 666 iscritti al 22.7.2013 |
In reply to this post by Flavio Rigolon
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 :) |
In reply to this post by Flavio Rigolon
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 :) Grazie! |
In reply to this post by Flavio Rigolon
Mm.. niente, è troppo macchinoso farlo elemento per elemento in tabelle dove ho più di 100 campi.. :(
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! |
2014-03-20 14:24 GMT+01:00 NicoPez <[hidden email]>:
> Mm.. niente, è troppo macchinoso farlo elemento per elemento in tabelle dove > ho più di 100 campi.. :( > > 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 _______________________________________________ [hidden email] http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss Questa e' una lista di discussione pubblica aperta a tutti. I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it. 666 iscritti al 22.7.2013 |
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 :p Per utilizzare il supporto SQL Join devo per caso scaricare qualche pacchetto? Grazie mille |
2014-03-24 9:23 GMT+01:00 NicoPez <[hidden email]>:
> 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 :p > 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 _______________________________________________ [hidden email] http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss Questa e' una lista di discussione pubblica aperta a tutti. I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it. 666 iscritti al 22.7.2013 |
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! :) Grazie! |
2014-03-25 11:38 GMT+01:00 NicoPez <[hidden email]>:
> 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 _______________________________________________ [hidden email] http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss Questa e' una lista di discussione pubblica aperta a tutti. I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it. 666 iscritti al 22.7.2013 |
Molto interessante.. sicuramente sarà il prossimo passo. :) 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 :) |
2014-03-28 10:27 GMT+01:00 NicoPez <[hidden email]>:
> 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 _______________________________________________ [hidden email] http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss Questa e' una lista di discussione pubblica aperta a tutti. I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it. 666 iscritti al 22.7.2013 |
Free forum by Nabble | Edit this page |