ciao a tutti,
sono riuscito a far partire un'applicazione standalone basata su qgis, seguendo la guida qgis-1.6.0_coding-compilation_guide_en.pdf; sembra tutto a posto ma quando carico un layer (che sono certo essere corretto in quanto qGis lo legge perfettamente) questo non supera il controllo di validità; indagando ho visto che non ha dataProvider (None); dove potrei cercare l'intoppo? grazie, ciao, giuliano PS: se servissero, quì sono le linee coinvolte: ........ # Add an OGR layer to the map def addLayer(self): file = QFileDialog.getOpenFileName(self, "Open Shapefile", ".", "Shapefiles (*.shp)") fileInfo = QFileInfo(file) print "file:", file (*) print "fileInfo:", fileInfo (*) print "fileInfo.filename():", fileInfo.fileName() (*) # Add the layer layer = QgsVectorLayer(file, fileInfo.fileName(), "ogr") print "layer:", layer (*) print "layer data provider:", layer.dataProvider() (*) print "layer validity:", layer.isValid() (*) if not layer.isValid(): print "oops: the layer is not valid" return ++++++++ il codice si ferma qui ++++++++++++++ # Change the color of the layer to gray symbols = layer.renderer().symbols() symbol = symbols[0] symbol.setFillColor(QColor.fromRgb(192,192,192)) # Add layer to the registry QgsMapLayerRegistry.instance().addMapLayer(layer); ..... (*) aggiunte da me per indagare l'errore; _______________________________________________ [hidden email] http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss Questa e' una lista di discussione pubblica aperta a tutti. Non inviate messaggi commerciali. I messaggi di questa lista non rispecchiano necessariamente le posizioni dell'Associazione GFOSS.it. 584 iscritti al 7.4.2012 |
Ciao Giuliano,
On Monday, April 16, 2012, giuliano su Tiscali <[hidden email]> wrote: > non supera il controllo di validità [snip] > if not layer.isValid(): > print "oops: the layer is not valid" > return ++++++++ il codice si ferma qui ++++++++++++++ i layer sono non validi perché probabilmente l'applicazione non riesce a caricare le librerie contenenti i provider. Purtoppo le linee che hai postato non sono utili in questo caso. Dovresti postare le linee nelle quali fai il setup dell'applicazione standalone. Probabilmente basterà cambiare il path che hai passato alla QgsApplication.setPrefix() per risolvere il problema, ma senza ulteriori informazioni sull'OS e sulla tua installazione di QGis è parecchio complicato. Se sei su linux prova /usr o /usr/local. Saluti. -- Giuseppe Sucameli _______________________________________________ [hidden email] http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss Questa e' una lista di discussione pubblica aperta a tutti. Non inviate messaggi commerciali. I messaggi di questa lista non rispecchiano necessariamente le posizioni dell'Associazione GFOSS.it. 584 iscritti al 7.4.2012 |
On Tue, 17 Apr 2012 23:00:21 +0200
Giuseppe Sucameli <[hidden email]> wrote: > Ciao Giuliano, ciao (e grazie) Giuseppe :-) > > On Monday, April 16, 2012, giuliano su Tiscali <[hidden email]> wrote: > > non supera il controllo di validità > [snip] > > if not layer.isValid(): > > print "oops: the layer is not valid" > > return ++++++++ il codice si ferma qui ++++++++++++++ > > i layer sono non validi perché probabilmente l'applicazione > non riesce a caricare le librerie contenenti i provider. > > Purtoppo le linee che hai postato non sono utili in questo > caso. Dovresti postare le linee nelle quali fai il setup > dell'applicazione standalone. > > Probabilmente basterà cambiare il path che hai passato alla > QgsApplication.setPrefix() per risolvere il problema, ma senza > ulteriori informazioni sull'OS e sulla tua installazione di QGis è > parecchio complicato. > Se sei su linux prova /usr o /usr/local. sì, scusa, ma sai che è facile perdersi in un bicchiere d'acqua .... ho la 1.9.90alpha su linuz debian wheezy; alla tua ipotesi circa il path ci avevo pensato; qgis è installato in /usr/share/qgis e /usr/lib/qgis; ho provato con entrambi (qgis_prefix = '/usr/share/qgis/' e qgis_prefix = '/usr/lib/qgis/') senza risultato, però potrebbe non essere questo il parametro determinante; ma non so cos'altro provare dopo aver letto Martin D. in originale e tradotto; metto sotto l'__init__(), l'addLayer() e il main() per adesso (non vorrei disturbare gli altri con un centinaio di linee): > Saluti. > > Giuseppe Sucameli grazie ancora, ciao, giuliano def __init__(self): QMainWindow.__init__(self) self.setWindowTitle("QGIS Demo App") # Required by Qt4 to initialize the UI self.setupUi(self) # Create the map canvas self.canvas = QgsMapCanvas() self.canvas.setCanvasColor(QColor(230,230,255)) self.canvas.enableAntiAliasing(True) self.canvas.useImageToRender(False) self.canvas.show() # Lay our widgets out in the main window using a # vertical box layout self.layout = QVBoxLayout(self.frame) self.layout.addWidget(self.canvas) # Create the actions for our tools and connect each to the appropriate method actionQuit = QAction(QIcon(qgis_icons_prefix + "actionExit.png"), "Quit", self) ...... seguono altre actions ........ # Add an OGR layer to the map def addLayer(self): file = QFileDialog.getOpenFileName(self, "Open Shapefile", ".", "Shapefiles (*.shp)") fileInfo = QFileInfo(file) # Add the layer layer = QgsVectorLayer(file, fileInfo.fileName(), "ogr") if not layer.isValid(): print "oops: the layer is not valid" return *************** non passa mai questo test ******************* # Change the color of the layer to gray symbols = layer.renderer().symbols() symbol = symbols[0] symbol.setFillColor(QColor.fromRgb(192,192,192)) # Add layer to the registry QgsMapLayerRegistry.instance().addMapLayer(layer); # usare addMapLayers(layer_list) # QgsMapLayerRegistry.addMapLayer(layer); # Set extent to the extent of our layer self.canvas.setExtent(layer.extent()) # Set up the map canvas layer set cl = QgsMapCanvasLayer(layer) layers = [cl] self.canvas.setLayerSet(layers) def main(argv): # create Qt application app = QApplication(argv) # Initialize qgis libraries QgsApplication.setPrefixPath(qgis_prefix, True) QgsApplication.initQgis() # create main window wnd = MainWindow() # Move the app window to upper left wnd.move(100,100) wnd.show() # --- per vedere le librerie usate di default ------- # ---- quelle di QT -------------------------------- # for tmp in app.instance().libraryPaths(): # print tmp # ---- restituisce: ----------------------------- # /usr/lib/qt4/plugins # /usr/bin # ---- quelle di qGis: ----------------------------- # for tmp in QgsApplication.instance().libraryPaths(): # print tmp # ---- restituisce le stesse: ---------------------- # /usr/lib/qt4/plugins # /usr/bin # run! retval = app.exec_() # exit QgsApplication.exitQgis() sys.exit(retval) if __name__ == "__main__": main(sys.argv) _______________________________________________ [hidden email] http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss Questa e' una lista di discussione pubblica aperta a tutti. Non inviate messaggi commerciali. I messaggi di questa lista non rispecchiano necessariamente le posizioni dell'Associazione GFOSS.it. 584 iscritti al 7.4.2012 |
Ciao,
2012/4/17 giuliano su Tiscali <[hidden email]>: > On Tue, 17 Apr 2012 23:00:21 +0200 > alla tua ipotesi circa il path ci avevo pensato; qgis è installato > in /usr/share/qgis e /usr/lib/qgis; ho provato con entrambi > (qgis_prefix = '/usr/share/qgis/' e qgis_prefix = '/usr/lib/qgis/') ho trovato un metodo piu' semplice del tirare ad indovinare: imposta il valore di qgis_prefix allo stesso path che viene restituito chiamando dalla python console di QGis il seguente comando: QgsApplication.prefixPath() il cui risultato probabilmente sara' /usr Saluti. -- Giuseppe Sucameli _______________________________________________ [hidden email] http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss Questa e' una lista di discussione pubblica aperta a tutti. Non inviate messaggi commerciali. I messaggi di questa lista non rispecchiano necessariamente le posizioni dell'Associazione GFOSS.it. 584 iscritti al 7.4.2012 |
chiedo scusa Giuseppe: nella fretta non mi sono accorto
dell'indirizzo :-( scusa ancora; On Wed, 18 Apr 2012 00:08:19 +0200 Giuseppe Sucameli <[hidden email]> wrote: > Ciao, > > 2012/4/17 giuliano su Tiscali <[hidden email]>: > > On Tue, 17 Apr 2012 23:00:21 +0200 > > alla tua ipotesi circa il path ci avevo pensato; qgis è installato > > in /usr/share/qgis e /usr/lib/qgis; ho provato con entrambi > > (qgis_prefix = '/usr/share/qgis/' e qgis_prefix = '/usr/lib/qgis/') > > ho trovato un metodo piu' semplice del tirare ad indovinare: > > imposta il valore di qgis_prefix allo stesso path che viene restituito > chiamando dalla python console di QGis il seguente comando: > > QgsApplication.prefixPath() > > il cui risultato probabilmente sara' > > /usr accidenti, nemmeno Nembo Kid così rapido e preciso: sì: con quel comando si ottiene '/usr' (nella mia situazione) e con questo il test sul file viene superato (purtroppo non visualizzo ancora nulla, ma intanto ho fatto un altro passo avanti); non sarebbe il caso di tenere traccia della cosa, o aggiungendola al lavoro di Pasquale o mettendolo nel wiki ? (un pò di fatica risparmiata per gli altri newbies.... o sono il solo :-) > Saluti. > > -- > Giuseppe Sucameli grazie ancora, ciao, giuliano _______________________________________________ [hidden email] http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss Questa e' una lista di discussione pubblica aperta a tutti. Non inviate messaggi commerciali. I messaggi di questa lista non rispecchiano necessariamente le posizioni dell'Associazione GFOSS.it. 584 iscritti al 7.4.2012 |
Free forum by Nabble | Edit this page |