knitr R 降价文档中的 mapview 错误
mapview error in knitr R markdown document
我一直在研究最近加载到 CRAN 上的 mapview 包。我一直在玩演示代码,并试图将其嵌入到 knitr markdown 文档中。不幸的是,我在执行此操作时收到一条错误消息,而且我无法解释出了什么问题。
这是错误消息,后面是一个可重现的示例。请注意,当 运行 将代码作为直接 R 代码时,我没有任何问题。只有当 运行 到 knitr 时,问题才会出现。如果注释掉 mapview
元素,则不会发生错误。
我已经更新了所有软件包,但问题仍然存在。以下是一些系统详细信息:
- Windows 7
- R 版本 3.2.2
- R Studio 版本 0.99.486
- 地图视图版本 1.0.0
- knitr 版本 1.11
- pandoc 版本 1.13.1
pandoc.exe: Could not fetch
C:\Users\my.name\Documents\R\win-library.2\mapview\htmlwidgets\lib\leaflet#default#VML
C:\Users\my.name\Documents\R\win-library.2\mapview\htmlwidgets\lib\leaflet:
openBinaryFile: does not exist (No such file or directory) Error:
pandoc document conversion failed with error 67 In addition: Warning
message: running command '"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.2\rmarkdown\rmd\h\default.html"
--variable "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 "highlightjs=C:\Users\my.name\Documents\R\win-library.2\rmarkdown\rmd\h\highlight"'
had status 67 Execution halted
---
title: "Test Mapview"
output: html_document
---
```{r}
library(ggplot2)
library(rgdal)
library(mapview)
data(diamonds)
### blow diamonds up a bit
big <- diamonds[rep(seq_len(nrow(diamonds)), 1), ]
big$cut <- as.character(big$cut)
big$color <- as.character(big$color)
big$clarity <- as.character(big$clarity)
### provide some random positions
big$x <- rnorm(nrow(big), 0, 10)
big$y <- rnorm(nrow(big), 0, 10)
coordinates(big) <- ~x+y
proj4string(big) <- CRS("+init=epsg:4326")
### view it
mapview(big)
```
到目前为止,在 mapview 中不支持 knitr。也就是说,可以通过显式调用 mapview(x)@map 来嵌入 "small" 数据集。 x 是一个 Spatial* 对象,多边形和线的特征少于 30000 个,点的特征少于 20000 个。这些数字是在 mapviewOptions() 中设置的默认限制,用于使用传单包渲染输出。对于特征多于这些阈值的数据集,我们对点使用特殊函数 mapview:::fpView(),对多边形和线使用 mapview:::bView()。对于这些特殊功能,目前不存在 knitr 支持。
这意味着使用 knitr 嵌入更大数据集的唯一选择是将 "maxlines"、"maxpoints" 或 "maxpolygons" 的阈值设置为适当的数字(高于数字功能),以便使用传单包功能完成渲染。但是您需要记住,对于大型数据集,传单可能不再表现流畅(或完全崩溃)。
所以,对于上面的例子:
---
title: "Test Mapview"
output: html_document
---
```{r}
library(ggplot2)
library(rgdal)
library(mapview)
mapviewOptions(maxpoints = 55000) # diamonds has some 53000 rows
data(diamonds)
### blow diamonds up a bit
big <- diamonds[rep(seq_len(nrow(diamonds)), 1), ]
big$cut <- as.character(big$cut)
big$color <- as.character(big$color)
big$clarity <- as.character(big$clarity)
### provide some random positions
big$x <- rnorm(nrow(big), 0, 10)
big$y <- rnorm(nrow(big), 0, 10)
coordinates(big) <- ~x+y
proj4string(big) <- CRS("+init=epsg:4326")
### view it
mapview(big)@map
```
应该生成一个用点显示地图的文档,但正如我所说,请注意这可能超出了传单包的功能。
另外,我想在这里再提一点。 knitr 是否是为如此大的数据集创建 html 文件的合适方法值得怀疑。 knitr 将所有内容(几何和属性)存储在一个 html 文件中,该文件可能会很快变得非常大并且变得反应迟钝。
因此,对于如此大的数据,也许闪亮的解决方案是更好的选择。
到目前为止,我们的重点是让大数据集在 viewer/browser 中正常工作。 knitr 集成有望在某个阶段实施,但可能需要一些时间才能正确完成。
希望这能澄清,
最好
蒂姆
我一直在研究最近加载到 CRAN 上的 mapview 包。我一直在玩演示代码,并试图将其嵌入到 knitr markdown 文档中。不幸的是,我在执行此操作时收到一条错误消息,而且我无法解释出了什么问题。
这是错误消息,后面是一个可重现的示例。请注意,当 运行 将代码作为直接 R 代码时,我没有任何问题。只有当 运行 到 knitr 时,问题才会出现。如果注释掉 mapview
元素,则不会发生错误。
我已经更新了所有软件包,但问题仍然存在。以下是一些系统详细信息:
- Windows 7
- R 版本 3.2.2
- R Studio 版本 0.99.486
- 地图视图版本 1.0.0
- knitr 版本 1.11
- pandoc 版本 1.13.1
pandoc.exe: Could not fetch C:\Users\my.name\Documents\R\win-library.2\mapview\htmlwidgets\lib\leaflet#default#VML C:\Users\my.name\Documents\R\win-library.2\mapview\htmlwidgets\lib\leaflet: openBinaryFile: does not exist (No such file or directory) Error: pandoc document conversion failed with error 67 In addition: Warning message: running command '"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.2\rmarkdown\rmd\h\default.html" --variable "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 "highlightjs=C:\Users\my.name\Documents\R\win-library.2\rmarkdown\rmd\h\highlight"' had status 67 Execution halted
---
title: "Test Mapview"
output: html_document
---
```{r}
library(ggplot2)
library(rgdal)
library(mapview)
data(diamonds)
### blow diamonds up a bit
big <- diamonds[rep(seq_len(nrow(diamonds)), 1), ]
big$cut <- as.character(big$cut)
big$color <- as.character(big$color)
big$clarity <- as.character(big$clarity)
### provide some random positions
big$x <- rnorm(nrow(big), 0, 10)
big$y <- rnorm(nrow(big), 0, 10)
coordinates(big) <- ~x+y
proj4string(big) <- CRS("+init=epsg:4326")
### view it
mapview(big)
```
到目前为止,在 mapview 中不支持 knitr。也就是说,可以通过显式调用 mapview(x)@map 来嵌入 "small" 数据集。 x 是一个 Spatial* 对象,多边形和线的特征少于 30000 个,点的特征少于 20000 个。这些数字是在 mapviewOptions() 中设置的默认限制,用于使用传单包渲染输出。对于特征多于这些阈值的数据集,我们对点使用特殊函数 mapview:::fpView(),对多边形和线使用 mapview:::bView()。对于这些特殊功能,目前不存在 knitr 支持。
这意味着使用 knitr 嵌入更大数据集的唯一选择是将 "maxlines"、"maxpoints" 或 "maxpolygons" 的阈值设置为适当的数字(高于数字功能),以便使用传单包功能完成渲染。但是您需要记住,对于大型数据集,传单可能不再表现流畅(或完全崩溃)。
所以,对于上面的例子:
---
title: "Test Mapview"
output: html_document
---
```{r}
library(ggplot2)
library(rgdal)
library(mapview)
mapviewOptions(maxpoints = 55000) # diamonds has some 53000 rows
data(diamonds)
### blow diamonds up a bit
big <- diamonds[rep(seq_len(nrow(diamonds)), 1), ]
big$cut <- as.character(big$cut)
big$color <- as.character(big$color)
big$clarity <- as.character(big$clarity)
### provide some random positions
big$x <- rnorm(nrow(big), 0, 10)
big$y <- rnorm(nrow(big), 0, 10)
coordinates(big) <- ~x+y
proj4string(big) <- CRS("+init=epsg:4326")
### view it
mapview(big)@map
```
应该生成一个用点显示地图的文档,但正如我所说,请注意这可能超出了传单包的功能。
另外,我想在这里再提一点。 knitr 是否是为如此大的数据集创建 html 文件的合适方法值得怀疑。 knitr 将所有内容(几何和属性)存储在一个 html 文件中,该文件可能会很快变得非常大并且变得反应迟钝。
因此,对于如此大的数据,也许闪亮的解决方案是更好的选择。
到目前为止,我们的重点是让大数据集在 viewer/browser 中正常工作。 knitr 集成有望在某个阶段实施,但可能需要一些时间才能正确完成。
希望这能澄清, 最好 蒂姆