Suite

Plugin QGIS : se connecter aux signaux polygonselect de Maptool

Plugin QGIS : se connecter aux signaux polygonselect de Maptool


En travaillant sur un nouveau plugin, j'essaie de connecter une fonction personnalisée au signal du clic droit de la souris tout en utilisant l'outil de sélection de polygone.

J'ai activé le maptool via :

def run(self): self.iface.actionSelectPolygon().trigger()

Et j'aimerais maintenant connecter ma fonction selectSite à un canvasReleaseEvent ou un signal similaire. À partir d'un tutoriel intéressant ici, j'ai adapté le code et essayé la ligne ci-dessous qui a échoué :

def run(self): self.iface.actionSelectPolygon().trigger() result = QObject.connect(self.canvas.mapTool(), SIGNAL("canvasReleaseEvent()"), self.selectSite) def selectSite(self): QMessageBox.information( self.iface.mainWindow(),"Info", "dans la fonction selectSite" )

Existe-t-il un autre moyen de se connecter à un signal de clic de souris Qt plus générique ?

Des idées ou des conseils sur la façon dont je peux atteindre mon objectif ?


ArcGIS

J'avais évoqué dans le dernier post le passage à spatialite pour la classe Intro to QGIS. J'avais beaucoup de conduite à faire il y a quelques nuits, alors j'ai commencé à en dessiner davantage. La deuxième pensée était que j'allais utiliser les mêmes données que celles que j'utilise pour la classe QGIS. Ce qui me laisse en fait avec une pile de données avec lesquelles j'ai joué ces derniers temps, ce qui était ma première par coïncidence : J'AI DÉJÀ TÉLÉCHARGÉ DES DONNÉES QUE JE NE VAIS PAS UTILISER DANS LA CLASSE.

Donc, je vais faire une série d'articles de blog sur Spatialite, QGIS, des choses en général pendant que je me débrouille avec cette idée de classe/tutoriel.

Donc, juste pour commencer le jeu aussi équitablement que possible :

  • Shapefiles : Vous allez avoir au moins trois fichiers qui seront .shp .shx et .dbf. Étant donné que ce format remonte au début des années 90 (pour autant que je sache, une recherche rapide sur wikipédia m'a conduit dans cette voie), il utilise dbf pour stocker des données. Vous êtes donc limité à 10 caractères pour les champs et vous avez également une limite de 2 Go. Vous les trouvez partout et presque tout les lit. Si vous deviez dire “J'ai besoin d'un format de fichier, tout peut être lu/écrit” – et bien – vous l'avez.
  • Spatialite : SQLite est une base de données de fichiers. Spatialite étend le noyau de SQLite pour stocker la géométrie. Vous avez un fichier. Habituellement, ce fichier a une extension .sqlite ou parfois une extension .db. C'est nouveau (ish) avec une apparence de 2008. C'est l'une de ces choses qui ont longtemps été dites : cela tuera le fichier de formes et ce n'est pas le cas. Principalement parce qu'ESRI va les lire et les éditer est une toute autre histoire. La grande chose dont vous devez être conscient est que le dernier nouveau venu sur le bloc s'appelle Geopackage et il est construit autour de spatialite. Avec Geopackage, tout devrait pouvoir lire et écrire dans un format commun. Il n'y a pas beaucoup de limite de fichier avec spatialite –, vous pouvez donc dépasser la barre des 2 Go sans vous en soucier.

Chattanooga a un site de données ouvertes. Sur le site de données ouvertes, nous avons publié des données sur la criminalité qui montrent que les gens ont vraiment besoin d'être plus gentils les uns envers les autres. Je l'ai attrapé. Je l'ai exporté au format CSV et de là, transféré à QGIS.

Je l'ai ouvert dans QGIS (à l'aide de l'outil d'ajout de couche de texte délimité) pour l'examiner et 155240 fonctionnalités plus tard :

De beaux noms de colonnes longs et il contient beaucoup d'informations. Je vais le vider dans le fichier de formes :

….et troncature de colonne, mais la taille du fichier est tombée à environ 4,5 Mo et le temps d'affichage est bon. Il faut environ 2 à trois secondes pour s'actualiser. Je veux vraiment que mes données restent intactes bien que je n'aime pas que ma colonne CodeDescription se soit renommée CodeDescri.

Donc, avec QGIS, je vais enregistrer mon fichier CSV en tant que Spatialite. Pour convertir/projeter des données dans QGIS, cliquez dessus avec le bouton droit de la souris et accédez à “Enregistrer sous…” :

La conversion elle-même n'est donc pas fulgurante. Je n'ai pas chronométré, mais c'était près de 40 secondes et c'est juste assez long pour vous inquiéter. La base de données spatialite s'enregistre à 53Mb. Un peu plus du double du csv d'origine mais pas horrible. J'ai gardé les noms de colonnes intacts.

OK Randy, vous avez pris un fichier CSV et l'avez jeté dans QGIS, puis jeté dans quelque chose et je ne peux pas le lire dans ArcGIS.

La seule capture d'écran des données que vous obtiendrez sera celle d'ArcMap (Arcview 10.3.1). Notez que vous ne pouvez pas le modifier mais vous pouvez le lire (beaucoup mieux que ma dernière vérification avec 10.2.2)

Et ensuite ? Qu'y a-t-il de si génial dans le fait de transférer vos données des fichiers de formes vers Spatialite ? POURQUOI?

Ces réponses et bien d'autres apparaissent dans la partie II.


Voir la vidéo: Vector to raster conversion in QGIS