爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 22833|回复: 23

[学习总结]如何利用GIS建模批量处理气象数据--以micaps 第四类数据空间插值为例

[复制链接]

新浪微博达人勋

发表于 2016-10-31 23:04:15 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
本帖最后由 方自之 于 2016-11-1 13:40 编辑

之前从来没有用过ArcGIS,最近自学了点,很多专业概念弄不清,栅格数据矢量数据什么的,学无止境,这篇不算教程,拿出来让老司机带带路。欢迎大家多多批评指正!为了学习方便,我安装了GIS10.2中文版,这里埋个伏笔。
       数据介绍:micaps 第四类数据,其实就是规则格点化数据,我们以降水数据为例。
       目的       :把5*5KM数据用GIS现有的插值工具插值到1*1KM
       技术点    :1、如何用GIS读取气象数据;2、如何利用建模工具批量处理 (会的人可以不用往下看了)
      工具         :ArcGIS, python
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

第一部分:准备数据
先看一下数据:
数据示例

数据示例

数据示例





重要的文件头信息:

重要的文件头信息

重要的文件头信息

熟悉micaps数据的同学知道这类是第四类格式。我们想用GIS打开这类数据,需要改写文件头:将格点间距,格点数,起始经纬度写成GIS规定的格式:
其实很简单,如图:《GIS文件头》

GIS文件头

GIS文件头

自上而下分别为:x方向格点数,y方向格点数,起始经度,起始纬度,格点距离,缺测值。
大量数据怎么办呢?写个python脚本就可以了:

python脚本

python脚本


(我的python也是刚学,写得比较幼稚,轻喷)
第二部分:利用GIS插值
我用的是ArcGIS10.2。已经提供了一些比较成熟的空间插值方法:
《插值工具栏》

插值工具栏

插值工具栏


先介绍一下GIS的步骤,这里有点蛋疼,因为micaps数据属于ASCII数据,可以转换为栅格数据,但栅格数据不能直接插值,需要转化为点数据,所以我的方法比较绕,这里还请老司机带路。
于是,我的步骤是:ASCII数据转换为栅格数据——栅格数据转换为点——IDW插值——栅格转为ASCII数据
想象一下,处理7天的小时降水,6套产品,一共有6*7*24个文件,每个要靠鼠标点点点会哭的,而且GIS每一步都不会保留原文件名,为了不混淆需要手动更正文件名,所以可不敢手动点。某位哲人说过:凡是需要重复3次的工作一定有人已经写好了程序。没错,上述程序都可以用GIS带的arcpy的包靠python写脚本完成。但楼主没有解决arcpy与楼主电脑自己用的python的版本兼容问题(自己的是2.7.12;GIS带的是2.7.5),所以没有用python脚本(欢迎老司机带路),幸亏GIS
给不会python的人留了后路,这就是建模工具,说简单就是搭积木,画技术路线。
在工具栏里的地理处理菜单里可以找到模型构建器

模型构建器

模型构建器


将我们需要的工具从右边的工具列表中拉进来就可以了,最初每个工具模块是白色的,将他们合理的首尾相连,即连对输入和输出,并设置好参数,模块就会变为彩色。但这只是走通了流程,要解决批量处理的问题还要借助一个工具:迭代器

迭代器

迭代器

要根据具体需求选择迭代器,说白了就是循环,我们这里用到的是文件迭代器。原理就是在指定路径内的所有包含默认字段的文件依次打开处理,可选文件类型。

建模完成

建模完成

这样我们就完成了建模,最初的输入文件使用迭代器遍历所有符合条件的文件,依次打开每一个文件执行我们设计的流程,最后的输出结果我们用到行内变量%Name%来替换,这样就可以实现动态给予文件名了,在这里我们输入文件与输出文件名称一样,输出文件加一个“_1km”的后缀。这样的好处就是不会混淆数据。
伏笔来了,最开始提到安装了汉化包,确实帮助绕过了许多难以理解的单词,但问题在于:汉化包有可能会破坏一些变量,比如这里的“名称”,需要把它还原成“Name”,后面的%Name%行内变量才有效!楼主当时一早上没查出哪里出错了,头发抓掉一大把,绝望之下导出了python脚本模板,发现怎么代码里有没有注释的中文,恍然大悟。汉化包使用需谨慎。是的,GIS可以将建模直接导出成python脚本,好好学python

最终版

最终版

点运行即可。
明早回完善一下,并补充几个讨论。##################################讨论 2016110109#########################
1、为什么不用python或者fortran自己写个插值算法?
首先是为了学习GIS,所以尽量靠GIS实现。其次避免自己编程出错。最后,很多气象系统都是基于GIS开发的,为了与研发部门对接,我们需要用他们擅长的工具。
2、如何能用起来arcpy?
arcpy在安装GIS时会自动安装python,但版本老的(因为我的GIS也是老版本的破解版)2.7.5  楼主之前学习python所以自己安装了最新的python2.7.12。我理解的arcpy是一个GIS基于python的开发包,与numpy,matplotlib等一样,但无论是pip还是canopy上都搜索不到arcpy这个包,我想可能是公司并没有公开吧,比较GIS是收费的,如果arcpy免费,那么python+arcpy可以实现很大部分的GIS功能了。所以我自己没能在自己的电脑里用起来arcpy,求老司机带路。
来自keenmisty  :建议用pyQGIS
3、python读取文本文件的问题
我的python入门是学习GIRD气象朱学霸的系列,文中读取文件的方法是将全文读成字符串,再做切片和转化为字符。我没有学会,偷懒用了numpy里的genfromtxt函数,文件头直接用skip_header略去。如果文件每一行都是固定列数,那么这个方法很好用,但是我在处理多套数据产品发现不一定每一套数据都可以,会在某几行出现少数据的情况,这样就会报错,如何用python高效读取micaps气象数据还请老司机带路









密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-4-12 09:00:20 | 显示全部楼层
感谢楼主分享!建议第二部分插值可以不用这么麻烦,用Data management tools中raster中的resample,进行栅格数据的重采样批处理,可以一步到位。另外10.2汉化版本不仅是行内变量不识别,保存路径最好也不能带中文。但是我经过测试,在10.1版本下是可以的。
密码修改失败请联系微信:mofangbao
回复 支持 2 反对 0

使用道具 举报

新浪微博达人勋

发表于 2016-11-1 08:49:10 | 显示全部楼层
像楼主学习了~GIS是个很好的东西,因为功能太过强大,所以需要我们不断去学习,谢谢楼主的经验贴~
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-11-1 08:57:56 | 显示全部楼层
多谢楼主分享{:5_213:}
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-11-1 09:58:36 | 显示全部楼层
是的,汉化版有各种各样的问题。然后arcpy是不会免费的,因为ESRI要靠这个挣钱...

楼主可以考虑用PyQGIS,调用QGIS这一开源GIS平台使用...
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-11-1 13:43:14 | 显示全部楼层
keenmisty 发表于 2016-11-1 09:58
是的,汉化版有各种各样的问题。然后arcpy是不会免费的,因为ESRI要靠这个挣钱...

楼主可以考虑用PyQGIS ...

谢谢老司机带路!python和GIS都有许多值得学习的地方,提高工作和科研效率,我两个都是刚起步,以后多交流!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-11-1 13:43:44 | 显示全部楼层
林夕 发表于 2016-11-1 08:49
像楼主学习了~GIS是个很好的东西,因为功能太过强大,所以需要我们不断去学习,谢谢楼主的经验贴~

版主以后多多指导!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-11-1 14:33:58 | 显示全部楼层
非常有用,楼主辛苦了,感谢分享!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-11-1 20:53:41 | 显示全部楼层
感谢楼主!!!!!!!!!!!
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2017-3-29 15:49:40 | 显示全部楼层
楼主的帖子太棒啦,给气象小白共搭建了从生态到气象的桥梁啊
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-4-7 10:08:00 | 显示全部楼层
楼主好帖,先前以为GIS处理气象数据比较麻烦,看了这个好多了
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表