- 积分
- 6727
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2014-7-6
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
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文件头
自上而下分别为:x方向格点数,y方向格点数,起始经度,起始纬度,格点距离,缺测值。
大量数据怎么办呢?写个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气象数据还请老司机带路
|
|