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 16 June 2017 14:57

bruhnild
Participant actif
Lieu: Lyon
Date d'inscription: 7 Jun 2014
Messages: 130

pg_routing calcul d'isochrones itérations[Postgis]

Bonjour,
Je souhaite réaliser des isochrones d’après l’article de l’analyse d’isodistance https://diouck.wordpress.com/2016/09/21 … sochrones/
La méthode la plus pertinente dans mon cas de figure se trouve être la méthode dite ‘Isochrone avec St_MakePolygon et St_ExteriorRing’
La requete suivant permet d’obtenir l’isochrone pour toutes les routes à moins de 500m de la poste. Elle fonctionne dès lors que l'on connait l’identifiant (edge_id) du point qui nous intéresse.


Code:

with buffer_itineraire as (
SELECT et.edge_id,
st_buffer(et.geom,10,'endcap=square join=round') as geom
, 1 as factor
FROM pgr_drivingdistance(
'SELECT edge_id as id, start_node as source, end_node as target, tps_distance as cost from routing.edge_data',
8215, 0.5, false, false
) firstPath
CROSS JOIN
(SELECT id1,cost from pgr_drivingDistance(
'SELECT edge_id as id,start_node as source , end_node as target,tps_distance as cost FROM routing.edge_data',
8215,0.2,false,false)
) secondPath
INNER JOIN routing.edge_data et
ON firstPath.id1 = et.start_node
AND secondPath.id1 = et.end_node)
SELECT ST_MakePolygon(ST_ExteriorRing(ST_GeometryN(st_union(geom),1))) as geom FROM buffer_itineraire;

Voir la capture du résultat en pièce jointe.

Je cherche à exécuter cette requete pour tous les points qui ont l’information ‘Agroalimentaire’, puis ‘Services’, puis ‘Autres’ contenue dans un champ ‘type_comm’, sans avoir à chercher manuellement l’edge_id pour chacun des points question (il y en a 37).

Pourriez vous m’aider à résoudre cette requête?

Dans l'attente de vos réponses, questions, je vous souhaite une bonne journée.

Marine.


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

Hors ligne

 

#2 Mon 19 June 2017 10:30

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1535

Re: pg_routing calcul d'isochrones itérations[Postgis]

Bonjour,

En faisant une requete de plus, histoire de lister edge_id de type_comm Agro, services et autres ?
(un WITH ... de plus en début de requete.)

Nicolas

Hors ligne

 

#3 Mon 19 June 2017 15:14

bruhnild
Participant actif
Lieu: Lyon
Date d'inscription: 7 Jun 2014
Messages: 130

Re: pg_routing calcul d'isochrones itérations[Postgis]

Merci pour la piste, le problème c'est que je ne vois pas du tout comment imbriquer deux WITH dans une requete..

Marine.

Hors ligne

 

#4 Mon 19 June 2017 15:23

Pascal Boulerie
Participant assidu
Lieu: France
Date d'inscription: 12 Sep 2005
Messages: 2877
Site web

Re: pg_routing calcul d'isochrones itérations[Postgis]

(Comme expliqué jeudi 8 à un autre - https://georezo.net/forum/viewtopic.php … 29#p296329 )

Si c'est trop compliqué pour vous de le faire en une seule requête,
vous pouvez passer par une table temporaire intermédiaire...

C'est moins beau, moins prestigieux, moins valorisant intellectuellement dans l'esprit des "ayatollahs" (sic) de la requête SQL, mais au moins, ça marche ! :-)


« L'État est désormais quasi déliquescent. » (José Cohen-Aknine, ingénieur X-Ponts, IGPEF, dans Déliquescence et renaissance de l'État.)

Hors ligne

 

#5 Tue 20 June 2017 09:25

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1535

Re: pg_routing calcul d'isochrones itérations[Postgis]

bruhnild a écrit:

Merci pour la piste, le problème c'est que je ne vois pas du tout comment imbriquer deux WITH dans une requete..

Marine.


Bonjour, dans ces cas, n'hesitez pas a vous reporter à la doc PG !
Dès le premier chapitre la syntaxe est indiquée: https://www.postgresql.org/docs/9.6/sta … -with.html

Nicolas

Hors ligne

 

#6 Tue 20 June 2017 18:58

JD
Moderateur
Date d'inscription: 8 Aug 2013
Messages: 722

Re: pg_routing calcul d'isochrones itérations[Postgis]

Bonsoir,

et il faudra un group by edge_id dans le dernier select.

Cordialement,

Hors ligne

 

#7 Thu 22 June 2017 09:23

bruhnild
Participant actif
Lieu: Lyon
Date d'inscription: 7 Jun 2014
Messages: 130

Re: pg_routing calcul d'isochrones itérations[Postgis]

Bonjour,

Pourriez vous me donner un exemple de script?
Cela fait deux jours que j'étudie des fonctions sur différents sites mais aucune ne semble correspondre à mes besoins..

Merci pour vos réponses.

Hors ligne

 

Pied de page des forums

Powered by FluxBB