GIS与Climate
V1
2022/09/21阅读:25主题:默认主题
用R语言下载任意地区DEM数据
地学相关的科研中经常用到DEM数据以及其衍生数据,比如坡度、坡向等数据,同时公众号、博客等等也在不断的分享这些DEM等数据(包括我自己),但是我相信大多数人领取完了之后就进入收藏夹/百度云吃灰,等过了好久用的时候才想起来。

本文介绍一种使用R语言获取任意地区DEM数据的方法,这样子在用的时候随时下载即可,再也不用导出找数据。
工具介绍
本文使用的是R包elevatr,具体介绍见参考【1】。
使用方法
包的使用方法非常简单,提供相应的范围和需要下载的DEM数据的等级即可(对应的是分辨率)
library(sf)
library(elevatr)
# 定义下载区域
loc <- st_bbox(c(xmin = 16.1, xmax = 16.6, ymax = 48.6, ymin = 47.9), crs = st_crs(4326)) %>% st_as_sfc()
# 下载栅格类型的DEM数据
re <- get_elev_raster(locations = loc , z=10)
plot(re)
# 保存数据
writeRaster(re,'./test.tif')

上面z=10代表的是不同等级的dem,其对应的是分辨率,在不同的纬度区域,不同的z代表了不同的分辨率,在下载的时候会根据提供的数据范围自动计算,具体可以阅读参考【3】。
几点说明
-
下载的时候必须提供的就是范围和z,如果提供的范围是data.frame格式的话,需要提供对应的坐标系,因此建议用上面的方法来生成sf对象之后再下载; -
下载的数据实际范围会大一点,囊括提供的范围; -
如果有研究区矢量或者tif数据,直接用shp或者tif数据作为范围会更好,也无需再额外设置坐标系参数;
数据靠谱不?
这个包只是提供了一种下载方式,当前有两个数据源:
-
AWS的瓦片数据; -
Open Topography Global Datasets API
本身并不生产数据,数据还是SRTM、ALOS等数据源,所以与其他途径下载的数据无异。
参考
【1】https://www.rdocumentation.org/packages/elevatr/versions/0.4.2
【2】https://rpubs.com/ials2un/elevationfromR
【3】https://github.com/tilezen/joerd/blob/master/docs/data-sources.md#what-is-the-ground-resolution
【4】https://registry.opendata.aws/terrain-tiles/
【5】https://opentopography.org/developers
作者介绍
GIS与Climate
V1
公众号:GIS与Climate,欢迎关注