﻿{"id":3308,"date":"2016-06-15T10:29:20","date_gmt":"2016-06-15T09:29:20","guid":{"rendered":"http:\/\/www.sigterritoires.fr\/?p=3308"},"modified":"2016-06-15T10:30:30","modified_gmt":"2016-06-15T09:30:30","slug":"developper-une-application-avec-pgrouting-sous-windows-4zones-de-chalandise-et-isochrones","status":"publish","type":"post","link":"https:\/\/www.sigterritoires.fr\/index.php\/developper-une-application-avec-pgrouting-sous-windows-4zones-de-chalandise-et-isochrones\/","title":{"rendered":"D\u00e9velopper une application avec pgrouting sous Windows (4):zones de chalandise et isochrones"},"content":{"rendered":"<p><a href=\"https:\/\/www.sigterritoires.fr\/index.php\/developper-une-application-avec-pgrouting-sous-windows-1\/\">pgRouting<\/a> comprend une fonction appel\u00e9e pgr_drivingDistance, qui, en conjonction avec trois autres fonctions, pgr_withPointsDD, pgr_alphaShape et pgr_pointsAsPolygon, permet de d\u00e9terminer quels chemins ont un certain co\u00fbt par rapport \u00e0 un point de d\u00e9part ou d&rsquo;arriv\u00e9e.<\/p>\n<p>La zone qui entoure ces chemins est d\u00e9sign\u00e9e comme une zone de chalandise. pgr_drivingDistance, en conjonction avec pgr_pointsAsPolygon est souvent utilis\u00e9e pour d\u00e9terminer les exigences de couverture d&rsquo;un service ou pour d\u00e9terminer les emplacements optimaux pour de nouvelles installations.<\/p>\n<p>Par exemple, si vous avez une caserne de pompiers, vous devez d\u00e9terminer toutes les parties de la ville qui peuvent \u00eatre atteintes dans les cinq minutes. Un probl\u00e8me inverse serait de trouver toutes les parties de la ville o\u00f9 les r\u00e9sidents peuvent conduire jusqu&rsquo;\u00e0 un h\u00f4pital dans les cinq minutes.<!--more--><br \/>\nLa fonction qui calcule les chemins pour les deux probl\u00e8mes est appel\u00e9e pgr_drivingDistance car elle est souvent utilis\u00e9e lorsque le co\u00fbt est mesur\u00e9 en temps de conduite. Cependant, les co\u00fbts ne sont pas forc\u00e9ment\u00a0 limit\u00e9s \u00e0 un temps ou une distance.<br \/>\nPour ce type d&rsquo;application, conna\u00eetre tous les itin\u00e9raires vers ou \u00e0 partir d&rsquo;un point n&rsquo;est pas tr\u00e8s utile. C&rsquo;est l\u00e0 que les fonctions\u00a0 pgr_alphaShape et pgr_pointsAsPolygon entrent en jeu. Le pgr_alphaShape prend en entr\u00e9e un ensemble de coordonn\u00e9es x, y et renvoie un ensemble de x, y qui correspondent aux sommets d&rsquo;un polygone qui englobe tous les points en entr\u00e9e.<br \/>\npgr_pointsAsPolygon est similaire \u00e0 pgr_alphaShape, elle prend en entr\u00e9e un ensemble de coordonn\u00e9es x, y, mais au lieu de retourner une autre s\u00e9rie de points, renvoie un polygone\u00a0 qui entoure l&rsquo;ensemble des points d&rsquo;entr\u00e9e . En interne, il utilise la fonction pgr_alphaShape.<\/p>\n<h2>Utilisation de pgr_drivingDistance<\/h2>\n<p>Penons le cas d&rsquo;une caserne de pompiers et cherchons la zone couverte en 5 minutes. La commande sql correspondant \u00e0 ces crit\u00e8res se traduit par:<\/p>\n<p><em><strong>SELECT * FROM pgr_drivingDistance(&lsquo;SELECT gid as id, source, target , cost_s as cost, reverse_cost_s as reverse_cost <\/strong><\/em><em><strong>FROM public.ways&rsquo;, 25736, 300, true)<\/strong><\/em><\/p>\n<p>Pour cette requ\u00eate nous utilisons dans la clause SELECT le co\u00fbt d&rsquo;un tron\u00e7on en secondes (cost_s), et nous indiquons le reverse_cost_s car m\u00eame les camions de pompiers ne peuvent pas prendre les rues \u00e0 contresens. <em><strong>25736<\/strong> <\/em>est le n\u0153ud correspondant \u00e0 la caserne de pompiers, <em><strong>300<\/strong> <\/em>est le co\u00fbt recherch\u00e9 (5 minutes x 60 secondes), et la valeur <em><strong>true<\/strong><\/em> indique que le graphe est directionnel (prise en compte des sens interdits).<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso1.png\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"3310\" data-permalink=\"https:\/\/www.sigterritoires.fr\/index.php\/developper-une-application-avec-pgrouting-sous-windows-4zones-de-chalandise-et-isochrones\/iso1\/\" data-orig-file=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso1.png?fit=1200%2C562&amp;ssl=1\" data-orig-size=\"1200,562\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"iso1\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso1.png?fit=640%2C300&amp;ssl=1\" class=\"aligncenter size-large wp-image-3310\" src=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso1-1024x480.png?resize=640%2C300\" alt=\"requ\u00eate pgr_drivingDistance\" width=\"640\" height=\"300\" srcset=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso1.png?resize=1024%2C480&amp;ssl=1 1024w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso1.png?resize=300%2C141&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso1.png?resize=768%2C360&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso1.png?w=1200&amp;ssl=1 1200w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a><\/p>\n<p>Le r\u00e9sultat de la requ\u00eate retourne 6948 n\u0153uds qui sont dans un rayon de 5 minutes de la caserne de pompiers. Par contre le r\u00e9sultat de la requ\u00eate n&rsquo;ayant pas de g\u00e9om\u00e9trie, nous ne pouvons pas les visualiser dans QGis.<\/p>\n<p>Pour pouvoir le faire il suffit de modifier la requ\u00eate comme suit:<\/p>\n<p><em><strong>SELECT * FROM pgr_drivingDistance(&lsquo;SELECT gid as id, source, target , cost_s as cost, reverse_cost_s as reverse_cost <\/strong><\/em><em><strong>FROM public.ways&rsquo;, 25736, 300, true)<\/strong><strong> as di JOIN ways_vertices_pgr on di.node=ways_vertices_pgr.id<\/strong><\/em><\/p>\n<p>Nous effectuons une <a href=\"https:\/\/www.sigterritoires.fr\/index.php\/jointure-table-qgis\/\">jointure<\/a> avec la table des n\u0153uds (ways_vertices_pgr) et le r\u00e9sultat de la requ\u00eate contient alors les g\u00e9om\u00e9tries:<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso2.png\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"3311\" data-permalink=\"https:\/\/www.sigterritoires.fr\/index.php\/developper-une-application-avec-pgrouting-sous-windows-4zones-de-chalandise-et-isochrones\/iso2\/\" data-orig-file=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso2.png?fit=1211%2C567&amp;ssl=1\" data-orig-size=\"1211,567\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"iso2\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso2.png?fit=640%2C299&amp;ssl=1\" class=\"aligncenter size-large wp-image-3311\" src=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso2-1024x479.png?resize=640%2C299\" alt=\"jointure de pgr_drivingDistance avec les noeuds\" width=\"640\" height=\"299\" srcset=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso2.png?resize=1024%2C479&amp;ssl=1 1024w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso2.png?resize=300%2C140&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso2.png?resize=768%2C360&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso2.png?resize=1200%2C562&amp;ssl=1 1200w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso2.png?w=1211&amp;ssl=1 1211w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a>Nous pouvons alors visualiser le r\u00e9sultat dans QGis:<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso3.png\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"3312\" data-permalink=\"https:\/\/www.sigterritoires.fr\/index.php\/developper-une-application-avec-pgrouting-sous-windows-4zones-de-chalandise-et-isochrones\/iso3\/\" data-orig-file=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso3.png?fit=1791%2C1005&amp;ssl=1\" data-orig-size=\"1791,1005\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"iso3\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso3.png?fit=640%2C359&amp;ssl=1\" class=\"aligncenter size-large wp-image-3312\" src=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso3-1024x575.png?resize=640%2C360\" alt=\"r\u00e9suktat de pgr_drivingdistance dans qgis\" width=\"640\" height=\"360\" srcset=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso3.png?resize=1024%2C575&amp;ssl=1 1024w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso3.png?resize=300%2C168&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso3.png?resize=768%2C431&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso3.png?resize=1200%2C673&amp;ssl=1 1200w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso3.png?w=1791&amp;ssl=1 1791w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso3.png?w=1280&amp;ssl=1 1280w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a><\/p>\n<h2>Cr\u00e9ation de l&rsquo;aire de chalandise avec pgr_pointsAsPolygon<\/h2>\n<p>Pour cr\u00e9er l&rsquo;aire de chalandise, nous utilisons la requ\u00eate pr\u00e9c\u00e9dente comme sql de la fonction pgr_pointsAsPolygon, en cr\u00e9ant un polygone en sortie que nous pouvons charger dans QGis:<br \/>\n<em><strong>SELECT 1 As id, ST_SetSRID(pgr_pointsAsPolygon(<\/strong><\/em><br \/>\n<em><strong> $$SELECT di.seq AS id, ST_X(v.the_geom) AS x, ST_Y(v.the_geom) As y<\/strong><\/em><br \/>\n<em><strong> FROM pgr_drivingDistance(\u00a0\u00bbSELECT gid As id, source, target,<\/strong><\/em><br \/>\n<em><strong> cost_s AS cost, reverse_cost_s AS reverse_cost<\/strong><\/em><br \/>\n<em><strong> FROM public.ways\u00a0\u00bb,25736 , 300, true<\/strong><\/em><br \/>\n<em><strong> ) AS di INNER JOIN public.ways_vertices_pgr AS v ON di.node = v.id$$<\/strong><\/em><br \/>\n<em><strong> ), 4326) As geom;<\/strong><\/em><\/p>\n<p><a href=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso4.png\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"3314\" data-permalink=\"https:\/\/www.sigterritoires.fr\/index.php\/developper-une-application-avec-pgrouting-sous-windows-4zones-de-chalandise-et-isochrones\/iso4\/\" data-orig-file=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso4.png?fit=1189%2C641&amp;ssl=1\" data-orig-size=\"1189,641\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"iso4\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso4.png?fit=640%2C345&amp;ssl=1\" class=\"aligncenter size-large wp-image-3314\" src=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso4-1024x552.png?resize=640%2C345\" alt=\"requ\u00eate avec pgr_pointsaspolygon\" width=\"640\" height=\"345\" srcset=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso4.png?resize=1024%2C552&amp;ssl=1 1024w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso4.png?resize=300%2C162&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso4.png?resize=768%2C414&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso4.png?w=1189&amp;ssl=1 1189w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a>pgr_pointAsPolygon utilise les id,x et y des points g\u00e9n\u00e9r\u00e9s par pgr_drivingDistance. Pour les x et y on utilise les fonctions St_x et St_y sur la g\u00e9om\u00e9trie des points.<\/p>\n<p>Le r\u00e9sultat, une fois charg\u00e9 dans QGis est le suivant:<\/p>\n<h2><a href=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso5.png\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"3315\" data-permalink=\"https:\/\/www.sigterritoires.fr\/index.php\/developper-une-application-avec-pgrouting-sous-windows-4zones-de-chalandise-et-isochrones\/iso5\/\" data-orig-file=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso5.png?fit=1791%2C1015&amp;ssl=1\" data-orig-size=\"1791,1015\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"iso5\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso5.png?fit=640%2C363&amp;ssl=1\" class=\"aligncenter size-large wp-image-3315\" src=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso5-1024x580.png?resize=640%2C363\" alt=\"r\u00e9sultat de pgr_pointsaspolygon dans QGis\" width=\"640\" height=\"363\" srcset=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso5.png?resize=1024%2C580&amp;ssl=1 1024w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso5.png?resize=300%2C170&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso5.png?resize=768%2C435&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso5.png?resize=1200%2C680&amp;ssl=1 1200w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso5.png?w=1791&amp;ssl=1 1791w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso5.png?w=1280&amp;ssl=1 1280w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a>Construction d&rsquo;isochrones<\/h2>\n<p>Les isochrones correspondent aux zones atteignables en une s\u00e9rie de pas de temps. On peut, dans cet exemple, vouloir conna\u00eetre quelles sont les zones qu&rsquo;on peut atteindre en 1, 2, 3, 4 et 5 minutes.<\/p>\n<p>Pour cela nous allons proc\u00e9der en deux \u00e9tapes.<\/p>\n<p>La premi\u00e8re consiste \u00e0 cr\u00e9er une table avec nos noeuds r\u00e9sultant de pgr_drivingDistance pour le pas de temps le plus fort (5 minutes). Logiquement, dans cette table on trouvera aussi les n\u0153uds atteignables dans les laps de temps plus courts.<\/p>\n<p>Nous cr\u00e9ons cette table (dd_caserne) avec la commande sql suivante:<\/p>\n<p><em><strong>CREATE TABLE dd_caserne AS<\/strong><\/em><br \/>\n<em><strong> SELECT di.seq As id, di.node, di.edge,<\/strong><\/em><br \/>\n<em><strong> di.agg_cost As temps_acces, <\/strong><\/em><em><strong>v.the_geom As geom<\/strong><\/em><br \/>\n<em><strong> FROM pgr_drivingDistance(&lsquo;SELECT gid As id, source, target,<\/strong><\/em><br \/>\n<em><strong> cost_s AS cost, reverse_cost_s AS reverse_cost<\/strong><\/em><br \/>\n<em><strong> FROM public.ways&rsquo;,25736 , 300, true<\/strong><\/em><br \/>\n<em><strong> ) AS di INNER JOIN public.ways_vertices_pgr AS v ON di.node = v.id;<\/strong><\/em><\/p>\n<p>La table r\u00e9sultante est la suivante:<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso8.png\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"3320\" data-permalink=\"https:\/\/www.sigterritoires.fr\/index.php\/developper-une-application-avec-pgrouting-sous-windows-4zones-de-chalandise-et-isochrones\/iso8\/\" data-orig-file=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso8.png?fit=857%2C605&amp;ssl=1\" data-orig-size=\"857,605\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"iso8\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso8.png?fit=640%2C452&amp;ssl=1\" class=\"aligncenter size-full wp-image-3320\" src=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso8.png?resize=640%2C452\" alt=\"table r\u00e9sultante de pgr_drivingdistance\" width=\"640\" height=\"452\" srcset=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso8.png?w=857&amp;ssl=1 857w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso8.png?resize=300%2C212&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso8.png?resize=768%2C542&amp;ssl=1 768w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a>A partir de cette table nous allons construire une s\u00e9rie de polygones avec pgr_pointsAsPolygon, pour les points situ\u00e9s \u00e0 60, 120,180,240 et 300 secondes de temps d&rsquo;acc\u00e8s en utilisant generate_series<\/p>\n<p><em><strong>SELECT i As temps_acces,ST_SetSRID(pgr_pointsAsPolygon(<\/strong><\/em><br \/>\n<em><strong>&lsquo;SELECT id, ST_X(geom) AS x, ST_Y(geom) As y<\/strong><\/em><br \/>\n<em><strong>FROM dd_caserne<\/strong><\/em><br \/>\n<em><strong>WHERE temps_acces &lt;= &lsquo; || i::text ) ,4326) As geom<\/strong><\/em><br \/>\n<em><strong>FROM generate_series(60,300,60) As i<\/strong><\/em><br \/>\n<em><strong>ORDER BY i DESC<\/strong><\/em><\/p>\n<p><a href=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso6.png\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"3318\" data-permalink=\"https:\/\/www.sigterritoires.fr\/index.php\/developper-une-application-avec-pgrouting-sous-windows-4zones-de-chalandise-et-isochrones\/iso6\/\" data-orig-file=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso6.png?fit=1201%2C627&amp;ssl=1\" data-orig-size=\"1201,627\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"iso6\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso6.png?fit=640%2C334&amp;ssl=1\" class=\"aligncenter size-large wp-image-3318\" src=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso6-1024x535.png?resize=640%2C334\" alt=\"cr\u00e9ation des polygones d'isochrones\" width=\"640\" height=\"334\" srcset=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso6.png?resize=1024%2C535&amp;ssl=1 1024w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso6.png?resize=300%2C157&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso6.png?resize=768%2C401&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso6.png?resize=1200%2C626&amp;ssl=1 1200w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso6.png?w=1201&amp;ssl=1 1201w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a>Le r\u00e9sultat comprend les 5 polygones isochrones, que nous pouvons maintenant visualiser dans QGis:<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso7.png\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"3319\" data-permalink=\"https:\/\/www.sigterritoires.fr\/index.php\/developper-une-application-avec-pgrouting-sous-windows-4zones-de-chalandise-et-isochrones\/iso7\/\" data-orig-file=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso7.png?fit=1781%2C1017&amp;ssl=1\" data-orig-size=\"1781,1017\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"iso7\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso7.png?fit=640%2C366&amp;ssl=1\" class=\"aligncenter size-large wp-image-3319\" src=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso7-1024x585.png?resize=640%2C366\" alt=\"isochrones g\u00e9n\u00e9r\u00e9es\" width=\"640\" height=\"366\" srcset=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso7.png?resize=1024%2C585&amp;ssl=1 1024w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso7.png?resize=300%2C171&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso7.png?resize=768%2C439&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso7.png?resize=1200%2C685&amp;ssl=1 1200w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso7.png?w=1781&amp;ssl=1 1781w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/iso7.png?w=1280&amp;ssl=1 1280w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>pgRouting comprend une fonction appel\u00e9e pgr_drivingDistance, qui, en conjonction avec trois autres fonctions, pgr_withPointsDD, pgr_alphaShape et pgr_pointsAsPolygon, permet de d\u00e9terminer quels chemins ont un certain co\u00fbt par rapport \u00e0 un point de d\u00e9part ou d&rsquo;arriv\u00e9e. La&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"give_campaign_id":0,"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0,"sfsi_plus_gutenberg_text_before_share":"","sfsi_plus_gutenberg_show_text_before_share":"","sfsi_plus_gutenberg_icon_type":"","sfsi_plus_gutenberg_icon_alignemt":"","sfsi_plus_gutenburg_max_per_row":"","_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[311,62],"tags":[333,326,332,334,58],"class_list":["post-3308","post","type-post","status-publish","format-standard","hentry","category-postgresql","category-qgis-2","tag-isochrones","tag-pgrouting","tag-pgr_drivingdistance","tag-pgr_pointsaspolygon","tag-qgis"],"aioseo_notices":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p6XU0A-Rm","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.sigterritoires.fr\/index.php\/wp-json\/wp\/v2\/posts\/3308","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.sigterritoires.fr\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.sigterritoires.fr\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.sigterritoires.fr\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sigterritoires.fr\/index.php\/wp-json\/wp\/v2\/comments?post=3308"}],"version-history":[{"count":0,"href":"https:\/\/www.sigterritoires.fr\/index.php\/wp-json\/wp\/v2\/posts\/3308\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.sigterritoires.fr\/index.php\/wp-json\/wp\/v2\/media?parent=3308"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sigterritoires.fr\/index.php\/wp-json\/wp\/v2\/categories?post=3308"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sigterritoires.fr\/index.php\/wp-json\/wp\/v2\/tags?post=3308"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}