作者:黄天元
HopeR:R语言空间数据分析(零)
最近对空间分析比较感兴趣,所以准备开始系统学习一下R中的空间数据挖掘。国外资料已经非常多,知难行易,一点一点夯实基础。主要资料如下:
CASA0005 Geographic Information Systems and Science
Spatial Data Science
Geocomputation with R
Geodesic geometry
下面做一个简单的上手案例,就是读取shape格式文件,然后进行观察和可视化。一般来说,shape格式文件需要有三个文件,才能够成为一个完整的整体(分别是".shp", ".shx"与 ".dbf"文件,具体参考shapefile文件_百度百科)。我们演示的原始文件来自于:https://github.com/andrewmaclachlan/CASA0005repo/tree/master/prac10_data/statistical-gis-boundaries-london/ESRI,分别是以下3个文件:
我把它们放在data目录下,实现代码如下:
library(pacman)
p_load(sf)
shape <- st_read("data/London_Borough_Excluding_MHW.shp")
这样,就可以把shape格式的文件读入到R中,现在放到shape变量中了。它本质上是一个带有元信息的数据框,可以用summary来观察它的数据结构:
summary(shape)
同时可以进行可视化:
plot(shape)
我们可以看到,如果是分类变量,那么就会利用不同的离散颜色做区分;如果是数值变量,则会自动调用冷暖色调来做数值区分。此外,如果属性中只有缺失值,那么地理空间中将会是一片空白(如SUB_2009)。我们也可以只提取其地理属性(边界),然后进行可视化:
shape %>%
st_geometry() %>%
plot()
tmap包提供了较好的可视化功能,不过包的加载可能会花费一些时间。比如,我们来对HECTARES变量进行可视化:
p_load(tmap)
tmap_mode("plot")
qtm(shape,fill = "HECTARES")
这里图例位置显然安排不合理,但是以后再来提如何修改这些细节。