1.简介:

数字高程模型(Digital Elevation Model),简称DEM,是通过有限的地形高程数据实现对地面地形的数字化模拟。

这次分享的数据是全国34个省份的DEM裁剪数据,一共有6期数据。

分享的数据效果如上图所示。

2.背景介绍

首先,自己的百度云盘堆满了各种DEM数据,但都是单景,每一次使用都需要进行按区域裁剪、镶嵌。做得多也就烦了。
正好,前段时间研究了一下GDAL与Geopandas结合到一起,进行栅格的批量裁剪与转换。我就一次性地把DEM都裁剪到了省。

人数多了,就想要更多人数。
因此我写了这篇推文,阐述批量裁剪DEM的流程,以及分享各省的裁剪DEM资源。

3.数据制作

3.1 流程图

总体思路是:DEM数据转换、按省份裁剪DEM、切片镶嵌,结果数据后处理。

3.1数据准备工作

首先是下载数据,数据量加在一起是60G大小。

待下载好之后,检查数据,统一所有数据格式为TIFF。例如NASA_30mDEM数据为1300张hgt格式的影像,需全部转为tiff文件,
这步使用arcgis的栅格批量转换功能。

3.2 DEM按省份裁剪

3.2.1 脚本进行裁剪

使用python的RasterIO模块进行单景的DEM读取,使用Geooandas模块操作省份矢量裁剪。考虑到这条推文的阅读性,所有脚本代码我会在github上公开(https://github.com/KUAIDUOBAO),这里暂时只放重要的裁剪脚本:

#裁剪函数
def clip(pathDir,shpdata,rasterfile):for i in tqdm(range(len(pathDir))):# 读入栅格文件rasterfile = files_path+"\\"+pathDir[i]rasterdata = rio.open(rasterfile)#获取栅格信息profile = rasterdata.profile#标识符note = pathDir[i]# 投影变换,使矢量数据与栅格数据投影参数一致shpdata = shpdata.to_crs(rasterdata.crs)# 按照所有矢量进行循环裁剪for j in range(0, len(shpdata)):try:# 获取矢量数据的featuresgeo = shpdata.geometry[j]#获取该要素的属性信息data_shp_name=shpdata.全称[j]#文件保存位置的文件夹 各省data_filepath=str(data_shp_name)feature = [geo.__geo_interface__]# 通过feature裁剪栅格影像out_image, out_transform = rio.mask.mask(rasterdata, feature, all_touched=True, crop=True, nodata=0)profile.update(height=out_image.shape[1],width=out_image.shape[2],shape=(out_image.shape[1],out_image.shape[2]),nodata=0,bounds=[],transform=out_transform,)# 定义要创建的目录mkpath = "目录名"# 检测目录是否存在mkdir(mkpath)# 文件名字name="文件名"with rasterio.open(name, mode='w', **profile) as dst:dst.write(out_image)except:pass

使用上述脚本,可以得到省级行政图裁剪每一张影像后的裁剪结果。

这些影像都是按照省级轮廓裁剪后的结果,单张只能覆盖一部分区域,因此需要对所有子集影像进行镶嵌。

3.2 DEM按省份镶嵌

需要遍历34个省份的文件夹,镶嵌使用gdal库的Warp函数。

3.3 数据后处理

主要是使用python脚本,对每一个省份文件夹中的结果影像进行重命名,并删除多余的切片文件。这一步需要添加一个判定函数,判定是否为镶嵌文件,
是则保留,不是则删除。

3.3 数据处理总结

除了上述处理过程,中间也写了数个辅助脚本,用以批量归类DEM文件、多线程处理、批量删除与重命名、匹配文件等。这部分脚本我会上传到github中,不再多做介绍。
当然,进行DEM分省裁剪最大的困难从不是算法问题,而是巨大的数据量,单类全国30m的DEM数据解压后差不多40G。长时间的跑数据,我的笔记本电脑cpu真的可以烤肉了(跑数据过程中,温度长期稳定在80度)。
总得来说,工作量很大,下班后都没时间碰"云顶之弈"这个游戏了。

4.结果展示

裁剪得到了34个省份的DEM,各有6张影像,三种30米分辨率、一种90米分辨率、一种250米分辨率以及一种1000米分辨率。总共166G文件,已经上传到百度云。


5.总结

5.1数据总结

使用gdal、geopandas可以很方面地使用矢量裁剪栅格。
而针对全国的DEM数据裁剪,算法不是问题,唯一的问题是数据量很大,需要足够的算力。

5.2下一步的计划

考虑到我的台式电脑即将组装完毕,而它的优点就是散热能力更强。因此,在工作的闲暇之余,接下来会做:
1.使用更高精度的12.5米分辨率的ALOS PALSAR数据和15米分辨率的SRTM-X-DLR,进行一个行政区划的裁剪;
2.从34个省份的DEM裁剪,扩展到全国400个地级市、2700多个县,并进行归类。

6.数据分享


可以前往“地信遥感数据汇”(https://www.gisrsdata.com/)获取更多数据。

DEM数据全国各省的裁剪与分享(30m、90m、250m、1000m)相关推荐

  1. GaoHR | 全国各省30m分辨率DEM数据

    GaoHR | 全国各省30m分辨率DEM数据 Earthdata Search

  2. 全国各省10米分辨率的土地利用数据的制作与分享

    1.简介 该数据来源是清华大学的宫鹏老师团队做的全球土地利用数据,但该数据只能分影像块进行下载,没有制作按区划数据进行归纳,本人使用python爬虫下载了全球共计7000景影像,并利用2021年的区划 ...

  3. 2020年全国各省、各个地级市、各县的10米分辨率的土地利用数据的制作方法与获取

    1.数据介绍 该数据来源是Esri公司基于10m哨兵影像数据,使用深度学习方法制作做的全球土地利用数据.该数据的数据精度总体精度为85%,混淆矩阵如下所示: Esri全球土地利用数据的影像数据的分布如 ...

  4. dem数据下载后怎么使用?查看等高线、地形渲染、地形裁剪教程

    Dem数据下载后要怎么用呢?很多人都是用dem来看地形,本文就给大家讲解下,dem数据下载后怎么来查看等高线地形图.地形渲染.按行政区划裁剪等操作. 如果还没有DEM数据的话,推荐查看我在CSDN写的 ...

  5. 全国分省12.5m DEM数据(ALOS 12.5m)/高程dem

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 全国分省12.5m DEM数据(ALOS 12.5m)/高程dem 一.ALOS 12.5米DEM免费下载介绍 二.数 ...

  6. 爬虫项目(四)---采集从01月22日以来全国各省疫情数据

    采集从03月02日以来全国各省疫情数据 当然,数据来源仍然是丁香园新型冠状病毒肺炎疫情实时动态首页 url:https://ncov.dxy.cn/ncovh5/view/pneumonia 分析 确 ...

  7. 爬虫项目(三)---采集最近一日全国各省疫情数据

    该内容出自黑马程序员教程 采集最近一日全国各省疫情数据 当然,数据来源仍然是丁香园新型冠状病毒肺炎疫情实时动态首页 url:https://ncov.dxy.cn/ncovh5/view/pneumo ...

  8. 分享一个DEM数据下载的方法

    概述 DEM,又称数字高程模型,是常见的一类栅格数据,也是每一个做GIS的GISer机场也会用到的一类数据.本文,跟大家分享一个DEM数据下载的方法. 操作 本文分享的DEM数据源自地理空间数据云 ( ...

  9. 1990-2021年全国各省城市化水平数据

    1990-2021年全国各省城市化水平数据 1.包括:全国31省 2.时间:1990-2021年 3.指标包括:城镇常住人口数(万人).常住人口数(万人).城市化水平 4.指标衡量:城市化率=本地区城 ...

最新文章

  1. anguarjs 上传图片预览_设计神器!图片批量压缩、格式转换、调整尺寸的在线工具...
  2. Java 8 Friday Goodies:本地交易范围
  3. Jquery一些笔记
  4. cross_val_score 如何对孤立森林_【收藏】森林防火手抄报素材汇总!
  5. cmd指令大全指令_汇编语言常用指令大全
  6. (54)Xilinx双沿原语-IDDR与ODDR(第11天)
  7. 08.QT中sqlite3数据库基本操作
  8. 繁体转简体 java_在java中,怎么把繁体字转化为简体字
  9. 多线程(18) pthread_cond_broadcast
  10. 惠普暗影精灵键盘灯怎么开
  11. qchart 坐标轴设置_qt qchart缩放后坐标轴间隔取整
  12. 取消域服务器是定期修改密码,更改域服务器用户密码
  13. php 代替each()函数写法
  14. php两个时间相差月数,计算两个日期之间相隔的月数
  15. 为什么oracle依旧是很多大公司数据库首选?
  16. python开发者大会_《中国Python开发者大会PyConChina2017》直播课-什么值得买
  17. OpenGL报错#error: gl.h included before glew.h
  18. 谈谈自己的未来规划和学习方法
  19. java中new关键字详解
  20. 计算机和互联网为我们提磎了,北京大学计算机在职研究生单独命题有“蹊跷”...

热门文章

  1. 37.索引生命周期管理—kibana 索引配置
  2. 蓝桥杯单片机学习4——独立按键矩阵按键
  3. 威联通 QTS5.0 532x :phpmyadmin 安装位置
  4. ch不是小写字母的c语言,已知字母a的ASCII码为97,若变量ch为char型,以下能正确判断出ch的值为小写字母的表达式是 答案:(ch-32)='A' ( ch-32)='Z'...
  5. 【Python基础】字符串 正则表达式
  6. 9.4 Example Applications
  7. 物理学和计算机科学交叉,浅谈物理学知识和计算机科学的交叉融合
  8. 24考研王道计算机组成原理笔记
  9. spring使用JavaConfig进行配置
  10. SDH、MSTP、OTN和PTN的区别和联系