5.4. Lesson: 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. basic Follow Along: Ajouter un champ pour 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.

  1. Ouvrez la fenêtre Propriétés de la couche.

  2. Cliquez sur l’onglet Champs.

  3. Basculez en mode édition :

    ../../../_images/toggle_editing_mode.png
  4. Ajoutez une nouvelle colonne :

    ../../../_images/add_new_column.png
  5. Entrez les valeurs ci-dessous :

    ../../../_images/column_settings.png
  6. Une fois le champ créé, allez dans l’onglet formulaire d’attribut et sélectionnez le champ image.

  7. Définissez type wiget à pièce jointe :

    ../../../_images/select_file_name.png
  8. Cliquez sur OK dans la boîte de dialogue proprietes couche.

  9. 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 :

    ../../../_images/school_property_no_image.png
  10. Cliquez sur le bouton parcourir (le à côté du champ image).

  11. 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.

  12. Cliquez OK.

  13. Associez toutes les images avec les bonnes entités en utilisant cette méthode :

  14. Sauvegardez vos modifications et sortez du mode d’édition.

5.4.2. basic Follow Along: Création d’une Action

  1. Ouvrez l’onglet Actions pour la couche school_property, et cliquez sur le bouton symbologyAdd Ajouter nouvelle action.

    ../../../_images/layer_actions.png
  2. Dans le dialogue Ajouter une nouvelle action, entrez les mots Show Image dans le champ Description :

    ../../../_images/show_image_action.png

    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 écrivez display pour utiliser ImageMagick. N’oubliez pas de mettre un espace après la commande !

    • macOS

      1. Cliquez sur le menu déroulant Type et choisissez Mac.

      2. 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 sont emplacement. Il ne reste plus qu’à renseigner le Action où l’image est.

  3. Sélectionnez image dans la liste :

    ../../../_images/select_image.png
  4. Cliquez sur le bouton Insérer un champ. QGIS ajoutera la phrase [% "image" %] dans le champ Action Text.

  5. Cliquez sur le bouton OK pour fermer le dialogue Ajouter une nouvelle action.

  6. Cliquez sur OK pour fermer la boîte de dialogue Proprietes couche

Il est maintenant temps de tester la nouvelle action :

  1. Cliquez sur la couche school_property dans le panneau couches afin qu’elle soit mise en évidence.

  2. Trouvez le bouton actionRun Exécuter action d’entité (dans la barre d’outils Attributs).

  3. 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.

    ../../../_images/run_feature_action_select.png
  4. Cliquez sur le bouton pour activer l’outil.

  5. 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. moderate Follow Along: Recherche 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 !

  1. 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.

  2. Fermez la table d’attribut.

  3. Retournez à Actions dans Propriétés des couches.

  4. Cliquez sur le bouton créer l’action par défaut pour ajouter un certain nombre d’actions prédéfinies.

  5. Supprimez toutes les actions sauf l’action ouvrir l’URL avec le nom court Search Web en utilisant le bouton ci-dessous. symbologyRemove supprimez l’action sélectionnée

  6. Double-cliquez sur l’action restante pour la modifier

  7. Remplacez le champ Description par Google Search, et supprimez le contenu du champ nom court.

  8. 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

      Under Action, write open. This will tell macOS to open an Internet address in your default browser, such as 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).

  9. 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.

  10. Sélectionnez le champ name.

  11. Cliquez sur le bouton Insérer :

    ../../../_images/google_search_action.png

    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 champ name 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 ».

  12. Si vous ne l’avez pas encore fait, mettez tout en place comme expliqué ci-dessus.

  13. Cliquez sur le bouton OK pour fermer le dialogue Ajouter une nouvelle action.

  14. Cliquez sur OK pour fermer la boîte de dialogue Proprietes couche

Il est maintenant temps de tester la nouvelle action.

  1. Avec la couche landuse active dans le panneau Couches, cliquez sur la flèche vers le bas à droite du bouton actionRun Exécuter action entité, et sélectionnez la seule action (Google Search) définie pour cette couche.

  2. 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. hard Follow Along: Ouvrir une page web directement dans 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:

  1. Ouvrez la boîte de dialogue Propriétés de la couche et rendez-vous sur l’onglet Actions.

  2. Paramétrez une nouvelle action en utilisant les propriétés suivantes:

    • Type: Python

    • Description: Wikipedia

    • Scope: Feature, Canvas

    • Action Text:

      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()
      
    ../../../_images/python_action_example.png

    Il y a quelques choses qui se passent par ici :

    • [%nname%] 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 appelle show() 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.

  3. 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. In 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 le QGIS. Étant donné que vous pouvez utiliser des commandes shell pour n’importe quel système d’exploitation, ainsi que pour Python, les fonctions que vous pourriez incorporer sont illimitées !

5.4.6. What’s Next?

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.