SRTM数据处理(使用Python语言)

背景

笔者在做GIS相关研究的期间,需要从SRTM数据中提取高程值(数据后缀为.hgt),在经过漫长的网络检索过程后,从https://librenepal.com/article/reading-srtm-data-with-python/处获取到灵感,略微修改,得到下面的代码,希望可以帮助到大家。代码的主要功能是:通过入参传入点的经度和纬度,自动寻找.hgt文件的路径,并通过路径提取该点的高程值。

import os
import json
import numpy as npSAMPLES = 1201  # Change this to 3601 for SRTM1
# HGTDIR = 'hgt'  # All 'hgt' files will be kept here uncompresseddef get_elevation(lon, lat):hgt_file = get_file_name(lon, lat)if hgt_file:return read_elevation_from_file(hgt_file, lon, lat)# Treat it as data void as in SRTM documentation# if file is absentreturn -32768def read_elevation_from_file(hgt_file, lon, lat):with open(hgt_file, 'rb') as hgt_data:# HGT is 16bit signed integer(i2) - big endian(>)elevations = np.fromfile(hgt_data, np.dtype('>i2'), SAMPLES*SAMPLES)\.reshape((SAMPLES, SAMPLES))lat_row = int(round((lat - int(lat)) * (SAMPLES - 1), 0))lon_row = int(round((lon - int(lon)) * (SAMPLES - 1), 0))# print(type(hgt_data))return elevations[SAMPLES - 1 - lat_row, lon_row].astype(int)#   通过lat、lon生成file_name
def get_file_name(lon, lat):"""Returns filename such as N27E086.hgt, concatenatedwith HGTDIR where these 'hgt' files are kept"""if lat >= 0:ns = 'N'elif lat < 0:ns = 'S'if lon >= 0:ew = 'E'elif lon < 0:ew = 'W'hgt_file = "%(ns)s%(lat)02d%(ew)s%(lon)03d.hgt" % {'lat': abs(lat), 'lon': abs(lon), 'ns': ns, 'ew': ew}ab_hgt_file_path = os.path.join(r"D:\我的文档\论文\湖北省地理信息\NASA SRTM1 v3.0 湖北",hgt_file)if os.path.isfile(ab_hgt_file_path):   #os.path.isfile():用于指定路径中是否有现有的文件return ab_hgt_file_pathelse:return Nonelat = 29.978302
lon = 108.62884
print(get_elevation(lon,lat))

SRTM数据提取(使用Python语言)相关推荐

  1. 数据科学导论python语言实现_数据科学导论:Python语言实现(原书第2版)

    数据科学导论:Python语言实现(原书第2版) 作者:(意)阿尔贝托·博斯凯蒂(Alberto Boschetti);(意)卢卡·马萨罗(Luca Massaron) 著 出版日期:2018年01月 ...

  2. python处理数据的优势-Python语言的七大优势

    原标题:Python语言的七大优势 Python 是一门更注重可读性和效率的语言,尤其是相较于 Java,PHP 以及 C++ 这样的语言,它的这两个优势让其在开发者中大受欢迎. 诚然,它有点老了,但 ...

  3. python有什么作用-大数据学习之python语言有什么作用?

    很多人选择学习大数据的时候,首先是要选择合适的开发语言入门,尤其是数据分析这个岗位,很多人选择python语言入门,本文由科多大数据的老师整理,细数python语言的应用领域,辅助各位认识了解pyth ...

  4. 数据科学与python语言——Matplotlib数据可视化基础

    Matplotlib数据可视化基础 一.读取数据与数据处理阶段 1.提取指定行中的数据 2.得到>指定数值的数据 3.得到=指定值得数据 4.整体的数据处理: 二.画图函数 1.plt.subp ...

  5. 针对lammps输出的log文件进行数据提取(python/lammps中log文件分析)

    不喜欢日常机械式的工作,要学会用自己的头脑来偷懒,省下时间打游戏哈哈哈. 本人也是python初学者(本科主要学java),写的博客也是当下学到的知识,全当做个笔记,一是方便自己日后复习,二也希望有读 ...

  6. 【数据平台】python语言NLP库Gensim初识

    1.基本介绍 Gensim是一款开源的第三方Python工具包,用于从原始的非结构化的文本中,无监督地学习到文本隐层的主题向量表达.它支持包括TF-IDF,LSA,LDA,和word2vec在内的多种 ...

  7. 数据科学与python语言——Pandas统计分析基础(时间转换+聚合)

    Pandas统计分析基础(时间转换+聚合) 实验要求一 实验二要求 全部代码 实验要求一 #M表的时间戳类型转为datetime data_Mete['TIMESTAMP']=pd.to_dateti ...

  8. 数据科学与python语言实验——NumPy数值计算基础

    NumPy数值计算基础 实验数据: 链接:https://pan.baidu.com/s/1-E2ShVTdI0X5lwDtMLFFsQ 提取码:0929 代码实现: 之前不会的地方: 1.读取文件 ...

  9. python语言入门p-python入门基础教程04 Python程序基本组成

    Python程序基本组成 Python和其他高级语言一样,几乎都是首先从某些地方接收一些数据(如键盘或文件或者赋值),接着对数据进行必要的处理,之后把处理的结果传到某个地方去(输出到文件.数据库或者打 ...

最新文章

  1. 传雅虎有意收购Hulu 竞争者达6家
  2. 【Python基础】学习用Pandas处理分类数据!
  3. php根据分辨率跳转,使用PHP将分辨率转换为Aspect比率
  4. php中for循环流程图,PHP for循环
  5. Linux ulimit命令(控制shell执行程序的资源、并发)
  6. php paerser,GitHub - iSinser/sinser-php-sdk: 迅析PHP SDK
  7. Struts2漏洞分析,漏洞波及全系版本
  8. python装饰器打印函数执行时间_python装饰器计算函数执行时间
  9. Duplicate key
  10. VC被控制时关闭极域电子教室、破解联想硬盘保护系统密码(上)
  11. 下载Python OpenCV相关资料方法整理
  12. 计算机技术概论知识点,《计算机基础概论》知识点.pdf
  13. 感受亮度与光强,及马赫带效应
  14. Learn Git Branching 答案
  15. VR/AR/MR/XR 几种虚拟现实技术的区别
  16. 基于51单片机的多层电梯(1-16层)运行系统仿真设计_层数可改
  17. 笔记本外接显示器,过一段会自动休眠
  18. 老年人计算机培训信息,老年人学习电脑基础知识
  19. Pytorch:利用迁移学习做图像分类
  20. Vue中的export和export default{}用法

热门文章

  1. 如何对新增用户下载到激活环节进行分析?(案例:时长奖励激励方案)
  2. python换行输出,中间空格相隔输出结果
  3. 《数据库系统概论》之数据库设计六步骤(需求、概念、逻辑、物理、实施、运行维护)
  4. leetcode649.Dota2参议院
  5. 15年计算机专业专升本,2015年江苏专转本各院校各专业分数线
  6. IDEA从零到精通(31)之IDEA如何删除项目
  7. CTF Web题 部分WP
  8. CSDN博客自定义域名以及解析自己的域名到CSDN
  9. js的输入和输出语句
  10. MySQL 5.7版本简介