Ciao Luigi…Si, hai ragione ho continuato per sbaglio a inviarti messaggi solo a te e non all’intero gruppo…
Dovete scusarmi e avere pazienza, sono alle prime armi.
Comunque avevo il problema di non sapere come si potesse connettere il plugin che sto sviluppando con il PyQT al mio Geo-DB realizzato in PostGIS.
Poi grazie ai consigli di Luigi la connessione al PostGis da applicazione WindowDialog realizzata con il QT creator e il PyQgis, sono riuscito a farla e funziona dato che sono riuscito anche a fare una prima semplice query di interrogazione.
In realta’ mi sembra che le query SQL si possano fare normalmente e anche a livello medio-alto. Volendo le si puo’ anche autogenerare dai legami che puoi fare tra le tabelle all’interno del PostGIS stesso (in cui hai il tuo Geo-DB chiaramente). Funziona un po’ come Access e dal punto di vista della programmazione a oggetti e’ molto simile al Visual Studio.NET, con la differenza che sia quest’ultimo che Access costano un botto e non sono specifici per gestire dati geo-spaziali mentre il PostgreSQL con ext. PostGIS lo e’, oltre che ad essere chiaramente un prodotto Open Source ;-)!!!
Quindi volendo puoi anche fare i legami tra i campi delle tue tabelle in PostGis, vedere il codice SQL autogenerato, copiarlo e salvarlo in una normale variabile “string” nel tuo codice di sviluppo PyQgis del tuo plugin o applicativo e poi lanciarlo realizzando un semplice “button” nell’interfaccia grafica WindowDialog del QT creator.
Il QT design che viene gia’ scaricato nel “pacchetto Osgeo” e che dovrebbe essere specifico e customizzato sul QGis invece mi sembra paradossalmente piu’ complesso da usare rispetto l’associazione QT creator + Notepad++…
Sarebbe bello che in una futura nuova versione del QGis ci sia gia’ una piattaforma interna di sviluppo, con le API e le librerie fondamentali gia’ importate di default. Una sorta di “VisualPyQgis Creator”…
Pero’ non so se e’ una cosa fattibile oppure molto complessa e articolata…
E’ un’idea.
Grazie ancora, per ora problema risolto!
Andrea Gagna.
Il 29/feb/2016 14:54 “Andrea Gagna” <g.andre87@gmail.com> ha scritto:
Comunque mi sembra che Io ho scritto sulla lista utenti.
Comunque ok ti ringrazio; ho visto anche cosa fa il QgsFeatureRequest ed e’ interessante ma non risolve la mia necessita’, che e’ quella di poter scrivere Query in SQL…
A questo link della documentazione ufficiale mette le espressioni QGis SQL…ma non le capisco perche’ non e’ un normale SQL…
Link: http://docs.qgis.org/testing/en/docs/pyqgis_developer_cookbook/expressions.html#expressions
Quindi non capisco bene…
Io capisco che ci siano materiali, tutorial infiniti, etc…ma penso sia normale che il 90% delle domande che un utente non esperto fa qui siano gia’ state risolte…(anche se la mia e’ solo parzialmente risolta.)
Il problema per chi come me non e’ esperto e’ anche capire come muoversi.
Grazie comunque.
-
scrivere anche sulla lista utenti… cosi’ chi ha lo stesso
problema trova le risposte senza fare mille volte le stesse domende
-
la where filtra gia’ lato server… cosa che non conviene se vuoi
layer che cambino con la queri… ti consiglio di usare
QgsFeatureRequest come da:
http://docs.qgis.org/testing/en/docs/pyqgis_developer_cookbook/vector.html
in definitiva una volta che hai il layer, che sia su file o remoto a
qgis non fa ne caldo ne freddo (+o-)
inoltre ci sono una quintalata di plugin per postgres/postgis ben
fatti… puoi leggere il codice direttametne da quelli (ma leggi prima
il cookbook)
ci sono anceh libri che ti guidano passo passo.
non ho studiato il codice del plugin di postgres su Ferraguti… ma mi
sembra da studiare
una cosa basica… leggere il manuale! e verificare che la stessa
domanda non sia stata fatta e risolta su gis.stackexchange.com
Luigi Pirelli
2016-02-29 11:48 GMT+01:00 Andrea Gagna <g.andre87@gmail.com>:
Ciao Luigi,
Ti ringrazio per avermi rimandato alla parte di doc. ufficiale che ne parla.
Quindi devo scrivere questo codice con i riferimenti della mia connessione
PostGIS:
uri = QgsDataSourceURI()
set host name, port, database name, username and password
uri.setConnection(“localhost”, “5432”, “dbname”, “johny”, “xxx”)
set database schema, table name, geometry column and optionally
subset (WHERE clause)
uri.setDataSource(“public”, “roads”, “the_geom”, “cityid = 2643”)
vlayer = QgsVectorLayer(uri.uri(), “layer name you like”, “postgres”)
La cosa che non capisco bene e’ la fase di filtro; in questo esempio lo fa
con un semplicissimo “WHERE” e ok.
Se volessi fare Query piu’ complesse che formato posso usare? l’SQL non lo
posso fare se voglio fare dei JOIN ad esempio??
Grazie.
Il 29/feb/2016 11:27 “Luigi Pirelli” <luipir@gmail.com> ha scritto:
http://docs.qgis.org/testing/en/docs/pyqgis_developer_cookbook/loadlayer.html#vector-layers
Luigi Pirelli
2016-02-29 11:13 GMT+01:00 Andrea Gagna <g.andre87@gmail.com>:
Ciao a tutti;
Sto sviluppando un plugin del QGis che mi consenta “semplicemente”, di
gestire il mio Geo-DB realizzato in PostGIS.
Sono riuscito a creare la WindowDialog con il QT (e python come
linguaggio
per gli script) e a caricarla nel QGis.
A questo punto gli ho aggiunto un oggetto Button che vorrei, quando
viene
cliccato, che ti permetta di connetterti al mio GeoDB di PostGis, cosi’
poi
da poter inserire nel mio plugin delle routine e script Python che
“lavorino” sugli attributi delle tabelle del mio Geo-DB.
In particolare mi interessa poterci fare delle Query SQL, di “filtro”
essenzialmente e che esse possano chiaramente essere lanciate da un
utente
qualsiasi con dei click o flag sulla Window principale.
Il problema e’ che non trovo il codice pyQgis che mi consenta di fare la
connessione al Geo-DB.
Ma secondo voi per fare un lavoro di questo tipo sarebbe piu’ semplice
usare
il PyQGis direttamente dal QGis, nella console apposita o tramite
plugin?
Quindi lasciar perdere il PostGIS e agire sui layers caricati e presenti
nel
progetto e quindi fare delle query (sempre SQL suppongo) sulle loro tab
attributi??
Grazie.
Andrea Gagna
QGIS-it-user mailing list
QGIS-it-user@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/qgis-it-user