Représentations de données cartographiques ========================================== Christophe Lalanne Avril 2008 [Têtes raides -- Gratte Poil (2000), L'identité] ______________________________________________________________________________ Les clans des rues, les clandestins Les cris des chiens hurlent à la ronde J'suis pas inscrit sur la mappemonde. Y'a pas de pays pour les vauriens, les poètes et les paladins, Y'a pas de pays, si tu le veut, prend le mien. [...] ______________________________________________________________________________ ****************************************************************************** Cet article se propose de présenter les principales notions nécessaires pour traiter et visualiser de l'information spatialisée, en particulier des données géographiques. Les applications couvrent de nombreux domaine, en particulier le domaine biomédical et les systèmes d'information de santé publique (e.g. <>). ****************************************************************************** Logiciels --------- La représentation de données géographiques (SIG) nécessite de recourir à des logiciels spécialisés. Ils sont utilisés notamment par l'INSEE lors du recensement. Ils doivent permettre de localiser, avec un degré de précision qui dépend naturellement de l'application et de l'objectif visé, les unités statistiques d'intérêt (par exemple, les ménages). <> présente un exemple d'application au recensement de la population au Portugal. Évidemment, des données très précises sont utilisées par l'INSEE. L'une des bases de travail se nomme IRIS : Ilots regroupés pour l'Information Statistique. La France en comporte un peu plus de 50000 (DOM inclus). Pour toutes les communes urbaines d'au moins 10000 habitants et la plupart des communes comprenant entre 5000 et 10000 habitants, on travaille avec ce que l'on appelle les http://www.insee.fr/fr/nom_def_met/definitions/html/ilots-regr-pour-inf-stat-2000.htm[IRIS-2000]. On distingue généralement deux types de données : - les données vectorielles : ce sont des bases cartographiques qui permettent de visualiser les limites administratives (départements, communes, codes postaux) et les limites des IRIS et îlots de l'INSEE ; - les données raster : ce sont des bases qui permettent de restituer l'information vectorielle de manière beaucoup plus précise. Les _données vectorielles_ consistent simplement à décrire chaque coordonnée spatiale par une paire de valeurs (x,y), éventuellement dans un référentiel cartésien (pour simplifier). Ce type de données peut être de trois formes : - des points : chaque paire (x,y) représente une position géographique discrète, - des lignes : une séquence de paires (x~i~,y~i~), la direction étant déterminée par la relation d'ordre entre les points - des polygones : un assemblage de lignes tel qu'il existe une relation de cloture entre les lignes ; la notion de surface est alors définie et unique. http://www.cartosphere.com/index.htm http://www.mdweb-project.org/ http://grass.itc.it/gdp/grass5tutor/HTML_en/book1.html http://dcs.ics.forth.gr/Activities/Publications/INET98_Palantir.html stanford graph (Knuth) Mondrian ~~~~~~~~ Le logiciel http://rosuda.org/Mondrian/[Mondrian] est orienté sur le traitement et la représentation de larges volumes de données. Il est programmé en Java et dispose d'un module d'import de données géographiques (par exemple les résultats des votes dans chaque état pour les élections américaines de 2004). Mondrian peut communiquer avec R, grâce à http://www.rforge.net/Rserve[Rserve]. Un exemple de l'interface pour les cartes spatiales figure ci-dessous. image::Mondrian1.png[] GRASS ~~~~~ http://grass.itc.it/[GRASS GIS] est un logiciel multi-plateforme (ne pas confondre avec http://plasma-gate.weizmann.ac.il/Grace/[Grace], qui est un logiciel de visualisation graphique) destiné à la gestion et à l'analyse de données géographiques, ainsi qu'au traitement et à la visaulisation d'images et de cartes spatiales. Le logiciel avec un tutoriel assez complet sur le traitement des données spatiales : _An introduction to the practical use of the Free Geographical Information System GRASS 6.0_ (voir le wiki contenant l'http://grass.gdf-hannover.de/wiki/GRASS_Help[aide en ligne]). [TIP] Pour faire fonctionner GRASS sous Mac OS X, il est nécessaire d'avoir le serveur http://developer.apple.com/opensource/tools/X11.html[X11] installé. Ci-après figurent quelques captures d'écran (sous Mac OS X), tirées du tutoriel de prise en main du système. .Fenêtre d'accueil [caption=""] image::grass1.png[] .Affichage d'un terrain en mode _raster_ [caption=""] image::grass2.png[width=542,link="grass2.png"] .Vue en perspective de la surface [caption=""] image::grass3.png[width=542,link="grass3.png"] Quantum GIS ~~~~~~~~~~~ http://qgis.org/[Quantum GIS] est un autre logiciel open-source gratuit, mutli-plateformes. Quels sont les avantages de QGis ? .Affichage du monde en mode _raster_ [caption=""] image::qgis1.png[width=542,link="qgis1.png"] Le logiciel R ~~~~~~~~~~~~~ Sous R, il existe 4 packages permettant d'assurer l'import de données géographiques, leur transformation et leur visualisation : - +maps+: Draw Geographical Maps Display of maps. Projection code and larger maps are in separate packages (mapproj and mapdata). - +mapproj+: Map Projections Converts latitude/longitude into projected coordinates. - +maptools+: Tools for reading and handling spatial objects Set of tools for manipulating and reading geographic data, in particular ESRI shapefiles; C code used from shapelib. It includes binary access to GSHHS 1.5 shoreline files. The package also provides interface wrappers for exchanging spatial objects with packages such as PBSmapping, spatstat, maps, RArcInfo, Stata tmap, WinBUGS, Mondrian, and others. - +mapdata+: Extra Map Databases Supplement to maps package, providing the larger and/or higher-resolution databases. D'autres packages fournissent des fonctionnalités additionnelles, par exemple : - +gmaps+: Wrapper and auxilliary functions for maps package to work with grid graphics system The gmaps package extends the functionality of the maps package for the grid graphics system. This enables more advanced plots and more functionality. It also makes use of the grid structure to fix problems encountered with the traditional graphics system, such as resizing of graphs. - +GEOmap+: Topographic and Geologic Mapping Set of routines for making Map Projections (forward and inverse), Topographic Maps, Perspective plots, Geological Maps, geological map symbols, geological databases, interactive plotting and selection of focus regions. - +geoR+: Analysis of geostatistical data Geostatistical analysis including traditional, likelihood-based and Bayesian methods. - +GeoXp+: Interactive exploratory spatial data analysis GeoXp is a tool for researchers in spatial statistics, spatial econometrics, geography, ecology etc allowing to link dynamically statistical plots with elementary maps. This coupling consists in the fact that the selection of a zone on the map results in the automatic highlighting of the corresponding points on the statistical graph or reversely the selection of a portion of the graph results in the automatic highlighting of the corresponding points on the map. GeoXp includes tools from different areas of spatial statistics including geostatistics as well as spatial econometrics and point processes. Besides elementary plots like boxplots, histograms or simple scatterplos, GeoXp also couples with maps Moran scatterplots, variogram cloud, Lorentz Curves,...In order to make the most of the multidimensionality of the data, GeoXp includes some dimension reduction techniques such as PCA. - +GRASS+: Interface between GRASS 5.0 geographical information system and R Interface between GRASS 5.0 geographical information system and R, based on starting R from within the GRASS environment using values of environment variables set in the GISRC file. Interface examples should be run outside GRASS, others may be run within. Wrapper and helper functions are provided for a range of R functions to match the interface metadata structures. [[X1]] Principe de construction d'une base de données géographique ----------------------------------------------------------- L'article de <> expose assez clairement les contraintes liées à la construction d'une base de données géographiques et des possibilités de représentation de l'information spatiale. Leurs fichiers ont été construits à partir des données de la http://www.evl.uic.edu/pape/data/WDB/[World Data Bank II] (voir aussi http://www.ce.utexas.edu/prof/maidment/visual/dallas/jay/sld024.htm[The CIA World Data Bank II]). Bien que les étapes exposées dans leur article soit orientées pour un traitement sous S ou R, elles restent suffisamment générales pour être appliquées à d'autres systèmes. En voici les éléments essentiels. 1. un fichier contenant un ensemble de ``polylignes'' permettant de représenter les régions spatiales (pays, départements, lacs, etc.) ; une polyligne est juste une séquence de points représentés par leurs coordonnées, et cela s'apprente à un arc orienté en théorie des graphes. 2. un fichier contenant une liste de polygones indiquant comment lier les polylignes ensemble, en fait à partir des numéros associés à chaque polyligne ; il s'agit du fichier assurant la topologie de la carte. 3. un fichier contenant le nom de régions, pour chaque polygone. Évidemment, ce type de représentation peut être enrichi, mais il est suffisamment intéressant en soi pour se pencher un peu plus en détails sur ses avantages. Systèmes de projection ---------------------- Le système de coordonnées auquel on est le plus habitué est sans doute le repère cartésien, et plus généralement nous utilisons des repères orthonormés pour représenter des positions dans le plan. À l'exception des mordus de la géométrie riemannienne, les cercles ont donc des allures circulaires, et les droites des allures rectilignes. Or, et on l'oublie souvent, la Terre n'est pas seulement bleue comme une orange, elle est surtout plus ou moins sphérique : le plus court chemin n'est donc plus nécessairement la ligne droite... On trouvera sur le site de D. Madore un résumé des différents http://www.madore.org/~david/math/carto.pdf[systèmes de projection usuels]. P. H. Diana propose également une présentation assez axhaustive des différents systèmes de projection (cylindrique, conique, azimuthale, etc.) : http://www.colorado.edu/geography/gcraft/notes/mapproj/mapproj_f.html[Map Projection Overview]. Le package +mapproj+ permet de réaliser les différentes transformations indiquées dans les documents précédents. Voici un résumé des différentes options et des propriétés spatiales qu'elles préservent : [grid="all"] .--------.--------------.---------.--------------- Propriété cylindrique conique planar -------------------------------------------------- +rectangular+ +conic+ +orthographic+ aire +cylequalarea+ +albers+ +azequalarea+ aire +sinusoidal+ +bonne+ angle +mercator+ +lambert+ +stereographic+ distance +azequidistant+ -------------------------------------------------- Exemple : la carte du monde --------------------------- ------------------------------------------------------------------------------ > map('world') ------------------------------------------------------------------------------ image::world.png[] On trouvera dans le package +mapdata+ une carte possédant une résolution supérieure (+world2Hires+). Carte de France et carte de l'Europe ------------------------------------ [IMPORTANT] .Nom des régions ============================================================================== Lorsque l'on souhaite associer à chaque région (par exemple, les départements français) une couleur spécifique, on passe en argument à la fonction +map+ deux vecteurs : +names=...+ et +col=...+. Les vecteurs étant de même taille, on s'attend logiquement à avoir une correspondance stricte entre chaque région et chaque couleur. Ce n'est pas toujours le cas ! Voici un exemple dans lequel on cherche à représenter de manière graphique une distribution d'effectifs observée sur un ensemble de départements français. Le fichier +dept.rda+ comprend la liste des 95 départements français (nom et code). Il est disponible link:dept.rda[ici]. ------------------------------------------------------------------------------ > my.cols <- c(rgb(231/255,240/255,251/255),rgb(180/255,210/255,244/255), rgb(129/255,180/255,237/255),rgb(0/255,78/255,162/255)) > load("dept.rda") > set.seed(1234) > xx <- data.frame(names=dept[sample(1:95,15),1],n=round(seq(5,300,length=15))) > xx$grp <- cut(xx$n,breaks=c(0,50,100,250,1000),labels=F) > map('france') > map('france',regions=xx$names,col=my.cols[xx$grp],fill=T,add=T) > leg.txt <- c("0-50","50-100","100-250","250+") > legend("bottomleft",leg.txt,col=my.cols,pch=15,bty="n", title="Nb. candidats",cex=.7) > title(main="Résultats erronés") ------------------------------------------------------------------------------ Les données générées ont été sauvegardées à l'aide de la commande +write.table(xx,file="dept.csv",sep=",",quote=F,row.names=F,col.names=F)+ et sont indiquées dans le tableau ci-dessous : [frame="all",grid="all"] `''~75 Nom,Effectif,Code ~~~~~~~~~~~~~~~~~ include::dept.csv[] ~~~~~~~~~~~~~~~~~ Si maintenant on regarde la liste des régions effectivement considérées par R, on constate que ce n'est pas tout à fait un vecteur de taille 15. ------------------------------------------------------------------------------ > map('france') > m <- map('france',regions=xx$names,add=T,namesonly=T) > length(m) [1] 18 > m [1] "Ardennes" "Aisne" [3] "Eure" "Eure-et-Loir" [5] "Essonne" "Finistere:I. de Batz" [7] "Finistere" "Finistere" [9] "Cote-Dor" "Loire-Atlantique" [11] "Haute-Savoie" "Puy-de-Dome" [13] "Hautes-Alpes" "Lozere" [15] "Alpes-de-Haute-Provence" "Tarn-et-Garonne" [17] "Pyrenees-Atlantiques" "Aude" ------------------------------------------------------------------------------ Et effectivement, comme on peut le vérifier dans la figure ci-dessous, le code couleur associé au Finistère n'est pas correct : il indique 100-250 candidats, alors qu'en réalité il n'y a que 47 candidats. image::map_dept_1.png[] ============================================================================== Autres applications ------------------- Il est possible de combiner les fonctions classiques disponibles dans les packages de base de R et dans le package +lattice+. <> fournit des illustrations intéressantes de ce qui peut être réalisé avec des données géographiques. ------------------------------------------------------------------------------ > grid.rect(gp=gpar(col="grey")) > fg <- frameGrob() > fg <- packGrob(fg, ozimage) > fg <- placeGrob(fg, ozkey) > fg <- packGrob(fg, ribbonlegend, "right") > grid.draw(fg) ------------------------------------------------------------------------------ Les fonctions sont disponibles sur le http://www.stat.auckland.ac.nz/~paul/RGraphics/interactgrid-oceanaim.R[site compagnion] du livre. image::interactgrid-oceanaim.png[] image::australia_coast.png[] Pour en savoir plus sur la gestion des graphiques avec +lattice+, et en particulier obtenir des compléments d'informations sur le livre de Murrel, on pourra consulter l'http://zoonek.free.fr/blosxom/R/2006-08-10_R_Graphics.html[article] rédigé par Vincent Zoonekynd. Applications web avec Google Maps --------------------------------- Utilisation de VRML ------------------- VRML est un langage de modélisation en 3D, essentiellement utilisé dans le cadre de la création d'environnement virtuels. Il s'agit essentiellement d'un langage de description On trouvera sur le site http://www.web3d.org/[www.web3d.org] les http://www.web3d.org/x3d/specifications/vrml/ISO-IEC-14772-VRML97/[specifications] du langage ainsi que des exemples. Pour visualiser les illustrations suivantes, il est nécessaire de disposer d'un visualisateur VRML. Différents http://www.web3d.org/x3d/vrml/tools/viewers_and_browsers/[plugins] sont proposés pour les navigateurs. Pour Mac OS X, le plugin http://freewrl.sourceforge.net/[FreeWRL] fonctionne correctement (il est disponible pour Linux également). On peut tester son installation sur http://cic.nist.gov/vrml/vbdetect.html[cette page]. // Il existe également une application gratuite permettant de construire des // scènes 3D sans utiliser directement le langage de script : // http://www.viewlife.com/[Webseed 3D Studio]. On peut utiliser directement les données de la WDBII, présentées dans la <>, avec VRML. C'est ce que propose D. Payne avec son http://www.evl.uic.edu/pape/vrml/etopo/[Générateur de cartes topographiques]. Analyse des données spatiales ----------------------------- Si jusqu'ici nous nous sommes limités à la représentation de données spatialisées sur une carte géographique, on peut vouloir aller plus loin en se demandant comment analyser les données qualitatives ou quantitives recueillies dans des différentes régions. L'approche peut être exploratoire ou confirmatoire. Références ---------- + [[[Becker1997]]] Becker, R.A. and Wilks, A.R. (1997). Constructing a geographical database. [http://citeseer.ist.psu.edu/becker97constructing.html[www]] + [[[Becker1993]]] Becker, R.A. and Wilks, A.R. (1993). Maps in S. [http://www.research.att.com/areas/stat/doc/93.2.ps[www]] + [[[Lafaye2007]]] Lafaye, J., Béguec, J., Gross-Amblard, D., and Ruas, A. (2007). Geographical database watermarking by polygon elongation. _Technical Report CEDRIC No 1138_. [http://cedric.cnam.fr/PUBLIS/RC1138.pdf[www]] + [[[Yang2003]]] Yang, X. (2003). Method for constructing polygonized geographic features. _European Patent EP1293935_. [http://www.freepatentsonline.com/EP1293935.html[www]] + [[[Mennis2000]]] Mennis, J.L., Peuquet, D.J., and Qian, L. (2000). A conceptual framework for incorporating cognitive principles into geographical database representation. _International Journal of Geographical Information Science_, _14(6)_, 501-520. [http://astro.temple.edu/~jmennis/pubs/mennis_ijgis00.pdf[www]] + [[[Mennis2000]]] Mennis, J.L. (2000). Human cognition as a foundation for GIS database representation. In: _Graduate Student Research Papers_, UCGIS Summer Assembly, June 21-24, 2000, Welches, OR. Leesburg, VA: University Consortium for Geographic Information Science, pp. 4.1-4.17. [http://astro.temple.edu/~jmennis/pubs/ucgisgradpres/mennis.htm[www]] + [[[Hanchette2005]]] Hanchette, C.L., Gibbs, D.A., Gilliam, A., Fogarty, K.J., and Bruhn, M. (2005). A national, geographic database of CDC-funded HIV prevention services: development challenges and potential applications. _International Journal of Health Geographics_, _4(1)_, 28 p. [http://www.ij-healthgeographics.com/content/4/1/28[www]] + [[[Casimiro2000]]] Casimiro, F. (2000). Towards a geographical information system with the 2001 Census Map Support. _Insee-Eurostat seminar on censuses after 2001_ (pp. 79-89). [http://www.insee.fr/en/nom_def_met/colloques/insee_eurostat/pdf/casimiro.pdf[www]] + [[[Hadzilacos2007]]] Hadzilacos, T. and Tryfona, N. (2007). Evaluation of Database Modeling Methods for Geographic Information Systems. _Australasian Journal of Information Systems_, _6(1)_. [http://journals.sfu.ca/acs/index.php/ajis/article/view/314/281[www]] + [[[Gahegan2001]]] Gahegan, M., Wachowicz, M., Harrower, M., and Rhyne, T.-M. (2001). The integration of geographic visualization with knowledge discovery in databases and geocomputation. _Cartography and Geographic Information Science_, _28(1)_. [http://www.geovista.psu.edu/sites/icavis/pdf/knowledge0900.pdf[www]] + [[[Tveite1997]]] Tveite, H. (1997). Data modelling and database requirements for geographical data. PhD Thesis. [http://www.idi.ntnu.no/grupper/su/publ/phd/tveite-thesis.pdf[www]] + [[[Finnseth2001]]] Finnseth, A. and Jökulsson, G. (2001). A software system for large dynamic maps based on networked geographical databases. _ScanGIS'2001_. [http://www.umb.no/conf/scangis2001/papers/26.pdf[www]] + [[[Strauch1998]]] Strauch, J.C.M., de Souza, J.M., and Mattoso, M. (1998). A methodology for GIS Databases integration. _IEEE Knowledge and Data Engineering Exchange Workshop (KDEX'98)_, IEEE CS Press, Taipei, Taiwan, November 1998, pp.151-159. [http://www.cos.ufrj.br/~marta/papers/Kdex98.pdf[www]] + [[[Murrel2005]]] Murrel, P. (2005). _R Graphics_. Chapman & Hall/CRC. [http://www.stat.auckland.ac.nz/~paul/RGraphics/rgraphics.html[www]] [] ______________________________________________________________________________ [...] Que le Paris est beau quand on chante les oiseaux, Que le Paris est laid quand il se croît français. Avec ces sans-papiers qui vont bientôt r'partir, On a tout pris chez eux, y'a plus rien. Leur rétention en cale de fond J'en ai même oublié mon ombre, Je m'promène moins dans vos décombres, On m'a donné un bout de rien j'en fais cent mille chemins, J'en fait cent, J'en ai fait un. Un chemin de l'identité ni des tentés ni des titans, L'itentidé, à la ronde. Et dans ce flot d'univériens j'aurais plus de nom j'aurais plus rien, Dis moi c'est quand, dis moi c'est quand, que tu reviens. Que le Paris est beau quand on chante les oiseaux, Que le Paris est laid quand il se croît français. Avec tous ces champs de tir et tous ces fous du tir, Y visent pas que les lapins, c'est plus du gros sel c'est des : Tomahawk, des missiles sol-air, ou des Scuds Et moi avec mon pistolet à bouchons, je pars au front. Paris sera beau, on chantera les oiseaux, Paris sera beau, si les oiseaux, Paris sera beau, car les oiseaux, Allez, Paris sera beau. ______________________________________________________________________________