﻿{"id":3362,"date":"2016-06-21T12:36:10","date_gmt":"2016-06-21T11:36:10","guid":{"rendered":"http:\/\/www.sigterritoires.fr\/?p=3362"},"modified":"2016-06-21T13:36:38","modified_gmt":"2016-06-21T12:36:38","slug":"developper-une-application-avec-pgrouting-sous-windows-7openlayers-3","status":"publish","type":"post","link":"https:\/\/www.sigterritoires.fr\/index.php\/developper-une-application-avec-pgrouting-sous-windows-7openlayers-3\/","title":{"rendered":"D\u00e9velopper une application avec pgrouting sous Windows (7):OpenLayers 3"},"content":{"rendered":"<p>Nous arrivons \u00e0 la fin de cette s\u00e9rie. Apr\u00e8s avoir mis en place la base de donn\u00e9es Postgres\/Postgis, nous avons configur\u00e9 <a href=\"https:\/\/www.sigterritoires.fr\/index.php\/debuter-avec-geoserver\/\">Geoserver<\/a> pour servir les r\u00e9sultats de <a href=\"https:\/\/www.sigterritoires.fr\/index.php\/developper-une-application-avec-pgrouting-sous-windows-1\/\">pgrouting<\/a> en un lux WMS. Il ne reste plus qu&rsquo;\u00e0\u00a0 cr\u00e9er une page html avec openlayers pour pouvoir entrer les points de d\u00e9part et d&rsquo;arriv\u00e9e et de visualiser l&rsquo;itin\u00e9raire calcul\u00e9.<!--more--><\/p>\n<p>Bien s\u00fbr, il y a moyen de r\u00e9aliser une application complexe. Mais ici nous resterons sur quelque chose d&rsquo;assez modeste. Nous allons afficher un fond de carte OpenStreetMap, et permettre \u00e0 l&rsquo;utilisateur de cliquer sur cette carte pour d\u00e9terminer le point de d\u00e9part de l&rsquo;itin\u00e9raire. Quand il cliquera sur un deuxi\u00e8me point de la carte, nous consid\u00e9rerons que c&rsquo;est le point d&rsquo;arriv\u00e9e souhait\u00e9. La page enverra alors la requ\u00eate au flux WMS de Geoserver pour r\u00e9cup\u00e9rer une entit\u00e9 vecteur repr\u00e9sentant l&rsquo;itin\u00e9raire calcul\u00e9 par pgrouting\u00a0 et nous l&rsquo;afficherons sur la carte.<\/p>\n<p>Pour compl\u00e9ter la page nous mettrons un bouton pour r\u00e9initialiser la carte, une ligne de message pour tenir au curant l&rsquo;utilisateur de l&rsquo;action en cours, et une image pour indiquer l&rsquo;\u00e9tat du transfert entre le serveur et l&rsquo;application.<\/p>\n<div class='stb-container stb-style-grey stb-caption-box stb-collapsed'><div class='stb-caption'><div class='stb-logo'><img class='stb-logo__image' src='data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN\/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz\/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH\/w\/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA\/g88wAAKCRFRHgg\/P9eM4Ors7ONo62Dl8t6r8G\/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt\/qIl7gRoXgugdfeLZrIPQLUAoOnaV\/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl\/AV\/1s+X48\/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H\/LcL\/\/wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93\/+8\/\/UegJQCAZkmScQAAXkQkLlTKsz\/HCAAARKCBKrBBG\/TBGCzABhzBBdzBC\/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD\/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q\/pH5Z\/YkGWcNMw09DpFGgsV\/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY\/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4\/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L\/1U\/W36p\/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N\/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26\/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE\/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV\/MN8C3yLfLT8Nvnl+F30N\/I\/9k\/3r\/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt\/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi\/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a\/zYnKOZarnivN7cyzytuQN5zvn\/\/tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO\/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3\/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA\/0HIw6217nU1R3SPVRSj9Yr60cOxx++\/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3\/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX\/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8\/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb\/1tWeOT3dvfN6b\/fF9\/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR\/cGhYPP\/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF\/6i\/suuFxYvfvjV69fO0ZjRoZfyl5O\/bXyl\/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o\/2j5sfVT0Kf7kxmTk\/8EA5jz\/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5\/wAAgOkAAHUwAADqYAAAOpgAABdvkl\/FRgAAD41JREFUeNrsmnl0lOW9xz\/v7PtkliyTsGUhCQQCYYeyirSCQLXttcqil0Vse9uqrUvrbattbW0PiqJXa61el1YxgAQwyL6VsoNECCQhCZDNTJaZzL69M\/PeP3y5h+PBXhW8vbfH55znvGeemXne+fyW7+95f2cESZL4ZxgK\/knGlyBfgnxBQ\/UF7VsEdKTT6SJBEHoFQUjI657\/DyDmi5dafgRS385de++fNuUrm8+erZ8\/Zsyov3m9Xkem09ngcDr2BALBgqws52pAB8Su182F6yC\/pprTp3\/f3Ng0aP++A3MGDMyXIuGokF9YQDwWIycvL+X3BZTZ2Zm9CiktWSzmjvyCgVU+X6B\/YeHAe2RjJv6hIKFQeO65s+e+s\/LJlTfPmT2PaDxBVnYOfr+PPl+QRCJGPJ5Ar9OTYbOT5XCQm+tKxuMxlV6vae7fz7XZHwhYSkuLl\/8jQUZ977v3rJ8yeXp+SckQjEYT1du2sXXbNto6LhGPiYhikqQoggAqpRKLyUL5iArKR4ykfPhwFKkkOoO2tbAwf6NGo2nOzXM9+78K0tPTM2rXju3vlpUNy7U7MjFbLPz0kX9n647tpFJpJCkNgoSYEEmnkhj0OhSCmmAkQiwWJRGLkV9QyDe\/8S8MGzoEn7eP6TdMXV9UVPB7hULZrlQq3F84SDqdymptaVv\/7DNPTvnxgz9Do9bw\/Xvv5YPaWswmLXa7NTG4sKDLbLH0JGIJw\/nGhkKrxay227MIRyJEY3Eam5tparqI3+tl+owZLF6wmNxcl7\/X06uaN2\/OIovFvPELV63TZ84sX1+5dsqDD\/+CdEri17\/5LfVNzZgtZkaWFX\/44osvrlAqVUdEUSxubWl9UqczDjYZTUiSRDQWw9PrpbHpPLv37Gb3vv3s3bcfr7eP5ctWWAf2zwt4vd4pkUjYmpOT8wbwqa2sfOyxxz41RDyeKO5o63whO9tptmU4OHzkCG9WVuJwOhEEBV6fT9u\/X257hjXDf+TI0WddOf3GGY1mRTKZxBsI0enuJRSJoNeZGD6sjLy8bDo6P+TMB7U0NNYxduxYbWND48SsbKc3MzNz0xdW2S9cbLn\/pZf\/4BJQYndksmffLvRGAyqVCo1Gg88f1CxYtOCnt337G\/vycvNG6fUGkkkRUUzT0tZJd4+HhJgkGk8SCMYpKx3Bwtu\/TX5RPs2NTfzljdfIsNno6faMOHz46F+ArOseWqlUqvBcXf0tixbcSU52Nm3trTRdbMFkMiKlIZWCpJgi4AvisDsU2c4skmIcjVbP7j3bePrZ58jOyycz00lZ8WAqKsaQFkUmjJvK8ePHiEYi7Nm3h4qKUeTlDRhdVlZqBITr7pG2jo6bPjj9Qc7ad9agUqvx+XzEE3EEQYkkSUhpiMViJOJxcrJyUalVKFQCCgW8+ZfXudDSiccT4N3N1Ty16nf4A30YrCY0OgPjxkzEYjWhN1jYsXMbDruNaDSeffTo8WcB0\/X0iMrfF5jUPzePebNnk5mZRafbjUIAQSFASgLSRGMRADq73CTTKVRKJQqFwMD8fC51RQiFgqSTUTrcLdSe+YDCgiIS8RhFg0tw2DIRRRXnztXR6+lFTCZtFqsxA0heT484W1taJ7jdnaxc+ThebzdanfojCCn9kSxLEkkxDgg0NJynt7sLpaAmEU9y95Kl5Pd30flhK73uFjRaDWNHlWOz6LCa9dhtGahVSsxmI6m0RG3tafr160c8lhze0f7hPdcTJJnhsHk6uzpYtmwFWdnZ6LQaVIKSdDqFSq1AEATUKj2g5NKlVjZVV6NQgiSkGFxcxDNP\/oof\/XAp96y4m41VVUz6ykQQUlgsZjyeXmJiEqvVisFo5Oy5WkDByZPHXIJCSFy30EqlUoOamy4O7td\/EFUbNxKJhJg8ZTpWix53dwAJAa1Wj9Vmo8vdSUJMsHbd24wcWcHkyZMQRZGsrGwe\/PEDKBQK4vE4wUAQjVqHUqXkfOPZVCAQUmbYtOj1JoLBEJIEw4aNTIVD4RGAEkhds0eUSuXZcWPH\/K21tQWEFOPGTUSlUrPgjjv8v3z0kRdvmDrxeP3ZU9hsNrJy8jCYbPT2eHj66VX87cAhdFoDWq2BcFQkFImTTEoYDBY0ai3Hjx+JLF++\/Adr33rjtwohHQsFAygEBVarhTO1NcqOjjbtpymMVy2IS5cuZdOmTbjdblwuFxaLxVJz+uwDrS0tmf0HFrC28k1cLhdTpswQzWbjz5PJ5DMKIT2zob7RlZXtQhCU6HQGxJRIY3MrcVHC6bSj0elQqjQk4klaLl1kzbq32L17Z9+ihYv\/LSsrq9rn7Z3x3pZ3C4oGD+bmOXMxGSwMKsg\/63DYN\/5PMFcNrVdfffW\/r3a7nSVLlvjv\/eG9j4uJG\/\/wu5WPW8qHDqV8+Ggi4ZjZ6\/U99Oqrr952yy3z92zfsXNUliuXDJsZ0GBz2EhKCt7btosT79dgt1mJRHx0d3bQ0tKMu8vDwoUL2gA\/4NAbtAJAefkI1BoN+\/66Xcqw3xopLi6UrjnZvV6v4qmnnko1NjdLoXDYnD9gACNGjeeRnz9Ebe0pXK7cr82adeN9wWC4efLkie0N9TVYrVa0GgXRSIRkWkJr0BEKh9m\/fx9r1qxhc3U1Le1dFBSWMHPGjJcWLFggtrW1ZdTU1BQLCpg2dRqRSJRRoyYIQ4YMOQmkrxVEAagB038891yzIImrFyxcFnr5T88TDoYoKhpCJBwR5tx888MnTpwY1uXu3VReVho4feoYCgH0GjXBPg+tF5poOl9Pb68Hvc5CYWEZZUMrWLHsrrdWrXrqtcrKSpqaGsfs2LE1d\/r06YwePY6mpjpOnDjYrdVq669Vfi9DGICcqqoNqdoztWjVamNpSSmjxkzkwYfu5ZX\/fIlMZ47x0Ucfvdtut48Mh2J1Y0ePjNTVngJBIiMjA6vVit1up7CwkGHDhzMov4D+\/ftJSqXicFXVxuTiRYuNZ07X3BMORxQ\/e+Qx2lsv0d7ayl13LX3fZDLtvxYQQc4fA5AJ5ANjqrdUZ2zduunct761KHb69Cnq6mqZMnkmx44dJRqLaFavfuYr48ePHxgOR\/uGDy9NxWIhVGolao0arVaLRqNBrVYjSWm6unuEAwePrFi+fNmSwYMLHliz5s3pLzz\/MsXFJQgKgeam+qDT6Xj+mh6sBEFQyhBOGWI4MBQYNHr06PynnnyucNfu9wSVSiOEYzGOHNzLE088ydAhQ5FIc\/z4cfHd6o3K+vPNCrXWhFqtQ6VUkpY+slA6nUZMpgj6+zDopHROVqZi8Z1LmDZ1Jlu2VPHWmrd55unVb+bmuX4it5CinxdEA2QAA2SI8cAwoJ\/D4cwoKxuqmzBhkmL02Anq1c8+QUX5GObe\/HWqt2zk\/vvvp7CwCL\/Px\/unTnHw8EHON17C7\/cTi4lIpFGpFBh0BnJzMpkwYSJfnXUTKpWCw0cOY9QbOHTkIIvvXHpBCTqjyXhOpVa8otfr1\/+9c9cngehlb5QAY4FJQKkcZlpAePjhR1RlQ4fRfKFeyB9UpHi78s8gwMqVq9hctYGly+4mx+UCSSIhinR3d9Pr8YCURq\/Xk5Odg0ajRW\/Qs3\/vXwkEg2g0Wpqampnz9VtJJuL0eXqw2Wz4fQFyc7NX5+blPPRJrSPV38kRJaABjPLUXfH55B\/\/+ELM6XRITzyx0pKIx0GAufO+wWuvv8HBA3u4Y+EiHnzgPubPv4Wc3DxUKgWlJcX4fD60Gi0XLjZjMBh55eU\/MXvOPGprz9LS2szkyTORxASP\/vwntHcHGTBgILOmTyEQCN5rNptOmi2mP38WEEnWblHuBsZlS4jyesTn8\/nj8Xhq184dYiQa0d1513fMubku1le+yew589my9T2qNlUxdfoNvPDi84yqGMOAgQPYsX0by5av4DdPPM4PvvdDztU30NPrp7GxnnDEz7y5t9LefomLbV0MGFhES0szle908v17vktHh3txqaWo8mpe+STVSskAfUAn8CHQLVfgMBACuqLRaP0fX3rx2M6dO9q8np5I1Ttr49+6bQE3zZ7L\/r17WLrsu7S3t3O+oR5Xbj\/+\/MbrWK0OqjZsYHDhMN6urGJ4xUTKyysoKhyM05mFRqPBZDQzftw4vN4uxESchrozSKkU4XCkNJ1OOz9LjlyWXgdQAFQA5UAhYJdDzy8DBgCzIJBjMpmzf\/mrX7sOHTyouvHGWerSoWW8V72JcRMmEQr4aGg4z5AhQ+jp8TBowMDGi23tme7uroza0x+QYbFis5mZecNsCgryCQT9vLulmvqGOirKK5g7Zz42u2VvcUnhTVfzyCeBXFkML0vwEDnhB8mAannDgOwlCTCo1epsURT7z50339rW1qooKS4RSkqHcOr9k9K0adOFAwf2x\/r1G9BqNOrfKy4tvWPL1h3ZN06bQXNzI8FgiJk3zGLM2JGo1RqcTqfcvJCoqzuHz+ePzPrqjFt1Ou2OT5sjaVnqokCvHGohoEf2Qj7gAqwylEPOI1EUxSQgVr+7OQmoas+cEVKplABIe\/fukcLhMIDC4XCMvvOuJYq5X5vDiZOH8AdCGIxmotEQsWgIf1CBLTObFCkaG+s4deoUI0aMqNPptBc\/6xElLVs8LANcAE4Ce4Ed8vV94JIMefkU4JD3FQExlUqJslHS4XA4LRtvUCgUGltUmG91u1tpbr7E6Iqx5Lhy6PZ4qGtoI9M1kD5fmAMHDrF7zy5UKjXFJUUHN2x4p\/Gz5MjHYZXyD9AAesAsF8xsefaXPXTZO0a5+6GVp0reQ7isiEajUX377bdb9AaDsrioFHOGkcOHDmPQm5l38zzCsQDZmS6OHz+Gw5GJ290ZjEZD3\/nFo794SxTFz\/Wom5ZvnpItG5e95JHDTC9DWWQhyLgCVCuvq+SckmQ1TITD4axXXnllwn333ZdfPrKMynXr6OkL8M0pM9i4uZJeTy\/\/etcyTtW8z6KFd7KhqvL0unXrW+S9kp+3HSRdMa8Eisoe65Etrr5iauT3tJefRuXvxuVrARDzeDymdWvXOg1anbDg27fR7e6gpqaG225bxNGjx5g0cSrPrF4V3bRpY6fsUeHzhtYnVX6u2Fj42NrfM8TlG2YAo4GvARNXrVo1PJVMalrb2jSTJk0Rurs7EUWJ7du2uHfu2nkI2AjsAtzSVX705wX5JLArX0tXgfl47hlkOS\/Nzc0d0eV2Z40dNz6voCA\/c\/v27b12uz3a2Nh4GtgHnAO8H7XQJL4okGsZSvkclyELhEnOsdgV8t9zZRH8vwpytZIgXCUU+cwgX\/7z4UuQL0H++UD+awDc\/MMFLMO8WgAAAABJRU5ErkJggg==' alt='img'\/><\/div><div class='stb-caption-content'>Texte de la page html<\/div><div class='stb-tool'><\/div><\/div><div class='stb-content'><\/p>\n<p>&lt;!DOCTYPE html&gt;<br \/>\n&lt;html&gt;<br \/>\n&lt;head&gt;<br \/>\n&lt;title&gt;Recherche d&rsquo;itin\u00e9raire avec pgRouting &lt;\/title&gt;<br \/>\n&lt;meta charset=\u00a0\u00bbutf-8&Prime;&gt;<br \/>\n&lt;style&gt;<br \/>\n#map {<br \/>\nwidth: 100%;<br \/>\nheight: 800px;}<br \/>\n&lt;\/style&gt;<br \/>\n&lt;\/head&gt;<br \/>\n&lt;body&gt;<br \/>\n&lt;div id=\u00a0\u00bbmap\u00a0\u00bb&gt;&lt;\/div&gt;<br \/>\n&lt;div id=\u00a0\u00bbdesc\u00a0\u00bb&gt;Cliquez sur la carte pour d\u00e9finir le point de d\u00e9part &#8211; cliquez \u00e0 nouveau pour d\u00e9finir le point d&rsquo;arriv\u00e9e &#8211; la route sera trac\u00e9e&lt;\/div&gt;&lt;div align=\u00a0\u00bbcenter\u00a0\u00bb&gt;&lt;img src=\u00a0\u00bb0.png\u00a0\u00bb id=\u00a0\u00bbimage\u00a0\u00bb width=\u00a0\u00bb60&Prime; height=\u00a0\u00bb60&Prime;&gt;&lt;\/div&gt;<br \/>\n&lt;button id=\u00a0\u00bbclear\u00a0\u00bb&gt;Effacer&lt;\/button&gt;<br \/>\n&lt;script src=\u00a0\u00bbhttp:\/\/openlayers.org\/en\/v3.16.0\/build\/ol.js\u00a0\u00bb&gt;&lt;\/script&gt;<br \/>\n&lt;script type=\u00a0\u00bbtext\/javascript\u00a0\u00bb&gt;<br \/>\nvar map = new ol.Map({<br \/>\ntarget: &lsquo;map&rsquo;,<br \/>\nlayers: [<br \/>\nnew ol.layer.Tile({<br \/>\nsource: new ol.source.OSM()<br \/>\n})<br \/>\n],<br \/>\nview: new ol.View({<br \/>\ncenter: [-500000, 6172000],<br \/>\nzoom: 12<br \/>\n}),<br \/>\ncontrols: ol.control.defaults({<br \/>\nattributionOptions: {<br \/>\ncollapsible: false<br \/>\n}<br \/>\n})<br \/>\n});<\/p>\n<p>\/\/ Les points de d\u00e9part et d&rsquo;arriv\u00e9e.<br \/>\nvar startPoint = new ol.Feature();<br \/>\nvar destPoint = new ol.Feature();<\/p>\n<p>\/\/ La couche vecteur utilis\u00e9e pour afficher les points de d\u00e9part et d&rsquo;arriv\u00e9e.<br \/>\nvar vectorLayer = new ol.layer.Vector({<br \/>\nsource: new ol.source.Vector({<br \/>\nfeatures: [startPoint, destPoint]})<br \/>\n});<\/p>\n<p>map.addLayer(vectorLayer);<br \/>\nvar params = {<br \/>\nLAYERS: &lsquo;pgrouting:itineraire&rsquo;,<br \/>\nFORMAT: &lsquo;image\/png&rsquo;<br \/>\n};<br \/>\n\/\/ La fonction de transformation des coordonn\u00e9es \u00e0 partir de l&rsquo;EPSG:3857<br \/>\n\/\/ vers\u00a0 <a href=\"https:\/\/www.sigterritoires.fr\/index.php\/epsg-4326-vs-3857\/\">EPSG:4326<\/a>.<br \/>\nvar transform = ol.proj.getTransform(&lsquo;EPSG:3857&rsquo;, &lsquo;EPSG:4326&rsquo;);<\/p>\n<p>\/\/ Mise en place d&rsquo;une \u00e9coute sur les \u00e9venements de la carte.<br \/>\nmap.on(&lsquo;click&rsquo;, function(event) {<br \/>\nif (startPoint.getGeometry() == null) {<br \/>\n\/\/ Premier click.<br \/>\nstartPoint.setGeometry(new ol.geom.Point(event.coordinate));<br \/>\n} else if (destPoint.getGeometry() == null) {<br \/>\n\/\/ Deuxi\u00e8me click.<br \/>\ndestPoint.setGeometry(new ol.geom.Point(event.coordinate));<br \/>\n\/\/ Transformations des coordonn\u00e9es \u00e0 partir de celle de la carte (EPSG:3857)<br \/>\n\/\/ vers celle du serveur (EPSG:4326).<br \/>\nvar startCoord = transform(startPoint.getGeometry().getCoordinates());<br \/>\nvar destCoord = transform(destPoint.getGeometry().getCoordinates());<br \/>\nvar viewparams = [<br \/>\n&lsquo;x1:&rsquo; + startCoord[0], &lsquo;y1:&rsquo; + startCoord[1],<br \/>\n&lsquo;x2:&rsquo; + destCoord[0], &lsquo;y2:&rsquo; + destCoord[1]<br \/>\n];<br \/>\nparams.viewparams = viewparams.join(&lsquo;;&rsquo;);<br \/>\nvar source =new ol.source.ImageWMS({<br \/>\nurl: &lsquo;http:\/\/localhost:8080\/geoserver\/pgrouting\/wms&rsquo;,<br \/>\nparams: params<br \/>\n})<br \/>\nresult = new ol.layer.Image({<br \/>\nsource: source<br \/>\n});<br \/>\nsource.on(&lsquo;imageloadstart&rsquo;, function() {<br \/>\ndocument.getElementById(\u00ab\u00a0desc\u00a0\u00bb).innerHTML =\u00a0\u00bbchargement&#8230;\u00a0\u00bb;<br \/>\ndocument.getElementById(\u00ab\u00a0image\u00a0\u00bb).src =\u00a0\u00bbtree_loading.gif\u00a0\u00bb;<br \/>\n});<br \/>\nsource.on(&lsquo;imageloadend&rsquo;, function() {<br \/>\ndocument.getElementById(\u00ab\u00a0desc\u00a0\u00bb).innerHTML =\u00a0\u00bbtermin\u00e9 OK!\u00a0\u00bb;<br \/>\ndocument.getElementById(\u00ab\u00a0image\u00a0\u00bb).src =\u00a0\u00bbOK.jpg\u00a0\u00bb;<br \/>\n});<br \/>\nsource.on(&lsquo;imageloaderror&rsquo;, function() {<br \/>\ndocument.getElementById(\u00ab\u00a0desc\u00a0\u00bb).innerHTML =\u00a0\u00bberreur!\u00a0\u00bb;<br \/>\ndocument.getElementById(\u00ab\u00a0image\u00a0\u00bb).src =\u00a0\u00bbno.png\u00a0\u00bb;<br \/>\n});<br \/>\nmap.addLayer(result);<br \/>\n}<br \/>\n});<\/p>\n<p>var clearButton = document.getElementById(&lsquo;clear&rsquo;);<br \/>\nclearButton.addEventListener(&lsquo;click&rsquo;, function(event) {<br \/>\n\/\/ R\u00e9initialise les entit\u00e9s\u00a0 \u00ab\u00a0start\u00a0\u00bb et \u00ab\u00a0destination\u00a0\u00bb .<br \/>\nstartPoint.setGeometry(null);<br \/>\ndestPoint.setGeometry(null);<br \/>\ndocument.getElementById(\u00ab\u00a0desc\u00a0\u00bb).innerHTML =\u00a0\u00bbCliquez sur la carte pour d\u00e9finir le point de d\u00e9part &#8211; cliquez \u00e0 nouveau pour d\u00e9finir le point d&rsquo;arriv\u00e9e &#8211; la route sera trac\u00e9e\u00a0\u00bb;<br \/>\ndocument.getElementById(\u00ab\u00a0image\u00a0\u00bb).src =\u00a0\u00bb0.png\u00a0\u00bb;<br \/>\n\/\/ Remove the result layer.<br \/>\nmap.removeLayer(result);<br \/>\n});<br \/>\n&lt;\/script&gt;<br \/>\n&lt;\/body&gt;<br \/>\n&lt;\/html&gt;<\/div><\/div>\n<p>&nbsp;<\/p>\n<p>Voyons maintenant en d\u00e9tail les diff\u00e9rentes parties du code.<\/p>\n<p>Pour ce qui est du d\u00e9but, que du classique:<\/p>\n<p><em>&lt;style&gt;<\/em><br \/>\n<em> #map {<\/em><br \/>\n<em> width: 100%;<\/em><br \/>\n<em> height: 800px;}<\/em><\/p>\n<p>Nous d\u00e9finissons la taille de la carte sur notre page: elle occupera toute la largeur de la page et aura 800 pixels en hauteur.<\/p>\n<p><em>&lt;div id=\u00a0\u00bbmap\u00a0\u00bb&gt;&lt;\/div&gt;<\/em><br \/>\n<em> &lt;div id=\u00a0\u00bbdesc\u00a0\u00bb&gt;Cliquez sur la carte pour d\u00e9finir le point de d\u00e9part &#8211; cliquez \u00e0 nouveau pour d\u00e9finir le point d&rsquo;arriv\u00e9e &#8211; la route sera trac\u00e9e&lt;\/div&gt;<\/em><br \/>\n<em> &lt;div align=\u00a0\u00bbcenter\u00a0\u00bb&gt;&lt;img src=\u00a0\u00bb0.png\u00a0\u00bb id=\u00a0\u00bbimage\u00a0\u00bb width=\u00a0\u00bb60&Prime; height=\u00a0\u00bb60&Prime;&gt;&lt;\/div&gt;<\/em><br \/>\n<em> &lt;button id=\u00a0\u00bbclear\u00a0\u00bb&gt;Effacer&lt;\/button&gt;<\/em><\/p>\n<p>Nous pla\u00e7ons donc le div de la carte, en dessous une ligne de texte qui nous servira comme zone de messages, puis une image pour indiquer l&rsquo;\u00e9tat de transfert et tout en dessous un bouton <strong>Effacer<\/strong> qui permettra de r\u00e9initialiser la page. L&rsquo;image 0.png est une image vide.<\/p>\n<p>Nous retrouvons la r\u00e9f\u00e9rence \u00e0 la biblioth\u00e8que openlayers utilis\u00e9e:<\/p>\n<p><em>&lt;script src=\u00a0\u00bbhttp:\/\/openlayers.org\/en\/v3.16.0\/build\/ol.js\u00a0\u00bb&gt;&lt;\/script&gt;<\/em><\/p>\n<p>et ensuite la cr\u00e9ation de notre carte :<\/p>\n<p><em>\u00a0var map = new ol.Map({<\/em><br \/>\n<em>\u00a0\u00a0\u00a0 target: &lsquo;map&rsquo;,<\/em><br \/>\n<em>\u00a0\u00a0\u00a0 layers: [\u00a0\u00a0 new ol.layer.Tile({<\/em><br \/>\n<em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 source: new ol.source.OSM() }) ],<\/em><br \/>\n<em>\u00a0\u00a0\u00a0 view: new ol.View({<\/em><br \/>\n<em>\u00a0\u00a0\u00a0\u00a0\u00a0 center: [-500000, 6172000],<\/em><br \/>\n<em>\u00a0\u00a0 \u00a0\u00a0 zoom: 12 }),<\/em><br \/>\n<em>\u00a0\u00a0\u00a0 controls: ol.control.defaults({<\/em><br \/>\n<em>\u00a0\u00a0\u00a0\u00a0\u00a0 attributionOptions: {<\/em><br \/>\n<em>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 collapsible: false\u00a0 }\u00a0 }) });<\/em><\/p>\n<p>Nous chargeons dans notre carte la couche OpenStreetMaps, nous centrons l&rsquo;affichage sur les coordonn\u00e9es EPSG:3857 du centre de notre zone d&rsquo;int\u00e9r\u00eat, nous d\u00e9finissons l&rsquo;\u00e9tendue affich\u00e9e au d\u00e9part avec le facteur de zoom (12) et finalement les contr\u00f4les souhait\u00e9s.<\/p>\n<p>La suite du code traite les points de d\u00e9part et d&rsquo;arriv\u00e9e.<\/p>\n<p>Nous cr\u00e9ons deux entit\u00e9s (features) pour accueillir ces points<\/p>\n<p><em>\/\/ Les points de d\u00e9part et d&rsquo;arriv\u00e9e.<\/em><br \/>\n<em> var startPoint = new ol.Feature();<\/em><br \/>\n<em> var destPoint = new ol.Feature();<\/em><\/p>\n<p>Puis nous d\u00e9finissons une couche vecteur pour les afficher<\/p>\n<p><em>\/\/ La couche vecteur utilis\u00e9e pour afficher les points de d\u00e9part et d&rsquo;arriv\u00e9e.<\/em><br \/>\n<em> var vectorLayer = new ol.layer.Vector({<\/em><br \/>\n<em> source: new ol.source.Vector({<\/em><br \/>\n<em> features: [startPoint, destPoint]})<\/em><br \/>\n<em> });<\/em><\/p>\n<p><em>map.addLayer(vectorLayer);<\/em><\/p>\n<p>Nous cr\u00e9ons une variable params avec certains param\u00e8tres fixes de notre requ\u00eate \u00e0 envoyer \u00e0 Geoserver, le nom de a couche Geoserver \u00e0 interroger et le format sous lequel nous voulons recevoir le r\u00e9sultat.<\/p>\n<p><em>var params = {<\/em><br \/>\n<em> LAYERS: &lsquo;pgrouting:itineraire&rsquo;,<\/em><br \/>\n<em> FORMAT: &lsquo;image\/png&rsquo;<\/em><br \/>\n<em> };<\/em><\/p>\n<p>Puis nous d\u00e9fissons une fonction de transformatons de coordonn\u00e9es. OpenStreetMap travaille en coordonn\u00e9es sph\u00e9riques Pseudo-Mercator (EPSG:3857). Mais nos donn\u00e9es <a href=\"https:\/\/www.sigterritoires.fr\/index.php\/debuter-avec-postgrespostgis\/\">PostGis<\/a> sont en coordonn\u00e9es g\u00e9ographiques (EPSG:4326).<\/p>\n<p>Quand nous allons r\u00e9cup\u00e9rer le clic sur la carte, les coordonn\u00e9es seront en 3857. Nous devrons es transformer en 4326 avant d&rsquo;envoyer la requ\u00eate vers Geoserver.<br \/>\n\/<em>\/ La fonction de transformation des coordonn\u00e9es \u00e0 partir de l&rsquo;EPSG:3857<\/em><br \/>\n<em> \/\/ vers\u00a0 EPSG:4326.<\/em><br \/>\n<em> var transform = ol.proj.getTransform(&lsquo;EPSG:3857&rsquo;, &lsquo;EPSG:4326&rsquo;);<\/em><\/p>\n<p>Maintenant nous mettons en place l&rsquo;\u00e9coute de l&rsquo;\u00e9v\u00e9nement click sur notre carte. Cette partie du code sera activ\u00e9e quand l&rsquo;utilisateur cliquera sur la carte.<\/p>\n<p><em>\/\/ Mise en place d&rsquo;une \u00e9coute sur les \u00e9venements de la carte.<\/em><br \/>\n<em> map.on(&lsquo;click&rsquo;, function(event) {<\/em><\/p>\n<p>Si le startpoint est vide, cela indique que c&rsquo;est le premier click sur la carte et que c&rsquo;est le point de d\u00e9part qui doit \u00eatre renseign\u00e9.<br \/>\n<em> if (startPoint.getGeometry() == null) {<\/em><br \/>\n<em> \/\/ Premier click.<\/em><br \/>\n<em> startPoint.setGeometry(new ol.geom.Point(event.coordinate));<\/em><\/p>\n<p>Si, par contre, le startpoint est d\u00e9j\u00e0 rensign\u00e9, nous sommes en pr\u00e9sence du deuxi\u00e8me click. Nous allons donc renseigner le destPoint :<br \/>\n<em> } else if (destPoint.getGeometry() == null) {<\/em><br \/>\n<em> \/\/ Deuxi\u00e8me click.<\/em><br \/>\n<em>destPoint.setGeometry(new ol.geom.Point(event.coordinate));<\/em><\/p>\n<p>Et nous encha\u00eenons directement sur le processus de soumission de la requ^\u00f9ete \u00e0 Geoserver.<\/p>\n<p>Nous transformons les coordonn\u00e9es des deux points cliqu\u00e9s:<br \/>\n<em> \/\/ Transformations des coordonn\u00e9es \u00e0 partir de celle de la carte (EPSG:3857)<\/em><br \/>\n<em> \/\/ vers celle du serveur (EPSG:4326).<\/em><br \/>\n<em> var startCoord = transform(startPoint.getGeometry().getCoordinates());<\/em><br \/>\n<em> var destCoord = transform(destPoint.getGeometry().getCoordinates());<\/em><\/p>\n<p>et nous construisons la cha\u00eene de caract\u00e8res avec les param\u00e8tres x1, y1,x2 et y2 n\u00e9cessaires \u00e0\u00a0 notre couche Geoserver (voir l&rsquo;article pr\u00e9c\u00e9dent)<br \/>\n<em> var viewparams = [<\/em><br \/>\n<em> &lsquo;x1:&rsquo; + startCoord[0], &lsquo;y1:&rsquo; + startCoord[1],<\/em><br \/>\n<em> &lsquo;x2:&rsquo; + destCoord[0], &lsquo;y2:&rsquo; + destCoord[1]<\/em><br \/>\n<em> ];<\/em><\/p>\n<p>Voil\u00e0, nous avons tous les \u00e9l\u00e9ments n\u00e9cessaires pour construire le message \u00e0 envoyer \u00e0 Geoserver. Ce mesage nous le mettons dans une variable <em><strong>source<\/strong><\/em>.<\/p>\n<p><em>params.viewparams = viewparams.join(&lsquo;;&rsquo;);<\/em><br \/>\n<em> var source =new ol.source.ImageWMS({<\/em><br \/>\n<em> url: &lsquo;http:\/\/localhost:8080\/geoserver\/pgrouting\/wms&rsquo;,<\/em><br \/>\n<em> params: params<\/em><\/p>\n<p>Et nous envoyons la requ\u00eate vers Geoserver en demandant de mettre le r\u00e9sultat dans une nouvelle couche Image (nous avons demand\u00e9 le retour sous forme d&rsquo;image png un peu plus haut) \u00e0 afficher dans notre map<\/p>\n<p><em>result = new ol.layer.Image({<\/em><br \/>\n<em> source: source<\/em><\/p>\n<p>Comme l&rsquo;interrogation n&rsquo;est pas instantan\u00e9e, il vaut mieux tenir au courant l&rsquo;utilisateur de ce qui se passe sans l&rsquo;obliger \u00e0 rester devant un \u00e9cran semblant fig\u00e9.<\/p>\n<p>Les lignes suivantes affichent un texte de message et une image montrant que la requ\u00eate est en cours, puis quand le transfert est termin\u00e9, indiquant s&rsquo;il &lsquo;est bien pass\u00e9 ou non.<\/p>\n<p><em>source.on(&lsquo;imageloadstart&rsquo;, function() {<\/em><br \/>\n<em> document.getElementById(\u00ab\u00a0desc\u00a0\u00bb).innerHTML =\u00a0\u00bbchargement&#8230;\u00a0\u00bb;<\/em><br \/>\n<em> document.getElementById(\u00ab\u00a0image\u00a0\u00bb).src =\u00a0\u00bbtree_loading.gif\u00a0\u00bb;<\/em><br \/>\n<em> });<\/em><br \/>\n<em> source.on(&lsquo;imageloadend&rsquo;, function() {<\/em><br \/>\n<em> document.getElementById(\u00ab\u00a0desc\u00a0\u00bb).innerHTML =\u00a0\u00bbtermin\u00e9 OK!\u00a0\u00bb;<\/em><br \/>\n<em> document.getElementById(\u00ab\u00a0image\u00a0\u00bb).src =\u00a0\u00bbOK.jpg\u00a0\u00bb;<\/em><br \/>\n<em> });<\/em><br \/>\n<em> source.on(&lsquo;imageloaderror&rsquo;, function() {<\/em><br \/>\n<em> document.getElementById(\u00ab\u00a0desc\u00a0\u00bb).innerHTML =\u00a0\u00bberreur!\u00a0\u00bb;<\/em><br \/>\n<em> document.getElementById(\u00ab\u00a0image\u00a0\u00bb).src =\u00a0\u00bbno.png\u00a0\u00bb;<\/em><br \/>\n<em> });<\/em><\/p>\n<p>Nous chargeons la couche dans notre carte:<\/p>\n<p><em>map.addLayer(result);<\/em><\/p>\n<p>Finalement, nous traitons le click sur le bouton Effacer:<\/p>\n<p><em>var clearButton = document.getElementById(&lsquo;clear&rsquo;);<\/em><br \/>\n<em> clearButton.addEventListener(&lsquo;click&rsquo;, function(event) {<\/em><br \/>\n<em> \/\/ R\u00e9initialise les entit\u00e9s\u00a0 \u00ab\u00a0start\u00a0\u00bb et \u00ab\u00a0destination\u00a0\u00bb .<\/em><br \/>\n<em> startPoint.setGeometry(null);<\/em><br \/>\n<em> destPoint.setGeometry(null);<\/em><br \/>\n<em> document.getElementById(\u00ab\u00a0desc\u00a0\u00bb).innerHTML =\u00a0\u00bbCliquez sur la carte pour d\u00e9finir le point de d\u00e9part &#8211; cliquez \u00e0 nouveau pour d\u00e9finir le point d&rsquo;arriv\u00e9e &#8211; la route sera trac\u00e9e\u00a0\u00bb;<\/em><br \/>\n<em> document.getElementById(\u00ab\u00a0image\u00a0\u00bb).src =\u00a0\u00bb0.png\u00a0\u00bb;<\/em><br \/>\n<em> \/\/ Remove the result layer.<\/em><br \/>\n<em> map.removeLayer(result);<\/em><br \/>\n});<\/p>\n<p>En vidant les entit\u00e9s startPoint et destPoint, en remettant le message d&rsquo;accueil et l&rsquo;image vide et en effa\u00e7ant la couche vecteur contenat l&rsquo;itin\u00e9raire pr\u00e9c\u00e9dent.<\/p>\n<p>Nous pouvons ouvrir cette page dans notre navigateur et voir l&rsquo;application tourner:<\/p>\n<div style=\"width: 640px;\" class=\"wp-video\"><video class=\"wp-video-shortcode\" id=\"video-3362-1\" width=\"640\" height=\"360\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"http:\/\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/pgfrouting2.mp4?_=1\" \/><a href=\"http:\/\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/pgfrouting2.mp4\">http:\/\/www.sigterritoires.fr\/wp-content\/uploads\/2016\/06\/pgfrouting2.mp4<\/a><\/video><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Nous arrivons \u00e0 la fin de cette s\u00e9rie. Apr\u00e8s avoir mis en place la base de donn\u00e9es Postgres\/Postgis, nous avons configur\u00e9 Geoserver pour servir les r\u00e9sultats de pgrouting en un lux WMS. Il ne reste plus&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_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_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[311,62],"tags":[315,337,326,227,312,58,132],"class_list":["post-3362","post","type-post","status-publish","format-standard","hentry","category-postgresql","category-qgis-2","tag-geoserver","tag-open-layers","tag-pgrouting","tag-postgis","tag-postgresql","tag-qgis","tag-wms"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.9 - aioseo.com -->\n\t<meta name=\"description\" content=\"Nous arrivons \u00e0 la fin de cette s\u00e9rie. Apr\u00e8s avoir mis en place la base de donn\u00e9es Postgres\/Postgis, nous avons configur\u00e9 Geoserver pour servir les r\u00e9sultats de pgrouting en un lux WMS. Il ne reste plus qu&#039;\u00e0 cr\u00e9er une page html avec openlayers pour pouvoir entrer les points de d\u00e9part et d&#039;arriv\u00e9e et de visualiser l&#039;itin\u00e9raire calcul\u00e9.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Atilio Francois\"\/>\n\t<meta name=\"google-site-verification\" content=\"ByXHZUbGNn7RNv-Xk5A-ysTZrM65VLIO2RxfSJ2nIEQ\" \/>\n\t<meta name=\"keywords\" content=\"pgrouting,postgresql,postgis,isochrones,itineraire,qgis,openlayers,ol3,geoserver,open layers,wms\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/www.sigterritoires.fr\/index.php\/developper-une-application-avec-pgrouting-sous-windows-7openlayers-3\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.9\" \/>\n\t\t<meta property=\"og:locale\" content=\"fr_FR\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Blog SIG &amp; Territoires | le portail des professionnels du SIG\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"D\u00e9velopper une application avec pgrouting sous Windows (7):OpenLayers 3 | Blog SIG &amp; Territoires\" \/>\n\t\t<meta property=\"og:description\" content=\"Nous arrivons \u00e0 la fin de cette s\u00e9rie. Apr\u00e8s avoir mis en place la base de donn\u00e9es Postgres\/Postgis, nous avons configur\u00e9 Geoserver pour servir les r\u00e9sultats de pgrouting en un lux WMS. Il ne reste plus qu&#039;\u00e0 cr\u00e9er une page html avec openlayers pour pouvoir entrer les points de d\u00e9part et d&#039;arriv\u00e9e et de visualiser l&#039;itin\u00e9raire calcul\u00e9.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/www.sigterritoires.fr\/index.php\/developper-une-application-avec-pgrouting-sous-windows-7openlayers-3\/\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2016-06-21T11:36:10+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2016-06-21T12:36:38+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/atilio.francois\/\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:site\" content=\"@SigTerritoires\" \/>\n\t\t<meta name=\"twitter:title\" content=\"D\u00e9velopper une application avec pgrouting sous Windows (7):OpenLayers 3 | Blog SIG &amp; Territoires\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Nous arrivons \u00e0 la fin de cette s\u00e9rie. Apr\u00e8s avoir mis en place la base de donn\u00e9es Postgres\/Postgis, nous avons configur\u00e9 Geoserver pour servir les r\u00e9sultats de pgrouting en un lux WMS. Il ne reste plus qu&#039;\u00e0 cr\u00e9er une page html avec openlayers pour pouvoir entrer les points de d\u00e9part et d&#039;arriv\u00e9e et de visualiser l&#039;itin\u00e9raire calcul\u00e9.\" \/>\n\t\t<meta name=\"twitter:creator\" content=\"@SigTerritoires\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.sigterritoires.fr\\\/index.php\\\/developper-une-application-avec-pgrouting-sous-windows-7openlayers-3\\\/#article\",\"name\":\"D\\u00e9velopper une application avec pgrouting sous Windows (7):OpenLayers 3 | Blog SIG & Territoires\",\"headline\":\"D\\u00e9velopper une application avec pgrouting sous Windows (7):OpenLayers 3\",\"author\":{\"@id\":\"https:\\\/\\\/www.sigterritoires.fr\\\/index.php\\\/author\\\/admin\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/www.sigterritoires.fr\\\/#person\"},\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/www.sigterritoires.fr\\\/index.php\\\/developper-une-application-avec-pgrouting-sous-windows-7openlayers-3\\\/#articleImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f76dc2a720162999bce81d6c99b6d7b9517d6600ad7ceb5ed5268f02cefaa0ee?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"Atilio Francois\"},\"datePublished\":\"2016-06-21T12:36:10+02:00\",\"dateModified\":\"2016-06-21T13:36:38+02:00\",\"inLanguage\":\"fr-FR\",\"commentCount\":7,\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.sigterritoires.fr\\\/index.php\\\/developper-une-application-avec-pgrouting-sous-windows-7openlayers-3\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.sigterritoires.fr\\\/index.php\\\/developper-une-application-avec-pgrouting-sous-windows-7openlayers-3\\\/#webpage\"},\"articleSection\":\"PostgreSQL, QGis, geoserver, open layers, pgrouting, postgis, postgresql, qgis, wms, Fran\\u00e7ais\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.sigterritoires.fr\\\/index.php\\\/developper-une-application-avec-pgrouting-sous-windows-7openlayers-3\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.sigterritoires.fr#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.sigterritoires.fr\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.sigterritoires.fr\\\/index.php\\\/category\\\/qgis-2\\\/#listItem\",\"name\":\"QGis\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.sigterritoires.fr\\\/index.php\\\/category\\\/qgis-2\\\/#listItem\",\"position\":2,\"name\":\"QGis\",\"item\":\"https:\\\/\\\/www.sigterritoires.fr\\\/index.php\\\/category\\\/qgis-2\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.sigterritoires.fr\\\/index.php\\\/developper-une-application-avec-pgrouting-sous-windows-7openlayers-3\\\/#listItem\",\"name\":\"D\\u00e9velopper une application avec pgrouting sous Windows (7):OpenLayers 3\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.sigterritoires.fr#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.sigterritoires.fr\\\/index.php\\\/developper-une-application-avec-pgrouting-sous-windows-7openlayers-3\\\/#listItem\",\"position\":3,\"name\":\"D\\u00e9velopper une application avec pgrouting sous Windows (7):OpenLayers 3\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.sigterritoires.fr\\\/index.php\\\/category\\\/qgis-2\\\/#listItem\",\"name\":\"QGis\"}}]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.sigterritoires.fr\\\/#person\",\"name\":\"Atilio Francois\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/www.sigterritoires.fr\\\/index.php\\\/developper-une-application-avec-pgrouting-sous-windows-7openlayers-3\\\/#personImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f76dc2a720162999bce81d6c99b6d7b9517d6600ad7ceb5ed5268f02cefaa0ee?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"Atilio Francois\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.sigterritoires.fr\\\/index.php\\\/author\\\/admin\\\/#author\",\"url\":\"https:\\\/\\\/www.sigterritoires.fr\\\/index.php\\\/author\\\/admin\\\/\",\"name\":\"Atilio Francois\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/www.sigterritoires.fr\\\/index.php\\\/developper-une-application-avec-pgrouting-sous-windows-7openlayers-3\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f76dc2a720162999bce81d6c99b6d7b9517d6600ad7ceb5ed5268f02cefaa0ee?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"Atilio Francois\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.sigterritoires.fr\\\/index.php\\\/developper-une-application-avec-pgrouting-sous-windows-7openlayers-3\\\/#webpage\",\"url\":\"https:\\\/\\\/www.sigterritoires.fr\\\/index.php\\\/developper-une-application-avec-pgrouting-sous-windows-7openlayers-3\\\/\",\"name\":\"D\\u00e9velopper une application avec pgrouting sous Windows (7):OpenLayers 3 | Blog SIG & Territoires\",\"description\":\"Nous arrivons \\u00e0 la fin de cette s\\u00e9rie. Apr\\u00e8s avoir mis en place la base de donn\\u00e9es Postgres\\\/Postgis, nous avons configur\\u00e9 Geoserver pour servir les r\\u00e9sultats de pgrouting en un lux WMS. Il ne reste plus qu'\\u00e0 cr\\u00e9er une page html avec openlayers pour pouvoir entrer les points de d\\u00e9part et d'arriv\\u00e9e et de visualiser l'itin\\u00e9raire calcul\\u00e9.\",\"inLanguage\":\"fr-FR\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.sigterritoires.fr\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.sigterritoires.fr\\\/index.php\\\/developper-une-application-avec-pgrouting-sous-windows-7openlayers-3\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/www.sigterritoires.fr\\\/index.php\\\/author\\\/admin\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/www.sigterritoires.fr\\\/index.php\\\/author\\\/admin\\\/#author\"},\"datePublished\":\"2016-06-21T12:36:10+02:00\",\"dateModified\":\"2016-06-21T13:36:38+02:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.sigterritoires.fr\\\/#website\",\"url\":\"https:\\\/\\\/www.sigterritoires.fr\\\/\",\"name\":\"Blog SIG & Territoires\",\"description\":\"le portail des professionnels du SIG\",\"inLanguage\":\"fr-FR\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.sigterritoires.fr\\\/#person\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"D\u00e9velopper une application avec pgrouting sous Windows (7):OpenLayers 3 | Blog SIG & Territoires","description":"Nous arrivons \u00e0 la fin de cette s\u00e9rie. Apr\u00e8s avoir mis en place la base de donn\u00e9es Postgres\/Postgis, nous avons configur\u00e9 Geoserver pour servir les r\u00e9sultats de pgrouting en un lux WMS. Il ne reste plus qu'\u00e0 cr\u00e9er une page html avec openlayers pour pouvoir entrer les points de d\u00e9part et d'arriv\u00e9e et de visualiser l'itin\u00e9raire calcul\u00e9.","canonical_url":"https:\/\/www.sigterritoires.fr\/index.php\/developper-une-application-avec-pgrouting-sous-windows-7openlayers-3\/","robots":"max-image-preview:large","keywords":"pgrouting,postgresql,postgis,isochrones,itineraire,qgis,openlayers,ol3,geoserver,open layers,wms","webmasterTools":{"google-site-verification":"ByXHZUbGNn7RNv-Xk5A-ysTZrM65VLIO2RxfSJ2nIEQ","miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.sigterritoires.fr\/index.php\/developper-une-application-avec-pgrouting-sous-windows-7openlayers-3\/#article","name":"D\u00e9velopper une application avec pgrouting sous Windows (7):OpenLayers 3 | Blog SIG & Territoires","headline":"D\u00e9velopper une application avec pgrouting sous Windows (7):OpenLayers 3","author":{"@id":"https:\/\/www.sigterritoires.fr\/index.php\/author\/admin\/#author"},"publisher":{"@id":"https:\/\/www.sigterritoires.fr\/#person"},"image":{"@type":"ImageObject","@id":"https:\/\/www.sigterritoires.fr\/index.php\/developper-une-application-avec-pgrouting-sous-windows-7openlayers-3\/#articleImage","url":"https:\/\/secure.gravatar.com\/avatar\/f76dc2a720162999bce81d6c99b6d7b9517d6600ad7ceb5ed5268f02cefaa0ee?s=96&d=mm&r=g","width":96,"height":96,"caption":"Atilio Francois"},"datePublished":"2016-06-21T12:36:10+02:00","dateModified":"2016-06-21T13:36:38+02:00","inLanguage":"fr-FR","commentCount":7,"mainEntityOfPage":{"@id":"https:\/\/www.sigterritoires.fr\/index.php\/developper-une-application-avec-pgrouting-sous-windows-7openlayers-3\/#webpage"},"isPartOf":{"@id":"https:\/\/www.sigterritoires.fr\/index.php\/developper-une-application-avec-pgrouting-sous-windows-7openlayers-3\/#webpage"},"articleSection":"PostgreSQL, QGis, geoserver, open layers, pgrouting, postgis, postgresql, qgis, wms, Fran\u00e7ais"},{"@type":"BreadcrumbList","@id":"https:\/\/www.sigterritoires.fr\/index.php\/developper-une-application-avec-pgrouting-sous-windows-7openlayers-3\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/www.sigterritoires.fr#listItem","position":1,"name":"Home","item":"https:\/\/www.sigterritoires.fr","nextItem":{"@type":"ListItem","@id":"https:\/\/www.sigterritoires.fr\/index.php\/category\/qgis-2\/#listItem","name":"QGis"}},{"@type":"ListItem","@id":"https:\/\/www.sigterritoires.fr\/index.php\/category\/qgis-2\/#listItem","position":2,"name":"QGis","item":"https:\/\/www.sigterritoires.fr\/index.php\/category\/qgis-2\/","nextItem":{"@type":"ListItem","@id":"https:\/\/www.sigterritoires.fr\/index.php\/developper-une-application-avec-pgrouting-sous-windows-7openlayers-3\/#listItem","name":"D\u00e9velopper une application avec pgrouting sous Windows (7):OpenLayers 3"},"previousItem":{"@type":"ListItem","@id":"https:\/\/www.sigterritoires.fr#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/www.sigterritoires.fr\/index.php\/developper-une-application-avec-pgrouting-sous-windows-7openlayers-3\/#listItem","position":3,"name":"D\u00e9velopper une application avec pgrouting sous Windows (7):OpenLayers 3","previousItem":{"@type":"ListItem","@id":"https:\/\/www.sigterritoires.fr\/index.php\/category\/qgis-2\/#listItem","name":"QGis"}}]},{"@type":"Person","@id":"https:\/\/www.sigterritoires.fr\/#person","name":"Atilio Francois","image":{"@type":"ImageObject","@id":"https:\/\/www.sigterritoires.fr\/index.php\/developper-une-application-avec-pgrouting-sous-windows-7openlayers-3\/#personImage","url":"https:\/\/secure.gravatar.com\/avatar\/f76dc2a720162999bce81d6c99b6d7b9517d6600ad7ceb5ed5268f02cefaa0ee?s=96&d=mm&r=g","width":96,"height":96,"caption":"Atilio Francois"}},{"@type":"Person","@id":"https:\/\/www.sigterritoires.fr\/index.php\/author\/admin\/#author","url":"https:\/\/www.sigterritoires.fr\/index.php\/author\/admin\/","name":"Atilio Francois","image":{"@type":"ImageObject","@id":"https:\/\/www.sigterritoires.fr\/index.php\/developper-une-application-avec-pgrouting-sous-windows-7openlayers-3\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/f76dc2a720162999bce81d6c99b6d7b9517d6600ad7ceb5ed5268f02cefaa0ee?s=96&d=mm&r=g","width":96,"height":96,"caption":"Atilio Francois"}},{"@type":"WebPage","@id":"https:\/\/www.sigterritoires.fr\/index.php\/developper-une-application-avec-pgrouting-sous-windows-7openlayers-3\/#webpage","url":"https:\/\/www.sigterritoires.fr\/index.php\/developper-une-application-avec-pgrouting-sous-windows-7openlayers-3\/","name":"D\u00e9velopper une application avec pgrouting sous Windows (7):OpenLayers 3 | Blog SIG & Territoires","description":"Nous arrivons \u00e0 la fin de cette s\u00e9rie. Apr\u00e8s avoir mis en place la base de donn\u00e9es Postgres\/Postgis, nous avons configur\u00e9 Geoserver pour servir les r\u00e9sultats de pgrouting en un lux WMS. Il ne reste plus qu'\u00e0 cr\u00e9er une page html avec openlayers pour pouvoir entrer les points de d\u00e9part et d'arriv\u00e9e et de visualiser l'itin\u00e9raire calcul\u00e9.","inLanguage":"fr-FR","isPartOf":{"@id":"https:\/\/www.sigterritoires.fr\/#website"},"breadcrumb":{"@id":"https:\/\/www.sigterritoires.fr\/index.php\/developper-une-application-avec-pgrouting-sous-windows-7openlayers-3\/#breadcrumblist"},"author":{"@id":"https:\/\/www.sigterritoires.fr\/index.php\/author\/admin\/#author"},"creator":{"@id":"https:\/\/www.sigterritoires.fr\/index.php\/author\/admin\/#author"},"datePublished":"2016-06-21T12:36:10+02:00","dateModified":"2016-06-21T13:36:38+02:00"},{"@type":"WebSite","@id":"https:\/\/www.sigterritoires.fr\/#website","url":"https:\/\/www.sigterritoires.fr\/","name":"Blog SIG & Territoires","description":"le portail des professionnels du SIG","inLanguage":"fr-FR","publisher":{"@id":"https:\/\/www.sigterritoires.fr\/#person"}}]},"og:locale":"fr_FR","og:site_name":"Blog SIG &amp; Territoires | le portail des professionnels du SIG","og:type":"article","og:title":"D\u00e9velopper une application avec pgrouting sous Windows (7):OpenLayers 3 | Blog SIG &amp; Territoires","og:description":"Nous arrivons \u00e0 la fin de cette s\u00e9rie. Apr\u00e8s avoir mis en place la base de donn\u00e9es Postgres\/Postgis, nous avons configur\u00e9 Geoserver pour servir les r\u00e9sultats de pgrouting en un lux WMS. Il ne reste plus qu'\u00e0 cr\u00e9er une page html avec openlayers pour pouvoir entrer les points de d\u00e9part et d'arriv\u00e9e et de visualiser l'itin\u00e9raire calcul\u00e9.","og:url":"https:\/\/www.sigterritoires.fr\/index.php\/developper-une-application-avec-pgrouting-sous-windows-7openlayers-3\/","article:published_time":"2016-06-21T11:36:10+00:00","article:modified_time":"2016-06-21T12:36:38+00:00","article:publisher":"https:\/\/www.facebook.com\/atilio.francois\/","twitter:card":"summary","twitter:site":"@SigTerritoires","twitter:title":"D\u00e9velopper une application avec pgrouting sous Windows (7):OpenLayers 3 | Blog SIG &amp; Territoires","twitter:description":"Nous arrivons \u00e0 la fin de cette s\u00e9rie. Apr\u00e8s avoir mis en place la base de donn\u00e9es Postgres\/Postgis, nous avons configur\u00e9 Geoserver pour servir les r\u00e9sultats de pgrouting en un lux WMS. Il ne reste plus qu'\u00e0 cr\u00e9er une page html avec openlayers pour pouvoir entrer les points de d\u00e9part et d'arriv\u00e9e et de visualiser l'itin\u00e9raire calcul\u00e9.","twitter:creator":"@SigTerritoires"},"aioseo_meta_data":{"post_id":"3362","title":"D\u00e9velopper une application avec pgrouting sous Windows (7):OpenLayers 3 | #site_title","description":"Nous arrivons \u00e0 la fin de cette s\u00e9rie. Apr\u00e8s avoir mis en place la base de donn\u00e9es Postgres\/Postgis, nous avons configur\u00e9 Geoserver pour servir les r\u00e9sultats de pgrouting en un lux WMS. Il ne reste plus qu'\u00e0  cr\u00e9er une page html avec openlayers pour pouvoir entrer les points de d\u00e9part et d'arriv\u00e9e et de visualiser l'itin\u00e9raire calcul\u00e9.","keywords":[{"label":"pgrouting","value":"pgrouting"},{"label":"postgresql","value":"postgresql"},{"label":"postgis","value":"postgis"},{"label":"isochrones","value":"isochrones"},{"label":"itineraire","value":"itineraire"},{"label":"qgis","value":"qgis"},{"label":"openlayers","value":"openlayers"},{"label":"ol3","value":"ol3"},{"label":"geoserver","value":"geoserver"}],"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2020-12-21 13:58:33","updated":"2025-06-04 16:26:24","seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.sigterritoires.fr\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.sigterritoires.fr\/index.php\/category\/qgis-2\/\" title=\"QGis\">QGis<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tD\u00e9velopper une application avec pgrouting sous Windows (7):OpenLayers 3\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/www.sigterritoires.fr"},{"label":"QGis","link":"https:\/\/www.sigterritoires.fr\/index.php\/category\/qgis-2\/"},{"label":"D\u00e9velopper une application avec pgrouting sous Windows (7):OpenLayers 3","link":"https:\/\/www.sigterritoires.fr\/index.php\/developper-une-application-avec-pgrouting-sous-windows-7openlayers-3\/"}],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p6XU0A-Se","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.sigterritoires.fr\/index.php\/wp-json\/wp\/v2\/posts\/3362","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=3362"}],"version-history":[{"count":0,"href":"https:\/\/www.sigterritoires.fr\/index.php\/wp-json\/wp\/v2\/posts\/3362\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.sigterritoires.fr\/index.php\/wp-json\/wp\/v2\/media?parent=3362"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sigterritoires.fr\/index.php\/wp-json\/wp\/v2\/categories?post=3362"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sigterritoires.fr\/index.php\/wp-json\/wp\/v2\/tags?post=3362"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}