Important
La traduction est le fruit d’un effort communautaire auquel vous pouvez vous joindre. Cette page est actuellement traduite à 100.00%.
5.4. Leçon : Actions
Maintenant que vous avez vu une action par défaut dans la leçon précédente, il est temps de définir vos propres actions.
Une action est une chose qui se produit lorsque vous cliquez sur une entité. Elle peut ajouter beaucoup de fonctionnalités supplémentaires à votre carte, vous permettant de récupérer des informations supplémentaires sur un objet, par exemple. L’attribution d’actions peut ajouter une toute nouvelle dimension à votre carte !
Objectif de cette leçon : Apprendre à ajouter des actions personnalisées.
Dans cette leçon, vous utiliserez la couche school_property que vous avez créé précédemment. Les exemples de données comprennent des photos de chacune des trois propriétés que vous avez numérisées. Ce que nous allons faire, c’est associer chaque propriété à son image. Ensuite, nous allons créer une action qui ouvrira l’image d’une propriété en cliquant sur celle-ci.
5.4.1. ★☆☆ Pas à pas : Ajouter un champ pour les images
La couche school_property
n’a pas encore la possibilité d’associer une image à une propriété. Nous allons d’abord créer un champ à cet effet.
Ouvrez la fenêtre Propriétés de la couche.
Cliquez sur l’onglet Champs.
Basculez en mode édition :
Ajoutez une nouvelle colonne :
Entrez les valeurs ci-dessous :
Une fois le champ créé, allez dans l’onglet formulaire d’attribut et sélectionnez le champ
image
.Définissez type wiget à pièce jointe :
Cliquez sur OK dans la boîte de dialogue proprietes couche.
Utilisez l’outil Identifier pour cliquer sur une des trois entités dans la couche school_property.
Puisque vous êtes toujours en mode édition, le dialogue devrait être actif et ressembler à ceci :
Cliquez sur le bouton parcourir (le … à côté du champ image).
Sélectionnez le chemin d’accès de votre image. Les images se trouvent dans
exercise_data/school_property_photos/
et portent le même nom que les entités auxquelles elles doivent être associées.Cliquez sur OK.
Associez toutes les images avec les bonnes entités en utilisant cette méthode :
Sauvegardez vos modifications et sortez du mode d’édition.
5.4.2. ★☆☆ Pas à pas : Créer une action
Ouvrez l’onglet Actions pour la couche school_property, et cliquez sur le bouton Ajouter nouvelle action.
Dans le dialogue Ajouter une nouvelle action, entrez les mots
Show Image
dans le champ Description :Ce qui faut ensuite faire varie selon votre système d’exploitation, ainsi choisissez la ligne de conduite appropriée à suivre :
Windows
Cliquez sur le menu déroulant Type et choisissez Ouvrir.
Ubuntu Linux
Sous Action, écrivez
eog
pour le Gnome Image Viewer, ou écrivezdisplay
pour utiliser ImageMagick. N’oubliez pas de mettre un espace après la commande !macOS
Cliquez sur le menu déroulant Type et choisissez Mac.
Sous Action, écrivez
open
. N’oubliez pas de mettre un espace après la commande !
Vous pouvez maintenant continuer à écrire la commande.
Vous souhaitez ouvrir l’image, et QGIS connaît son emplacement. Il ne reste plus qu’à passer la localisation de l’image à Action.
Sélectionnez image dans la liste :
Cliquez sur le bouton Insérer un champ. QGIS ajoutera la phrase
[% "image" %]
dans le champ Texte de l’action.Cliquez sur le bouton OK pour fermer le dialogue Ajouter une nouvelle action.
Cliquez sur OK pour fermer la boîte de dialogue Proprietes couche
Il est maintenant temps de tester la nouvelle action :
Cliquez sur la couche school_property dans le panneau couches afin qu’elle soit mise en évidence.
Trouvez le bouton Exécuter action d’entité (dans la barre d’outils Attributs).
Cliquez sur la flèche vers le bas à droite de ce bouton. Une seule action a été définie pour cette couche jusqu’à présent, celle que vous venez de créer.
Cliquez sur le bouton pour activer l’outil.
En utilisant cet outil, cliquez sur une des trois propriétés de l’école.
L’image de cette propriété doit s’ouvrir.
5.4.3. ★★☆ Pas à pas : Rechercher sur Internet
Disons que nous regardons la carte et que nous voulons en savoir plus sur la région où se trouve une ferme. Supposons que vous ne connaissez rien de la zone en question et que vous vouliez trouver des informations générales à son sujet. Votre première action, si l’on considère que vous utilisez un ordinateur en ce moment, serait probablement de chercher sur Google le nom de la zone. Alors disons à QGIS de le faire automatiquement pour nous !
Ouvrez la table d’attribut pour la couche landuse.
Nous utiliserons le champ
name
pour chacune de nos zones d’utilisation des terres pour effectuer des recherches sur Google.Fermez la table d’attribut.
Retournez à Actions dans Propriétés des couches.
Cliquez sur le bouton créer l’action par défaut pour ajouter un certain nombre d’actions prédéfinies.
Supprimez toutes les actions sauf l’action ouvrir l’URL avec le nom court Search Web en utilisant le bouton ci-dessous. supprimez l’action sélectionnée
Double-cliquez sur l’action restante pour la modifier
Remplacez le champ Description par
Google Search
, et supprimez le contenu du champ nom court.Assurez-vous que le Canevas figure parmi les champs d’action de Action.
Ce qui faut ensuite faire varie selon votre système d’exploitation, ainsi choisissez la ligne de conduite appropriée à suivre :
Windows
Sous Type, choisissez Ouvrir. Cela va dire à Windows d’ouvrir une adresse internet dans votre navigateur par défaut, tel qu’Internet Explorer.
Ubuntu Linux
Sous Action, écrivez
xdg-open
. Cela indiquera à Ubuntu d’ouvrir une adresse Internet dans votre navigateur par défaut, tel que Chrome ou Firefox.macOS
Sous Action, écrivez
open
. Cela indiquera à macOS d’ouvrir une adresse Internet dans votre navigateur par défaut, tel que Safari.
Vous pouvez maintenant continuer à rédiger la commande
Quelle que soit la commande que vous avez utilisée en-dessus, vous devez dire quelle adresse internet ouvrir après. Vous voulez visiter Google, et rechercher automatiquement une phrase.
En général, lorsque vous utilisez Google, vous entrez votre phrase de recherche dans la barre de recherche Google. Mais dans ce cas, vous voulez que votre ordinateur le fasse pour vous. La façon dont vous dites à Google de rechercher quelque chose (si vous ne voulez pas utiliser directement sa barre de recherche) est de donner à votre navigateur Internet l’adresse « https://www.google.com/search?q=SEARCH_PHRASE », où « SEARCH_PHRASE » est ce que vous voulez rechercher. Comme nous ne savons pas encore quelle phrase rechercher, nous ne saisirons que la première partie (sans la phrase de recherche).
Dans le champ Action, écrivez
https://www.google.com/search?q=
. N’oubliez pas d’ajouter un espace après votre commande initiale avant d’écrire ceci !Maintenant, vous voulez que QGIS dise au navigateur d’indiquer à Google de rechercher la valeur de
name
pour toute entité sur laquelle vous pourriez cliquer.Sélectionnez le champ name.
Cliquez sur le bouton Insérer :
Cela signifie que QGIS va ouvrir le navigateur et l’envoyer à l’adresse https://www.google.com/search?q=[% « name » %]``. L’adresse
[% "name" %]
indique à QGIS d’utiliser le contenu du champname
comme expression à rechercher.Ainsi, si, par exemple, la zone d’utilisation des terres sur laquelle vous cliquez est appelée
Réserve naturelle de Marloth
, QGIS va envoyer le navigateur àhttps://www.google.com/search?q=Marloth%20Nature%20Reserve
, ce qui amènera votre navigateur à visiter Google, qui à son tour cherchera « Réserve naturelle de Marloth ».Si vous ne l’avez pas encore fait, mettez tout en place comme expliqué ci-dessus.
Cliquez sur le bouton OK pour fermer le dialogue Ajouter une nouvelle action.
Cliquez sur OK pour fermer la boîte de dialogue Proprietes couche
Il est maintenant temps de tester la nouvelle action.
Avec la couche landuse active dans le panneau Couches, cliquez sur la flèche vers le bas à droite du bouton Exécuter action entité, et sélectionnez la seule action (
Google Search
) définie pour cette couche.Cliquez sur n’importe quelle zone d’utilisation des terres que vous pouvez voir sur la carte. Votre navigateur s’ouvre alors et lance une recherche sur Google pour trouver le lieu qui est enregistré comme la valeur
name
de cette zone.
Note
Si votre action ne fonctionne pas, vérifiez que tout a été correctement entré ; les fautes de frappe sont communes avec ce genre de travail !
5.4.4. ★★★ Pas à pas : Ouvrir une page web directement depuis QGIS
Ci-dessus, vous avez vu comment ouvrir une page web dans un navigateur externe. Cette approche présente quelques inconvénients en ce sens qu’elle ajoute une dépendance inconnaissable : l’utilisateur final disposera-t-il du logiciel nécessaire pour exécuter l’action sur son système ? Comme vous l’avez vu, ils n’ont pas nécessairement le même type de commande de base pour le même type d’action, si vous ne savez pas quel système d’exploitation ils utiliseront. Avec certaines versions de systèmes d’exploitation, les commandes ci-dessus pour ouvrir le navigateur peuvent ne pas fonctionner du tout. Cela peut être un problème insurmontable.
Cependant, QGIS se trouve au-dessus de la bibliothèque Qt, incroyablement puissante et polyvalente. De plus, les actions de QGIS peuvent être arbitraires, tokenisées (c’est-à-dire utilisant des informations variables basées sur le contenu d’un attribut de champ), des commandes Python !
Vous allez maintenant voir comment utiliser une action python pour afficher une page web. C’est la même idée générale que l’ouverture d’un site dans un navigateur externe, mais elle ne nécessite pas de navigateur sur le système de l’utilisateur puisqu’elle utilise la classe Qt QWebView (qui est un widget html basé sur un webkit) pour afficher le contenu dans une fenêtre pop-up.
Cette fois, utilisons Wikipédia. L’URL que vous demandez ressemblera donc à ceci :
https://wikipedia.org/wiki/SEARCH_PHRASE
Créer l’action associée à la couche:
Ouvrez la boîte de dialogue Propriétés de la couche et rendez-vous sur l’onglet Actions.
Paramétrez une nouvelle action en utilisant les propriétés suivantes:
Type:
Python
Description:
Wikipedia
Portée :
Entité
,Canevas
Texte de l’action:
from qgis.PyQt.QtCore import QUrl from qgis.PyQt.QtWebKitWidgets import QWebView myWV = QWebView(None) myWV.load(QUrl('https://wikipedia.org/wiki/[%name%]')) myWV.show()
Il y a quelques choses qui se passent par ici :
[%name%]
sera remplacé par la valeur réelle de l’attribut lorsque l’action est invoquée (comme précédemment).Le code crée simplement une nouvelle instance de
QWebView
, définit son URL, puis appelleshow()
sur celle-ci pour la rendre visible comme une fenêtre sur le bureau de l’utilisateur.
Vous pouvez également utiliser cette approche pour afficher une image sans exiger que les utilisateurs disposent d’un visualiseur d’images particulier sur leur système.
Essayez d’utiliser les méthodes décrites ci-dessus pour charger une page Wikipédia en utilisant l’action Wikipédia que vous venez de créer.
5.4.5. Conclusion
Les actions vous permettent de donner à votre carte des fonctionnalités supplémentaires, utiles à l’utilisateur final qui visualise la même carte dans QGIS. Étant donné que les processus utilisés peuvent être aussi bien des commandes shell pour n’importe quel système d’exploitation que du Python, les fonctions que vous pourriez incorporer sont illimitées !
5.4.6. La suite ?
Maintenant que vous avez créé toutes sortes de données vecteur, vous allez apprendre à analyser les données pour résoudre les problèmes. C’est le sujet du prochain module.