Archives de catégorie : data analysis

Parcourir le Monde

Quel est l’itinéraire idéal pour parcourir le Monde ? Combien de temps de vol cela prendrait ? Quels sont les deux pays les plus distants l’un de l’autre ?
Dans ce post, j’ai fait mumuse avec la carte du globe, et appris des choses au sujet des distances orthodromiques et des voyageurs de commerce. Bon voyage !


Dernièrement, j’ai eu un échange avec @matamix au sujet du calcul de trajets permettant de couvrir un ensemble de points de façon optimale.

Nous avons échangé au sujet du code, puis une question m’est venue : dans quel ordre devrais-je visiter les différents pays, dans l’éventualité d’ un tour du monde (rêvons un peu). C’est la problématique du voyageur de commerce, qui doit démarcher un certain nombre d’adresses en un minimum de temps. Il s’avère que la problématique du voyageur de commerce peut s’appliquer à des domaines non spatiaux, comme ordonner des séquences génétiques, voire regrouper des individus (au sens statistique) selon leur proximité : intéressant !

“Attrape-moi si tu peux !”

Tout d’abord, il faut se poser la question des distances entre les différents pays. L’espace dans lequel on doit travailler n’est pas euclidien, plan, mais sphérique. Ainsi, pour rejoindre le Japon depuis les Etats-Unis, inutile de traverser l’Atlantique, bien sûr. Les distances que l’on doit calculer sont les distances de grands cercles ou orthodromiques. Il existe apparemment différentes méthodes, la plus courante étant celle utilisant la loi sphérique des Cosinus

Sous R, on peut calculer 4 sortes de distances des grands cercles grâce au paquet geosphere.

J’ai récupéré les contours des pays depuis le magnifique Natural Earth, déterminé le centre des pays, et calculé les distances entre chaque, de sorte à réaliser une matrice de distance entre les différents pays. Cette matrice peut être vue comme un réseau constitué de noeuds : les pays, connectés entre eux par des arêtes de poids égal à la distance qui les sépare.

On obtient une matrice des distances orthodromiques, dont voici ci-dessous une illustration, avec 177 lignes et 177 colonnes (autant de pays que dans la couche des pays), soit 177^2 “cases”. Plus la couleur est claire et plus la valeur de distance est grande. On voit que la diagonale est obscure. Les poids sur celle-ci sont nuls, puisque la distance de la France à la France est nulle. On voit que la matrice est symétrique puisque la distance, à vol d’oiseau, est la même de la France à l’Espagne que de l’Espagne à la France.

Entrez dans la matrice…

D’ailleurs, à partir de cette matrice, je me suis amusé à déterminer les trajets les plus grands entre deux pays sur le globe. En voici la liste des 10 premiers, chaque ligne représentant un trajet, dans l’ordre d’importance :

En allant du Paraguay à Taïwan, on parcourt quasiment la moitié de la Terre, la circonférence de cette dernière étant de 40 075 km

Et voici la carte correspondante pour les 5 plus grands trajets :

De même, voici la liste des pays les plus “isolés” :

Revenons à nos moutons…ou plutôt à nos voyageurs de commerce. Maintenant que notre matrice a été constituée, nous pouvons calculer le chemin optimal qui parcourt tous les noeuds une seule fois en cumulant un poids minimal (une distance minimale). Il existe plusieurs méthodes permettant de résoudre la problématique du voyageur de commerce. Dans un premier temps, j’ai tenté la plus commune, la méthode des plus proches voisins, mais elle me trouvait un itinéraire assez bizarre.

Le voyageur de commerce qui avait mal planifié son voyage

En fait, c’est normal : la méthode des plus proches voisins prend un point au hasard, détermine le point le plus proche, et répète l’analyse de proche en proche jusqu’à ce que tous les points aient été visités. Une variante prend comme point de départ chaque noeud, compare les tournées, et choisit la meilleure. Cet algorithme est assez basique.

C’est avec l’algorithme Concorde que j’ai obtenu le meilleur résultat. Voici ce que dit Wikipédia à propos de Concorde :
“a state of the art implementation”
“one of the best exact TSP solvers currently available.”
“is widely regarded as the fastest TSP solver, for large instances, currently in existence”.
Bref , il s’agit du voyageur de commerce le plus performant du monde, apparemment. Il doit être milliardaire à l’heure qu’il est !

 Voici donc l’itinéraire que j’ai pu trouver pour parcourir les pays du monde entier, prenant en compte les distances sphériques entre pays. On voit que j’ai aussi inclus l’Antarctique : soyons un peu aventureux !

Carte avec les fuseaux horaires

Voici un extrait des pays, dans l’ordre, au moins pour les premiers (ou les derniers, selon le sens où l’on va) :

Bon, Corée du Nord, 16e dans la liste, on passe ?

En distance, en tout, cela représente un peu plus du tiers de la distance Terre-Lune, cette dernière étant de 384 400 km, et entre trois et quatre fois le tour de la Terre

Je me suis demandé combien de temps de vol cela représenterait pour parcourir tout ça. Il existe un site appelé travelmath qui donne le temps de vol entre tous les pays.

(et 11 secondes)

Avec un petit chouilla de scraping – rien de compliqué – j’ai pu récupérer ces temps tout le long de mon itinéraire, soit pour 176 couples origine-destination. J’ai fait le calcul : il faudrait 12 jours ! pour effectuer cet itinéraire. En bref, si vous projetez une année sabbatique, ça vous fait un jour à passer dans l’avion par mois en moyenne, pas très reposant…et peu écologique !

Dataventures

Bon, je dois vous avouer qu’utiliser le Concorde (l’algorithme) n’a pas été forcément une mince affaire. Dans un premier temps j’ai testé l’outil Concorde en interface graphique et me suis rendu compte qu’il fournissait des bons résultats :

Pas mal !

Mais le souci, c’était que visiblement, ce dernier ne prenait en compte que les fichiers de coordonnées, et pas les matrices de poids !..

J’ai essayé de convertir ma matrice de distances orthodromiques en coordonnées avec un échelonnage multi-dimensionnel et une fonction de R appelée cmdscale, mais cette méthode est loin d’être optimale car j’avais en coordonnées le Cameroun plus proche de la France que la Belgique (!). Ca m’a un peu trotté cette histoire jusqu’à ce que je conclue, bêtement, que cela venait du fait que l’espace dans lequel raisonne cmdscale ne peut prendre en compte la nature sphérique des distances (c’est comme si on était dans une autre dimension avec ma matrice).

Comme un petit problème..

J’ai donc dû me rabattre sur les exécutables source. J’ai téléchargé Concorde depuis un site universitaire canadien

Le site, qui n’a peut-être jamais crashé, contrairement à son outil éponyme

A noter que la licence ne prévoit qu’une utilisation académique, et non commerciale, malgré le nom de l’algorithme 😉 L’outil est exécutable sous Windows grâce à Cygwin, un émulateur Linux. Du coup, j’ai installé Cygwin en 64 bits. Hors, ça ne fonctionnait pas. Je me suis aperçu après moult recherches que Concorde.exe fonctionnait avec Cygwin 32 bits, et non 64 bits. Bon, finalement, lorsque concorde.exe a affiché l’aide dans l’invite de commandes, j’étais soulagé !

**Alleluïa**

Une fois tout bien configuré, j’ai pu utiliser Concorde dans R après avoir donné le chemin via concorde_path (youpi !) :

Cool, ça marche. Le rouge, c’est juste un avertissement
Allez, pour finir, voici des cartes que l’on trouve sur le web, qui donnent le chemin le plus court pour parcourir la planète (pas si éloignées que ça de la mienne) :
Aller d’une capitale à l’autre selon wolfram

La réponse était aussi sur reddit, sur le canal “Map Porn”

Crédits icônographie
Globe issu de Wikipédia
The Crown, by Oliviu Stolan from NounProject
The Wing by Alice Noir from NounProject

Le sport en France métropolitaine et le leurre cartographique

Dans ce post, nous allons voir comment réaliser un leurre cartographique, soit la réalisation d’une carte représentant un territoire totalement façonné par des données. Plus précisément, nous verrons la conception d’un territoire de la pratique sportive par départements en France.&nbsp



Territoire physique et territoire vécu

Le territoire physique, tout le monde le connaît. Le paysage se déploie sous nos yeux de façon continue, façonné par des variables non discrètes dans l’espace, à savoir le climat, le relief, etc… Mais le territoire perceptible est-ce il le seul qui existe ?

Nous pourrions imaginer qu’en surcouche de ce dernier flottent une multitude de nappes géographiques :
celui du patrimoine mémoriel, des références culturelles, historiques, celui des bises, du pain au chocolat ou de la chocolatine…

Pain au chocolat ou chocolatine par Adrien Van Hamme

Il s’agit des territoires perçus, vécus, ressentis, voire même parfois imaginés. Ils sont révélés par les sondages, les enquêtes d’opinion, sous la forme la plus courante de choroplèthes.

Le sport comme nouveau territoire

Le basket en France

Un article de matamix sur slate montrait comment le territoire pouvait se métamorphoser selon la pratique sportive. Ici, des rugueux ? Là, des footeux ? La carte se boursoufle selon ce que l’on pratique.
Dans la continuité de ce travail, je me suis posé la question suivante : considérant la pratique sportive dans les départements,  peut-on remanier le territoire selon le sport pratiqué par les français et, ainsi, faire figurer, cote à cote, des départements où l’on pratique à peu près le même sport ?

Réalisation  d’un “leurre cartographique”

Intégration du fichier et remaniement du tableau

J’ai donc récupéré le fichier des licences sportives de 2013 depuis data.gouv.fr. C’est celui-ci qu’a également utilisé matamix.
Le fichier recense à la fois les sports olympiques et non olympiques. J’ai choisi de me concentrer seulement sur les sports olympiques.
Le fichier est au format long :

Le fichier des licences vu dans le logiciel RStudio

Nous n’extrayons que les sports olympiques (dont le code fédé commence par 1).
Il serait davantage intéressant de le convertir au format large. Nous aurions alors une colonne par pratique sportive. Hop, ça y est, on a notre fichier au format large :

Format large : une ligne par communes et les sports en colonnes

Il nous suffira juste d’agréger les valeurs pour avoir des stats départementales et non communales.

Des stats communales aux stats départementales


Remaniement spatial

Chaque département peut être positionné dans un espace de dimensions égales au type de sport. C’est comme si on était dans un graphique non pas avec deux axes abcisse et ordonnée, mais 31 axes correspondant aux 31 sports pratiqués.

exemple de 21 points dans un espace à 5 dimensions (♪ musique de X Files )

Ce qui signifie que dans cet espace à 31 dimensions, la distance entre chaque département donne une indication de leur similarité en terme de pratique sportive. Nous calculons la matrice de distance entre chaque département dans cet espace. Le résultat est un tableau de contingence avec la distance euclidienne entre tous les départements dans l’espace considéré.

matrice des distances (euclidiennes) entre départements selon les sports pratiqués

Et si nous essayions de ramener cet espace de 31 dimensions dans un espace de 2 dimensions X et Y, soit un espace représentable sous forme de carte ? Cela peut être accompli avec la technique de positionnement multidimensionnel qui affectera une position dans l’espace à chacun de nos départements en partant de la distance qui sépare chacun. Voici ce que cela donne :

Multi Dimensional Scaling

Si l’on colorie les points de ce graphique et la carte des départements en fonction de leur classe selon la méthode des k-moyennes, on obtient ça :

méthode des k-moyennes avec 5 classes selon la pratique sportive

Au positionnement géographique et aux caractéristiques topographiques des départements semblent répondre les classes des k-moyennes. On voit un groupe de départements violet, où prédominent les départements alpins. On voit un groupe vert au Nord comprenant au Sud la Gironde.

Pour investiguer plus largement la carte et quels sports sont majoritaires dans chaque classe, il aurait fallu faire une moyenne des licenciés par sport, par département et par classe. Nous n’avons pas réalisé ce calcul ici, mais on trouvera à la fin une heatmap qui pourra nous donner satisfaction..

Du nuage de points au faux relief

Pour faire une carte, cela peut amplement suffire..mais s’il s’agit de stimuler l’attention et l’imagination de celui qui lira la carte, il faudra sans doute un peu plus faire d’efforts. Pourquoi ne pas emprunter les codes usuels de la cartographie ?

Comme l’objectif est de partir d’un territoire pour arriver à un autre, complètement remanié selon des variables fournies en entrée, nous allons tenter de travestir ce modeste graphique X Y en carte, laissant penser que ce territoire existe vraiment.

Le premier “trick” consiste à transformer ce “nuage” de points en relief. Pour cela, on le convertit en carte de chaleur.

hitmap ! heu, une carte de densité ou de chaleur

Cette carte de chaleur fournit un ersatz de modèle numérique de terrain, auquel on affecte des codes couleur selon l’altitude, qui évoquent successivement la mer, le sable chaud, la montagne et ses forêts.

Des couleurs choisies avec soin métamorphosent une simple heatmap en archipel

De ce faux MNT, on dérive un ombrage :

De tout MNT et surface continue, on peut dériver un ombrage (hillshade)

On ajoute le relief, l’ombrage avec un peu de transparence, puis les noms de départements. Et voilà : on obtient une “fausse carte” :

(Cliquez pour voir en grand)

La heatmap de la pratique sportive

Si vous souhaitez confronter la carte avec les données sportives, voici une heatmap créée sous R et “designée” sous QGIS :

Une heatmap dont le rendu a été fait dans QGIS : si, si !
(cliquer pour voir en grand)

En fait, c’est un raster que j’ai polygonisé et dont j’ai fait le rendu sous QGIS. Comme quoi on peut tout à fait colorier des graphiques sous QGIS sur la base de données produites sous R. Cette heatmap utilise des données recentrées afin de pouvoir comparer des pratiques sportives minoritaires avec des plus généralisées. Ca pourrait valoir le coup que j’explique comment j’ai produit ça dans un prochain post.

On peut remarquer sur la carte des choses assez banales, et d’autres plus peu surprenantes :

  • Si les départements alpins, y compris ceux de Corse sont assez proches, Jura et Vosges, bien qu’étant aussi des départements montagneux, sont à part, de mêmes que  les Pyr. Orientales.
  • Val de Marne, Hauts de Seine, Seine Saint Denis sont aussi proches sur cette carte. Essonne, Yvelines et Val d’Oise sont pourtant tout à fait ailleurs. Paris est éloigné du reste.
  • La Seine-et-Marne partage le même îlot que l’Isère et la Gironde, et avec la heatmap, on voit que l’on y pratique l’aviron et la voile.
  • Le Nord et le Pas-de-Calais sont fans de hockey sur glace.

Je vous laisse le soin d’apporter vos propres observations…

Le carroyage avec QGIS et le plugin QMarxan, c’est facile!

Article en français 

Gridding Paris with OpenStreetMap data
“Gridding for the dummies” 😉 with Quantum GIS and QMarxan: In this article, I explain the purpose of gridding, why it is such an efficient way to analyse data within a large community of actors. Actually, gridding can be considered as a transcription of the raster format to the vector one where one tile <=> one cell. Thanks to QMarxan, gridding with QGIS is really simple:  you don’t need any knowledge in PostGIS, GRASS and R to do it. That’s what we’ll see: in the end of the post, I detail how to constitute some gridded data through a case study aiming to process a building density analysis on the city of Paris. The article is in French, but the printscreens will be helpful for the understanding. 

All the material used in this article is free: Quantum GIS, OpenStreetMap for the buildings and INSEE (equivalent of US Census) for the population data.

Maillage / Carroyage

Guide du CERTU sur les traitements en carroyage

Le CERTU (Centre d’Etudes sur les Réseaux, les Transports, l’Urbanisme et les Constructions) a publié l’année dernière un guide en téléchargement gratuit appelé Traitements géomatiques par carreaux pour l’observation des territoires qui décrit, par le biais de cas d’étude, tout le potentiel que permet la constitution de données carroyées.

Le carroyage est un mode de représentation des données vecteur par carreau. Il s’effectue en croisant d’un côté une grille (soit rectangulaire, soit hexagonale en nid d’abeilles) avec des données métier. La précision avec laquelle s’effectuera l’analyse sera alors relative au pas choisi pour la grille. Ce pas diffère selon l’échelle d’analyse.

Densité d’habitants selon l’INSEE

On peut d’ores et déjà disposer de données carroyées sur Internet. C’est le cas des données INSEE sur le nombre d’habitants disponible en téléchargement avec un pas de 1 kilomètre sur la France entière et 200 mètres sur chaque région. Le Muséum National d’Histoire Naturelle propose, lui, une grille-type pour effectuer un calcul, par carreau de 5 ou 10km, du nombre d’espèces d’un certain type de plantes ou d’animaux. Inspire propose aussi des grilles-types.

En quoi ce mode de visualisation est-il si intéressant?

Potentiel du carroyage

– Le format vecteur est généralement choisi comme base de traitements car les utilisateurs du SIG sont plus familiers de l’exploitation de ce format. Pourtant, parfois, les calculs sur raster sont plus appropriés. Le carroyage permet de transcrire au format vectoriel des méthodes rasters. L’augmentation de la taille d’un carreau s’apparente à une augmentation de la résolution (rééchantillonnage). Il est tout à fait possible d’effectuer des dénombrements, de calculer des moyennes, des écarts-types au niveau de chaque carreau, ce qui s’apparente aux calculs focaux utilisés sur les rasters.

– La transformation de données fines, précises sous la forme de carreaux permet de vulgariser la donnée, de la simplifier, en sorte. Les mailles obtenues peuvent être confrontées à la fois à un niveau spatial: un carreau par rapport à ses voisins (par ex. étude de clusters), de même que dans le temps: état d’un carreau dans un état antérieur et dans un état actuel (par ex. étude de l’évolution de la population). C’est un mode de visualisation efficace qui “élimine le bruit” et découpe le territoire en unités égales et comparables.



– Une troisième raison qui en fait un support intéressant est la possibilité d’associer plusieurs dimensions aux carreaux, comme autant de colonnes et d’attributs. On pourra alors adjoindre à chaque carreau des valeurs issues de différents domaines: environnement, transport, habitat, et de différents types: quantitative, qualitative, ordinale. On pourra faire apparaître différentes thématiques sur les choroplèthes au gré des besoins. Cette multi-dimensionnalité est difficile à atteindre avec les rasters dans la mesure où les pixels ne peuvent être associés qu’à un nombre limité de valeurs, de plus, positives. Sous R, des objets appelés SpatialGridDataFrame et SpatialPixelsDataFrame permettent d’associer à chaque pixel de nombreux attributs, comme les formats vecteur, mais R est un outil complexe qui nécessite un certain temps de prise en main.

– Cette multi-dimensionnalité montre bien que le carroyage peut être un support d’analyse partagé entre des thématiciens de différents métiers. Des urbanistes, des botanistes peuvent se servir d’une même grille comme support pour leurs calculs puis confronter leurs analyses.

En définitive, l’accessibilité, la simplification, la multi-dimensionnalité font du carroyage un support intéressant pour des analyses et des représentations de données partagées.

Carroyage sous QGIS

Sous Quantum GIS, le carroyage est à la portée de tout géomaticien. On peut en réaliser sans utiliser ni PostgreSQL, GRASS, ni R même si je ne saurais que vous conseiller de vous investir dans l’apprentissage de ces derniers.

Nativement, on peut l’exécuter par le biais de la fonction “Création de Grille” puis “Points dans un Polygone” pour des cartes de densité.

Cependant, l’année dernière, un plugin est apparu sur le dépôt d’extension appelé QMarxan qui permet d’aller plus loin. Il s’agit d’un plugin QGIS d’interfaçage avec le logiciel Marxan. 


Voici la définition que l’on trouve sur le site des parcs du Canada quant au logiciel Marxan:
“Marxan a été mis au point par des chercheurs de l’Université de Queensland pour faciliter le rezonage du parc marin de la Grande Barrière et a par la suite été utilisé un peu partout dans le monde dans le cadre de projets de planification d’aires marines. Au moyen d’un algorithme d’optimisation, ce programme sélectionne des séries de secteurs qui permettent d’atteindre des objectifs de conservation tout en réduisant au minimum les incidences socio-économiques sur les utilisateurs des milieux marins et des collectivités côtières. Les données qui y sont entrées peuvent comporter un large éventail d’éléments/de valeurs liés aux aspects écologiques, socio-économiques, culturels et à l’expérience du visiteur, y compris les espèces, les habitats, les activités récréatives et les sites culturels.”

Dans cet article, nous n’exploiterons pas tout le potentiel du plugin. Nous verrons sa fonctionnalité principale, celle permettant de réaliser une grille et d’effectuer des calculs par carreau. Nous ne couvrirons pas l’exploitation des résultats sous Marxan.

Le bâti en Île-de-France

Le cas d’étude sera celui de l’analyse du bâti à Paris avec la constitution d’un carroyage décrivant la densité du bâti en terme de nombre et de surface de bâtiments. Puis, nous exploiterons le carroyage de l’INSEE afin de coupler les données concernant le bâti avec la population.

Téléchargement des données

Dans un premier temps, téléchargeons les limites administratives de la ville de Paris:
http://export.openstreetmap.fr/contours-administratifs/export-communes/

Puis les données du bâti à partir du site GeoFabrik:
http://download.geofabrik.de/osm/europe/france/ile-de-france.shp.zip

Effectuons une extraction des donnés sur la ville de Paris par le biais de l’extension “Requête Spatiale”. Le temps de traitement est très long!..

Par la suite, les données bâtiments buildings seront transformées en Lambert 2 Etendu afin de les coupler par la suite (fin du tutoriel) avec les données INSEE qui sont dans ce système de projection. La couche transformée se nomme buildings_LA2E.

Dans un premier temps, il faut installer l’extension QMarxan depuis les dépôts-tiers.

Réalisation d’une grille en nid d’abeilles

Une fois le plugin installé, lançons le module de génération de grille

J’aime bien les grilles en nid d’abeilles qui sont assez esthétiques. Réalisons-en une. Nous choisirons un pas de 200 mètres comme pour l’INSEE.

Création d’une grille hexagonale sur la base du fichier de bâti

Voici le résultat du carroyage. Notre grille est pour l’instant vide de données statistiques sur le bâti.

Bâti + grille en nid d’abeilles

Calcul de la surface, du nombre de bâtiments et de la surface moyenne par carreau

Effectuons le calcul de la surface de bâti par carreau.

Le résultat est intégré à la grille:

Afin d’avoir une bonne visualisation de l’ensemble, nous avons extrait les nids d’abeille comportant une surface supérieure à 0:



Surface de bâti en 10 classes selon la méthode de Jenks

Pour avoir le nombre de bâtiments par carreau, on doit tout d’abord générer une couche de points. Nous l’appellerons buildings_ct

Centroïdes des bâtiments superposés sur la surface bâtie


Le nombre de bâtiments par carreau peut être indicatif d’un type de bâti: collectif, résidentiel, etc…

Nous pouvons calculer la surface moyenne de bâti par carreau: surface/(nombre de bâtiments)

Utilisation de la calculatrice de champ

Voici différentes choroplèthes obtenues en superposant le résultat du carroyage avec les données OpenStreetMap grâce au plugin OpenLayers de QGIS.

Nombre de bâtiments, surface de bâti et surface moyenne sur couches OpenStreetMap Paris

Couplage données nombre d’habitants et bâti sur la base d’une grille pré-existante

On peut aussi lancer les calculs en se basant sur une grille autre, par exemple celle de l’INSEE, et ensuite coupler les données habitants et bâti.

Les zones d’activité pourraient ainsi apparaître comme des zones de bâti comprenant peu d’habitants.

Téléchargeons le carroyage de l’INSEE qui se trouve en Lambert 2 Etendu. Il contient les estimations du nombre d’habitants. Un préalable, comme au départ, est de ne prendre que les carreaux situés sur Paris.

Associons ces données du bâti avec ces données de population en utilisant le carroyage existant:

 Le résultat est alors intégré dans la grille de l’INSEE:

ajout de la colonne area_built au carroyage de l’INSEE

Ouvrons le fichier dbf issu du carroyage sous OpenOffice, enregitrons-le au format ods et réalisons un graphique bivarié avec en abcisse la surface de bâtiments et en ordonnée le nombre d’habitants.

fichier ods obtenu à partir du dbf

Nous pouvons voir quelle relation existe entre le nombre d’habitants et la surface de bâti, ainsi qu’identifier des carreaux qui échappent à la tendance principale.

Identification d’un point échappant à la “tendance”

Remarque: A vrai dire, il est difficile de dégager une quelconque tendance à partir de ce graphique car dans le cas du bâti, la surface moyenne ne suffit pas à prédire le nombre d’habitants. Il faut aussi intégrer la hauteur du bâtiment ou son nombre d’étages. Cela dit, le but de cet exemple est de montrer comment le carroyage permet de confronter deux (voire plus) variables de manière efficace par le biais d’une analyse bivariée (ou multi-variée).



 Nota Bene: dans la première version de QMarxan, l’utilisation de grilles rectangulaires génère des erreurs. Aussi la dernière version a-t-elle été utilisée pour l’intégration des informations du bâti dans le carroyage de l’INSEE.

Pour ceux qui souhaitent aller plus loin dans le carroyage, je vous conseille d’utiliser R avec la librairie sp. La fonction over( ) permet de croiser dans n’importe quel ordre des données vectorielles et rasters ainsi que d’effectuer une infinité de calculs à l’intérieur de chaque carreau, ceci grâce à une fonction personnelle fn: over(x, y, returnList = FALSE, fn = NULL, …). On peut alors envisager de calculer l’écart-type ou même l’indice écologique de diversité de Shannon. Absolument tout est possible!
Plus d’infos sur les méthodes d’agrégation spatiale avec R ici: http://cran.r-project.org/web/packages/sp/vignettes/over.pdf