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

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Thu 24 May 2018 19:44

Benji12
Participant occasionnel
Date d'inscription: 5 Apr 2018
Messages: 23

Requêtes postgis

Hello,

J'essaie de faire mes premières requêtes postgis et j'avoue que j'ai un peu de mal à bien comprendre. J'ai pourtant fouillé la doc officielle et pas mal de tutos à droite et à gauche...

J'ai par exemple réussi à faire les calculs de longueurs de linestrings, sans trop de difficultés, additionner celle-ci...

Je suis passé à la phase suivante retrouver les point situés à proximité (distance de 5 kms) d'un point donné.

J'ai un premier résultat plutôt cohérent, mais qui est fait suivant un radius alors que je voudrais que ce soit en fonction de ma trace.

Je réfléchi également sur une autre fonction, mais j'aurai bien besoin de votre aide pour l'implémenter :

J'ai 3 tables :

Une table circuit qui regroupe les différentes traces d'un même circuit (circuit principal et secondaire)
Une table trace où sont stockées les linestring plus quelques infos
Une table Poi avec un champ lonlat de type Point

Pour que ce soit plus facile à expliquer, j'ai fait un petit shéma (suis pas doué en dessin) :

[img]https://georezo.net/forum/attachment.php?item=7924[/img] (j'arrive pas à afficher les images)

On a les tronçons verts et noir qui correspondent au circuit principal (chaque circuit est découpé en tronçon pour plus facilité)
Le tronçon rouge est une variation du circuit principal.

Comme vous pouvez le voir, les POI (A, B, C, D) sont situés à proximité de la trace principale ou secondaire.

Je voudrais par exemple calculer les différentes distances entre ces points.

Si par exemple, je souhaite connaitre la distance entre A et C, je présume qu'il va d'abord falloir calculer la distance entre ces points et le point le plus proche de la trace (point de rencontre => petit trait fin). Calculer ensuite la distance entre ces deux points situés sur la trace et retourner la somme de tout ça ?

Je voudrais également afficher par exemple les points situés à proximité de D. Il devrait me retourner A,B, C mais comme je voudrais également retourner la distance qui les séparent, ça devient à mes yeux un peu plus compliqué, vu que aucun des trois n'est situé sur le même tronçon.

Peut être qu vous pourriez me donner des exemples de requêtes ce qui me permettrait de vous poser des questions sur leur construction et  progresser dans ma compréhension du système.

Merci d'avance à tous ceux qui peuvent m'aider wink

Dernière modification par Benji12 (Thu 24 May 2018 19:50)


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

#2 Mon 28 May 2018 11:40

tumasgiu
Membre
Lieu: Ajaccio
Date d'inscription: 5 Jul 2010
Messages: 1160

Re: Requêtes postgis

Salut,

je pense qu'il faudrait que vous partiez d'un problème simplifié, le résoudre,
puis en augmenter la complexité jusqu'à retrouver votre problème initial.

Peut être créer un jeu de données factice au préalable pour faciliter les choses.


1)
Calculer la distance entre deux POI sur un seul tronçon.
Pour se faire, vous devriez jeter un coup d'oeil aux fonctions de référencement linéaires.
http://postgis.net/docs/manual-2.4/refe … eferencing

2)
Calculer la distance entre deux POI sur plusieurs tronçons, sans variante.
Peut être pourriez vous créer une linestring unique avec tout les tronçons du circuit.
http://postgis.net/docs/manual-2.4/ST_MakeLine.html
ou bien
http://postgis.net/docs/manual-2.4/ST_LineMerge.html


3)
Intégrer une variante dans le calcul.
C'est là que réside la difficulté du problème selon moi, l'idéal serait qu'une requête retourne
des linestrings qui correspondrait à chaque variante du circuit, puis appliquer
la requête utilisée en 2).

4)
Ecrire une requête pour calculer les distances entre tout les POI.

Hors ligne

 

#3 Mon 28 May 2018 13:49

Benji12
Participant occasionnel
Date d'inscription: 5 Apr 2018
Messages: 23

Re: Requêtes postgis

Merci pour ce retour, c'est exactement la méthode que j'adopte, step by step wink

En fait, j'en suis au point numéro 3. Faire une requête qui retourne toutes les linestrings, n'est pas une difficulté en soi puisque j'ai un id unique qui peut les regrouper. Faut que je vois comment les regrouper par variantes...

Pour le point 4, l'intérêt de cette requête est de pouvoir indexer les kilométrages ?

merci pour le retour en tous les cas  wink

Hors ligne

 

Pied de page des forums

Powered by FluxBB