1
votes

Erreur de paramètre dans le package tmaptools lu osm lors de l'utilisation de données d'exemple

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.


2 commentaires

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


3 Réponses :


0
votes

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")

entrez la description de l'image ici


0 commentaires

1
votes

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).

J'ai trouvé un autre exemple a > sur le Web qui fonctionne pour moi, et à partir duquel vous pouvez, espérons-le, recommencer.

# 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")


2 commentaires

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



0
votes

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")


0 commentaires