学习源:知乎作者:HopeR的博客

课程学习资源:
CASA0005 Geographic Information Systems and Science
Spatial Data Science
Geocomputation with R
Geodesic geometry

数据获取资源:
Data lists
OSM
DEFRA

首先做一个简单的上手案例,就是读取一个shapefile文件,一般来说,shape格式文件包括三个文件,才能成为一个完整的整体。(分别是shp,shx,dbf)但是我们通常接触的都是带有空间信息的shape数据,所有还有一个prj文件,从而这四个文件构成一个带有空间参考的shape文件。我使用的原始文件与黄博士参考课程使用的不一样,是福建的行政区划矢量数据。

读取并进行可视化:

library(pacman)
p_load(sf)

FuJian_shp<-st_read("G:/shp/China/fujian1.shp")
# Reading layer `fujian1' from data source `G:\shp\China\fujian1.shp' using driver `ESRI Shapefile'
# Simple feature collection with 10 features and 2 fields
# geometry type:  POLYGON
# dimension:      XY
# bbox:           xmin: 1115192 ymin: 3088867 xmax: 1541805 ymax: 3636025
# projected CRS:  China_Lambert_Conformal_Conic
FuJian_shp
# Simple feature collection with 10 features and 2 fields
# geometry type:  POLYGON
# dimension:      XY
# bbox:           xmin: 1115192 ymin: 3088867 xmax: 1541805 ymax: 3636025
# projected CRS:  China_Lambert_Conformal_Conic
# NAME id                       geometry
# 1  金门县  2 POLYGON ((1387728 3192376, ...
# 2  漳州市  1 POLYGON ((1295738 3272646, ...
# 3  厦门市  4 POLYGON ((1361748 3251134, ...
# 4  龙岩市  2 POLYGON ((1162304 3345151, ...
# 5  泉州市  3 POLYGON ((1354679 3368489, ...
# 6  莆田市  1 POLYGON ((1440314 3363568, ...
# 7  福州市  2 POLYGON ((1454757 3466942, ...
# 8  三明市  4 POLYGON ((1234373 3482452, ...
# 9  南平市  3 POLYGON ((1345548 3635920, ...
# 10 宁德市  1 POLYGON ((1449518 3582618, ...
summary(FuJian_shp)
# NAME                 id                geometry 
# Length:10          Min.   :1.00   POLYGON      :10  
# Class :character   1st Qu.:1.25   epsg:NA      : 0  
# Mode  :character   Median :2.00   +proj=lcc ...: 0  
# Mean   :2.30                     
# 3rd Qu.:3.00                     
# Max.   :4.00  

可视化

plot(FuJian_shp)

提示,如何字段属性内容是分类的,则自动会使用离散的颜色做区分,如果是数值变量则会调用冷暖色调来做区分。如果属性中只有缺失值,那么地理空间中将会一片空白,我们也可以只提取其地理边界进行可视化。(但是下面实在看不出什么离散颜色和冷暖色)
在这里插入图片描述
提取地理属性(边界),进行可视化


FuJian_shp %>%
  st_geometry()%>%
  plot()

在这里插入图片描述
tmap包提供了较好的可视化功能,不过包的加载可能会花费一些时间,比如我们对name进行可视化

p_load(tmap)
tmap_mode("plot")                                                                                                                                                                                  
qtm(FuJian_shp,fill = "NAME")

这也太强大了吧,直接给定位到福建在世界地图所在的位置了。
在这里插入图片描述

写在最后:
本次主要学习了矢量数据的读取,以及可视化(plot,或者tmap包里的)
可以学习的包:sf、tmap
sf:simple features, standard way to encode spatial vector data
qtm()函数输出居然是下面的可以拖动的地图,可见tmap包的别有洞天。
在这里插入图片描述

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐