部署含已弃用maptools的Shiny App遇问题求助
解决方案
方案一:正确安装归档版maptools并加载
你之前的安装代码存在文件名不匹配问题(下载的是maptools_1.1-8.tar.gz,但保存为maptools_0.2-2.tar.gz),这会导致安装版本错误,按以下步骤修正:
- 执行正确的安装代码:
url <- "https://cran.r-project.org/src/contrib/Archive/maptools/maptools_1.1-8.tar.gz" pkgFile <- basename(url) # 自动获取URL中的文件名,避免手动写错 download.file(url = url, destfile = pkgFile) install.packages(pkgs = pkgFile, type = "source", repos = NULL, dependencies = TRUE)
- 在Shiny App代码开头加载maptools包:
library(maptools)
加载后as(SpatialPoints, "ppp")和as(SpatialPolygons, "owin")的转换方法就能被正确识别。
方案二:替换maptools,使用现代包实现转换(推荐)
maptools已从CRAN退役,后续兼容性无法保障,推荐用sf和spatstat.geom替代,步骤如下:
- 安装依赖包:
install.packages(c("sf", "spatstat.geom"))
- 替换SpatialPoints转ppp的代码:
原代码:
place_sp <- as_Spatial(place) place_sp <- as(place_sp, "SpatialPoints") place_ppp <- as(place_sp, "ppp")
替换为:
library(sf) library(spatstat.geom) # 若place是sf对象,直接转换 place_ppp <- as.ppp(place) # 若必须保留Spatial对象转换 place_sp <- as_Spatial(place) place_ppp <- ppp( x = coordinates(place_sp)[, 1], y = coordinates(place_sp)[, 2], window = owin() # 若有对应窗口,替换为实际的owin对象 )
- 替换SpatialPolygons转owin的代码:
原代码:
sz_sp = as(sz, "SpatialPolygons") sz_owin = as(sz_sp, "owin")
替换为:
library(sf) library(spatstat.geom) # 若sz是sf多边形对象,直接转换 sz_owin <- as.owin(sz) # 若sz是SpatialPolygons对象 sz_owin <- owin(poly = sz_sp@polygons[[1]]@Polygons[[1]]@coords)
- 在Shiny App开头加载上述两个包:
library(sf) library(spatstat.geom)
内容的提问来源于stack exchange,提问作者cosmo
相关产品推荐
相关产品推荐

