通过spss转为dat格式
做完(1)-(4)后,表明前期的数据准备工作完成了一部分,需要进一步通过spss转为所需要的格式
1.打开spss后,加载进去excel数据
-
设置好对应的表头信息,如下图所示:
需要注意的是,站点的数据类型为字符型
设置好后,另存为固定ASCII码格式的:
在保存的时候注意spss会有个输出的日志文件:
图中标红的部分需要在脚本中用到
通过第一步和第二步完成了spss的转换,接着需要将栅格的dem数据转化为ASCII码文件,在arcgis中通过数据转化就能够实现,如下图
设置好后,可以开始写插值的脚本了,脚本主要用到splina.exe和lapgrd.exe.splina的脚本如下所示:
ssd2007
0 #插值的单位,0表示无单位
2 #自变量的个数,这里指经纬度
1 #协变量的个数,这里指dem,注意也可以将高程设置为自变量,不用协变量
0
0
1342316.1 6206316.3 0 1 ##前两数是对应dem文件中经度的范围(在arcgis中的source看),但要比dem中的范围要大一点才行
1649788.01 5937788.2 0 1 ##前两数是对应dem文件中纬度的范围,但也要比dem中的范围要大一点才行
-163.422 7371.14 1 1 ##前两数dem文件的上下限
1000
0
3
365 #需要插值的个数,这是是对每天进行插值,故是365个
0
1
1
ssd2007.dat
1000 #站点的个数,可以设置的比实际站点数量大些
5 #标签的宽度,我们的站点都是五位数的,所以是5
(a12,f12.4,f12.4,f12.2,365f12.1) #数据的格式,与上面spss的输出日志保持一致
ssd2007.res
ssd2007.opt
ssd2007.sur
ssd2007.lis
ssd2007.cov
(注意这里要留一行)
lapgrd的脚本如下
ssd2007.sur
0
1
1
1
1342316.25165 6206316.25165 8000 #前两个是dem文件中的经度范围,1000:插值的分辨率
2
1649788.1524 5937788.1524 8000 #前两个是dem中的纬度范围,1000:插值的分辨率,最好和dem的分辨率一致
0
2
chinadem.txt #ascii码的dem文件名称
2
-9999.0
ssd2007_001.grd
ssd2007_002.grd
ssd2007_003.grd
ssd2007_004.grd
ssd2007_005.grd
ssd2007_006.grd
ssd2007_007.grd
ssd2007_008.grd
ssd2007_009.grd
....
ssd2007_365.grd
#注意这里有个空行才行
将上述代码分别复制到记事本中,然后更改后缀为.cmd文件,假设文件名分别为ssd2007s.cmd和ssd2007l.cmd,注意#和#后面的文字需要删除,那个只是为了说明。
新建一个运行的脚本,命名为run.cmd
splina<ssd2007s.cmd>ssd2007s.log
lapgrd<ssd2007l.cmd>ssd2007l.log
将代码复制到run.cmd中,双击run.cmd就能够运行得到结果
注意:上述文件必须都放在同一个文件夹下。
得到grd后需要在arcgis中批量转换为tif格式。