Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Printemps des cartes 2024

#1 Fri 15 May 2015 22:45

flonana
Juste Inscrit !
Date d'inscription: 15 May 2015
Messages: 8

QGIS: Distance et orientation de polygones entre eux

Bonjour à tous,

je suis débutante en qgis. J'ai trouvé un moyen simple de voir la distance minimale entre 2 polygones (NN Join) ça a l'air de bien marché.

Par contre, je ne trouve pas d'outil pour obtenir dans la table attributaire l'orientation de mon point 2 par rapport à mon point 1 (exemple le point 2 est au Nord-Ouest du point 1 d'un point de vue "qualitatif" je voudrais pouvoir récupérer cette information surtout lorsque dirons nous j'ai 500 points autour de mon point 1 et que pour chaque je voudrais la distance et l'orientation).

Merci à vous tous pour vos précieux conseils sur le sujet.

Attention je rappelle que je suis une "nouille" en qgis et donc je vous demanderai d'être pédagogue.

Bien à vous,

PS : j'ai qgis brighton 2. quelque  chose

Hors ligne

 

#2 Mon 18 May 2015 17:48

MathieuR
Membre
Lieu: aix-en-provence
Date d'inscription: 16 Feb 2009
Messages: 1690
Site web

Re: QGIS: Distance et orientation de polygones entre eux

Bonjour,

Dans un premier temps, tentez de relier ces 2 points par une ligne avec un plugin tel que mmqgis, rtqspider ou points2one

Vous pouvez obtenir l'angle entre deux points d'une ligne en vous inspirant de ce lien :
https://archeomatic.wordpress.com/2012/ … polyligne/


geodata au cerema et petits billets en géomatique

Hors ligne

 

#3 Tue 19 May 2015 16:59

flonana
Juste Inscrit !
Date d'inscription: 15 May 2015
Messages: 8

Re: QGIS: Distance et orientation de polygones entre eux

Je vais essayer, dans tous les cas merci de votre retour.

Je reviendrai vers vous en cas de nouvelle difficulté

Hors ligne

 

#4 Sun 24 May 2015 17:14

flonana
Juste Inscrit !
Date d'inscription: 15 May 2015
Messages: 8

Re: QGIS: Distance et orientation de polygones entre eux

Bonjour bonjour, dans le même ordre d'idée j'ai eu une autre idée, ce serait de faire une zone tampon en forme de portion de cercle (angle de 45 °) par exemple centré sur mon point de référence par exemple et de faire une requête spatiale entre cette zone et mes points comme ça je saurais identifié mes points qui sont dirons-nous au nord-est par exemple. Le problème dans tout ça c'est que je suis incapable de trouver comment faire un tampon de cette forme ? Je sèche total...

J'ai cherché sur tampon angulaire, tampon azimut, tampon en portion de disque... mais rien n'y fait...

Si quelqu'un à une idée merci d'avance (PS : je suis en lambert 93)

Hors ligne

 

#5 Sun 24 May 2015 17:26

SANTANNA
Moderateur
Lieu: Angers
Date d'inscription: 18 Jan 2008
Messages: 3799

Re: QGIS: Distance et orientation de polygones entre eux

Bonjour,
Pourrait on avoir un retour sur la piste proposée par Mathieu?  L'avez-vous essayée et où cela peche-t-il?

Hors ligne

 

#6 Sun 24 May 2015 18:26

flonana
Juste Inscrit !
Date d'inscription: 15 May 2015
Messages: 8

Re: QGIS: Distance et orientation de polygones entre eux

ALors dans l'idée, j'ai fais un triangle (buffer triangle) avec mmqgis autour de mon centroïde de mon polygone. Ensuite j'ai dupliqué mon entité car je voulais lui donner une rotation et le coller à côté de l'autre mais là le problème survient sur la sélection du vertex qui ne se fait pas avec cadtouls ... Donc de nouveau bloquée, l'idéal serait de vivre 500 ans dans mon cas pour élucider le mystère.

Pour ce qui est de points2one alors là je ne trouve aucun tuto simple (ou dans ma langue) donc je galère totale.

Enfin, pour ce qui est de rtqspider alors là je patauge j'ai créé un truc qui ne se voit pas à l'écran qui fait 0 ko bref j'ai fais n'imp...

Hors ligne

 

#7 Mon 25 May 2015 10:59

SANTANNA
Moderateur
Lieu: Angers
Date d'inscription: 18 Jan 2008
Messages: 3799

Re: QGIS: Distance et orientation de polygones entre eux

Salut,
perso, je n'ai jamais utilisé Points2one ou rtqspider ni utilisé mmqgis pour créer des lignes mais je ne comprends pas bien où vous voulez en venir avec des buffers triangle. Et étonné de lire qu'il n'y a pas de doc en français ne serait ce que sur point2one. il me semblait avoir vu une doc peut-être pas récente sur PortailSIG.
je pense toutefois qu'avec Qgis 2.6, il doit être possible de faire ce que vous voulez directement avec Qgis et en s'inspirant du lien de calcul d'angle du message de Mathieu. pour être sûr d'avoir bien compris votre besoin, vous avez une couche de points et souhaitez pour chaque point (A), identifier le point le plus proche (B) et la distance (déjà obtenu avec NNJoin) et trouver dans quel quadrant de À se trouve le proche  point B en question. Ai-je bien compris?

Hors ligne

 

#8 Tue 26 May 2015 08:29

flonana
Juste Inscrit !
Date d'inscription: 15 May 2015
Messages: 8

Re: QGIS: Distance et orientation de polygones entre eux

Bonjour,

Vous avez bien compris j'ai un point centrale disons A (= 1 couche) positionné sur un fichier raster qui est entouré de plein de petits points B (=1 une autre couche). Le point et les points B peuvent êtres des points ou des polygones peu importe.

Bref, le sujet est que je souhaite trouver sans le faire à la main 1 à 1 (surtout si j'ai par exemple 300 points B) la distance minimale entre les points B et le point A (fait avec NNjoin) j'ai par exemple 200 m entre B1 et A; 500 m entre B2 et A; 180 m entre B3 et A ,... mais ce que je n'arrive pas à faire c'est trouver un utilitaire ou une astuce pour dire que certes mon point B1 est à 200 m de A mais qu'il est par exemple au Nord-Est.

Je précise que je travaille en l93.

Bref bref, sinon dans l'idée aussi, j'avais pensé à dessiner un camembert découpé en 8 pour avoir l'est, le nord-est, le nord,... et répartir mes points B en secteurs pour direct dire le lot de B2 à B17 par exemple est dans la portion nord-est. Mais là idem impossible de dessiner cela je ne vois absolument pas comment faire de manière simple et reproductible. d'où l'idée des triangles en tampon avec mmqgis que je voulais à la base faire pivoter pour former quasiment le fameux camembert (qui serait devenu un octogone peu importe) mais là idem impossible de faire tourner le foutu triangle...

J'essaie j'essaie mais je n'y arrive point.

Alors si quelqu'un à l'idée miracle (et de me l'expliquer facile je rappelle de nouveau que je nage un peu beaucoup)

Merci à tous

Hors ligne

 

#9 Tue 26 May 2015 13:15

SANTANNA
Moderateur
Lieu: Angers
Date d'inscription: 18 Jan 2008
Messages: 3799

Re: QGIS: Distance et orientation de polygones entre eux

salut,
ok, merci de la précision, je pensais que c'était à l'intérieur d'une même couche et que le point A variait (j'ai dû faire un mix entre cettte description ici et celle postée sur ForumSIG sad

Je vois deux façons de faire:
- une plus mathématique (proche du lien de Mathieu évoqué plus haut) et plus précise: on calcule l'angle entre A et B et selon l'angle, on qualifie la position de façon plus précise (est, nord-ouest, sud-sud-est par ex...)
- l'autre plus simple dans l'esprit: pour chaque entité de B, l'idée sera de récupérer ses coordonnées (Xb,Yb) et de les comparer aux coordonnées (Xa,Ya) de l'objet de la couche A:
   Si Xb>Xa et Yb>Ya, donc on est dans nord-est ,
   Si Xb>Xa et Yb<Ya, donc on est dans sud-est
   ...
Je présente la plus simple et si elle répond pas au besoin, on verra l'autre (qui n'est encore que théorique dans ma tête, cela dit).

Lorsque NNJoin est utilisé pour récupérer la distance, il génère une nouvelle couche, copie de la couche B à laquelle il rajoute pour chaque entité les attributs de la couche A (dans le cas présent, vu qu'il n'y a qu'une entité dans A, ces champs sont identiques) + la distance calculée. Cette couche est une couche mémoire que l'on va enregistrer en dur (clic droit < enregistrer sous): couche B'.
On va rajouter à cette nouvelle couche B' deux colonnes abs et ord dans lesquelles on va calculer les x et y de chaque entité: Ouvrir la calculatrice de champs de la couche B', créer un nouveau champ, le nommer, type "decimal(réel)" (je ne sais pas s'il y a plus approprié) et saisir dans la zone expression la formule:
- $x pour l'abscisse ou $y pour l'ordonnée si B' est une couche de points;
- xmin( centroid( $geometry )) ou ymin( centroid(  $geometry )) si c'est un polygone. Cette formule fonctionne aussi pour les points.

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 smile

Désolé du pavé, j'ignore à quel point vous êtes débutante donc il se peut que j'ai énoncé certaines évidences ou au contraire passé vite fait certains points. Demandez si besoin d'éclaircissements

Hors ligne

 

#10 Fri 29 May 2015 16:45

flonana
Juste Inscrit !
Date d'inscription: 15 May 2015
Messages: 8

Re: QGIS: Distance et orientation de polygones entre eux

Bonjour, bonjour, je devrais avoir un peu le temps d'essayer cela dimanche, je vous tiendrai au courant...

merci par avance en tout cas je progresse à vue d'oeil lol

Hors ligne

 

#11 Tue 15 March 2016 16:14

sigiste_fe
Participant occasionnel
Date d'inscription: 20 May 2015
Messages: 22

Re: QGIS: Distance et orientation de polygones entre eux

Bonjour dans la même veine, j'ai une questions de liaison.
J'ai un shape de points et je souhaite obtenir des lignes entre ces points. Mais (car il y a toujours un mais) je souhaite avoir des lignes que entre les points comportant des caractéristiques identiques rentrées dans la table. En plus, je souhaite avoir la distance et l'azimut.

Bien entendu, il y a mmgis mais je ne vois pas du tout comment utiliser ce truc là.

merci de votre aide.

Hors ligne

 

#12 Fri 21 April 2023 14:07

Envol_AD
Participant occasionnel
Lieu: Nantes
Date d'inscription: 17 Feb 2023
Messages: 17

Re: QGIS: Distance et orientation de polygones entre eux

SANTANNA a é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 smile


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

Hors ligne

 

Pied de page des forums

Powered by FluxBB