- 本文非原创,翻译自
2019 Geospatial Health Data-Modeling and Visualization with R-INLA and Shiny
,翻译此段文章只为自己学习方便。
地理数据可以使用一种称为shapefile的数据存储格式表示,该格式存储地理特征(如点、线和多边形)的位置、形状和属性。shapefile不是唯一的文件,而是由一组相关文件组成,这些文件具有不同的扩展名和共同的名称,并且存储在同一个目录中。shapefile有三个必须的文件,扩展名是.shp, .shx和.dbf:
- .shp:包含几何数据,
- .shx:是几何数据的位置索引,允许向前和向后查找.shp文件,
- .dbf:存储每个形状的属性。 其他可以形成shapefile的文件如下:
- .prj:描述投影的纯文本文件,
- .sbn和.sbx:几何数据的空间索引,
因此,当使用shapefiles时,仅仅获得包含几何数据的.shp文件是不够的,还需要所有其他支持文件。 在R中,我们可以使用rgdal包的readOGR()函数读取shapefiles,也可以使用sf包的st_read()函数。例如,我们可以用readOGR()读取sf包中存储的北卡罗来纳州的shapefile,如下所示:
# name of the shapefile of North Carolina of the sf package
nameshp <- system.file("shape/nc.shp", package = "sf")
# read shapefile with readOGR()
library(rgdal)
map <- readOGR(nameshp, verbose = FALSE)
class(map)
结果:
[1] “SpatialPolygonsDataFrame” attr(,“package”)
[1] “sp”
head(map@data)
使用rgdal包导入的北卡罗来纳州地图可以制作如下(图2.6):
plot(map)
我们也可以用st_read()来读取地图,如下所示:
# read shapefile with st_read()
library(sf)
map <- st_read(nameshp, quiet = TRUE)
class(map)
结果: [1] “sf”
“data.frame”
head(map)
sf包导入的北卡罗来纳州地图可以制作如下(图2.7):
plot(map)