Message posté par : AlexisSIG
----------------------------------------
Bonjour,
J'ai un projet QGIS avec un ensemble de couches provenant d'une connexion PostgreSQL.
Je mets ce projet sur QField pour une prise de données naturaliste sur le terrain. La connexion avec la base se fait sans problème.
Je souhaite cependant, filtrer l'ensemble de mes couches selon un champ. J'ai donc créé une variable projet sur QGIS que je laisse vide. J'ai ensuite écrit un script QML (ci-dessous) permettant l'ouverture d'un popup à mon ouverture de mon projet sur QField et me permettant de renseigner une valeur pour cette variable et ainsi filtrer mes couches. (Le script présenté n'est fait que pour filtrer une seule couche, je l'adapterai pour les autres lorsque celui-ci fonctionnera). Les logs QField me permettent de voir que j'ai le bon nom de champ reconnu et le bon filtre renseigné lorsque je l'intègre.
Pour autant, ma couche affiche 0 entité. Je n'arrive pas à comprendre où mon script cesse de fonctionner correctement.
-----------------
Code :
import QtQuick
import QtQuick.Controls
import org.qfield
import Theme
Item {
Component.onCompleted: {
codeetudeDialog.open();
}
QfDialog {
id: codeetudeDialog
parent: iface.mainWindow().contentItem
width: 300
height: 180
x: (iface.mainWindow().width - width) / 2
y: (iface.mainWindow().height - height) / 2
title: "Saisissez un Code Etude"
Column {
id: columnLayout
width: parent.width
TextField {
id: codeetudeField
width: parent.width
text: ""
}
}
onAccepted: {
const valeur = codeetudeField.text.trim();
if (valeur === "") return;
ExpressionContextUtils.setProjectVariable(qgisProject, "code_etude", valeur);
let projectInfo = iface.findItemByObjectName("projectInfo");
projectInfo.saveVariable("code_etude", valeur);
const couches = qgisProject.mapLayersByName("Etude");
if (couches.length === 0) return;
const couche = couches[0];
const valeurSafe = valeur.replace(/'/g, "''");
couche.subsetString = '"Code_Etude" = \'' + valeurSafe + "'";
// Remplace reload() + triggerRepaint() + mapCanvas().refresh()
iface.reloadProject();
}
}
}
-----------------
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=377353#p377353
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net
Message posté par : GeoMatteo (matteo.gislot(a)free.fr)
----------------------------------------
Bonjour,
Je travaille dans le domaine de l’hydraulique urbaine et j’utilise QGIS et QField. Je créée des formulaires via QGIS, puis j’empaquette mes projets pour le terrain à l’aide du plugin QField Sync.
Récemment, j’ai souhaité tester un formulaire plus avancé intégrant une fonction Python. Tout fonctionne parfaitement sur QGIS et mon ordinateur, mais je ne parviens pas à reproduire le même comportement sur QField.
D’après les informations trouvées sur différents forums, il semblerait que Python ne soit pas pris en charge par QField (du moins jusqu’en 2022).
Pouvez-vous m'indiquer s’il y a eu une mise à jour récente intégrant cette fonctionnalité et si il s'agit-il d’un simple problème de configuration de ma part, ou bien si cette compatibilité est-elle toujours en développement ?
Merci pour vos retours
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=375029#p375029
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net