Archives de catégorie : geohacking

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 !

Le bâti de Paris façon réseau ou comment faire des gribouillis avec R comme avec Processing

Paris sous forme de réseau. Non, on ne parle pas de rues, mais de bâti. Dans cet article, nous proposerons le passage d’une représentation à plat des bâtiments en une figuration sous forme de lignes, aux multiples évocations. On verra qu’avec R, on peut faire certaines choses comme Processing, l’outil de référence en design génératif.

La carte


Cliquer sur l’image pour la voir en grand sur flickr
Sur cette carte est représenté le bâti de Paris sous la forme d’une toile. Chaque point de couleur représente un bâtiment et la couleur de chacun indique la période de construction du bâtiment. 



La rampe de couleurs est celle utilisée par Etienne Côme sur sa carte interactive BATIPARIS.

Sur ma carte, un arc relie deux bâtiments et il est d’autant plus clair qu’il relie deux bâtiments de périodes de construction différentes.

Ce mode de visualisation peut être intéressant pour explorer les différences de valeur dans une variable dans un voisinage, comme dans le cas de cette carte de la densité de population en France :

Différence de densité de population au niveau départemental (RGP INSEE 2013)

Sur ma carte, en suivant le réseau, on trouve toujours un chemin pour aller d’un bâtiment à un autre, même si l’on part de la place de l’Étoile pour se diriger vers Bercy; ceci a été obtenu grâce à une technique appelée arbre couvrant de poids minimal. Cette représentation a pour objet d’illustrer la densité d’une ville où tout serait interconnecté.

Paris dresse sa toile


La représentation du bâti est le plus souvent faite avec l’emprise des bâtiments, ce qui peut donner de beaux résultats comme celui de BATIPARIS.
Afin d’illustrer l’évolution champignonnesque d’une ville et se départir de cette représentation classique des bâtiments, on pourrait être tentés de représenter cela sous forme de réseau.

toile d’araignée, mycélium et réseau neuronal

Sur ma carte, les ramifications qui relient chaque bâtiment peuvent évoquer de multiples choses : les synapses de neurones rappelant les smart cities, les filaments d’un mycélium, voire même, si on regarde tout ça en noir et blanc, une sorte d’écriture qui évoquerait le tissage, au fil du temps, d’un tissu urbain.

Les données


Les données utilisées sont celles de l’Atelier Parisien d’URbanisme (APUR). Les données de bâti de l’APUR sont très riches. Outre la période de construction, on y trouve l’année de réhabilitation, les caractéristiques de la toiture, la surface d’ensoleillement,…
Une variable est particulièrement intéressante, que nous exploiterons peut-être dans un nouveau post : la hauteur des bâtiments.

La colonne que nous avons utilisée est la même que celle utilisée par Etienne Côme dans son application : la colonne C_PERCONST.

La transformation


L’illustration ci-dessus, créée par Benedikt Gross, montre le processus en cours lors d’un design de données. Je lui ai juste ajoutée les outils utilisés.
Pour obtenir notre carte, nous avons créé un algorithme exploitant la théorie des graphes ainsi que des techniques de design génératif. Pour ce dernier domaine, Processing constitue l’outil de référence. Il est adopté par nombre de data artists, d’artistes multimédia. Nous verrons grâce à cet article que R permet aussi de faire du design génératif. Néanmoins, pour peindre nos données, nous nous sommes tournés vers un second outil : QGIS, plutôt que R, en raison de capacités graphiques assez particulières.

Dans un premier temps, les centroïdes des bâtiments ont été générés

L’île de la Cité

Ensuite, nous avons relié tous ces points grâce à la fonction de Delaunay

De l’eau naît

J’ai trouvé que le nombre de segments était bien trop grand pour le rendu final. Afin de l’épurer, j’ai utilisé une technique de la théorie des graphes appelée Arbre couvrant de poids minimal, ou minimum spanning tree en anglais. Cet arbre est tel qu’on peut trouver un chemin entre chaque sommet avec un nombre de branches minimal

MST (Minimum Spanning Tree)

Les liaisons entre bâtiments étaient selon moi trop rectilignes. Afin d’obtenir quelque chose de plus « smooth », j’ai utilisé les courbes de Bézier. C’est une forme visuelle très usitée dans les infographies de réseaux.

Avec Bézier, tout devient plus doux

Le style


  • J’ai adopté un fonds noir pour mettre en contraste les données. 
  • J’ai posé le réseau de segments avec un petit effet flou, avec le mode de fusion « addition » et une valeur de luminosité différente selon la différence de période reliant deux bâtiments. Grâce au mode addition ajouté entre les objets, les endroits où les segments se superposent semblent s’éclairer.
  • Par-dessus, j’ai posé les centroïdes de bâtiments coloriés selon la période de construction, avec un mode de fusion « revêtement ». Pour rappel, la rampe de couleurs est celle utilisée dans BATIPARIS. J’avais utilisé le mode de fusion « revêtement » pour la carte de l’orientation des rues de Paris. Avec ce mode, c’est comme si on teintait une couche avec les couleurs d’une autre.
  • Enfin, en dessous, j’ai disposé la Seine afin de donner un contexte. Celle-ci se trouve dans une couleur hors du spectre utilisé pour le bâti, et avec un peu de flou pour donner un côté organique et en atténuer la présence. 

J’aurais pu rajouter des données contextuelles supplémentaires mais j’ai préféré garder un côté minimaliste pour cette carte.

Voici un tableau récapitulant l’agencement des différentes couches dans QGIS avec leur style et leur ordre de superposition :

Variations


J’ai réalisé des petites variations autour de cette carte.

Tout d’abord, en générant des lots de données par période, on peut voir dans quelles zones Paris a dressé sa Toile au cours du temps. C’est comme si on voyait la signature de chaque époque.

Jusqu’en 1800, on construit surtout au centre
Georges Eugène Hausmann est dans la place. Ca construit à tout va, y compris des places (comme celle de l’Étoile)
Le rythme de construction semble plus modéré dans les 80’s, à part peut-être dans le NE de la capitale


Le code


Décortiquage

La librairie spdep a permis de réaliser la triangulation de Delaunay :

coords = coordinates(ile_cite)
nb = tri2nb(coords)

ainsi que de calculer l’arbre couvrant de poids minimal :

nb = tri2nb(coords)
nbw = nb2listw(nb, zero.policy = FALSE)
mst.bh <- mstree(nbw,5)

J’ai créé une fonction appelée MakeLineFromCoords qui permet de tracer une ligne à partir d’une série de coordonnées. D’ailleurs, je me suis dit qu’elle pouvait être utile pour superposer tout type de graphique en ligne sur des cartes : par exemple, évolution du chômage par département au cours du temps :

makeLineFromCoords <- function(coords, i) {

  Sl1 = Line(coords)
S1 = Lines(list(Sl1), ID=as.character(i))
Sl = SpatialLines(list(S1))
return(Sl)
}

R inclut une librairie appelée bezier qui, comme son nom l’indique, permet de dessiner…des courbes de Bézier.

b = bezier(t=t <- seq(0, 1, length=100), p=rbind(coords[from, ], midpoint, coords[to, ]))

midpoint désigne le point d’ancrage situé entre les deux points à connecter. La position de ce dernier détermine la courbure finale de l’arc. J’ai injecté un peu de hasard dans la position de ce dernier.
Dans un premier temps, j’ai calculé la distance séparant les deux points :

d = sqrt((coords[from, 1] – coords[to, 1])^2 + (coords[from, 2] – coords[to, 2])^2)

Ensuite, j’ai bougé sa position selon certains seuils. Tout d’abord, j’ai calculé un facteur de transformation qui déterminera dans quelle direction se fait le déplacement du point :

ifelse(runif(1,-1,1) > 0, 1, -1)


Ensuite, j’ai appliqué un ratio tel que le point bougera dans un rayon allant du milieu situé entre les deux points à une distance égale au tiers de la distance séparant les deux points.

Voici le code correspondant au déplacement en X :

(coords[from, 1] + coords[to, 1])/2 + ifelse(runif(1,-1,1) > 0, 1, -1

Et celui en Y est similaire :

(coords[from, 2] + coords[to, 2])/2 + ifelse(runif(1,-1,1) > 0, 1, -1) * runif(1,0,d/3)

Au final, le point intermédiaire d’ancrage de la courbe de Bézier se situera ici :

midpoint = c((coords[from, 1] + coords[to, 1])/2 + ifelse(runif(1,-1,1) > 0, 1, -1) * runif(1,0,d/3),(coords[from, 2] + coords[to, 2])/2 + ifelse(runif(1,-1,1) > 0, 1, -1) * runif(1,0,d/3))

Le code dans son intégralité



Un petit peu de « geohacking » et de scraping, da(o)rling?

Cet article, c’est un peu « Les cartogrammes de Dorling pour les Nuls ». Après avoir introduit les principes qui se cachent derrière ce concept cartographique très original, nous créerons une carte du nombre de clubs de football en France récupérés par une méthode de scraping selon ce mode de représentation. Dans ce post, il sera question de spatialisation et aussi un peu de « hacking » sous plusieurs formes.



Les cartogrammes de Dorling ou les polygones qui ronflent (rrrond-rrrond)

Le Docteur Daniel Dorling avait élaboré une méthode de cartogrammes très originale visant à présenter des valeurs statistiques de façon très épurée. Son idée était de s’affranchir de la forme des objets lorsque cette dernière présentait peu d’intérêt, en la travestissant sous la forme de la primitive géométrique la plus simple qui existe: le cercle. Sa méthode préserve la topologie des objets et prévient les recouvrements. Les polygones sont donc très bien déguisés.

Sur son blog, Jim Valladingham présente un cube cartogrammique qui figure les axes de représentation possibles. Les cartogrammes de Dorling se situeraient dans le coin avant-bas-droit, en cela qu’ils préservent la topologie des objets tout en les libérant de leur complexité géométrique.

Les cartogrammes de Dorling pour les Nuls

Jim Valladingham avait porté vers python ainsi que diffusé un script en C transmis par le Dr Dorling. Toutefois, une contrainte de ce script était qu’il ne consommait pas et ne produisait pas de fichiers géographiques. De plus, en entrée, le format était très spécifique et propriétaire.

J’ai donc tenté un portage du code vers R permettant l’intégration et la production de fichiers géographiques de tous les types supportés par OGR.

A partir du code, j’ai essayé de comprendre de quelle façon ces cartogrammes étaient générés. Ce sont ces principes que je vais vous présenter à présent. En voici un schéma simplifié.

  • (1) Dans un premier temps, il nous faut construire le réseau topologique de nos objets géographiques. Aussi, on détermine les centroïdes de ces polygones. Chacun est distant du voisin selon une distance R.
  • (2) Une fois cela réalisé, on regarde quelles sont les valeurs numériques affectées à chacun des points. Ces dernières constituent les surfaces des cercles desquelles on dérive les rayons que nous appellerons R’.
  • (3 et 4) En toute logique, pour que les cercles ne se recouvrent pas, il faudrait appliquer un ratio à nos rayons de telle sorte à ce qu’on puisse ramener la somme des rayons à la somme des distances entre les points. C’est l’étape de « scaling« .
  • (5) Cependant, des recouvrements peuvent quand même apparaître selon la configuration du réseau topologique. Aussi, on va appliquer des forces d’attraction ainsi que de répulsion de sorte à éloigner les cercles voisins qui se recouvrent et rapprocher ceux qui présentent des lacunes. C’est l’étape de « shifting« .
Extrait du document technique de Daniel Dorling mentionnant les forces d’attraction et de répulsion

Histoire de mieux comprendre le shifting, prenons une métaphore et imaginons des boules magnétiques. Une boule distante se retrouve attirée par les autres tandis qu’une autre qu’on laisse tomber sur le tas se fraiera une place entre les voisines. Le processus est itératif car le fait de déplacer une boule occasionnera le bousculement d’autres, etc…On s’arrête seulement lorsqu’on a trouvé la configuration optimale pour laquelle le recouvrement et le rapprochement sont minimaux.

(Un élève de 3e aurait pu faire ce schéma)
Les terrains de foot moissonnés

La figure circulaire me faisait penser au ballon rond. Le site le-footballeur.com présente un annuaire des clubs de football en France depuis lequel j’ai appliqué des méthodes de scraping visant à récupérer le nombre de clubs par département.

Une page liste tous les départements pour lesquels des résultats existent. Le plugin Firefox Firebug m’indique que les urls sont dans un bloc div avec attribut align égal à left.

Une requête xpath appliquée à la page me permet d’extraire les urls.

A présent, extrayons les informations de chacune des pages. Si l’on ouvre celle de Paris, on voit que les informations sont présentes dans un bloc div qui suit un formulaire. 

La requête xpath suivante me donne le contenu du bloc div sur lequel j’applique une expression régulière pour récupérer le nombre de clubs.

Une fois que le nombre de clubs a été associé à mes objets géographiques, nous pouvons lancer la fonction de Dorling que j’ai créée.


  • nrescales correspond au nombre de modulations du ratio à appliquer.
  • niter correspond au nombre d’itérations que l’on va appliquer jusqu’à trouver le positionnement optimal.
  • tol correspond au taux de recouvrement qui nous semble acceptable.
La fonction sera d’autant plus rapide que le nombre d’itérations et de modulations du ration sera petit, et que la tolérance sera élevée.

En sortie, cette fonction me donne la position xy des points ainsi que le rayon affecté à chacun.

Comme mentionné précédemment, l’étape de shifting au cours de laquelle des forces d’attraction et de répulsion sont appliquées entraîne le déplacement des points (par conséquent, adieu le positionnement absolu ! (ce qui peut être problématique)). Cette image présente les décalages induits:

Des ballons de foot stylés

Le site The Noun Project présente de nombreux symboles SVG dans plein de thématiques. Une recherche sur « soccer » m’a donné toutes sortes d’images de ballons. Comme dans un magasin de sport, je n’ai eu qu’à faire mon choix.

Pas mal, ce ballon de Laurent Patain

Via TileMill, j’ai stylisé la donnée en « propulsant » la largeur de mon symbole via l’attribut radius de ma couche géographique.

Voici au final une carte Dorling des clubs de football en France:

Remarque:
Une meilleure source de données aurait sans doute été le site de la FFF, notamment la page http://www.fff.fr/la-vie-des-clubs/resultats. Cependant, on ne peut y rechercher les clubs que par ville et non par département. A raison d’environ 36000 requêtes de récupération de page, le temps nécessaire à l’extraction était extrêmement long.

Do It Yourself

Dorling

Scraping