# digital-elevation-model
**Repository Path**: seelingzheng/digital-elevation-model
## Basic Information
- **Project Name**: digital-elevation-model
- **Description**: 高程下载
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2020-08-05
- **Last Updated**: 2021-11-02
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 基于Python的数字高程模型处理
[](https://github.com/HeZhang1994/digital-elevation-model/blob/master/LICENSE)
[]()
[]()
[]()
[*English Version*](https://github.com/HeZhang1994/digital-elevation-model/blob/master/README.md) | [*中文版*](https://github.com/HeZhang1994/digital-elevation-model/blob/master/README-cn.md)
基于**Python**实现的变换、投影、转换和可视化**数字高程模型**并且读取其中给定位置的海拔值。
## 目录
- [专业术语和缩略词](#专业术语和缩略词)
- [功能](#功能)
- [数字高程模型数据](#数字高程模型数据)
- [ASTERGDEM](#astergdem)
- [EUDEM](#eudem)
- [依赖项](#依赖项)
- [ASTERGDEM处理流程图](#astergdem处理流程图)
- [使用方法](#使用方法)
- [ASTERGDEM的使用方法](#astergdem的使用方法)
- [EUDEM的使用方法](#eudem的使用方法)
- [结果](#结果)
- [伦敦数字高程模型图像](#伦敦数字高程模型图像)
- [伦敦海拔](#伦敦海拔)
- [参考](#参考)
## 专业术语和缩略词
| 专业术语 | 缩略词 | 备注
| ------------------------------------------ | ------------ | ------
| Digital Elevation Model 数字高程模型 | DEM | -
| Geographic Coordinate System 地理坐标系 | GCS | 三维椭球面,[经度,纬度,海拔]
| Projected Coordinate System 投影坐标系 | PCS | 二维平面,[横坐标,纵坐标,海拔]
| Georeferenced Tagged Image File Format | GeoTIFF | 数字高程模型的文件格式
| European Petroleum Survey Group | EPSG | EPSG代码用于识别不同GCS和PCS
| 1984 World Geodetic System | WGS-84 | **GCS**, *EPSG-4326*, 参考椭球面位于地球
| Pseudo Mercator (Web Mercator) | - | **PCS** of WGS-84, *EPSG-3857*
| 1936 Ordnance Survey Great Britain | OSGB-36 | **GCS**, *EPSG-4277*, 参考椭球面位于英国
| British National Grid | BNG | **PCS** of OSGB-36, *EPSG-27700*
| 1989 European Terrestrial Reference System | ETRS-89 | **GCS**, *EPSG-4258*, 参考椭球面位于地球
| Lambert Azimuthal Equal-Area | LAEA | **PCS** of ETRS-89, *EPSG-3035*
## 功能
- **变换**地理坐标系下DEM至其他地理坐标系(例如,由WGS-84变换至OSGB-36)。
- **投影**地理坐标系下的DEM至对应的投影坐标系(例如,由OSGB-36投影至BNG)。
- **转换**投影坐标系下的DEM至对应的地理坐标系(例如,由LAEA转换至ETRS-89)。
- **可视化**投影坐标系下的DEM为二维图像。
- **读取**地理坐标系下的DEM中给定位置的海拔值。
## 数字高程模型数据
### ASTERGDEM
- ASTERGDEMv2.0下载链接:https://earthexplorer.usgs.gov/
- 关于详细介绍和使用指南,参见[Introduction of ASTGDEMv2.pdf](https://github.com/HeZhang1994/digital-elevation-model/blob/master/Introduction%20of%20ASTGDEMv20.pdf)。
### EUDEM
- EUDEMv1.1下载链接:https://land.copernicus.eu/imagery-in-situ/eu-dem/eu-dem-v1.1
- 关于详细介绍和使用指南,参见[这里](https://land.copernicus.eu/imagery-in-situ/eu-dem/eu-dem-v1.1?tab=metadata)。
## 依赖项
* __gdal (osgeo) 1.11.3__
* __matplotlib 3.0.2__
* __numpy 1.15.4__
* __pandas 0.23.4__
下述**GDAL**安装步骤(1-2)总结自[mothergeo](https://mothergeo-py.readthedocs.io/en/latest/development/how-to/gdal-ubuntu-pkg.html)。
1. 在终端安装**GDAL Development Libraries**并将环境变量导出至编译器。
```bash
$ sudo apt-get install libgdal-dev
$ export CPLUS_INCLUDE_PATH=/usr/include/gdal
$ export C_INCLUDE_PATH=/usr/include/gdal
```
2. 在终端安装**GDAL Python Libraries**。
```bash
$ pip install GDAL
```
如果出现*错误*:`cpl_vsi_error.h: No such file or directory`,请尝试下述步骤。
3. 在终端查看**GDAL Python Libraries**所需的版本。
```bash
$ gdal-config --version
```
4. 下载对应GDAL版本(例如,`1.11.3`)的源文件(例如,`gdal-1.11.3.tar.gz`)自[这里](http://trac.osgeo.org/gdal/wiki/DownloadSource)。
5. 在终端手动安装**GDAL Python Libraries**。
```bash
$ cd path/of/downloaded/gdal/package
~$ tar -xvzf gdal-{VERSION}.tar.gz
# 例如, ~$ tar -xvzf gdal-1.11.3.tar.gz
~$ cd extracted/gdal/folder
# 例如, ~$ cd gdal-1.11.3
~$ cd swig
~$ cd python
# setup.py存在于该目录下。
~$ python setup.py build_ext --include-dirs=/usr/include/gdal/
~$ python setup.py install
```
6. 在Python中运行`>>> from osgeo import gdal`。如果没有报错,则安装完成。
## ASTERGDEM处理流程图
## 使用方法
原始DEM文件的目录列表如下。
└── Data/
├── DATA_ASTGDEMv20/
│ └── EPSG4326_s/
│ ├── ASTGTM2_N51W001_dem.tif
│ └── ASTGTM2_N51E000_dem.tif
└── DATA_EUDEMv11/
└── EUDEMv11_EPSG3035.tif
### ASTERGDEM的使用方法
1. 下载DEM文件`ASTGTM2_N51W001_dem.tif`和`ASTGTM2_N51E000_dem.tif`自[这里](https://earthexplorer.usgs.gov/)。
2. 复制DEM文件到文件夹`DATA/DATA_ASTGDEMv20/EPSG4326_s/`。
3. 运行`run_DEM_ASTGDEMv20.py`或`run_DEM_ASTGDEMv20_ipy.ipynb`,以处理ASTERGDEMv2.0的数字高程模型。
4. 运行`run_DEM_ASTGDEMv20.py`的日志可以参见`Log_run_DEM_ASTGDEMv20.txt`。
### EUDEM的使用方法
1. 下载DEM文件`eu_dem_v11_E30N30.tif`自[这里](https://land.copernicus.eu/imagery-in-situ/eu-dem/eu-dem-v1.1)。
2. 复制DEM文件到文件夹`DATA/DATA_EUDEMv11/`并重命名为`EUDEMv11_EPSG3035.tif`。
3. 运行`run_DEM_EUDEMv11.py`或`run_DEM_EUDEMv11_ipy.ipynb`,以处理EUDEMv1.1的数字高程模型。
4. 运行`run_DEM_EUDEMv11.py`的日志可以参见`Log_run_DEM_EUDEMv11.txt`。
## 结果
### 伦敦数字高程模型图像
- **Pseudo Mercator**投影坐标系下的ASTERGDEMv2.0图像
- **BNG**投影坐标系下的ASTERGDEMv2.0图像
- **LAEA**投影坐标系下的ASTERGDEMv2.0图像
### 伦敦海拔
- 伦敦24个位置的海拔值(米)
| No. of Location | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24
| --------------- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | --
| ASTGDEMv20_WD | 18 | 18 | 38 | 40 | 65 | 26 | 35 | 31 | 17 | 79 | 13 | 41 | 62 | 82 | 9 | 13 | 31 | 31 | 15 | 22 | 24 | 40 | 8 | 40
| ASTGDEMv20_UK | 14 | 14 | 36 | 25 | 60 | 37 | 33 | 40 | 20 | 68 | 12 | 25 | 62 | 59 | 15 | 18 | 22 | 22 | 15 | 21 | 14 | 33 | 8 | 47
| ASTGDEMv20_EU | 18 | 18 | 38 | 40 | 65 | 26 | 35 | 31 | 17 | 79 | 13 | 41 | 62 | 82 | 9 | 13 | 31 | 31 | 15 | 22 | 24 | 40 | 8 | 40
| EUDEMv11_WD | 12 | 12 | 37 | 30 | 61 | 25 | 29 | 36 | 11 | 66 | 11 | 31 | 64 | 79 | 7 | 27 | 25 | 25 | 14 | 15 | 13 | 32 | 5 | 36
| EUDEMv11_UK | 12 | 12 | 37 | 26 | 58 | 30 | 32 | 35 | 11 | 71 | 8 | 30 | 66 | 78 | 8 | 26 | 24 | 24 | 8 | 16 | 13 | 32 | 9 | 35
| EUDEMv11_EU | 12 | 12 | 37 | 30 | 61 | 25 | 29 | 36 | 11 | 66 | 11 | 31 | 64 | 79 | 7 | 27 | 25 | 25 | 14 | 15 | 13 | 32 | 5 | 36
## 参考
[1] [EPSG 4326 vs EPSG 3857 (projections, datums, coordinate systems, and more!)](http://lyzidiamond.com/posts/4326-vs-3857)
[2] [Coordinate systems and projections for beginners](https://communityhub.esriuk.com/geoxchange/2012/3/26/coordinate-systems-and-projections-for-beginners.html)
[3] [CSDN博客](https://blog.csdn.net/liuhailiuhai12/article/details/75007417)