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 Wed 15 June 2016 09:54

RoxB
Juste Inscrit !
Lieu: Nouméa
Date d'inscription: 15 Jun 2016
Messages: 3

QGIS: relier 2 couches de pnts par des lignes en contournant polygone

Bonjour,

Je travaille sur Qgis Essen (2.14.3) sous Windows 7 (32 bits).

Mon problème étant assez complexe, je n’y ai trouvé aucune solution sur ce forum, ni aucun autre…

Je souhaiterais créer une couche de ligne reliant 2 couches de points, avec, si possible, une contrainte de « contournement » de polygones.

Le but final de cette opération étant de mesurer la distance entre mes sites en mer (couche de points A) et le trait de côte (couche de points B), si possible en ne passant que par la mer (soit en-dehors des polygones de ma couche C qui représente les terres émergées).

J’aimerais donc créer une couche de lignes reliant tous les points A à tous les points B, sans traverser les polygones C.

Avant de me préoccuper du « contournement » des polygones, j’ai déjà essayé de relier mes 2 couches de points en lignes droites avec les fonctions « Hub Lines » et « Hub Distance » de MMQGIS mais je n’obtiens pas ce que je veux. « Hub Lines » ne relie qu’un seul point d’une couche à tous ceux de l’autre couche. Et « Hub Distance » ne relie tous les points d’une couche qu’aux points les plus proches de l’autre couche.

J’aimerais donc savoir s’il existe un moyen de relier tous les points d’une couche à tous ceux d’une autre couche ? Et éventuellement, d’imposer la contrainte de ne pas traverser les polygones ?

J’ai également tenté de créer ces lignes droites en utilisant l’extension RT QSpider. C’est-à-dire en créant un tableur contenant les coordonnées géographiques de mes points associés 2 à 2 pour le point de départ et le point de fin de chaque ligne. J’ai essayé pour quelques points seulement, et cela semble fonctionné. Mais j’ai 155 points sur une couche et 18 818 points sur l’autre, soit près de 3 millions de lignes à créer. Mette en forme « à la main » un tableur contenant les 4 colonnes de coordonnées (xA, yA, xB, yB) pour toutes ces lignes n’est pas envisageable.

Peut-être puis-je effectuer cette opération automatiquement ?

Ou peut-être auriez-vous d’autres solutions à me proposer permettant d’aboutir au même résultat, à savoir mesurer les distances entre tous ces points, au mieux en contournant les polygones, au pire en ligne droite ?

Merci pour votre aide !

Hors ligne

 

#2 Thu 16 June 2016 17:45

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

Re: QGIS: relier 2 couches de pnts par des lignes en contournant polygone

Bonjour,

Ca ressemble fort à du routing.

Pour cela, je te conseillerai d'utiliser les modules GRASS v.net

- Dans un premier temps, extrais le trait de côte à partir de tes polygones : vecteur > polygones vers lignes
- Utilise v.net pour trouver les points les plus proches sur ton trait de côte par rapport à tes sites et ensuite calculer le chemin le plus court selon ce dernier d'un point A à un point B
http://www.ing.unitn.it/~grass/docs/tut … index.html

Pour des besoins ponctuels, tu peux utiliser l'outil intégré à QGIS appelé chemin le plus court
http://docs.qgis.org/2.0/fr/docs/user_m … graph.html

Tu pourrais aussi utiliser pgrouting
https://anitagraser.com/2013/07/06/pgro … ick-guide/


geodata au cerema et petits billets en géomatique

Hors ligne

 

#3 Mon 20 June 2016 01:52

RoxB
Juste Inscrit !
Lieu: Nouméa
Date d'inscription: 15 Jun 2016
Messages: 3

Re: QGIS: relier 2 couches de pnts par des lignes en contournant polygone

Bonjour,

Merci Mathieu pour ta réponse, mais peut-être aurais-je du préciser que je suis plutôt débutante en QGIS.

J'ai tout de même essayer les solutions que tu propose. Mais je ne comprends pas comment paramétrer les modules v.net ou l'extension Graphe Routier. D'ailleurs il y a de nombreux modules v.net.quelquechose et je ne sais pas lequel utiliser.
Quant à pgrouting, je ne trouve pas l'extension PostGIS au moment de l'installation, et je ne comprends de toute façon pas très bien ce que je dois en faire...

Globalement, je ne sais pas ce qu'est du routing ni en quoi ça va m'aider à relier mes 2 couches de points par des lignes...

Bref, je suis complètement larguée!!!

Hors ligne

 

#4 Mon 20 June 2016 15:37

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

Re: QGIS: relier 2 couches de pnts par des lignes en contournant polygone

Bonjour,

Malheureusement, je ne vois pas de solution simple pour ce problème qui est plutôt de niveau avancé.

Normalement, le tutoriel http://www.ing.unitn.it/~grass/docs/tut … index.html permet de voir les choses pas à pas.

Le module qui vous intéressera sera celui v.shortest.path

Essayez le tutoriel et revenez vers nous en cas de bloquage.

GRASS peut être lancé depuis QGIS après la configuration d'une base de données GRASS


geodata au cerema et petits billets en géomatique

Hors ligne

 

#5 Tue 21 June 2016 02:46

RoxB
Juste Inscrit !
Lieu: Nouméa
Date d'inscription: 15 Jun 2016
Messages: 3

Re: QGIS: relier 2 couches de pnts par des lignes en contournant polygone

Bonjour,

Merci beaucoup pour vos conseils mais j'ai un collègue (plus expérimenté que moi) qui a pris le temps de planché sur le problème et qui a trouvé une alternative, en utilisant l'outil "Distance de coût" sous ArcGIS (l'outil équivalent sous QGIS lui donnait apparemment des résultats extravagants).

Sur ma couche de polygone "terre", il a créé un nouveau champ "coût" dans lequel il a attribué aux polygones "terre" une valeur très élevée et au polygone "mer" une valeur de "1" puis rasterisé cette couche avec le champ "coût" comme champ d'attribut.

Ensuite il a utilisé dans ArcGIS l'outil "Distance de coût" (ArcToolBox > Outils Spatial Analyst > Distance > Distance de coût) en utilisant le raster qui vient d'être créé comme "raster de coût d'entrée" et la couche vecteur de mon trait de côte en "vecteur source".

Le raster de distance ainsi créé va me permettre de déterminer à combien de pixel de la côte se trouve chacun de mes sites, mais sans passer par la terre puisque son "coût" est bien trop élevée, et je vais pouvoir en estimer la distance.

Hors ligne

 

#6 Wed 22 June 2016 12:02

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

Re: QGIS: relier 2 couches de pnts par des lignes en contournant polygone

J'allais aussi vous suggérer cette méthode "raster" bien qu'elle ne me semble pas forcément plus simple.
Notamment, l'étape de rasterisation peut être limitante selon l'emprise, la résolution voulue, cette dernière déterminant la finesse du trait, forcément altérée par le passage en raster

Sous GRASS, il suffit d'utiliser le module v.to.rast pour rasteriser votre couche de polygones puis d'utiliser le module r.cost.

merci en tout cas pour le retour !


geodata au cerema et petits billets en géomatique

Hors ligne

 

Pied de page des forums

Powered by FluxBB