【可视化】中国地形(DEM)图
DEM是数字高程模型的英文简称(Digital Elevation Model),是研究分析地形、流域、地物识别的重要原始资料。本文根据1km分辨率的我国地形数据,使用cmaps和gdal库绘制地形图。
相关库简介
GDAL(Geospatial Data Abstraction Library)是一个开源的库,用于读取、写入、处理和转换地理空间数据。它是地理信息系统(GIS)应用程序开发中非常重要的工具之一,并且被广泛用于处理栅格数据和矢量数据。
GDAL库使用pip进行安装,失败的概率较大。推荐使用conda命令进行安装,如下:
conda install -c conda-forge gdal
代码实现
导入相关库
# -*- coding: UTF-8 -*-
# 导入相关库
import numpy as np
import matplotlib.pyplot as plt
from osgeo import gdal
import cmaps
加载数据
数据来源于NASA,ASTER GDEM即先进星载热发射和反射辐射仪全球数字高程模型,其全球空间分辨率为30米。重采样后得到1km,500m,250m三种分辨率的DEM数据。相关数据可以自行前往NASA官网进行下载,也可在公众号后台回复关键词获取。
读取1kmDEM数据:
ds = gdal.Open('dem_1km.tif')
dem = ds.ReadAsArray()
缺失值掩膜
masked_dem = np.ma.masked_equal(dem, -32768)
masked_dem
查看地理坐标属性
gt = ds.GetGeoTransform()
xres = gt[1]
yres = gt[5]
xmin = gt[0] + xres * 0.5
xmax = gt[0] + (xres * ds.RasterXSize) - xres * 0.5
ymin = gt[3] + (yres * ds.RasterYSize) + yres * 0.5
ymax = gt[3] - yres * 0.5
lons, lats = np.mgrid[xmin:xmax+xres:xres, ymax+yres:ymin:yres]
查看地理坐标属性
plt.figure(figsize=(10,6))
levels = np.linspace(0,7000,36)
ticks = np.linspace(0,7000,36)
cs = plt.contourf(lons, lats, masked_dem.T, levels=levels, cmap=cmaps.MPL_terrain)
plt.colorbar(cs, pad=0.03, ticks=ticks, label='Elevation (m)')
plt.show()
结果展示
中国地形图
推荐阅读
欢迎关注我的公众号“AI拾贝”,原创技术文章第一时间推送。后台发送DEM,自动回复源码和数据。