数据介绍:
该数据集是“中国雪深长时间序列数据集(1978-2012)”的升级版本。
中国雪深长时间序列数据集(1979-2021)采用经纬度投影方式,数据为浮点型。数据集按年份存储,每个年份是一个压缩包,每个压缩包内包含每天的积雪深度文件。每天的雪深用一个txt文件存储,文件的名称为“yyyyddd.txt”,其中yyyy代表年,ddd代表Julian日期,雪深单位为厘米(cm)。比如2005001.txt就代表这个ASCII文件描述2005年第一天我国的积雪覆盖状况。数据集的ASCII码文件是由头文件和主体内容构成,头文件包括行数、列数、x-轴中心点坐标、y-轴中心点坐标、栅格大小、无数据区标值等6行描述信息组成,主体内容就是根据行数列数组成的二维数组,雪深单位为厘米(cm)。因为该数据集中的所有ASCII码文件所描述的空间为我国全国范围,所以这些文件的头文件是不变的,现将头文件摘录如下(其中xllcenter, yllcenter, cellsize单位为度):
ncols 321
nrows 161
xllcenter 60
yllcenter 15
cellsize 0.25
NODATA_value -1
数据来源:中国雪深长时间序列数据集(1979-2021)- 时空三极环境大数据平台
作者:车涛 博士
数据下载:使用推荐的Filezilla下载器,输入以下信息
Ftp server: 210.72.14.198
Ftp username: download_635854
Ftp password: 05661975
使用FTP下载完之后,解压缩,发现为逐日的txt文件。
在介绍中得知,数据格式为ASCII文件,且缺少头文件信息,遂在python3环境下,添加头文件信息,代码如下:
import os
txt = os.listdir("F:/txttest/") # 下载文件解压后存放目录
for txtname in txt:
with open("F:/txttest/"+txtname, 'r+',encoding='utf-8') as f:
content = f.read()
f.seek(0, 0)
f.write('NCOLS 321\n')
f.write('NROWS 161\n')
f.write('XLLCENTER 60\n')
f.write('YLLCENTER 15\n')
f.write('CELLSIZE 0.25\n')
f.write('NODATA_VALUE -1\n' + content)
print("All header files have been added")
添加头文件完成后,调用arcpy中ASCII转栅格组件,转为栅格形式,代码如下:
# coding=utf-8
import sys
reload(sys)
sys.setdefaultencoding('utf8')
import arcpy
arcpy.env.workspace = "F:/txttest/" #文件路径
all_txt = arcpy.ListFiles("*.txt")
outpath = "F:/snowdepth/" #输出路径
for txtname in all_txt:
inASCII = "F:/txttest/" + txtname
h = txtname.split(".")[0]
outRaster = outpath + h + ".tif"
arcpy.ASCIIToRaster_conversion(inASCII, outRaster, "FLOAT")
print txtname