Introduction

QGis can open a wide bunch of raster formats even proprietary ones. If you have ArcGis 9.3 (well, if you are forced to have it !), you have perhaps generated map services. Those services can be shown on cartographic web applications by using some kind of tile map service (TMS). This service from Esri ArcGIS doesn't respect the TMS standard. The TMS standard uses a special projection (EPSG:3857) and a well-known algorithm to determine which tile to load. Google Maps and OpenStreet map tiling services use the TMS standard and you are able to show them in QGis with just an XML description file (see this).

But it is not the case with ArcGIS 9.3 which uses a different algorithm to calculate which tile should be requested. This "no-standard" seems to have been discarded in the next version of ArcGIS (10.x). But after a bit of search, I finally manage to show an ArcGIS 9.3 map service on QGis 2.4 and that's what will be presented in this article.

Methodology

I've just studied what can open ArcGIS 9.3 cache maps and found that nearly nothing can do it, with the exception of ESRI ArcGIS of course ! Actually, in the opensource world, nothing else than OpenLayers 2 (starting to version 2.11) can open it ! I think that it is so exotic that it is not supported by OpenLayers 3. On the other side, ESRI seems to have changed its way of dealing with TMS in the version 10.x of ArcGIS. I haven't tested it myself but there are plenty of examples on the Internet that shows that QGis can open ArcGIS 10.x Map Services with only an XML description file (for those who want to go further, they can try the experimental "ArcGIS REST API connector" plugin).

Then I realised that there is a QGis plugin called "OpenLayers". It is used to show GoogleMaps/Bing/OSM tiles by using a workaround at the times where QGis (actually GDAL) was not able to handle those rasters. It is still installed in the version 2.4 of QGis even if the plugin has been refactored.

Here what I've found about "OpenLayers" QGis Plugin underwork:

  • There is a core plugin (in Python) code.
  • This code uses HTML description files which are a simple page which calls Javascript to print a Map. You can open those files in your Web browser and content will be shown.
  • Core code executes Javascript and grabs the images.
  • When you zoom or move onto the map, core code execute an Openlayers function and grabs the images.

Quite simple. It is true that this seems to be an ugly hack. Using a browser engine (thanks to Qt) to grab some raster files from the web is not what I call a web service. But it works !

In order to open your ArcGIS 9.3 Map Service, you have to write an HTML description file which uses OpenLayers 2 special functions for ArcGIS 9.3 and let do the magic of the plugin operates ! Actually it is a bit more complicated...

Add the good version of OpenLayers

First of all, you need the good version of OpenLayers 2. Grab the latest from the Internet and save it in the plugin repository: .qgis2/python/plugins/openlayers_plugin/weblayers/html. Name it OpenLayers2.js for disambiguation with other version of the library that are already installed in the directory (OpenLayers.js and OpenLayers-2.8.js). You need the full version of the Javascript code, don't use mobile or light version because they do not contain the ArcGIS code.

Which files should be modified ?

Before diving into the code, be sure to have a global vision of what to change or to add (the root of the plugin is .qgis2/python/plugins/openlayers_plugin):

  • Modify 'weblayers/weblayer.py': Add a class to handle ArcGIS Cache services not projected in ESPG:3857.
  • Create 'weblayers/html/layer_x.html': New HTML(+JS) file(s) to add access to one service from ArcGIS 9.3 Cache Map. Add a new file for every new service.
  • Create 'weblayers/arcgis.py': New file to create a group of layers which will be named "ArcGIS Layers" in the plugin menu.
  • Modify 'openlayers_plugin.py': Import the new group of layers in the plugin and add them to the menu.

Once everything has been made, your layers will be available under the menu Internet -> OpenLayers plugin.

Hack core code

Once you've got the good version of OpenLayers, you have to modify the core code of the plugin (but just a very little bit). The hack is just a workaround to deal with projection. If you inspect .qgis2/python/plugins/openlayers_plugin/weblayers/weblayer.py, you'll find a definition for the WebLayer class from which the code deals with the declaration of the layers. Particulary, there is code to handle the projection. Then you find a children class called WebLayer3857. This class is used in every python group declaration file (a file that just declares what are the name of your layers and which HTML file is linked). It just declares a layer with the projection EPSG:3857 which is the projection of all TMS services (read the introduction of this article for further details).

The problem with this static projection declaration is that the plugin cannot handle TMS that are not projected into this projection. Actually, the ArcGIS 9.3 services I used for this test QGis were using EPSG:27592 and even with the correct HTML definition map file, I was not able to show them in QGis if I use a WebLayer3857 declaration. The requested tiles were always too far away from what the service was able to provide.

As a workaround, we just have to declare a new class which is derived from WebLayer and which just says that the projection of the layers declared with this class is always 27592. Just add the following lines at the end of weblayer.py:

class ArcGISLayer27592(WebLayer):

    epsgList = [27592]

The code of WebLayer class is just self-sufficient to handle the different projection. Then, you'll have to use the new ArcGISLayer27592 class to declare your layers in the group layer definition file.

Note to myself: the official plugin code for WebLayer could be updated to handle different kinds of projections...

Create the HTML definition map file

You just have to write down the definition of the map in an HTML file. Actually, it is much more Javascript than HTML. In the Javascript code, you'll have to use the OpenLayers functions that are able to open ArcGIS 9.3 Cache map. Be sure to load the good version of the OpenLayers2 library (OpenLayers2.js). Here is such a file:

<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>ArcGIS Cache Map</title>
    <link rel="stylesheet" href="qgis.css" type="text/css">
    <script src="OpenLayers2.js"></script>
    <script type="text/javascript">
        var map;
        var loadEnd;
    var layerURL = "http://arcgis.example.com/arcgis/rest/services/folder_name/layer_name/MapServer";
        var layerData = {
    "serviceDescription": "",
    "mapName": "Couches",
    "description": "",
    "copyrightText": "",
    "layers": [
        {
            "id": 0,
            "name": "The layer",
            "parentLayerId": -1,
            "defaultVisibility": true,
            "subLayerIds": null
        }
    ],
    "spatialReference": {
        "wkid": 27592
    },
    "singleFusedMapCache": true,
    "tileInfo": {
        "rows": 512,
        "cols": 512,
        "dpi": 96,
        "format": "PNG32",
        "compressionQuality": 0,
        "origin": {
            "x": 225000,
            "y": 401000
        },
        "spatialReference": {
            "wkid": 27592
        },
        "lods": [
            {
                "level": 0,
                "resolution": 0.6614596562526459,
                "scale": 2500
            },
            {
                "level": 1,
                "resolution": 0.26458386250105836,
                "scale": 1000
            },
            {
                "level": 2,
                "resolution": 0.13229193125052918,
                "scale": 500
            },
            {
                "level": 3,
                "resolution": 0.06614596562526459,
                "scale": 250
            }
        ]
    },
    "initialExtent": {
        "xmin": 301177.13180509704,
        "ymin": 258249.61360172715,
        "xmax": 301317.7581280163,
        "ymax": 258352.66901617133,
        "spatialReference": {
            "wkid": 27592
        }
    },
    "fullExtent": {
        "xmin": 270184,
        "ymin": 235952,
        "xmax": 332136,
        "ymax": 281008,
        "spatialReference": {
            "wkid": 27592
        }
    },
    "units": "esriMeters",
    "supportedImageFormatTypes": "PNG32,PNG24,PNG,JPG,DIB,TIFF,EMF,PS,PDF,GIF,SVG,SVGZ",
    "documentInfo": {
        "Title": "Layer",
        "Author": "author",
        "Comments": "",
        "Subject": "",
        "Category": "",
        "Keywords": "",
        "AntialiasingMode": "Normal",
        "TextAntialiasingMode": "Force"
    }
};
        function init() {

            loadEnd = false;
            function layerLoadStart(event)
            {
              loadEnd = false;
            }
            function layerLoadEnd(event)
            {
              loadEnd = true;
            }
        var baseLayer = new OpenLayers.Layer.ArcGISCache(
                "AGSCache",
                layerURL,
                {
                  layerInfo: layerData,
                  eventListeners: {
                    "loadstart": layerLoadStart,
                    "loadend": layerLoadEnd
                  }
                }
            );

            map = new OpenLayers.Map('map', {
            maxExtent: baseLayer.maxExtent,
                units: baseLayer.units,
                resolutions: baseLayer.resolutions,
                numZoomLevels: baseLayer.numZoomLevels,
                tileSize: baseLayer.tileSize,
                displayProjection: baseLayer.displayProjection
            });
            map.addLayer(baseLayer);
        }
    </script>
  </head>
  <body onload="init()">
    <div id="map"></div>
  </body>
</html>

You can see that there is a big variable called layerData. It describes the whole content definition of the ArcGIS 9.3 service. Without this variable, you are not able to open the layer in an OpenLayers map... you can grab the variable value by using this example from OpenLayers2 which uses the autoconfig mechanism of ArcGISCache. Just open the Firefox Developper Tools and get the variable value (or use console.info()).

Howto grab layer definition easily ?

Creating HTML definition map file is something that can be very fastidious. Actually, you have to grab the JSON value for the layerData variable which describes the content of the service. You can do it by using Firefox Developper Tools but this is not an effective method. To ease the pain, just load this HTML (+JS) file in your web browser and put the URL of an ArcGIS 9.3 Map service (for example: http://arcgis.example.com/arcgis/rest/services/name_of_folder/name_of_layer/MapServer) before clicking on the load button. You'll have to save the resulting HTML file in the plugin directory: .qgis2/python/plugins/openlayers_plugin/weblayers/html.

You need to have Internet access to use this code because I just grab OpenLayers2 from cloudflare CDN. But you can replace it with any other javascript file that contains OpenLayers.

<!DOCTYPE html>
<html>
  <head>
    <title>QGis OpenLayers ArcGIS 9.3 Cache config helper</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <style>
    .smallmap {
      width: 712px;
      height: 556px;
      border: 1px solid #ccc;
    }
    </style>

    <script src="http://cdnjs.cloudflare.com/ajax/libs/openlayers/2.11/OpenLayers.js"></script>

    <script type="text/javascript">
        var map;
    var layerURL;

        function init() {
        var url = document.getElementById("url").value;
        if (url) {
          layerURL = url;
              var jsonp = new OpenLayers.Protocol.Script();
              jsonp.createRequest(layerURL, {
                  f: 'json', 
                  pretty: 'true'
              }, initMap);
            }
        }

        function initMap(layerInfo){

        var layerData = JSON.stringify(layerInfo, null,'\t');

            var html_doc = "<html xmlns=\"http://www.w3.org/1999/xhtml\">\n\
  <head>\n\
    <title>ArcGIS Cache Map<\/title>\n\
    <link rel=\"stylesheet\" href=\"qgis.css\" type=\"text\/css\">\n\
    <script src=\"OpenLayers2.js\"><\/script>\n\
    <script type=\"text/javascript\">\n\
        var map;\n\
        var loadEnd;\n\
   var layerURL = \"" + layerURL + "\";\n\
        var layerData = " + layerData +";";

           html_doc = html_doc + "\n\
        function init() {\n\n\
            loadEnd = false;\n\
            function layerLoadStart(event)\n\
            {\n\
              loadEnd = false;\n\
            }\n\
            function layerLoadEnd(event)\n\
            {\n\
              loadEnd = true;\n\
            }\n\
       var baseLayer = new OpenLayers.Layer.ArcGISCache(\n\
                \"AGSCache\",\n\
                layerURL,\n\
                {\n\
                  layerInfo: layerData,\n\
                  eventListeners: {\n\
                    \"loadstart\": layerLoadStart,\n\
                    \"loadend\": layerLoadEnd\n\
                  }\n\
                }\n\
            );\n\n\
            map = new OpenLayers.Map('map', {\n\
           maxExtent: baseLayer.maxExtent,\n\
                units: baseLayer.units,\n\
                resolutions: baseLayer.resolutions,\n\
                numZoomLevels: baseLayer.numZoomLevels,\n\
                tileSize: baseLayer.tileSize,\n\
                displayProjection: baseLayer.displayProjection\n\
            });\n\
            map.addLayer(baseLayer);\n\
        }\n\
    <\/script>\n\
  <\/head>\n\
  <body onload=\"init()\">\n\
    <div id=\"map\"><\/div>\n\
  <\/body>\n\
<\/html>";

        var html_textarea = document.getElementById("qgis_html");
        html_textarea.value = html_doc;

            // Send the HTML file to save in the local filesystem:
            var a = document.createElement('a');
            a.href = 'data:attachment/html,' + encodeURIComponent(html_doc);
            a.target = '_blank';
            a.download = 'arcgis_layer.html';

            document.body.appendChild(a);
            // send it to the browser
            a.click();

            var baseLayer = new OpenLayers.Layer.ArcGISCache("AGSCache", layerURL, {
                layerInfo: layerInfo
            });

            /*
             * Make sure our baselayer and our map are synced up
             */

            map = new OpenLayers.Map('map', { 
                maxExtent: baseLayer.maxExtent,
                units: baseLayer.units,
                resolutions: baseLayer.resolutions,
                numZoomLevels: baseLayer.numZoomLevels,
                tileSize: baseLayer.tileSize,
                displayProjection: baseLayer.displayProjection  
            });
            map.addLayer(baseLayer);

            map.addControl(new OpenLayers.Control.LayerSwitcher());
            map.addControl(new OpenLayers.Control.MousePosition() );            
            var bbox = layerInfo.initialExtent;
        map.zoomToExtent(new OpenLayers.Bounds(bbox.xmin, bbox.ymin, bbox.xmax, bbox.ymax));

        }
    </script>
  </head>
  <body>
    <h1 id="title">OpenLayers ArcGIS 9.3 Cache config helper</h1>

    <p id="shortdesc">
    <form id="ServiceURL">
            <p>
                <label for="url">Service URL:</label>
                <input id="url" type="url" style="width: 30%;" placeholder="http://arcgis.example.com/arcgis/rest/services/folder_name/layer_name/MapServer"/>
                <input type="button" value="Load" onclick="init();"/>
            </p>
        </form>
    </p>

    <form id="serviceFolders">

    </form>

    <div id="map" class="smallmap"></div>

    <div id="docs">
      <p>HTML to save in a file</p>
      <textarea id="qgis_html" style="width: 40%; height: 300px;"></textarea>
    </div>
  </body>
</html>

Make a group definition file

You have to build a group definition file. This is a purely declarative python file which just describes what are your layers. It is used to build the menu shown by the plugin and to make the link with the HTML files. The first class is the Group one. Then all of the layers that are described in HTML file have to be children class of the group one. Be sure to use strings (and not unicode things) in the name of the layers.

# -*- coding: utf-8 -*-
from weblayer import ArcGISLayer27592

class OlArcgisLayer(ArcGISLayer27592):

    emitsLoadEnd = True

    def __init__(self, name, html):
        ArcGISLayer27592.__init__(self, groupName="ArcGIS 9.3", groupIcon="arcgis_icon.png",
                              name=name, html=html)

class OlArcgisFondDePlanLayer(OlArcgisLayer):

    def __init__(self):
        OlArcgisLayer.__init__(self, name="Fond de plan", html="arcgis_fond_de_plan.html")

class OlArcgisEquipementPublicLayer(OlArcgisLayer):

    def __init__(self):
        OlArcgisLayer.__init__(self, name='Equipement public', html='arcgis_equipement_public.html')

class OlArcgisAdresseLayer(OlArcgisLayer):

    def __init__(self):
        OlArcgisLayer.__init__(self, name='Adresse', html='arcgis_adresse.html')

class OlArcgisArreteCirculationLayer(OlArcgisLayer):

    def __init__(self):
        OlArcgisLayer.__init__(self, name='Arrete de circulation', html='arcgis_arrete_circulation.html')

class OlArcgisAssainissementLayer(OlArcgisLayer):

    def __init__(self):
        OlArcgisLayer.__init__(self, name='Assainissement', html='arcgis_assainissement.html')

class OlArcgisCadastreNapoleonLayer(OlArcgisLayer):

    def __init__(self):
        OlArcgisLayer.__init__(self, name='Cadastre Napoleonien', html='arcgis_cadastre_napoleon.html')

class OlArcgisParcelleLayer(OlArcgisLayer):

    def __init__(self):
        OlArcgisLayer.__init__(self, name='Parcelle', html='arcgis_parcelle.html')

Register group definition file in the plugin

You have to modify openlayers_plugin.py to add the entry menus from your group definition file. The entries are built upon the python class, so you have to import them with a simple line like:

    ...
    from weblayers.arcgis import OlArcgisFondDePlan, OlArcgisEquipementPublic, ...
    ...

Once the modules (classes) are declared, you need to manually add them into the function initGui:

        ...
        self._olLayerTypeRegistry.register(OlArcgisFondDePlanLayer())
        self._olLayerTypeRegistry.register(OlArcgisEquipementPublicLayer())
        ...

Once this is done, you should be able to find your menu entries in the menu with a group of your own layers. Be careful about the names which can be a little type error prone.

User experiment

The OpenLayers QGis plugin is far from being perfect ! Actually it seems to be an ugly hack that works with very few efforts, so on... I've experienced some troubles by using this modified plugin with ArcGIS 9.3:

  • You should open another layer which is in the extent of your raster layer before opening the raster layer. Otherwise, the HTML script may crash because you are asking for a too much wide extent. It can block QGis, so be careful !
  • Sometimes when you zoom, not of all the tiles are shown on the map dialog. You have to unzoom and rezoom to have the whole map updated and shown.
  • Same problem with panning or moving. There you have to unzoom and rezoom to grab all of the tiles.
  • It seems to have a sort of cache: once you grabbed all the tiles at different zoom levels, map loading is more fast.
  • You can't have more than one OpenLayers layer on the map. Only the latest opened layer is shown, whatever the layer order. It is a limitation of the whole plugin, not restricted to ArcGIS services.
  • You can't save an OpenLayer layer on your project ! You have to reopen the layer each time you open your project. It is also a limitation of the plugin, not restricted to ArcGIS services.

I have taken time to test print composer with those services and it seems to be unaffected by the bugs I've seen in the map window. You will be able to generate PDF or print maps with your ArcGIS Map service layers. So far, so good...

Conclusion

QGis is good for you. It can even be interfaced with its greatest opponent in GIS Desktop: ESRI ArcGIS. If you haven't migrated to ArcGIS 10.x, you are still able to use your old ArcGIS 9.3 Cache map services for a while under QGis. There are great chances that no other GIS Desktop software is able to deal with these services nowadays. But QGis is one of them... To go further, I can only advice you to migrate to a true free software tiling solution like MapNik and carto-css. By using the TMS standard, you are 100% sure that QGis will be able to do it. Please read my wiki article to build your opinion on the ease to generate tiles with those tools.

Posted dim. 27 juil. 2014 19:12:05

Du 9 au 25 juillet 2014, je suis allé faire un tour en Irlande, pendant les vacances. Durand ce séjour, j'ai été frappé par quelques différences importantes entre ce pays et celui où je vis. Après tout, ce qui est important lorsqu'on voyage, c'est le sel des choses qui ne sont pas comme dans son pays d'origine. C'est un peu de cela que l'on cherche lorsqu'on part à l'étranger: aller voir ce qui change, comment la vie du quotidien se gère pour les résidents, etc. L'objet de cet article est de condenser ma petite expérience personnelle, histoire d'épauler ma mémoire défaillante...

Commençons donc par le sujet qui frappe tout voyageur qui aborde l'Irlande par la route. Une fois qu'on a fait connaissance avec le réseau routier irlandais, on se rend facilement compte que le réseau français est d'excellente qualité. Je sais qu'un grand nombre de mes compatriotes pensent, qu'au contraire, les routes en France sont de véritables zones de dangers tellement elles sont mal conçues. Je leur recommande simplement de prendre une nationale et une route régionale irlandaise pour "automagiquement" changer leur avis sur ce qui se passe dans l'hexagone.

Pour résumer, les routes irlandaises présentent les caractéristiques qui suivent:

  • Elles sont globalement en mauvais état. Je ne compte plus les nids de poules, les absences de marquage au sol pour cause d'effacement par usure, les rafistolages de bitume qui font vibrer toute suspension automobile comme un tremblement de terre. Si vous avez un véhicule avec une faible garde au sol ou des amortisseurs un peu fatigués, je vous conseille de réduire votre vitesse sinon, vous risquez sérieusement de "toucher" le sol à coup sûr, avec toutes les conséquences que cela peut avoir. En effet, en plus des autres problèmes sus-cités, on remarque souvent que la route n'a pas été nivellée et la moindre bosse naturelle n'a pas été corrigée lors de la création de la route. Autrement-dit, les routes sont faîtes à l'arrache avec peu de moyens et tous les défauts du terrain s'y retrouvent sans correction. Attention à la casse !
  • Il y a vraiment beaucoup moins de panneaux indiquant la vitesse légale ou la présence de dangers. C'est particulièrement visible sur une route régionale ou nationale de second niveau (les moins importantes). Ces dernières sont limitées à 100 km/h en Irlande mais il est très rare d'avoir un panneau qui indique cette vitesse, en dehors des changements de vitesse aux abords des agglomérations. Par exemple, il n'y a aucun panneau intermédiaire entre le 50 en ville et le 100 km/h sur nationale. En France, on aurait d'abord un panneau qui annonce une réduction de la vitesse à 70km/h à 300m, puis le panneau de limitation à 70, puis un panneau qui rappelle la vitesse limitée à 70, etc. En Irlande, il y a vraiment eu des économies de panneaux. C'est également vrai pour l'annonce des virages dangereux. En France, pour la moindre petite courbe, vous aurez une annonce de virage dangereux ainsi que des panneaux de flèches qui vont dans le sens de la courbe. En Irlande, lorsque vous croisez ces panneaux, vous avez intérêt à fortement réduire votre vitesse sous peine de voler dans le décor: seules les courbes qui posent vraiment problème sont annoncées. Sachez aussi que les cordeaux Irlandais présentent naturellement des courbes prononcées (la route ne tente pas de corriger le terrain, elle l'épouse) et qu'un virage à droite indique forcément un autre virage à gauche dans moins de 100m ! On est loin du niveau de la majorité des départementales françaises qui sont les anciennes routes nationales concédées aux collectivités: bien plates et bien lisses.
  • Corrolaire des deux points précédents, sachez que le niveau de vitesse légal ne correspond pas du tout à la vitesse à laquelle il faut rouler. La limite semble être plutôt une indication légale de la vitesse maximale au delà de laquelle vous pouvez être verbalisé. Je vous défie par exemple de rouler à 100km/h sur la N70 entre Waterville et Caherdaniel même si vous pouvez légalement le faire. La route est tout simplement trop mauvaise pour envisager cette vitesse autre que dans l'imaginaire. De fait, les pignons de 5ème des boîtes de vitesses irlandaises doivent tous présenter un état neuf même après 400000 km !
  • Les routes sont très étroites. Sur une nationale de deuxième niveau comme la N70, vous aurez franchement du mal à croiser ne serait-ce qu'un camping-car. Votre tentation sera grande de vous serrer vers la gauche, en direction du bas-côté, ce qui va poser un sérieux problème...
  • ...Car la notion de bas-côté n'existe tout simplement pas en Irlande. Il y a la haie et immédiatement après la route avec au bord un trait pointillé jaune qui matérialise un bas côté d'environ 4cm de largeur. Sur route autre que nationale, la route est tellement étroite qu'il vous faudra réduite fortement votre vitesse en cas de croisement d'un autre véhicule venant dans l'autre sens.
  • La route nationale accueille tous les véhicules, sans exception. Vous êtes sur une route limitée à 100 km/h mais cette dernière accueille également des tracteurs agricoles dont la vitesse se limite à 25 km/h. Vous pouvez imaginer assez aisément ce qui se passe, y compris sur les 2x2 voies: ça n'avance pas car il y a toujours quelqu'un devant qui ne roule pas très vite. Autre phénomène plus dangereux celui-là: l'absence de bas-côté n'empêche aucun piéton de rouler sur la voie. Ça va vous faire bizarre: vous êtes sur une route limitée à 100 km/h et d'un seul coup, sans crier gare, un piéton se pointe. Il marche également sur la route étant donné qu'il n'y a ni trottoir ni bas-côté et que la haie l'empêche de se tenir ailleurs. Bien sûr vous faîtes un écart pour ne pas le percuter mais vous avez oublié que la route est très étroite... J'ai vu nombre de joggeurs, de papys qui font leurs promenades, de mamies qui vont faire leurs courses mais aussi des mères avec des poussettes et une rimbambelle de gamins. Bizarrement, il y a peu de morts en Irlande (compter moins de 200 décès pour 5,5 millions d'habitants à comparer avec nos 3700 morts pour 65, ce qui ne fait pas une différence énorme).
  • L'irlandais est très prude au volant. Pas de klaxon, un respect absolu des lignes blanches, y compris derrière un tracteur, pas d'appels de phare, un respect très bon des distances de sécurité. Aucun énervement, même dans des situations de bloquage total comme lorsque vous descendez de Brandon Point en convoi de trois voitures et que vous croisez un autre convoi de trois autres voitures, arrivant en face et qu'il n'y a de la place que pour une seule voiture en largeur. Au bout de deux minutes de bloquage, un irlandais va sortir et guider le convoi pour trouver un moyen d'arranger ça... Bref, le conducteur irlandais me semble beaucoup plus patient que son homologue français. Ce qui me semble indispensable vu la qualité du réseau routier qu'il se tape ;-)

En conséquence, la moyenne de vitesse que j'ai pu mesurer sur des routes nationales de premier niveau (N22/N25) et aussi sur des routes nationales de second niveau (N71/N70) est de l'ordre de 40km/h. En France, en roulant sur routes nationales ou anciennement nationales, on peut espérer sans se tromper une vitesse d'au moins 60km/h sur des longs trajets. En Irlande, aller de Dingle à Rosslare (moins de 350 km) vous prendra facilement 7h et ce alors que vous n'aurez absolument aucun bouchon, même à Cork ! Quand on voyage, il faudra juste réviser votre notion de distance parcourue en une journée sous peine d'être systématiquement en retard d'une heure ou deux à vos points de rendez-vous...

Un autre point qui mérite une attention particulière: la publicité. J'ai parcouru toute la route entre Rosslare et le comté du Kerry, je suis également passé par Cork, la deuxième ville en nombre d'habitants du pays, et je dois dire que j'ai aperçu vraiment très peu de panneaux publicitaires. Dans tous les cas, ceux que j'ai pu repérer sont de taille très réduite et ils indiquent bien souvent les dates de la fête locale du bourg ou du village ou encore (et avec beaucoup de modération) les commerces à venir sur la route. Ils sont sans commune mesure en terme de dimensions avec ce à quoi les pubards français nous ont habitué. Je ne pense pas que la crise économique que traverse encore le pays en soit la cause car, dans ces conditions, on retrouverait les supports de panneaux vides. C'est ce qu'on peut voir par, exemple, en Grêce sur la route qui mène à l'aéroport d'Athènes. Mais je dois avouer qu'on s'habitue très vite à cette absence de publicité et c'est très agréable: le paysage n'est pas défiguré par des structures métalliques qui captent l'attention des yeux et nous empêchent de voir le panorama dans son ensemble. En revanche, comme en France, j'ai pu noter que les arrêts de bus sont également bien couverts, les bus y compris.

L'urbanisation, notamment celle qui régit les commerces est également d'intérêt. En effet, les grandes surfaces présentes en périphérie de la ville ou du village, celles qu'on voit fleurir partout en France, n'existent quasiment pas. Les supermarchés ont réussi (sans doute par la contrainte réglementaire) à rester au coeur des villes. Donc, ce n'est pas la peine de chercher les gros centres commerciaux en dehors de la ville, ils n'y sont pas. Si vous voulez faire vos courses, vous devez plutôt explorer le coeur de la cité. Cet emplacement pose généralement le problème du parking qui est reglé par le fait que la majorité des supermarchés irlandais offrent un parking gratuit mais limité dans le temps. Il y a même un type payé pour vérifer que vous ne dépassez pas l'horaire !

Pour aller même plus loin, on peut dire que l'implantation des centres commerciaux est clairement intégrée dans les schémas de réorganisation urbaine comme j'ai pu le constater à Killorglin. En effet, un nouvel ensemble de bâtiments administratifs et commerciaux a ouvert au coeur de cette petite cité de moins de 10000 habitants, juxtaposant le coeur historique (qui n'est pas bien grand). L'ensemble accueille un "gros" supermarché (pour la taille de la ville): un Aldi. Celui-ci est complètement intégré au projet et il n'a pas bénéficié d'un bâtiment à lui seul. De même, dans les autres bâtiments du projet, on retrouve des administrations, de quoi accueillir les touristes et également des commerces de proximité. Je trouve cette approche plus intéressante pour éviter que tout se retrouve en périphérie de la ville et que le centre historique devienne un ensemble qui se vide de sa substance. Ce n'est sans doute pas la panacée mais ça me semble bien adapté à la taille de l'Irlande.

Au niveau agricole, j'ai pu mesurer les mêmes paysages ruraux qu'en Angleterre pour le comté de Wexford (près de Rosslare): on y trouve des parcelles délimitées par des haies où poussent quelques céréales ou de l'herbe qui est généralement ensilée. C'est très différent de ce qu'on peut trouver en France où la majorité des haies a tout simplement disparu. Les parcelles sont également généralement moins grandes (et encore, je ne compare pas avec celles qu'on peut trouver en Beauce). Le bocage préservé a toutefois quelques inconvénients. D'abord, comme il n'y a pas de bas-côtés, la route commence là où la haie se termine. Sur une route étroite, ça fait forcément un peu peur au début.

Dans le comté du Kerry qui est assez sauvage, je n'ai pratiquement pas vu de cultures de céréales. Généralement, on retrouve de petites parcelles de prairies où paissent les bovins (laitiers ou à viande). Les moutons se retrouvent sur des parcours de grande surface, généralement sur les flancs des montagnes. Ils doivent être élevés en mode extensif car je dois avouer que j'ai rarement aperçu des bergeries dignes de ce nom. En revanche, j'ai bien aperçu des moutons qui n'avaient pas vus l'homme depuis quelques années: ce sont ceux que vous croisez après 4h de marche de randonnée dans les montagnes et qui n'ont pas vu la tondeuse depuis au moins un an ! Cette absence de bergerie me fait également croire que les brebis ne sont pas de race laitière.

Comme il y a peu de lait, il y a peu de spécialités fromagères, notamment le fromage. En dehors du Cheddar, pas grand chose... Ceci dit, le Cheddar n'est pas si mauvais même s'il a un goût finalement assez fade comparé à certaines de nos spécialités bien françaises. Malgré le climat qui est assez doux (il ne gèle pas dans tout le sud de l'Irlande grâce au Gulf Stream), la majorité des légumes et des fruits semblent importés. Les pommes viennent de France ou du Chili. Elles sont tellement chères qu'on les vend à l'unité (0,55€ la pièce). Impossible de trouver des carottes rapées dans les commerces; et d'ailleurs, je n'ai pas trouvé de carottes irlandaises. En revanche, pas de problème pour trouver des pommes de terre. A chaque fois que j'en ai vu à vendre, ça m'a fait penser à la grande famine... Les seuls fruits locaux sont les fruits rouges avec notamment les fraises et les framboises. Je dois toutefois noter que la côte d'agneau (irlandais forcément) est un poil plus abordable qu'en France. Comptez environ 13,5€ du Kg comparé à nos 16/18€ en France.

En matière de langue, le gaëlique irlandais (l'Irish) est mentionné comme étant la langue officielle du pays. Mais dans la pratique, ce n'est pas vraiment le cas. L'anglais me semble occuper plus de 90% de l'espace public sauf dans certaines localité comme sur la péninsule de Dingle par exemple. Dans ces coins, on écrit d'abord en irish et éventuellement en anglais. Je crois que l'affirmation du gaélique comme langue officielle tient plus de l'affirmation de la souverainneté de l'Irlande par rapport à la couronne britannique. Sur ce point, je pense qu'on a à peu près la même situation en France avec ce qui se passe en Bretagne.

Si vous allez faire un tour vers le comté du Kerry, sur la péninsule de Dingle, je vous recommande de vous arrêter quelques heures au musée consacré aux îles Blasket. Il tente de retracer l'histoire peu commune des habitants de cet archipel, le plus à l'Ouest de l'Irlande. Les derniers habitants ont été déportés/relocalisés par le gouvernement dans les années 50, sous couvert de sécurité. J'ai été notamment frappé par le fait qu'un grand nombre d'habitants ont publié beaucoup de livres et de romans qui racontent leurs conditions de vie. Je peux citer "The Islandman" de Thomas 0'Crohan comme un exemple d'ouvrage représentatif de cette mini-civilisation (malheureusement, seule la version en gaëlique est dans le domaine public; ce n'est pas le cas des versions traduites en anglais).

J'ai également été surpris par la réglementation sur le tabac. Pour résumer, cette dernière est sensiblement plus répressive et contraignante qu'en France. D'abord les tarifs sont quasi-prohibitifs. J'ai pu mesurer que le prix du paquet de tabac est pratiquement deux fois plus cher qu'en France. Pour le tabac en blague (tabac à pipe et à rouler), le prix est du même ordre de grandeur (entre 11€ et 13€) pour 25g que pour un paquet de 50g en France. Ensuite, je dois avouer que j'ai eu du mal à trouver ce fameux tabac. Pendant quelques jours, j'ai arpenté les différents commerces de la petite ville où nous étions et qui étaient assez pourvus en toute sorte de marchandises. Mais impossible de trouver celui qui vendait du tabac. Aucun logo comme la carotte chez-nous, aucun étalage avec des cigarettes ou des blagues... De guerre lasse, j'ai finis par poser la question "Où puis-je trouver du tabac ?" à la première librairie devant laquelle je passais. Quelle ne fut pas ma surprise lorsque la tenancière me répondis qu'elle en vendait ! Voyant ma perplexité, elle me raconta que, pour des questions de réglementation, le tabac à la vente ne peut pas être montré publiquement. De fait, impossible d'arborer le moindre logo dans la boutique ou le moindre paquet de cigarettes sur un étalage. Le tabac est rangé dans un meuble fermé, situé dans la majorité des cas derrière le comptoir. Pour repérer une boutique qui en vend, il suffit de voir s'il y a un meuble fermé avec des tiroirs ou des volets (ou éventuellement des rideaux) près du comptoir (ou de demander). Bien souvent, les libraires et les supermarchés non lowcosts en vendent. Un autre indicateur de vente de tabac, c'est le panneau de la loterie nationale. Si la boutique arbore le panneau, il y a de grandes chances qu'elle vende du tabac...

Enfin, tout touriste qui se respecte se doit de goûter la fierté nationale du pays: la bière Guiness. C'est une bière avec un malt torréfié qui produit un liquide noir après fermentation. L'image qui s'en dégage pour le touriste, c'est que c'est une bière au goût affirmé et qui doit forcément être assez alcoolisée. Néanmoins, tout touriste doit forcément déchanter un jour. Pour faire simple, la Guiness est une bière qui n'a pas un goût si prononcé et elle ne contient, dans sa vraie version irlandaise que 4,2° d'alcool, ce qui est très faible. A titre d'information, on peut acheter facilement du cidre irlandais qui lui titre à 4,5° d'alcool soit un poil plus fort. Ce faible pourcentage d'alcool explique sans doute la facilité avec laquelle on peut en boire une pinte (500ml environ) sans être (trop) inquiété pour son taux d'alcoolémie. La Guinness qui est produite en dehors de l'Irlande est souvent plus alcoolisée que l'originelle. Il existe par exemple la version "foreign stout" qui titre environ 7° d'alcool, soit l'équivalent d'une Jenlain ambrée française.

A noter que les alcools forts sont fortement taxés. Le whisky national (qu'on dénomme whiskey) vaut facilement deux à trois fois plus cher que ce qu'on peut trouver en France pour la même chose. J'ai vu des bouteilles de 75cl de Jameson aux environs de 35€ alors qu'en France, on peut l'acheter en supermarché pour moins de 18€. Pour résumer, si vous voulez vous bourrer la gueule (ce qui est difficile et cher en Irlande), mettez-vous au cidre !

J'en ai terminé avec ces petites différences que j'ai pu mesurer pendant mon voyage en Irlande. Bien entendu, elles n'ont pas vocation à être exhaustives. Elles reflètent uniquement ma petite expérience personnelle du point de vue de ma petite lorgnette, ce qui, vous en conviendrez, réduit fortement la vision globale des choses...

Posted jeu. 31 juil. 2014 18:16:00 Tags: