标签: r-mapview

mapview为闪亮

我使用创建交互式地图 mapView

mapview()功能适用于我的网格数据(SpatialPixelsDataFrame):

码:

library(sp)
library(ggplot2)
library(gstat)
library(rgdal)
library(mapview)
library(RMySQL)

con <- dbConnect(MySQL(),
                 user="root",
                 password="",
                 host="127.0.0.1",
                 dbname="rstudio")
data<-dbReadTable(con,"data")
on.exit(dbDisconnect(con))

data_test <- data
data_test$x <- data$long
data_test$y <- data$lat
coordinates(data_test) = ~x + y
x.range <- as.numeric(c(-5.99, -5.74))  
y.range <- as.numeric(c(35.57, 35.81))  
grd <- expand.grid(x = seq(from = x.range[1], to = x.range[2], by = 0.002), 
                   y = seq(from = y.range[1], to = y.range[2], by = 0.002))  # expand points to grid
coordinates(grd) <- ~x + y
gridded(grd) …
Run Code Online (Sandbox Code Playgroud)

r shiny r-mapview

15
推荐指数
1
解决办法
3130
查看次数

mapview中基于不同变量的点颜色和符号大小

我正在尝试在 mapview 中使用不同的比例主题来帮助可视化收益与损失,包括:

  • 绝对值刻度上的点符号圆圈大小(突出损失和收益一样多)
  • 圆的发散色标填充(比如深蓝色>蓝色>白色>红色>深红色对于大多数负>负>零>正>最大)
  • 鼠标悬停在保留原始值的标签上

有任何想法吗?


library(tidyverse)
library(mapview)
library(sf)

lat <- rep(34,16)
lon <- seq(-128, -126, length = 16)
value <- c(-1000, -800, -600, -400, -200, -100, -50, 
            -25, 25, 50, 100, 200, 400, 600, 800, 1000)

#make data.frame
df <- data.frame(lat, lon, value) 

#make spatial object for mapview
df <- st_as_sf(df, coords = c("lon", "lat"), crs = 4326) %>%
      mutate(value_abs = abs(value)) #value_abs intended for `cex` argument

pal <-  mapviewPalette("mapviewSpectralColors") #from mapview doc. example
m   <-  mapview(df["value"], #sets …
Run Code Online (Sandbox Code Playgroud)

plot r colorbar r-mapview

7
推荐指数
1
解决办法
1387
查看次数

合并形状文件和数据框

我正在使用R常规数据框(df)和形状文件(map2),它们共享一个名为 的公共列CD116FPdf有 103552 行,而map2有 444 行。我通过以下方式加载 shapefile:

map2 <- read_sf("D:/Data/tl_2019_us_cd116.shp")

我的最终目标是使用该功能mapview()来查看包含在列下map2描述的“强度”的地图。因此,我不希望没有出现在 上的观察结果。dfnp_scoresdfmap2

以下是我的想法和失败:

  1. 如果这两个对象是常规数据帧,则合理的候选者是用于merge()组合两个对象,但是如果在这种情况下应用该函数,生成的对象将失去空间属性并且mapview不知道如何读取它。

  2. 我使用的另一种方法是尝试这行代码:

map2m<-data.frame(map2, df[匹配(map2$CD116FP, df$CD116FP),])

但结果的尺寸太大(比 444 行大得多),因此mapview在尝试绘制所需地图时会崩溃。

  1. 最后,我全力以赴,构建了一个循环来将列添加npmap2
map2$np=10

for (i in c(1:nrow(map2)))
{  
for (j in c(1:nrow(df)))
 {
if (identical(map2$CD116FP[i],df$CD116FP[j]))
{map2$np[i]=df$np_score[j]}
else {map2$np[i]=0}  
}
}  
Run Code Online (Sandbox Code Playgroud)

然而,考虑到我的数据框的尺寸,这种方法花费了太多时间。

你有什么建议吗?

merge r shapefile r-mapview

6
推荐指数
1
解决办法
4407
查看次数

在 R 中使用 MapView 增加 pandoc 内存分配

我正在尝试使用名为 mapshot 的内置地图视图函数在 R 中导出我的地图视图。我收到此错误消息:

pandoc.exe:内存不足

错误:pandoc 文档转换失败,错误 251

另外:警告消息:运行命令 'C:/PROGRA~2/Pandoc/pandoc +RTS -K512m -RTS ...

如何在不使用 Rmarkdown 文件的情况下永久增加 R 中的 Pandoc 内存大小?

r pandoc r-mapview

5
推荐指数
1
解决办法
4196
查看次数

如何使用 R 上的传单在 Lambert 93 中投影栅格 + 多边形?

我正在尝试在 Lambert 93 (st_transform(2154)) 中制作传单地图,包括: 1. 多边形(法国) 2. 栅格图层(欧洲)

我不明白为什么下面的代码不起作用。

library(leaflet)
library(tidyverse)
library(sf)
library(grid)
library(fasterize)
library(cartography)
library(mapview)


sf_europe <- cartography::nuts0.spdf %>% st_as_sf  %>% mutate(num=ifelse(id=="FR",1,0)) %>% st_transform(2154) 

r <- raster(sf_europe, res = 10000)
r <- fasterize(sf_europe, r, field="num",background = 2)

epsg_affichage <- leafletCRS(crsClass = 'L.Proj.CRS', code = 'EPSG:2154',
                             proj4def = "+proj=lcc +lat_1=49 +lat_2=44 +lat_0=46.5 +lon_0=3 +x_0=700000 +y_0=6600000 +ellps=GRS80 +units=m +no_defs",
                             resolutions = c(65536, 32768, 16384, 8192, 4096, 2048)
)

sf_france_4326 <- sf_europe %>% filter(id=="FR") %>% st_transform(4326)


leaflet(options =
          leafletOptions(maxZoom = 5, …
Run Code Online (Sandbox Code Playgroud)

r r-raster r-leaflet r-mapview

5
推荐指数
0
解决办法
238
查看次数

为什么我失去了使用 Mapshot 的能力

我经常使用mapshot来发送交互式地图数据,但最近,虽然我可以用mapview制作我想要的地图,但我无法保存它们。

例子:

map<- mapview(mapdata, zcol = "columnofinterest", burst = TRUE)

mapshot(map, url = paste0(getwd(), "/whatIwanttocallmymap.html"))

File whatIwanttocallmymap_files/PopupTable-0.0.1/popup.css not found in resource path
Error: pandoc document conversion failed with error 99
Run Code Online (Sandbox Code Playgroud)

恐怕我在获取包裹的方式上搞砸了。带有包名称的文件夹出现在我设置为 wd 的区域中,而不是出现在我的 R 库中

感谢您提供的任何帮助/建议

r r-leaflet r-mapview r-library

5
推荐指数
0
解决办法
1418
查看次数

传单中的栅格和多边形,没有栅格插值

我试图在传单(或地图视图)中显示多个图层,其中之一是 EPSG:27700 中的栅格。我设法充分覆盖这些图层的唯一方法是通过默认的经纬度投影,这意味着栅格的重新投影及其插值。我无法在这个项目中进行插值,所以我需要在 EPSG:27700 上工作。

如何向未投影的栅格显示附加图层?我尝试过使用 CRS.Simple,因为我想在简单的笛卡尔计划中显示所有内容,但没有成功。我不介意失去美丽的背景瓷砖。但无论我尝试什么,我都无法让我的多边形(也包括 EPSG27700)图层(或任何 sp 对象)与我的未插值栅格正确显示。我希望下面的 MWE 能够有效地说明我的问题:

library("raster")
library("leaflet")
library("eurostat")
library("sf")

## get UKK spdf projected on british grid EPSG27700
europe <- get_eurostat_geospatial(resolution = 10, nuts_level = 1,  year = 2021)
UK_spdf <- as_Spatial(europe[grepl("UK", europe$id),])
UK_spdf <- spTransform(UK_spdf, crs("+init=epsg:27700 +units=km +datum=WGS84"))

## build a dummy raster projected on EPSG:27700
r <- rasterize(UK_spdf, raster(UK_spdf, ncols = 100, nrows = 200))

## the two layers overlay well in default plots
plot(r) ; plot(UK_spdf, add=TRUE)

## raster can …
Run Code Online (Sandbox Code Playgroud)

r leaflet r-raster r-sp r-mapview

5
推荐指数
1
解决办法
292
查看次数

knitr R markdown文档中的mapview错误

我一直在玩mapview包,最近已加载到CRAN上.我一直在玩演示代码并尝试将其嵌入到knitr markdown文档中.不幸的是,当我这样做时,我收到一条错误消息,我无法解释出现了什么问题.

这是错误消息,后面是可重现的示例.请注意,在将代码作为直接R代码运行时,我没有任何问题.只有当它通过knitr运行时才会出现问题.如果mapview元素被注释掉,则不会发生错误.

我已经更新了所有的软件包,问题仍然存在.以下是一些系统细节:

  • Windows 7的
  • R版本3.2.2
  • R Studio版本0.99.486
  • mapview版本1.0.0
  • 针织版1.11
  • pandoc版本1.13.1

pandoc.exe:无法获取C:\ Users\my.name\Documents\R\win-library\3.2\mapview\htmlwidgets\lib\leaflet #default #VML C:\ Users\my.name\Documents\R\win-library\3.2\mapview\htmlwidgets\lib\leaflet:openBinaryFile:不存在(没有这样的文件或目录)错误:pandoc文件转换失败,错误67另外:警告消息:正在运行命令'"C:/ Program Files/RStudio/bin/pandoc/pandoc"+ RTS -K512m -RTS Mapview.utf8.md - to html - from markdown + autolink_bare_uris + ascii_identifiers + tex_math_single_backslash-implicit_figures --output Mapview.html --smart --email-obfuscation none - self-contained --standalone --section-divs --template"C:\ Users\my.name\Documents\R\win-library\3.2\rmarkdown\rmd\h\default.html" - 变量"theme:bootstrap"--include-in-header"C:\ Users\my.name\AppData\Local\Temp\Rtmpw9Mi9D\rmarkdown-str1ee41c515f3f.html"--mathjax --variable"mathjax-url:https:/ /cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML " - no-highlight --variable"h ighlightjs = C:\ Users\my.name\Documents\R\win-library\3.2\rmarkdown\rmd\h\highlight"'has status 67执行暂停

---
title: "Test Mapview"
output: html_document
--- …
Run Code Online (Sandbox Code Playgroud)

r knitr r-mapview

3
推荐指数
1
解决办法
916
查看次数

如何控制R中mapview(包)中的地图颜色?

我正在使用R作为GIS软件,这要归功于mapviewgstatsp和其他软件包。

mapView()我用函数绘制结果

m <- vgm(psill=.49,model="Sph",range=600000,nugget=3.8)
idw <- krige(formula = temp~1, locations = data_test, newdata = grd, model=m)
idw.output = as.data.frame(idw)
names(idw.output)[1:3] <- c("long", "lat", "temp")
coordinates(idw.output) <- ~long+lat
morocco <- readOGR("/opt/lampp/htdocs/ardusky/public/data/TNG", "TNG")
proj4string(idw.output)<-proj4string(morocco)
tempData <- idw.output[morocco,]
proj4string(data_test)<-proj4string(morocco)
gridded(tempData) <- TRUE
m<-mapView(tempData, zcol = "temp") + data_test
m
Run Code Online (Sandbox Code Playgroud)

结果

在此输入图像描述

我想控制颜色,例如0->蓝色50->红色。

有什么办法可以做到这一点吗?

r r-mapview

3
推荐指数
1
解决办法
5843
查看次数

如何使用 sf 按因子从点构造/绘制多边形的凸包?

我有一个物种出现的数据集,我试图通过制作凸包将其转换为出现的区域。我可以手动执行此操作(即一次一个物种),但我真的很希望能够通过物种名称自动处理它。

可以在此处找到精简的示例数据集:https : //pastebin.com/dWxEvyUB

这是我目前手动执行的方法:

library(tidyverse)
library(sf)
library(rgeos)
library(maps)
library(mapview)
library(mapdata)
library(ggplot2)


fd <- read_csv("occurrence.csv")

spA.dist <- fd %>%
  filter(species == "sp.A") %>%
  dplyr::select(lon,lat) %>%
  as.matrix() %>%
  coords2Polygons(ID="distribution") %>%
  gConvexHull() %>%
  gBuffer()

spB.dist <- fd %>%
  filter(species == "sp.B") %>%
  dplyr::select(lon,lat) %>%
  as.matrix() %>%
  coords2Polygons(ID="distribution") %>%
  gConvexHull() %>%
  gBuffer() 

wrld2 = st_as_sf(map('world2', plot=F, fill=T))
ggplot() + 
  geom_sf(data=wrld2, fill='gray20',color="lightgrey",size=0.07) +
  geom_polygon(aes(x=long,y=lat,group=group),color="red",data=spA.dist,fill=NA) +
  geom_polygon(aes(x=long,y=lat,group=group),color="blue",data=spB.dist,fill=NA) + 
  coord_sf(xlim=c(100,300), ylim=c(-60,60))

Run Code Online (Sandbox Code Playgroud)

根据观察结果的凸包显示两个物种发生区域的地图。我意识到我在这里混合了不同的空间库,所以如果可能的话,最好在 sf 中完成所有操作。在我的真实数据中,我有两个以上的物种,我可以复制和粘贴我为每个物种获得的代码,但似乎应该可以简化这一点,因此多边形(以及随后的凸包)是按因子级别构建的自动地。更像这样的东西:

polys <- st_as_sf(fd) %>%
  group_by(species) %>%
  magically_make_polygons(lon,lat) %>%
  st_convex_hull() %>%
  st_buffer() …
Run Code Online (Sandbox Code Playgroud)

r spatial geos r-mapview r-sf

3
推荐指数
1
解决办法
709
查看次数

将调色板添加到 MapView-Map

我正在尝试更改由类似于以下代码创建的地图(shapefile 数据)的颜色:

mapView(MyData, zcol="Column_Name")
Run Code Online (Sandbox Code Playgroud)

“帮助”页面提供了两种不同的方法来使用color=或更改颜色col.regions=。我想添加一个特定的调色板 ( YlGn),但还没有找到这样做的方法。它所说的只是:

Error in col2rgb(colors, alpha = alpha) : invalid color name 'YlGn'
Run Code Online (Sandbox Code Playgroud)

r color-palette r-mapview r-sf

3
推荐指数
1
解决办法
1298
查看次数

如何在 r 中的 mapview 地图上标记点

请帮我在 mapview 地图上标记点。我可以绘制点确定。然后我想标记点“A 点”、“B 点”。我也更喜欢在没有标记点的情况下执行此操作,即我将仅使用坐标来定位标签。

library(sf)
library(mapview)
library(tidyverse)

points <- tribble(~name, ~lat, ~lon,
                     'Point A',     -38.119151, 145.401893,
                     'Point B',     -38.127870, 145.685598)

points_sf <- st_as_sf(points, coords = c("lon", "lat"), crs = 4326)

mapview(points_sf)
Run Code Online (Sandbox Code Playgroud)

r r-mapview

0
推荐指数
1
解决办法
1370
查看次数