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 !.
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Suite à un problème sur notre serveur une intervention a été planifiée ce  matin. La coupure, qui ne devait pas exéder 5 mn, a duré plus longtemps que prévu. L'intervention consistait à l'augmentation de l'espace disque (GeoRezo prend un peu plus de place en viellissant). Malheureusement, le serveur se faisant vieux, quelques soucis ont eu lieu.

Nous avons procédé à un gros nettoyage d'automne : augmentation de l'espace disque, mise à jour des certificats SSL pour l'utilisation des  urls en https, upgrade d'Apache et autres outils nécessaire au bon fonctionnement.

Notre volonté à long terme est de consolider la plateforme GeoRezo et nous accueillons toutes personnes intéressées pour nous aider (technologies utilisées : drupal, docker, MySQL, git, etc.) Si vous désirez contribuer à un projet dynamique et apprendre de nouvelles choses, contactez nous !

L'équipe GeoRezo

#1 ven. 16 juin 2017 14:57

bruhnild
Membre
Lieu: Lyon
Date d'inscription: 7 juin 2014
Messages: 40

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 lun. 19 juin 2017 10:30

Nicolas Ribot
Moderateur
Lieu: Toulouse
Date d'inscription: 9 sept. 2005
Messages: 1015

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 lun. 19 juin 2017 15:14

bruhnild
Membre
Lieu: Lyon
Date d'inscription: 7 juin 2014
Messages: 40

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 lun. 19 juin 2017 15:23

Pascal Boulerie
Membre
Lieu: France
Date d'inscription: 12 sept. 2005
Messages: 1462
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 ! :-)

Hors ligne

 

#5 mar. 20 juin 2017 09:25

Nicolas Ribot
Moderateur
Lieu: Toulouse
Date d'inscription: 9 sept. 2005
Messages: 1015

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 mar. 20 juin 2017 18:58

lejedi76
Membre
Date d'inscription: 8 août 2013
Messages: 234

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 jeu. 22 juin 2017 09:23

bruhnild
Membre
Lieu: Lyon
Date d'inscription: 7 juin 2014
Messages: 40

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

Partagez  |