carte du monde

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

sebastien metivier
Messages : 5
Enregistré le : 02 Déc 2020, 10:16

carte du monde

Messagepar sebastien metivier » 03 Déc 2020, 16:20

Bonjour à tous,

je suis un simple professeur de mathématiques qui a besoin de construire une carte du monde (pour les cours sur la géométrie dans l'espace et le repérage sur la sphère). Ne pouvant utiliser celles présentes sur internet pour cause de droits d'auteur, j'ai cherché sur le net comment faire pour en construire une. J'ai fini par entendre parler de R.
J'ai donc téléchargé le logiciel et essayé en suivant l'aide google de R de construire des maps.

j'ai trouvé ce site : https://rgeomatic.hypotheses.org/1288 qui explique comment obtenir une jolie map monde en couleur (parfait pour moi)

1er problème : lorsque je rentre "library(sf)", il me dit qu'aucun package nommé 'sf' n'a été trouvé. idem pour les autres library. La seule que j'ai réussie à charger est library(raster).

autre site trouvé qui me satisferait : https://sites.google.com/site/rgraphiqu ... authuser=0

2ème problème :
install.packages("mapproj")
library(mapproj)
map(database= "world", col="white", fill=TRUE, projection="mercator")

il m'affiche une carte du monde mais j'ai des rayures sur l'hémisphère nord (projection failed for some data)...

Je ne connais absolument rien au langage R. C'est pourquoi je vous demande s'il serait possible d'avoir un code source sur lequel m'appuyer pour obtenir une carte du monde en projection de Mercator, une autre en projection Mollweide et une dernière en vue de l'espace c'est à dire une sphère avec les pays apparents...

Je m'excuse pour mon manque de connaissance dans ce domaine et vous remercie par avance. Bien à vous.

Mickael Canouil
Messages : 1315
Enregistré le : 04 Avr 2011, 08:53
Contact :

Re: carte du monde

Messagepar Mickael Canouil » 03 Déc 2020, 17:15

Bonjour,

Vous devez utiliser install.packages() pour installer les extensions R non-native, tels que "sf", sans cette première étape vous ne pourrez pas charger les fonctionnalités de cette extension (library()) et donc utiliser les fonctions.

Il y a plein de ressources en ligne sur R et en particulier l'extension sf (et ggplot2), en cherchant avec ces mots clés vous devriez trouver de nombreux exemples, comme https://statnmap.com/fr/2018-07-14-init ... compagnie/

Ceci étant dit les moteurs de recherche disposent de filtres pour les licenses d'utilisation, par exemple sur google images pour la license Creative Commons
https://www.google.fr/search?q=world%20 ... &tbs=il:cl

Cordialement,
Mickaël
mickael.canouil.fr | rlille.fr

sebastien metivier
Messages : 5
Enregistré le : 02 Déc 2020, 10:16

Re: carte du monde

Messagepar sebastien metivier » 04 Déc 2020, 11:43

Merci beaucoup pour votre réponse Mickael Canouil.

En effet, il est évident que faire appel à une librairie non chargée n'a pas de sens pour R. Je manque cruellement de recul...
Je viens d'essayer et la library sf fonctionne bien ce qui règle le problème n°1.

Toutefois mon problème n°2 subsiste :

install.packages("mapproj")
library(mapproj)
map(database= "world", col="white", fill=TRUE, projection="mercator")

il m'affiche une carte du monde mais j'ai des rayures sur l'hémisphère nord (projection failed for some data)... J'ai essayé d'installer le package mapproj à partir de plusieurs coins du monde (Lyon 1 ; Lyon 2 ; Marseille ; Montpelier ; Belgium ; USA,...) mais il me manque toujours les données d'une partie de l'hémisphère nord...


En vous remerciant. Bien à vous.

jean lobry
Messages : 733
Enregistré le : 17 Jan 2008, 20:00
Contact :

Re: carte du monde

Messagepar jean lobry » 04 Déc 2020, 17:01

Bonjour à tous,

je confirme, je viens de faire :

Code : Tout sélectionner

install.packages("mapproj")
library(mapproj)
map(database= "world", col="white", fill=TRUE, projection="mercator")


et le résultat n'est pas joli-joli. Je ne sais pas comment corriger le problème mais je peux déjà dire que la piste d'essayer d'installer le paquet mapproj à partir de plusieurs coins du monde ne mènera à rien : ce sont tous des sites miroir de celui qui est à Vienne en Autriche.

Bien amicalement,

jean lobry

P.-S. Je complète avec les infos de ma session parce que je ne suis franchement pas à jour sur ce poste de travail

Code : Tout sélectionner

> sessionInfo()
R version 3.5.1 (2018-07-02)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: macOS Sierra 10.12.6

Matrix products: default
BLAS: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/3.5/Resources/lib/libRlapack.dylib

locale:
[1] fr_FR.UTF-8/fr_FR.UTF-8/fr_FR.UTF-8/C/fr_FR.UTF-8/fr_FR.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods 
[7] base     

other attached packages:
[1] mapproj_1.2.7 maps_3.3.0    ade4_1.7-13   sfsmisc_1.1-5
[5] shiny_1.1.0 

loaded via a namespace (and not attached):
 [1] Rcpp_0.12.18    digest_0.6.17   later_0.7.4     MASS_7.3-50   
 [5] mime_0.5        R6_2.2.2        jsonlite_1.7.1  xtable_1.8-3   
 [9] magrittr_1.5    evaluate_0.14   rlang_0.2.2     promises_1.0.1
[13] rmarkdown_1.16  tools_3.5.1     httpuv_1.4.5    xfun_0.10     
[17] yaml_2.2.0      compiler_3.5.1  htmltools_0.3.6 knitr_1.25     


EDIT : j'ai le même problème avec une config plus récente :

Code : Tout sélectionner

> sessionInfo()
R version 4.0.3 (2020-10-10)
Platform: x86_64-apple-darwin17.0 (64-bit)
Running under: macOS Catalina 10.15.7

Matrix products: default
BLAS:   /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/4.0/Resources/lib/libRlapack.dylib

locale:
[1] fr_FR.UTF-8/fr_FR.UTF-8/fr_FR.UTF-8/C/fr_FR.UTF-8/fr_FR.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] mapproj_1.2.7 maps_3.3.0    shiny_1.4.0.2

loaded via a namespace (and not attached):
 [1] Rcpp_1.0.4.6    digest_0.6.25   later_1.0.0     mime_0.9        R6_2.4.1       
 [6] jsonlite_1.6.1  xtable_1.8-4    magrittr_1.5    evaluate_0.14   rlang_0.4.6   
[11] promises_1.1.0  rticles_0.17    rmarkdown_2.5   tools_4.0.3     fastmap_1.0.1 
[16] httpuv_1.5.2    xfun_0.19       yaml_2.2.1      compiler_4.0.3  htmltools_0.4.0
[21] knitr_1.30

sebastien metivier
Messages : 5
Enregistré le : 02 Déc 2020, 10:16

Re: carte du monde

Messagepar sebastien metivier » 05 Déc 2020, 08:24

Rebonjour à tous,

sur le site https://cran.r-project.org/web/packages ... tions.html
j'ai pu avancé un peu. J'obtiens une projection de robinson assez sympa. Néanmoins, je n'arrive pas à changer le step des graduations (longitudes et latitudes). En longitude et en latitude, c'est gradué de 45° en 45°. Je souhaiterai avoir une graduation tous les 10°. Sauriez-vous ce qu'il convient de faire ?

Ce que j'ai rentré pour en arriver là :

install.packages("oce")
library(oce)
data(coastlineWorld)
lon <- coastlineWorld[["longitude"]]
lat <- coastlineWorld[["latitude"]]
par(mar=c(1.5, 1.5, 0.5, 0.5))
install.packages("rgdal")
library(rgdal)
mapPlot(coastlineWorld, col="darksalmon", projection="+proj=robin")


Je souhaiterai aussi faire apparaître la mer en couleur bleue mais ne sait pas comment faire. Auriez-vous une idée ?

Je vous remercie par avance. Bien à tous.

Sébastien Rochette
Messages : 54
Enregistré le : 03 Juil 2020, 12:43
Contact :

Re: carte du monde

Messagepar Sébastien Rochette » 05 Déc 2020, 17:28

Bonjour,

Mickael a déjà parlé de mon site web ci-dessus.
Vous pouvez ré-utiliser n'importe laquelle des cartes présente dessus. (Vous pouvez mettre un lien vers statnmap.com).
Et si l'absence de licence vous pose problème pour une carte en particulier, je me ferai un plaisir d'ajouter un mot sur les droits de ré-utilisation (ça fait un bout de temps que je dois le faire...).
Si dans ma galerie, il y a une carte qui vous plait, vous pouvez cliquer dessus et vous avez accès à la totalité du code pour la re-créer.

La galerie est là : https://statnmap.com/fr/gallery/
Les codes sources complets de tous mes articles de blog sont là : https://github.com/statnmap/blog_tips

Dans cet article, j'ai une projection en "Equal Earth" : https://statnmap.com/fr/2019-03-20-enqu ... ctibilite/
Dans celui-ci, j'ai travaillé sur la sphère : https://statnmap.com/fr/2019-11-22-30da ... ne-sphere/

Enfin, dans "Geocomputation with R" (Licence CC), il y a paragraphe dédié aux projections qui peut vous donner quelques idées : https://geocompr.robinlovelace.net/reproj-geo-data.html
Sébastien
Dev, Consult, Formateur
ThinkR

sebastien metivier
Messages : 5
Enregistré le : 02 Déc 2020, 10:16

Re: carte du monde

Messagepar sebastien metivier » 05 Déc 2020, 20:28

Bonjour Mr ROCHETTE,

je vous remercie beaucoup, c'est très généreux de votre part. Je ne manquerai pas de vous citer le cas échéant.

Je n'ai pas tout regarder en détail encore, je prendrai le temps demain. La projection en "Equal Earth" me conviendrait tout à fait.

Néanmoins, j'ai l'impression que sur toutes les projections planes (de Mollweide ou robinson, je ne sais pas trop), vous avez aussi la grille de longitude et latitude avec un step de 45°. Sauriez-vous comment la modifier pour avoir un step de 10° ? L'idée serait que les élèves puissent repérer un point sur un noeud d'un tel quadrillage avec des coordonnées du style (20°E,70°N).

Je vous remercie encore pour votre aide. Bien à vous.

Sébastien Rochette
Messages : 54
Enregistré le : 03 Juil 2020, 12:43
Contact :

Re: carte du monde

Messagepar Sébastien Rochette » 06 Déc 2020, 19:26

Inspiré de cet article de blog, voici le code R dont je pense vous avez besoin.
Attention, selon les versions de PROJ et du package {sf} que vous avez, il est possible que certaines projections ne passent pas.
Les "ggsave()" vous permettent de sauver l'image sur votre ordinateur et la réutiliser.

Code : Tout sélectionner

 library(sf)
    #> Linking to GEOS 3.8.0, GDAL 3.0.4, PROJ 6.3.1
    library(rnaturalearth)
    library(dplyr)
    library(ggplot2)

# Creation d'une fonction pour faire le graphique pour différentes projections
    plot_earth <- function(crs, lon, lat) {
      # Transformation requires st_make_valid()
      world_ne <- ne_countries(scale = 50, type = "countries", returnclass = "sf") %>%
        select(iso_a3, iso_n3, admin, continent) %>%
        st_transform(crs = crs) %>%
        sf::st_make_valid()
     
      # Grille
      graticule <- st_graticule(ndiscr = 10000, margin = 10e-6,
                                lon = lon, lat = lat) %>%
        st_transform(crs = crs)
     
      # Sphere pour le fond bleu
      sphere <- st_graticule(ndiscr = 10000, margin = 10e-6) %>%
        st_transform(crs = crs) %>%
        st_convex_hull() %>%
        summarise(geometry = st_union(geometry))
     
      # Graph
      ggplot() +
        geom_sf(data = sphere, fill = "cyan") +
        geom_sf(data = world_ne) +
        geom_sf(data = graticule, size = 0.1) +
        theme_bw()
    }

    # Choix de la grille
    # _Longitude
    lon <- seq(-180, 180, by = 10)
    # _Latitude
    lat <- seq(-90, 90, by = 10)

    # Choix de la projection
    #_laea
    crs <- "+proj=laea +lat_0=52 +lon_0=10 +x_0=4321000 +y_0=3210000 +datum=WGS84 +units=m +no_defs"
    plot_earth(crs = crs, lon = lon, lat = lat)


Image

Code : Tout sélectionner

    # Sauver en png
    ggsave(filename = "proj_laea.png", width = 8, height = 8, units = "cm")

    #_moll
    crs <- "+proj=moll"
    plot_earth(crs = crs, lon = lon, lat = lat)

Image

Code : Tout sélectionner

    ggsave(filename = "proj_moll.png", width = 8, height = 8, units = "cm")

    #_"+proj=eqearth +wktext"
    crs <- "+proj=eqearth +wktext"
    plot_earth(crs = crs, lon = lon, lat = lat)

Image

Code : Tout sélectionner

    #_Mercator
    crs <- 3857
    plot_earth(crs = crs, lon = lon, lat = lat)

Image

Code : Tout sélectionner

    ggsave(filename = "proj_mercator.png", width = 10, height = 20, units = "cm")

<sup>Created on 2020-12-06 by the [reprex package](https://reprex.tidyverse.org) (v0.3.0)</sup>
Sébastien
Dev, Consult, Formateur
ThinkR

sebastien metivier
Messages : 5
Enregistré le : 02 Déc 2020, 10:16

Re: carte du monde

Messagepar sebastien metivier » 07 Déc 2020, 17:24

@Mr ROCHETTE

C'est génial, je vous remercie infiniment. C'est exactement ce dont j'avais besoin. Bien que les deux dernières images ne soient pas parfaites, je pourrais obtenir ce que je voulais. Bien que mes connaissances soient nulles en langage R, avec vos codes, je peux changer deux/trois paramètres que j'arrive à identifier.

C'est vraiment gentil à vous d'avoir pris du temps pour m'aider.

Sébastien Rochette
Messages : 54
Enregistré le : 03 Juil 2020, 12:43
Contact :

Re: carte du monde

Messagepar Sébastien Rochette » 07 Déc 2020, 19:56

Oui, la projection du graticule en polygone convexe n'est pas parfaite pour toutes les projections...
Si vous enlevez la couche "sphere" en arrière plan, ça ne se verra plus...


Code : Tout sélectionner

    ggplot() +
        # geom_sf(data = sphere, fill = "cyan") +
        geom_sf(data = world_ne) +
        geom_sf(data = graticule, size = 0.1) +
        theme_bw()
Sébastien
Dev, Consult, Formateur
ThinkR


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Google [Bot] et 1 invité