Message posté par : Envol_AD
----------------------------------------
-----------------
SANTANNA écrit :
s
Dans QGIS, on crée enfin un dernier champ 'position' dans la couche B' de type
texte (10caractères) et dans la case expression, on saisit :
-----------------
Code :
CASE
WHEN abs> xmin( centroid( geometry( getFeature( 'coucheA',
'unchampdeA', 'unevaleurdeA') ))) and ord> ymin( centroid( geometry(
getFeature( 'coucheA', 'unchampdeA', 'unevaleurdeA') ))) THEN
'nord-est'
WHEN abs> xmin( centroid( geometry( getFeature( 'coucheA',
'unchampdeA', 'unevaleurdeA') ))) and ord< ymin( centroid( geometry(
getFeature( 'coucheA', 'unchampdeA', 'unevaleurdeA') ))) THEN
'sud-est'
WHEN abs< xmin( centroid( geometry( getFeature( 'coucheA',
'unchampdeA', 'unevaleurdeA') ))) and ord< ymin( centroid( geometry(
getFeature( 'coucheA', 'unchampdeA', 'unevaleurdeA') ))) THEN
'sud-ouest'
ELSE 'nord-ouest' END
-----------------
Valider.
NB: getFeature( 'coucheA', 'unchampdeA', 'unevaleurdeA'): il faut
y mettre le nom de la couche A, un nom de champ et la valeur renseignée dans ce champ. Vu
que A n'a qu'une valeur, ça enverrait la même entité. et le reste de la formule se
charge de récupérer la géométrie de l'objet A, identifier son centroïde puis en
récupérer les x ou y. Si votre coucheA a plus d'un élément, il faudra une autre
formule
NB2: ceci peut être fait sans créer les champs abs et ord (suffit de les remplacer par la
formule utilisée pour les calculer) ou directement dans B (mais ça voudrait dire qu'il
faudra aussi rapatrier la distance à un moment si on veut avoir toutes les infos dans une
couche).
NB3: le plugin RefFunctions propose aussi des fonctions qui allègeraient l'écriture de
la formule mais je le réalise après coup... la flemme de reprendre :)
-----------------
Bonjour,
Je me permet de reprendre cette discussion car j'ai un problème similaire.
J'ai réussi à faire la partie avec NNjoin et j'ai créé les champs abs et ord.
Mais je n'arrive pas à faire le code pour déterminer la position par rapport au Nord.
La condition "when" ne semble pas passer et comme je suis nulle pour le code je
suis bloquée.
Je travaille en Lambert 93 sous QGIS 3.22.16
----------------------------------------
Le message est situé
https://georezo.net/forum/viewtopic.php?pid=359908#p359908
Pour y répondre : qgis_fr(a)ml.georezo.net ou reply de votre messagerie
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net