Archives de catégorie : fun

créer une couche à partir de l’étendue de ses cartes à imprimer

Dans cet article, je vous parlerai d’un petit script QGIS python permettant de présenter sur votre carte l’étendue de vos cartes à imprimer. Ce sera aussi l’occasion de voir comment créer un traitement one-click pour la boîte à outils traitement.

J’habite une région magnifique, la Provence, et voilà un certain temps que je prépare mes randos du week end grâce à QGIS.

D’ailleurs, si vous ne le savez pas déjà, sachez qu’il est possible de bénéficier des cartes IGN dans QGIS sans clé avec cette adresse-là : 

https://wxs.ign.fr/pratique/geoportail/wmts?SERVICE=WMTS&REQUEST=GetCapabilities

(cf cet article sur le site de l’IGN)

J’ai une petite couche de données appelée tracés qui me permet de tracer mes futures randos, et de suivre celles que j’ai réalisées. J’ai aussi une couche de points qui me permet de marquer des secteurs intéressants.

Je pourrais utiliser geoportail.gouv.fr pour imprimer mes cartes, mais l’avantage que je vois avec QGIS est de vraiment pouvoir contrôler l’aspect de mes cartes, leur échelle d’impression. Je peux par exemple superposer une grille de 1 km de côté comme sur les cartes randos de l’IGN que l’on trouve chez le libraire. Cela s’avère très pratique une fois en balade.

Le souci, c’est que comme cela fait un certain temps que je crée mes cartes de randos sous QGIS, je me retrouve avec un nombre incalculable de composeurs d’impression (appelés composers sous QGIS 2 et print layouts sous QGIS 3)

Il s’avère que toutes les cartes de rando que j’ai exportées correspondent à des randos que j’ai réalisées. Autrement dit, si je pouvais représenter sur ma carte l’étendue de toutes ces cartes, cela me permettrait de me rappeler des secteurs où j’ai marché dans la région. 

Il y a d’autres cas où cela peut être utile, dans un cadre plus professionnel. Imaginez par exemple un agent de votre organisation qui aurait créé des cartes à tout va pour préparer une mission terrain, mais pour lequel il se révèlerait assez dur quelques mois plus tard de vous dire sur une carte les zones sur lesquelles il aurait travaillé.

En fait, il suffirait de créer une couche de polygones rectangulaires récupérés depuis l’étendue de mes cartes pour voir ces zones.

Le code python

S’il n’existe pas de fonction toute prête sous QGIS pour reporter dans une couche les polygones rectangulaires correspondant aux étendues des cartes à imprimer, nous avons quand même accès à  toutes les fonctions de l’API QGIS.

Si vous voulez tester votre code python, ce que vous pouvez tout simplement faire, c’ est d’ouvrir la console python et d’y créer un petit script (en allant dans le menu Extension > Console Python).

Voici le code que vous pourrez mettre dans la console ou dans votre script de console, pour récupérer dans une couche mémoire l’étendue de vos cartes (valable pour QGIS3).

def getCompositionExtents(crsCode=2154) :
    
    # layer
    vl = QgsVectorLayer("Polygon?crs=EPSG:%s"%(crsCode), "Extent Polygons", "memory")

    # defining CRS
    crs = vl.crs()
    crs.createFromId(crsCode)
    vl.setCrs(crs)
    
    # data provider
    pr = vl.dataProvider()

    # start editing
    vl.startEditing()
    
    # add attributes
    vl.addAttribute(QgsField("name", QVariant.String))


    # get compositions
    projectInstance= QgsProject.instance()
    projectLayoutManager = projectInstance.layoutManager()
    comps = projectLayoutManager.printLayouts()

    # iterate over compositions
    feats = list()
    for comp in comps :
        nom = comp.name()
        print(nom)
        for item in comp.items() :
            if (isinstance(item, QgsLayoutItemMap)) :
                print("toto")
                print(item)
                e = item.extent()
                feat = QgsFeature()
                feat.setGeometry(QgsGeometry.fromRect(e))
                feat.initAttributes(1)
                feat.setAttribute(0, QVariant(nom))
                feats.append(feat)

    # add features
    pr.addFeatures(feats)

    # commit changes
    vl.commitChanges()
    
    return(vl)
    
def addLayerToCanvas(vl) :
    # add layer to canvas
    QgsProject.instance().addMapLayer(vl, False)
    layerTree = iface.layerTreeCanvasBridge().rootGroup()
    layerTree.insertChildNode(-1, QgsLayerTreeLayer(vl))
    
    
vl = getCompositionExtents() # create layer from extents
addLayerToCanvas(vl) # add layer to canvas

Pour lancer le script, cliquez juste sur le petit triangle vert

Et voilà, cela devrait vous créer une couche avec l’étendue des cartes à imprimer de votre projet

Décodage

Voici les éléments clés du code :

projectInstance= QgsProject.instance()
projectLayoutManager = projectInstance.layoutManager()
comps = projectLayoutManager.printLayouts()

Ce code permet de récupérer les print layouts dans une variable appelée comps

feats = list()
for comp in comps :
    nom = comp.name()
    for item in comp.items() :
        if (isinstance(item, QgsLayoutItemMap)) :
            e = item.extent()
            feat = QgsFeature()
            feat.setGeometry(QgsGeometry.fromRect(e))
            feat.initAttributes(1)
            feat.setAttribute(0, QVariant(nom))
            feats.append(feat)

Ici, on itère à travers toutes les compositions. Pour chaque composition, on aura un objet, une feature.

feat.setGeometry(QgsGeometry.fromRect(e)) permet d’affecter une géométrie à la feature depuis le rectangle formé par l’étendue

feat.initAttributes(1)
feat.setAttribute(0, QVariant(nom))

permet d’attribuer la variable nom (qui comprend le nom de la composition) à la première colonne

def addLayerToCanvas(vl) :
    # add layer to canvas
    QgsProject.instance().addMapLayer(vl, False)
    layerTree = iface.layerTreeCanvasBridge().rootGroup()
    layerTree.insertChildNode(-1, QgsLayerTreeLayer(vl))

Cette fonction permet juste d’ajouter la couche créée artificiellement au canevas, soit, à la carte

Création d’un traitement python pour la boîte à outils Traitement

Exécuter un script depuis la console python n’est pas la chose la plus élégante à faire. Il y a deux externalités possibles à ce bout de code, voire même trois.

Les voici dans un ordre de difficulté d’implémentation croissante :

  1. Créer une macro à l’ouverture du projet : automatiquement, une couche se crée à l’ouverture du projet
  2. Créer un traitement pour la boîte à outils Traitement
  3. Créer un plugin

Dans mon cas, j’ai préféré créer un traitement QGIS. Un plugin serait un peu trop ambitieux pour ce cas d’usage, quoiqu’un bouton dans l’interface aurait pu être utile.

Pour créer le traitement, créez un nouveau script, par exemple depuis un modèle :

Vous trouverez sur ce lien le code complet pour créer un traitement pour la boîte à outils Traitement

Cela créera une rubrique My Scripts dans la boîte à outils Traitement.

Cela apparaîtra de cette façon-là quand vous l’exécuterez :

Décodage

Dans le script, les fonctions name, displayName, group, groupId permettent de paramétrer la façon dont le script apparaîtra dans la boîte à outils Traitement.

(sink, dest_id) = self.parameterAsSink(
    parameters,
    self.OUTPUT,
    context,
    flds,
    3,
   crs
)

permet de paramétrer les méta-data de la couche. 3 est le type géométrique de la couche. fldset crs sont les champs et système de projection de la couche

feats  = self.fGetExtentFeaturesFromPrintLayouts()
for feat in feats :
    sink.addFeature(feat, QgsFeatureSink.FastInsert)
    
# Return the results of the algorithm
return {self.OUTPUT: dest_id}

calcule les features associées aux étendues (voir fonction créée précédemment) et les met dans le sink.

Note : pour les fonctions qui sont personnelles, je rajoute le petit préfixe f afin de bien les dissocier des fonctions QGIS du modèle.

Il y a vraiment beaucoup à faire et de quoi s’amuser quand on plonge dans l’API et QGIS offre plein de voies possibles afin d’implémenter des traitements originaux.

Et après ?

Nous pourrions imaginer rapatrier le nom des communes intersectées par ces rectangles, voir quelle surface cela représente en tout et révéler les zones de la région qui resteraient encore à explorer !

Petit rappel des gists :

 

 

Des statistiques et des bulles d’iris qui flottent sur Paris

Cet article traite des cartes avec camemberts, des problèmes que cela pose d’un point de vue graphique, et cartographique. Mais surtout, nous verrons la conception d’une carte socio avec diagrammes, par contour IRIS à Paris, qui s’appuie sur le circle packing. Tout ça en essayant d’être rigolo.

Cliquer sur l’image modes de pour voir en grand


La tarte tatin, c’est bon …enfin, ça dépend


Les twix, c’est meilleur que les donuts


Les américains, ils disent que les tartes aux pommes, c’est pas bon. En effet, un article de Business Insider affirme qu’il est difficile de se faire une idée des proportions avec les pie charts. C’est pourquoi on en mange autant.

En France, on appelle ces pie charts des camemberts… On aurait pu appeler ces graphiques des “quiches lorraines” ou “pizzas 4 fromages” selon ce qu’on préfère. Résidant en Provence, je dirais “pompe à l’huile”

“Les chiffres sont critiques !  Regardez donc cette pompe à l’huile !”

Une tarte un peu spéciale


http://www.datemplate.com/post_types-of-charts_136702/gende
En fait, la vraie dénomination de ce graphique serait d’après l’illustration ci-dessus des “slice chart”.
Si l’on se réfère à cette illustration, la vraie pie chart serait une tarte tellement disproportionnée que tout pâtissier assez audacieux pour en confectionner une se ferait interner.
Cette pie chart présente en réalité certaines caractéristiques des radar charts, ou encore spider charts (des arachnophobes dans la salle ?)

Du coup, on pourrait la traduire par RADAR PIE CHART ™, ou “tarte espion” en français.

Ce type de graphique assez bizarroïde présente selon moi certains avantages sur une carte.
En admettant que l’angle de chaque part de tarte espion soit identique, chacune possèdera la même directivité dans l’espace, ce qui facilite les comparaisons. Ce n’est pas le cas avec la tarte maison.
Evidemment, cela ne marche plus dès lors que l’on fait varier à la fois l’angle des parts et leur longueur. C’est un cas qu’on rencontre assez souvent avec des graphiques car la bidimensionnalité est leur vocation première.

Ces tartes espion peuvent être utiles afin de figurer des variables statistiques discrètes mais aussi continues, par exemple temporelles.

Bulles de statistiques


Les iris ne sont pas que des fleurs

L’IGN et l’Insee nous ont gratifiés il n’y a pas si longtemps des contours…IRIS ®, l’iris étant le niveau d’agrégation et administratif le plus fin après la parcelle, le bâtiment et le pavé de trottoir.
En liant des données statistiques à ces IRIS, on peut réaliser tout plein d’analyses et de cartes folles et sympas, ce qui explique pourquoi la mise à disposition de ces contours a pas mal excité la géosphère.

“retrouvons-nous après un petit flash publicité”

Bon, je le dis comme ça : à l’ouverture des données, je m’étais amusé à réaliser une carte des IRIS niveau France entière avec des…iris

Catégories socio-professionnelles

L’Insee, acteur historique de l’#Opendata en France https://t.co/9G7jFHY7N6 pic.twitter.com/Ws9Ei9bOYs

@Insee (@InseeFr) 9 février 2016

C’est fou tout ce qu’on trouve sur le site de l’INSEE, mine de rien. La donnée qui nous intéresse ici est le fichier Travail-Emploi du recensement général de la population de 2012 à l’Iris. Grâce à ces données, on peut faire des cartes très intéressantes pour se faire une idée, entre quartiers, de la mixité sociale, du mode de déplacement privilégié des riverains : voiture, deux roues, etc

Illustrons la méthode en nous appuyant sur la première carte à bulles présentée en début de page. Les colonnes du fichier statistique qui ont été utilisées sont :

  • nombre d’agriculteurs : on en trouve à Paris, si s
  • nombre d’artisans, commerçants et chefs d’entreprise
  • nombre de cadres et professions intellectuelles supérieures
  • nombre personnes occupant des professions intermédiaires
  • nombre d’employés
  • nombre d’ouvriers

Quand les diagrammes posent des soucis aux géomaticiens

Nous pourrions être tentés de représenter ces données sous forme pie charts (camemberts), voire de graphiques à barres (twix).

Dans les deux cas, la difficulté vient, à l’échelle de travail qui est assez fine, du phénomène appelé overlapping qu’on appelle recouvrement en français, mais ça fait moins stylé.

ça fait over-mal

L’astuce du jour, le circle packing, ou empaquetage de cercles (on traduit comme on peut)


L’astuce du jour  $*♪ TADAM ♪*$  consiste à utiliser la technique du circle packing.

Cette technique que Google traduit par “cercle d’emballage”, consiste à répartir le mieux possible des cercles dans un espace de telle sorte qu’aucun ne recouvre l’autre.

C’est un peu ce qui se passe si vous remplissez à 99% une table de billard de boules et que vous mettez des boules dessus. Ces dernières vont se faufiler, pousser les autres jusqu’à le tout se soit équilibré (mais faut avoir bouché les trous du billard avant).

Son application en cartographie la plus connue s’appelle les cartogrammes de Dorling, du nom de son créateur, Danny Dorling

Danny Dorling (au photomaton ?)
http://www.abc.net.au/4corners/stories/2011/10/04/3331769.htm


A quoi ressemblera ma carte


un méchant diagramme
Au niveau de chaque rosace, chaque catégorie se verra affecter une tranche sur le diagramme et cette dernière sera d’autant plus grande qu’il y aura d’employés, ou de cadres, ou d’artisans,…

La carte


Le feeling


Et là, dans ma tête, cercle a évoqué “bulles”. Des bulles flotteraient au-dessus de la capitale avec des statistiques dedans. Les stats c’est lourd, mais quand elles sont dans des bulles, c’est plus léger.

Éléments de contexte


Bon ok, c’est un peu flou, et même très petit


J’ai positionné la Seine, épine dorsale de la capitale ainsi que les contours d’arrondissements (BDROUTE 500 ®) avec un léger flou, pour donner de la profondeur de champ, comme en photographie, ainsi que rejoindre cette idée de légèreté.

L’algorithme de circle packing s’est chargé du mieux qu’il a pu, de répartir les boules de même circonférence sur le territoire, alors que les iris ont initialement des formes, surfaces différentes, il faut faire attention à l’échelle d’analyse.
Chaque bulle a la couleur d’un arrondissement. Cela est d’autant plus nécessaire que la limite imposée à l’algorithme en terme d’itérations a pu entraîner par endroits le transfert d’une bulle dans un arrondissement voisin.

Parlez arrondissement à un provincial comme moi, et il n’y pigera que nenni. Parlez-lui métro, et tout s’éclaire. Tout touriste parviendra à adjoindre une atmosphère à une bouche de métro. Les noms “Barbès”, “Porte d’Italie”, “Le Trocadéro”, “La Défense” évoquent tout de suite des ambiances, des souvenirs.

Les stations de métro fournissent un très bon référentiel que j’ai choisi d’ajouter en filigrane afin de relier l’environnement socio-professionnel à ce réseau auquel on se réfère souvent.

La couleur des lignes, des étiquettes est celle du logo de la RATP. Fallait bien choisir une couleur et la couleur peut évoquer une fonction.

Pour récupérer les lignes ainsi que les stations, j’ai utilisé une petite requête overpass (overpass est  un super outil d’interrogation et d’extraction de données OSM par attributs et critères géographiques et non un pass navigo illimité que l’on trouve sur le darknet).

Les iris et leurs niveaux supérieurs

Aussi, les noms d’Iris constituent des toponymes intéressants à faire figurer sur la carte. Cependant, ils sont beaucoup trop nombreux. On trouvera par exemple PERE LACHAISE 1, PERE LACHAISE 2, etc…

groupes_iris = sub("^(.*) ([0-9]+)$", "\1", iris.df$NOM_IRIS)

Grâce à une petite expression régulière, j’ai récupéré la racine du nom de l’iris sans le numéro et constitué une couche agrégée d’entités de niveau supérieur. Les noms de ces entités supérieures ont servi à l’étiquetage. Je leur ai affecté la même couleur que celle de l’arrondissement auquel ils appartiennent.

Bribes de design

D’un point de vue programmatique, pour générer ces diagrammes, je me suis appuyé sur la librairie R packcircles et des rudiments de géométrie.

En particulier, pour avoir une tranche de gâteau, il suffit de générer un polygone issu d’une série de points, elle-même définie en fonction d’une distance à un centroïde, d’un effectif et d’une rangée d’angles.

Sous QGIS, un mode est utilisé, qui de son joli nom “Flannery”, permet de définir de façon automatique la taille de symboles proportionnels. Ce mode se base sur une fonction interne de QGIS appelée scale_exp. D’après la documentation utilisateur officielle de QGIS, cette fonction échelonne des valeurs entre une valeur minimale et une maximale en suivant une courbe exponentielle.

J’ai porté le code sous R grâce à la doc’ API de QGIS pour définir la taille des pales de la rosace.
Il s’avère qu’en réalité, le rééchelonnage des valeurs se fait selon une courbe de puissance. La fonction devrait du coup plutôt s’appeler scale_pow. 
Voici une illustration de ce que cette fonction accomplit :

La fonction puissance permet de mieux dissocier les valeurs hautes
Si l’on effectue un étirement linéaire, on perçoit moins les différences de valeur :

étirement linéaireVS étirement par puissance

Du QGIS


Sur cet iris, des employés d’abord. des professions intermédiaires ensuite, des cadres, des ouvriers et des artisans enfin

Pour les bulles, j’ai utilisé le dégradé selon la forme, auquel j’ai ajouté un effet d’ombre intérieure.
J’ai utilisé l’effet flou ainsi que des ombres portées sur les autres éléments d’habillage.
Pour les pétales de la rosace, j’ai utilisé un dégradé simple pour un peu de skeumorphisme ainsi que des ombres portées.
J’ai également utilisé les modes de fusion, celui de lumière dure et surtout, celui appelé “multiplier”.

Déclinaisons

Paris, encore

On peut décliner ces cartes sur tout un tas d’autres sujets.

Voici, sur le même mode, la répartition entre étudiants, chômeurs et retraités à Paris par iris:

Et ici, les modes de déplacement utilisé à Paris : deux roues, voiture, transport collectif, marche à pied :

Bonus tracks

Allez, en bonus, voici une carte de la population par âge quinquennal, par département

A vrai dire, je n’ai rien inventé : des cartes exploitant cette technique ont déjà circulé dans les médias, souvent réalisées à l’échelle internationale ou nationale.

Par exemple, il y a cette carte de la pollution, issue de l’atlas du carbone :


Kenneth Field, un carto-critique très pertinent, et créateur de cartes originales, avait par exemple créé cette carte à l’occasion du mondial du football

Rond – ballon, il n’y a qu’un pas !

Plongée dans l’absurde de la cartographie

Ça et là apparaissent sur la Toile des cartes qui revisitent des thématiques a priori banales sous un angle d’approche assez insolite.

Dans ce billet de début d’année, nous en listerons quelques-unes avant de nous attaquer à la réalisation d’une carte qui soulève les océans et immerge les montagnes.

Attention, tout ce qui suit ne doit pas toujours êtres pris au premier degré.

Petit cabinet de curiosités cartographiques

Le problème, c’est que quand on met la carte dans le “bon” sens, le texte est à l’envers

Tout d’abord, présentons des cartes où les pôles sont inversés, le pôle sud en haut et le nord en bas, à l’image de cette carte de l’australien Stuart MacArthur. Ce n’est pas parce que ce monsieur s’est pris un boomerang sur la tête que l’idée lui a pris de représenter le monde de cette manière. C’est sans doute afin de partager avec ses concitoyens australiens une vision commune de son pays positionné au centre du monde.

L’Afrique, si elle avait échappé à la colonisation

Généralement, pour nous, ce qui est situé en haut a plus de valeur, car plus proche du divin : “Pourquoi s’abaisser à faire ceci ?”, “Quelle bassesse !”, “C’est de la musique de bas étage”, “Aller plus haut” comme disait Tina Arena.
Par un jeu de chaises musicales, cette carte assez radicale de l’Afrique permet de remettre en question la place hégémonique des pays du Nord sur les cartes en occupant un espace toujours réservé. Rappeler la grandeur de l’Afrique, faire un pied-de-nez à l’omnipotence du Nord, sont les objectifs poursuivis par l’artiste suédois à l’origine de cette carte.

Mercator, c’est une sorte de miroir amincissant pour les pays du Sud

La carte ci-dessus compare deux systèmes de projection. Des choses intéressantes se produisent quand on passe de l’un à l’autre. On voit que Mercator écrase les pays de l’Hémisphère Sud. C’est un peu “Pousse-toi, que je m’y mette !”. Si Mercator rend beaucoup service aux navigateurs, les projections qui conservent les surfaces comme celle de Peeters ont d’autres qualités : comme elles ne conservent pas les angles, elles accroîtraient la mixité des populations en faisant s’échouer les marins un peu partout. Elles sont donc égalitaires en tous points.

Au cas où vous aimeriez mener une vie d’ermite en Amérique

Cette carte s’attache à présenter les endroits, aux USA, qui ne comptent aucun habitant. Ici, on renverse les codes de la cartographie où l’on présente en général des quantités importantes en premier lieu. Et pourtant, si l’on considère que le vide est quantifiable, cette façon d’aborder les choses gagne en cohérence.

Carte de l’abstention (lors des élections régionales)

Et puis, il n’y a pas si longtemps que ça, après le flot usuel de cartes des élections régionales, sont arrivées des cartes de l’abstention et du vote blanc. Ces cartes qui mettaient en lumière un mouvement invisible, étaient aussi intéressantes que les cartes usuelles, notamment car elles ont pu montrer là où les électeurs s’étaient le plus mobilisés. Comme quoi l’on part d’un inverse pour revenir à l’autre. Au milieu de tous ces retournements infographiques, avouez qu’il y a de quoi perdre la tête.

Quitter le plancher océanique pour mettre un pied sur le fonds continental

Assez insolite, il y a aussi cette carte du monde où l’auteur a choisi d’inverser le relief. Les océans dominent alors les continents qui deviennent de vastes lacs. Cette carte, par son point de vue original, parvient à capter l’attention sur le sujet assez banal qu’est la bathymétrie.

retournement de cerveau

On voit que l’inversion peut être traitée de deux façons différentes : soit elle s’attache à la thématique en présentant l’opposé de ce que l’on est censés représenter (par exemple l’abstention versus le vote), soit elle s’attache au graphisme en affectant des codes graphiques inconventionnels à ce que l’on veut illustrer (comme associer la couleur de zones urbanisées à des endroits vides de population). L’approche la plus radicale consiste finalement à représenter de façon inversée l’inverse de ce l’on veut représenter. Est-ce que vous me suivez ? Parce que moi je ne suis pas sûr de me suivre moi-même.

Platon était parfois renversant

Selon moi, l’objectif de ces représentations originales est double. D’une part, on révèle des patterns insoupçonnés en explorant les antipodes ce que l’on était censés rechercher. On cible les outliers, tout ce qui échappe à la trajectoire moribonde d’une régression linéaire. On attire l’attention du public sur des sujets méconnus.
D’autre part, elles permettent de démontrer quelque chose par un raisonnement assez proche de celui par l’absurde. Par exemple, pour arguer à quelqu’un à quel point les océans sont profonds, l’on serait tentés de les transposer en montagnes. Afin de mettre en évidence les zones peu peuplées, on renverse les codes sémiologiques en utilisant les couleurs habituelles des zones peuplées pour les figurer.


Et si l’on inversait la bathy ?

La carte où l’altitude de la planète avait été inversée m’a inspiré. J’ai tenté de la reproduire.

Je me suis procuré la donnée ETOPO1 du NOAA (National Oceanic and Atmospheric Administration, institution comparable à notre Météo France) qui combine à la fois la bathymétrie et l’altimétrie en tout point du globe avec une résolution d’un degré (environ 100km).

Le monde avec le relief inversé

J’ai fait ma tambouille avec GRASS-GIS pour inverser l’altitude, rien de compliqué. Voici, ci-dessus, ce que j’ai obtenu. La rampe de couleurs est conçue de telle manière qu’elle puisse évoquer successivement les grands fonds, les lagons, des plages, des falaises blanches de calcaire, du sol nu, de la forêt, et enfin, des sommets enneigés.

Le monde inversé avec un relief inversé

Si je vous avais présentés la carte avec le Sud en haut, soit le monde inversé avec le relief inversé, la sensation devient radicalement différente. Déboussolé, on a peu d’éléments sur lesquels se raccrocher : “on a perdu le Nord”

Voici ci-dessous des rendus générés grâce au plugin QGIS2ThreeJS :

Du côté de chez nous
Les abysses himalayennes
Les Caraïbes et l’immense plage du Rio Grande

Libre à nous d’imaginer de nouveaux mondes.

Précisions techniques

Pour calculer l’opposé des valeurs, j’ai simplement exécuté la ligne suivante sous GRASS avec la calculatrice r.mapcalc :

r.mapcalc “etopo_opp=-etopo”

Voici la rampe de couleurs utilisée sous QGIS :

Et voilà !


Crédits

Platon issu de NounProject et réalisé par Dabid J. Pascual