Obtention d'une erreur avec read_osm
depuis le package tmaptools dans R
. Vous voulez générer une carte statique avec une couche d'arrière-plan.
Une erreur est présente même lors de l'utilisation des données d'exemple NLD_muni
du package tmap
library(tmap) library(tmaptools) library(OpenStreetMap) tmap_mode("plot") data(NLD_muni) test <- tmaptools::read_osm(NLD_muni, type = "esri", zoom = NULL)
Erreur
Erreur dans FUN (X [[i]], ...): Désolé, le type de paramètre «NA» est ambigu ou n'est pas pris en charge.
Devrait charger un fond de carte
Pourrait utiliser tmap_mode ("view")
et créer un tracé interactif, mais idéalement peut faire un tracé statique.
3 Réponses :
Deux commentaires:
1) il n'est pas possible d'afficher un fond de carte avec une carte statique {tmap}; la fonctionnalité de fond de carte provient du package {leaflet}, et n'est donc disponible qu'en mode affichage.
Si vous avez absolument besoin d'un fond de carte dans une carte statique (ce qui est un cas d'utilisation valide), envisagez d'utiliser une combinaison de {ggplot2} et {ggmap}.
2) votre chargement de NLD_muni
est extrêmement complexe; considérez plutôt ce code:
library(tmap) data(NLD_muni) tmap_mode("view") tm_shape(NLD_muni) + tm_polygons(col = "population")
J'ai rencontré le même problème que vous, les exemples des fichiers d'aide ne fonctionnent plus pour read_osm
selon le fichier d'aide (ceci depuis que j'ai mis à niveau vers Windows 10 et réinstallé R - je soupçonne elle est liée).
# load Netherlands shape data(NLD_muni) # read OSM raster data osm_NLD <- read_osm(bb(NLD_muni, ext=1.1, projection ="longlat")) # plot with regular tmap functions tm_shape(osm_NLD) + tm_raster() + tm_shape(NLD_muni) + tm_polygons("population", convert2density=TRUE, style="kmeans", alpha=.7, palette="Purples")
L'inclusion du fond de carte dans une carte statique est un outil puissant. Ce code fonctionnait dans une version antérieure de tmaptools et ne fonctionne pas dans la version actuelle 2.3-1 - J'ai ouvert un problème GitHub github.com/mtennekes/tmaptools/issues/19
Je suis d'accord, merci d'avoir ouvert un numéro! J'avais tout un script fonctionnant parfaitement avant la mise à jour que j'ai dû modifier, donc il y a clairement eu un changement
Afin de générer une carte de base statique dans tmap en utilisant read_osm
, l'objet argument x
doit être dans la projection WGS84 (EPSG 4326).
library(tmap) library(tmaptools) library(tidyverse) tmap_mode("plot") data(NLD_muni) # This does not work: NLD_bm <- tmaptools::read_osm(NLD_muni, type = "esri") # The problem is that NLD_muni is in the projected coordinate system for Netherlands, # but read_osm wants WGS84 sf::st_crs(NLD_muni) # check the coordinate reference system # This does work NLD_bm <- NLD_muni %>% sf::st_transform(., crs = 4326) %>% # transform NLD_muni to WGS84 projection sf::st_bbox(.) %>% # extract bounding box of transformed layer tmaptools::read_osm(., type = "esri") # pass bounding box to read_osm # Now you can map them tm_shape(NLD_bm) + tm_rgb() + tm_shape(NLD_muni) + tm_borders(col = "red")
Pouvez-vous montrer ce qu'est
NLD_mundi
?NLD_muni est l'exemple de données sf fourni dans tmap. J'ai mis à jour la section de code pour montrer comment la charger. NLD_muni: NLD_muni Collection d'entités simples avec 403 entités et 14 champs type de géométrie: MULTIPOLYGON dimension: XY bbox: xmin: 13565.4 ymin: 306846.9 xmax: 277992.8 ymax: 619292 epsg (SRID): 28992 proj4string: + proj = sterea + lat60_55 lon_0 = 5.38763888888889 + k = 0.9999079 + x_0 = 155000 + y_0 = 463000 + ellps = bessel + towgs84 = 565.2369,50.0087.465.658, -0.406857,0.350733, -1.8703 5,4.0812 + unités = m + no_defs