Skip to content

Commit

Permalink
Update expressions
Browse files Browse the repository at this point in the history
  • Loading branch information
Gustry committed Dec 3, 2024
1 parent e92786b commit dabfa4d
Show file tree
Hide file tree
Showing 4 changed files with 64 additions and 16 deletions.
5 changes: 3 additions & 2 deletions docs/console.md
Original file line number Diff line number Diff line change
Expand Up @@ -170,8 +170,9 @@ print(fichier_shape.is_file())
Tant que l'on est en console, on n'a pas besoin de faire `print`, la console le fait pour nous automatiquement.
On peut se contenter de `fichier_shape.exists()`.

Si tout est bon pour le chemin, charger la couche vecteur à l'aide de `iface`
[QgisInterface](https://qgis.org/api/classQgisInterface.html) (et non pas **Qgs**Interface), en utilisant la méthode `addVectorLayer` :
Si tout est bon pour le chemin, charger la couche vecteur à l'aide de `iface` qui est une instance de
`QgisInterface` [CPP](https://qgis.org/api/classQgisInterface.html)/[PyQGIS](https://qgis.org/pyqgis/3.34/gui/QgisInterface.html)
(et non pas **Qgs**Interface), en utilisant la méthode `addVectorLayer`.

Attention, QGIS, étant écrit en C++, ne connait pas l'usage de `Path`, il faut repasser par une chaîne de caractère avec l'aide de `str` :

Expand Down
47 changes: 42 additions & 5 deletions docs/expression.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,21 +42,40 @@ results = processing.run(
On peut afficher le panneau de débogage et développement de QGIS afin de voir les requêtes HTTP.
Il se trouve dans le menu **Vue****Panneau****Débogage et développement**

On va désormais **parser** le fichier JSON que l'on obtient avec la libraire `json` afin de récupérer la `description` :
On va désormais **parser** le fichier JSON que l'on obtient avec la libraire `json` afin de récupérer la `description`.

## Mémo

Pour lire un fichier à l'aide d'un "contexte Python" qui va ouvrir et ferme le fichier :

```python
import json

with open("/mon/fichier.json") as f:
data = json.load(f)
print(data)
```

Une méthode pour récupérer la bonne clé, dynamiquement :

```python
pages = data['query']['pages']
key = list(pages.keys())[0]
description = pages[key]['description']
print(description)
```

??? "Solution complète pour l'expression QGIS"
Peut-être surement plus simple à comprendre, avec l'usage d'une boucle `for`

```python
description = ""
for page in pages.values():
description = page.get('description')

print(description)
```

??? "Une solution complète pour l'expression QGIS"
```python
import json
import processing
Expand All @@ -79,7 +98,25 @@ print(description)
data = json.load(f)

pages = data['query']['pages']
key = list(pages.keys())[0]
description = pages[key]['description']
return description
# Only the first page will be used
for page_id, page in pages.items():
description = page.get('description')
if page_id == "-1":
error = page.get('invalidReason')
if description:
return f'Pas de page, {description}'
if not error:
return 'Pas de page'
else:
return f"Pas de page, erreur {error}"
return description
```

## Fournir une expression depuis une extension

Pour le moment, cette expression est dans le dossier de l'utilisateur, dans `python → expressions`.

Mais une fois que nous avons une [extension générique](./extension-generique.md), nous pouvons l'intégrer dans un
fichier Python de l'extension.

Exemple sur [StackExchange](https://gis.stackexchange.com/questions/355319/register-custom-python-function-in-qgis-server-3-10)
10 changes: 10 additions & 0 deletions docs/extension-generique.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,15 @@
# La base pour créer une extension

## Une extension n'est qu'un ZIP pour fournir du code Python

Comme vu dans [Le Python dans QGIS](./python-qgis.md), une extension peut être sous différente forme :

* fournir une interface graphique (voir ci-dessous)
* être un fournisseur d'algorithme Processing (voir ci-dessous)
* fournir une expression, comme dans le [TP Wikipédia](./expression.md)
* fournir un outil de recherche dans le "locator" (taper pour trouver)
* ...

## Modèle de base

Pour créer une extension dans QGIS, il existe deux façons de démarrer :
Expand Down
18 changes: 9 additions & 9 deletions mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,13 @@ nav:
- docs.3liz.org: '../'
- Accueil: index.md
- Présentation:
- Python dans QGIS: python-qgis.md
- Documentation: documentation.md
- Mémo Python: memo-python.md
- Python dans QGIS 🐍: python-qgis.md
- Documentation 📖: documentation.md
- Mémo Python 🎒: memo-python.md
- Premier pas:
- Console: console.md
- Fonctions & Scripts: fonctions-scripts.md
- Sélection & Parcours: selection-parcours-entites.md
- Console 🖥️: console.md
- Fonctions & Scripts ♻️: fonctions-scripts.md
- Sélection & Parcours 🏘️: selection-parcours-entites.md
- Utilisation simple:
- Action: action.md
- Expression: expression.md
Expand All @@ -32,9 +32,9 @@ nav:
- Extension Processing: extension-processing.md
- Application standalone: standalone.md
- Sujets PyQGIS thématiques:
- Migration majeur: migration-majeure.md
- PostGIS: postgis.md
- Symbologie: symbologie.md
- Migration majeure 🔀: migration-majeure.md
- PostGIS 🐘: postgis.md
- Symbologie 🎨: symbologie.md
- Outils annexes:
- Déploiement d'une extension: extension-deploiement.md
- IDE & Git: ide-git.md
Expand Down

0 comments on commit dabfa4d

Please sign in to comment.