写在前面

  对于大部分地学或气象学的学者来说,数据处理是一个很大的工程,动辄数小时或者数天的数据处理时间。如果没有很好的工具或者方法,在面对多时序(例如时序遥感数据),大尺度(例如全国范围)等数据分析研究时,就显得极为困难,因为数据处理本身就非常的耗时耗力。

  几年前读研究生时,我第一次初次接触遥感数据(以及气象数据),作为领域新人,面对庞大与复杂的数据,除了对数据、数据处理过程的一脸茫然,也对后续的研究不知所措。当然,在老师的带领下,逐渐入道IDL,并利用IDL完成了所有数据的处理,开展了相关的研究;也学会了ENVI、Arcgis之类的工具;顺利的毕了业。

  诚然,研究生阶段使我收获颇多。对数据以及数据处理也有了长远的进步,例如:可以使用批量处理VBA处理气象站点数据;利用IDL处理栅格数据(后续全部转为Python实现);学会了SPPS、Origin等专业软件(虽然前期利用Python绘图,可能是因为懒,或者Origin过于方便,后期全部转为了Origin);等等。也算为我现在的想法奠定了基础。

  不知何时起,萌生了一种将我所接触的遥感、气象数据处理方法与算法写成函数包汇总在一起的想法。后来工作过程中的实践也证明,这种方法对提高工作效率,对个人的成长进步非常有效。所以才有<地理与气象数据分析(geographic and meteorological data analysis)>gma这个Python函数包。

  目前,gma可实现 栅格数据处理(例如镶嵌、裁剪、重采样、重投影、格式转换、数据融合等),矢量数据处理(例如裁剪、擦除、交集、融合、重投影等),一些缺失值插补算法(例如线性插值)、平滑算法(例如SG平滑),一些指数算法(例如NDVI、ET0等等) 以及一些 系统交互操作 ,并配有中文的函数帮助说明,这些功能算法已经封装,只需调用对应的函数,设置相应的参数即可实现。后续也会逐步补充更多的算法和功能。

  希望可以得到各位专家、同仁和朋友的支持与信赖,也希望得到各位的认可以及反馈。

目录

  • 写在前面
  • 0 gma安装
    • 0.1 Python环境
    • 0.2 依赖库
    • 0.3 安装gma
  • 1 gma组织方式
  • 2 gma函数简介
    • 2.1 index指数运算
    • 2.2 math数学运算
    • 2.3 osf系统交互
    • 2.4 rasp栅格处理
    • 2.5 vesp矢量处理
  • 3 key默认参数
  • 4 gma函数帮助
  • 写在最后
    • 作者简介

0 gma安装

0.1 Python环境

  建议安装Anaconda创建Python环境。Anaconda指的是一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项。
  本文采用Anaconda的Windows版,版本为(点击下载):

Anaconda3 2021.05(Python 3.8.8 64-bit)

  gma需求的 Python版本应 >= 3.8

0.2 依赖库

  gma的构建依赖gdal,numpy,pandas和scipy等库,这些库是gma实现功能的基础。由于gdal不是一个纯Python库,需要下载whl包手动安装,获取地址:

https://www.lfd.uci.edu/~gohlke/pythonlibs/

从该网站下载对应版本GDAL的WHL包。Python 3.8 可下载 < GDAL-3.3.3-cp38-cp38-win_amd64.whl > 版本。

  例如下载至D盘根目录,则文件路径为 D:\GDAL-3.3.3-cp38-cp38-win_amd64.whl

  打开conda窗口(一般为 开始 - 所有程序 - Anaconda3 (64-bit) - Anaconda Powershell Prompt),使用以下命令安装gdal(本文均使用默认环境):

pip install "D:\GDAL-3.3.3-cp38-cp38-win_amd64.whl"

0.3 安装gma

  gma已经上传至pypi,可以直接在conda或Windows终端中输入以下命令安装:

pip install gma

  在安装gma时,依赖的numpy,pandas和scipy如果不存在则会自动安装(需联网)。
  检查gma版本或是否安装成功:

(base) PS C:\Users\xxxx> conda list gma
# packages in environment at C:\Users\xxxx\anaconda3:
#
# Name                    Version                   Build  Channel
gma                       1.0.0                    pypi_0    pypi

  出现gma的详细信息则说明gma已经成功安装。

1 gma组织方式

  下表列出了gma库的组织结构。

gma

  • algorithm       ||栅格、矢量操作的基础算法

    • raster          ——栅格处理, rasp调用的算法
    • vector          ——矢量处理,vesp调用的算法
  • Relation      || 关键 关联参数 设置
    • error          ——输入参数检查,错误提示。
    • key          ——栅格/矢量 处理的高阶参数设置,例如压缩超大TIFF支持等。
    • palmer          —— 帕尔默旱涝指数及其相关指数的原始算法(尚未整合,暂不可用)。
    • utils          ——palmer的依赖包。
  • index      || 遥感、气象指数算法。
  • math      || 一些数学方法。
  • osf      || 系统交互操作。
  • rasp      || 栅格处理函数包。
  • vesp      || 矢量处理函数包。

2 gma函数简介

2.1 index指数运算

表 2.1 index指数运算(基于数组)主要函数简介

模块 函数 引用(简版) 说明 解释
index EVI gma.index.EVI 【EVI】 增强植被指数
NDBI gma.index.NDBI 【NDBI】 归一化建筑指数
NDWI gma.index.NDWI 【NDWI】 归一化水指数
NDVI gma.index.NDVI 【NDVI】 归一化植被指数
PM_ET0 gma.index.PM_ET0 【PM_ET0】 Penman-Monteith 法作物参考蒸散量
TVDI gma.index.TVDI 【TVDI】 温度植被干旱指数

2.2 math数学运算

表 2.2 math数学运算主要函数简介

模块 函数/类 方法 引用(简版) 说明 解释
math _DFToNumeric gma.math._DFToNumeric 【强制转换为数字】 强制将 <数据帧> 中的数据转换数字, 其中不能转换为数字的字符串将被转换为 NAN
FillNoData gma.math.FillNoData 【填充缺失值】 对缺失值或异常值值进行插值替换
Smooth SavitzkyGolay gma.math.Smooth.SavitzkyGolay 【SavitzkyGolay】 利用SavitzkyGolay方法对数据进行平滑
MovingAverage gma.math.Smooth.MovingAverage 【滑动平均】 利用滑动平均法对数据进行平滑
Evaluation RMSE gma.math.Evaluation.RMSE 【RMSE】 均方根误差
NRMSE gma.math.Evaluation.NRMSE 【NRMSE】 归一化均方根误差
D gma.math.Evaluation.D 【D】 D指标
r gma.math.Evaluation.r 【r,P】 相关系数和显著性水平
R2 gma.math.Evaluation.R2 【R2 决定系数
MaxAE gma.math.Evaluation.MaxAE 【MaxAE】 最大绝对误差
Select gma.math.Evaluation.Select 【选择方法】 选择Evaluation中需要计算的一个或多个评价指标进行计算
Methods gma.math.Evaluation.Methods 【记录方法】 记录Evaluation类中所有的评估方法

2.3 osf系统交互

表 2.3 osf系统交互主要函数简介

模块 函数/类 方法 引用(简版) 说明 解释
osf GetPath gma.osf.GetPath 【获取路径】 查找目标文件
Zip gma.osf.Zip 【压缩】 压缩文件或文件夹为 .zip 文件
UnZip gma.osf.UnZip 【解压缩】 解压缩 .zip 文件
DateSeries gma.osf.DateSeries 【日期序列】 构造一个日期序列
Rename Modify gma.osf.Rename.Modify 【修改】 将原有文件(夹)名修改为新名
Replace gma.osf.Rename.Replace 【替换】 替换原文件(夹)名中字符串后作为新文件(夹)名
Intercept gma.osf.Rename.Intercept 【截取】 截取文件(夹)名中的部分字符串作为新文件(夹)名

2.4 rasp栅格处理

表 2.4 rasp栅格处理主要函数简介

模块 函数/类 方法 引用(简版) 说明 解释
rasp BandSynthesis gma.rasp.BandSynthesis 【文件合并】 单波段文件合成多波段文件
BandDecomposition gma.rasp.BandDecomposition 【波段分解】 多波段文件拆分为单波段文件
Clip gma.rasp.Clip 【裁剪】 按矢量边界裁剪栅格
ToOtherFormat gma.rasp.ToOtherFormat 【格式转换】 一种栅格格式转换为另一种栅格格式
Mosaic gma.rasp.Mosaic 【影像镶嵌】 将多个栅格数据集合并到一个新的栅格数据集中
Resample gma.rasp.Resample 【重采样】 更改栅格数据的空间分辨率
Reproject gma.rasp.Reproject 【重投影】 将空间数据从一种坐标系投影到另一种坐标系
ChangeDataType gma.rasp.ChangeDataType 【数据类型转换】 改变栅格的数据类型。
MultiSDSToTif gma.rasp.MultiSDSToTif 【多维数据转GTiff】 将含有子数据集的多维数据提取为GTiff
ToVector gma.rasp.ToVector 【栅格转矢量】 将栅格数据转换为矢量数据
WriteRaster gma.rasp.WriteRaster 【写出栅格】 将numpy数组保存为栅格
GenerateOVR gma.rasp.GenerateOVR 【构建栅格金字塔】 为GTiff文件构造.ovr栅格金字塔,或为其他类型的栅格数据强制构造.ovr金字塔
OrthophotoCorrection gma.rasp.OrthophotoCorrection 【正射矫正】 根据有理多项式系数(RPC)对影像进行正射校正
Deformation gma.rasp.Deformation 【流程化处理】 完成镶嵌-裁剪-重采样-重投影-格式转换等其中一个或多个功能
Fusion Pansharpen gma.rasp.Fusion.Pansharpen 【Pansharpen】 对全色影像和多光谱影像基于Pansharpen方法进行融合
AddColorTable gma.rasp.AddColorTable 【添加色彩映射表】 为栅格数据添加色彩映射

2.5 vesp矢量处理

表 2.5 vesp矢量处理主要函数简介

模块 函数 引用(简版) 说明 解释
vesp Split gma.vesp.Split 【矢量文件分解】 将矢量文件的每个要素拆分为单个文件
Check gma.vesp.Check 【检查】 矢量文件有效性检查
ToRaster gma.vesp.ToRaster 【矢量转栅格】 将矢量图层转换为栅格文件
Clip gma.vesp.Clip 【裁剪】 矢量裁剪矢量
Erase gma.vesp.Erase 【擦除】 从第一个矢量中去除与第二个矢量交叉的部分
Intersection gma.vesp.Intersection 【交集】 取两个矢量的交集
Union gma.vesp.Union 【融合】 取两个矢量的并集
Update gma.vesp.Update 【更新】 用一个矢量更新另一个矢量
ToOtherFormat gma.vesp.ToOtherFormat 【格式转换】 一种矢量格式转换为另一种矢量格式
Reproject gma.vesp.Reproject 【重投影】 转换矢量格式的投影

3 key默认参数

默认参数已经内置。下表仅列出gma定义了的参数,后期可能会对其进行修改。

表 3 key默认参数设置简介

变量 类型 说明 详细介绍
RasterFormat 字典 支持的栅格数据驱动 ‘AAIGrid’, ‘BT’, ‘CALS’, ‘COG’, ‘DTED’, ‘EHdr’, ‘ENVI’, ‘ERS’, ‘EXR’, ‘FIT’, ‘GIF’, ‘GPKG’, ‘GRIB’, ‘GS7BG’, ‘GSAG’, ‘GSBG’, ‘GTiff’, ‘HDF4Image’,‘HF2’, ‘HFA’, ‘ISCE’, ‘ISIS2’, ‘ISIS3’, ‘JP2OpenJPEG’, ‘JPEG’, ‘LAN’, ‘MBTiles’, ‘XPM’, ‘XYZ’, ‘netCDF’, ‘MFF2’, ‘MRF’, ‘NITF’, ‘PAux’, ‘PCIDSK’, ‘PCRaster’, ‘PNG’, ‘RST’, ‘Rasterlite’, ‘SIGDEM’, ‘USGSDEM’, ‘VICAR’, ‘VRT’
VectorFormat 字典 支持的矢量数据驱动 ‘ESRI Shapefile’, ‘PCIDSK’, ‘PDS4’, ‘PDF’, ‘MBTiles’, ‘MapInfo File’, ‘Memory’, ‘CSV’, ‘GML’, ‘LIBKML’, ‘KML’, ‘GeoJSON’, ‘OGR_GMT’, ‘GPKG’, ‘SQLite’, ‘WAsP’, ‘FlatGeobuf’, ‘Geoconcept’, ‘GeoRSS’, ‘ODS’, ‘XLSX’, ‘JML’, ‘VDV’, ‘MVT’, ‘MapML’
DataType 字典 数据类型 ‘未知类型’: 0, ‘8位无符号整型’: 1, ‘16位无符号整型’: 2, ‘16位整型’: 3, ‘32位无符号整型’: 4,‘32位整型’: 5, ‘32位浮点’: 6, ‘64位浮点’: 7, ‘16位复整型’: 8, ‘32位复整型’: 9,‘32位复浮点型’: 10, ‘64位复浮点型’: 11
ResampleMethod 字典 重采样方法 0: ‘Nearest Neighbour’, 1: ‘Bilinear’, 2: ‘Cubic’, 3: ‘CubicSpline’,4: ‘Lanczos’, 5: ‘Average’, 6: ‘RMS’, 7: ‘Mode’
FeatureType 字典 矢量要素类型 ‘未知’:0,‘点’:1, ‘线’:2, ‘面’:3, ‘多点’:4, ‘多线’:5, ‘多面’:6
GetGTiffOptions 函数 GTiff的创建参数 1. 不生成 ESRI 世界文件(.tfw )。
2. 不生成(.RPB)文件来描述 RPC(有理多项式系数)。
3. 不设置数据位深(NBITS)。
4. 默认 ‘LZW’ 压缩。
5. 默认通过估算生成文件大小来确定是否生成 BIGTIFF 文件。
GenRCOptions 函数 根据栅格驱动生成创建选项
GetRasterEXTFromDriver 函数 根据栅格驱动格式返回扩展名
GetSHPOptions 函数 ESRI Shapefile 的创建参数 1. 默认创建矢量文件的字段编码为’UTF-8’。
2. 自动调整字段大小。
3. 不强制解除 ‘.SHP’、’.DBF’ 文件2GB大小的限制。
4. 不生成空间索引文件(.qix)。
GenVCOptions 函数 根据矢量驱动生成创建选项
GetVectorEXTFromDriver 函数 根据矢量驱动格式返回扩展名

4 gma函数帮助

  为了使gma使用更加简单直观,gma中所有的函数帮助均提供中文帮助。例如:

import gma
help(gma.rasp.Clip)

  中文帮助如下:

Help on function Clip in module gma.rasp:Clip(InFile, OutFile, CutLineFile, InNoData=None, OutNoData=None, MaskBoundary=True, OutFormat='GTiff')简介----------按矢量裁剪栅格。参数----------InFile: str。输入栅格路径。OutFile: str。输出栅格路径。CutLineFile: str。裁剪矢量文件路径。**可选参数----------InNoData = number。输入栅格的无效值。默认不指定(None)无效值。OutNoData = number。输出栅格的无效值。默认不指定(None)无效值。MaskBoundary = bool。是否掩膜边界外数据。默认掩膜(True)。OutFormat = str。输出文件格式,默认为 'GTiff'。其他格式详见 ToOtherFormat 函数。

  其他内容后续会逐一介绍和说明。感谢大家理解。详细的函数帮助可见:自建 | gma函数详细帮助 或利用help调出相关帮助,本文不在详细解释。

写在最后

  由于时间和精力的限制,目前可用的函数还不完善。部分函数为了gma的构建进行了修改,还未完成完整的测试。如果存在问题,我会及时进行修复。
  库的构建是一个漫长和持续的过程,后续gma会添加更多的函数方法,以期使地理处理过程更加的简单方便。
  近期的gma完善计划如下:

December2022FebruaryMarchAprilMayJuneJulyAugust加入DEM处理函数 加入气象指标函数 优化、修改 现有计划gma近期完善内容

作者简介

  洛,毕业于中国农业科学院,是一名不见经传的小小算法工程师,家乡河南洛阳,当前在北京从事一份还凑活的工作。目前致力于完成一套中文版开源的遥感、气象及相关算法体系(简单来说就是汇集其他优秀的Python库,将常用的功能封装好),使各类常用流程简单化。

  期待与各位同学、同事与朋友的共同进步。有需求或者疑问可联系微信:Luo_Suppe。

自建 | 地理与气象数据分析(geographic and meteorological data analysis)(gma)的说明与使用相关推荐

  1. 应用定性数据分析包RQDA(Qualitative Data Analysis)和文挖掘框架包tm结合进行文本挖掘

    http://cos.name/cn/topic/102130 应用定性数据分析包RQDA(Qualitative Data Analysis)和文挖掘框架包tm结合进行文本挖掘. 在对访谈内容或剧本 ...

  2. python进行探索性数据分析EDA(Exploratory Data Analysis)分析

    python进行探索性数据分析EDA(Exploratory Data Analysis)分析 show holy respect to python community, for there ded ...

  3. 数据分析---《Python for Data Analysis》学习笔记【04】

    <Python for Data Analysis>一书由Wes Mckinney所著,中文译名是<利用Python进行数据分析>.这里记录一下学习过程,其中有些方法和书中不同 ...

  4. 第14章 数据分析案例--Python for Data Analysis 2nd

    本书正文的最后一章,我们来看一些真实世界的数据集.对于每个数据集,我们会用之前介绍的方法,从原始数据中提取有意义的内容.展示的方法适用于其它数据集,也包括你的.本章包含了一些各种各样的案例数据集,可以 ...

  5. 玩转Python大数据分析 《Python for Data Analysis》的读书笔记-第05页

    matplotlab matplotlib类似于matlab软件,是Python下的2维数据可视化软件,集成在了Python的IPython里了.用matplotlib画的图表具有很强的交互性,可用工 ...

  6. 玩转Python大数据分析 《Python for Data Analysis》的读书笔记-第08页

    在安装了EPD学习环境后读者需要安装Pandas,读者可以从pypi.python.org/pypi/pandas页面下在pandas安装包,(https://pypi.python.org/pack ...

  7. 《利用Python进行数据分析: Python for Data Analysis 》学习随笔

    NoteBook of <Data Analysis with Python> 3.IPython基础 Tab自动补齐 变量名 变量方法 路径 解释 ?解释, ??显示函数源码 ?搜索命名 ...

  8. 基于大数据重庆市气象数据分析 计算机毕设源码24928

    摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题.针对气象数据等问题,对气象 ...

  9. 【Python-ML】探索式数据分析EDA(Exploratory Data Analysis)

    # -*- coding: utf-8 -*- ''' Created on 2018年1月24日 @author: Jason.F @summary: 有监督回归学习-探索式数据分析(EDA,Exp ...

最新文章

  1. 实现微服务架构-微服务架构需要解决的问题
  2. hdu 5101(二分)
  3. sys.dbms_transaction.local_transaction_id出现的问题
  4. Java生成pgp密钥对_在Javascript中生成PGP密钥对,并使用加密的PGP私钥对文本进行签名...
  5. 如何在 Blazor WebAssembly中 使用 功能开关
  6. [Kaggle] Digit Recognizer 手写数字识别(神经网络)
  7. vs.net各版本解决方案相互转换工具
  8. pytorch 构造读取数据的工具类 Dataset 与 DataLoader (pytorch Data学习一)
  9. 大型企业用什么orm_在大型仓储物流企业中使用什么类型的货架更为合适呢?
  10. select for update作用
  11. 深入浅出hive-hive简介
  12. python调用msf_使用python操纵metasploit简单小记
  13. ListView优化
  14. 音视频开发四:FFmpeg音视频处理的基本命令使用
  15. Python·@property属性
  16. 入手评测 i3 12100F 和 i5 12400F选哪个
  17. c语言模拟鼠标键盘控制电脑
  18. 实力踩坑:There is no getter for property named ‘XXX‘ ‘class XXX‘
  19. 地市级公安交管融媒体中心运营模式研究
  20. 网站建设需要要考虑到哪些细节

热门文章

  1. 为什么闹钟设置了却不响_手机闹钟不响是怎么回事
  2. java中static x 5_《JAVA程序设计》(A卷)
  3. SolidWorks真香(二)草图设计和实体建模
  4. 《纸人》开发分享:如何做出一款具有中国特色的恐怖游戏?
  5. 重磅:快手公司厕所装坑位计时器,网友:再也不能带薪拉屎了!
  6. 针对挖矿木马的一些基本认识
  7. Linux必会100个命令(二十六)tar
  8. 【全文翻译】YOLOv3:增量改进
  9. 自定义异常,throw,throws和带你去旅行
  10. 英语是计算机编程的根。从零开始学英语(日常用语01-20句)