本帖最后由 斩之浪 于 2019-9-16 09:48 编辑
中国地面气候资料日值数据集(V3.0)是遥感、GIS、水文、气候变化等研究领域中的常用数据源。该数据集包含了中国699个基准、基本气象站自1951年1月以来的气压、气温、降水量、蒸发量、相对湿度、风向风速、日照时数和0cm地温要素的逐日数据。 该数据集是以TXT文本格式存储,每个文件中存储了逐月的所有气象站的逐日数据,数据的存储结构简单,但使用起来还需要进一步提取和处理,例如,若提取某一地区某一时间段的降水数据,则需要从该时间段内的每个文件中找出该地区包括的气象站,然后提取数据,格式化存储。这便是本贴的写作目的,利用Python程序进行数据的快速提取。 数据集说明
数据集中文名称:中国地面气候资料日值数据集(V3.0) 数据集代码:SURF_CLI_CHN_MUL_DAY 数据集版本:V3.0 数据集建立时间:20120804 数据TXT文件名称说明: 数据文件命名由数据集代码(SURF_CLI_CHN_MUL_DAY)、要素代码(XXX)、项目代码(XXXXX)、年份标识(YYYY)和月份标识(MM)组成。其中,SURF表示地面气象资料,CLI表示地面气候资料,CHN表示中国,MUL表示多要素,DAY表示日值数据。 文件命名: 编号 | 变量 | 命名 | 1 | 气压 | SURF_CLI_CHN_MUL_DAY-PRS-10004-YYYYMM.TXT | 2 | 气温 | SURF_CLI_CHN_MUL_DAY-TEM-12001-YYYYMM.TXT | 3 | 相对湿度 | SURF_CLI_CHN_MUL_DAY-RHU-13003-YYYYMM.TXT | 4 | 降水 | SURF_CLI_CHN_MUL_DAY-PRE-13011-YYYYMM.TXT | 5 | 蒸发 | SURF_CLI_CHN_MUL_DAY-EVP-13240-YYYYMM.TXT | 6 | 风向风速 | SURF_CLI_CHN_MUL_DAY-WIN-11002-YYYYMM.TXT | 7 | 日照 | SURF_CLI_CHN_MUL_DAY-SSD-14032-YYYYMM.TXT | 8 | 0cm地温 | SURF_CLI_CHN_MUL_DAY-GST-12030-0cm-YYYYMM.TXT |
特征值说明:
台站海拔高度 | +100000,当台站海拔高度为估测值时,在估测数据基础上加100000 | 各要素项 | 32766,数据缺测或无观测任务 | 气压日极值 | +20000,气压极值取自定时值,在原值上加20000 | 日最小相对湿度 | +300,最小相对湿度取自定时值,在原值上加300 | 风速 | +1000,当风速超过仪器测量上限时,在上限数据基础上加1000 | 风向 | 1-17,用数字表示风向方位,17表示静风 | | +100,当表示风向为八风向时,在原值上加100 | | 90X,风向出现X个时,风向数据用个数X表示 | | 95X,风向至少出现X个时,风向数据用个数X表示 | 降水量 | 32700,表示降水"微量" | | 32XXX,XXX为纯雾露霜 | | 31XXX,XXX为雨和雪的总量 | | 30XXX,XXX为雪量(仅包括雨夹雪,雪暴) | 蒸发量 | 32700,表示蒸发器结冰 | | +1000,蒸发器中注入的水全部蒸发,在注入的水量数据基础上加1000 | 0cm地温 | +10000,实际温度(零上)超仪器上限刻度,在上限数据基础上加10000 | | -10000,实际温度(零下)超仪器下限刻度,在下限数据基础上减10000 |
数据提取
了解了数据集的存储格式,就可以根据自己的需求提取相应的数据。方便使用和处理的气象数据存储格式通常以数据类型为字段(列)、以日期或时间为记录(行)。 示例: DATE | TEM | PRE | RHU | PRS | 2018/01/01 | xx | xx | xx | xx | 2018/01/02 | xx | xx | xx | xx | 2018/01/03 | xx | xx | xx | xx |
数据提取Python代码详见:http://gaohr.win/site/blogs/2019/2019-08-20-china-daily-ground-climate-data-extraction.html - if __name__ == "__main__":
- dataDir = <data direction>
- dataDir_out = <output direction>
- dataDir_stations = rootDir + os.sep + r"NE_China\data\stations"
-
- sidArr = ["53463", "53478", "53480", "53487"]
- fields = ["TEM", "TMN", "TMX", "PRE", "RHU", "WIN", "PRS", "SSD"]
-
- START = "2000-01-01"
- END = "2018-12-31"
- period = [START.split('-')[0] + START.split('-')[1], END.split('-')[0] + END.split('-')[1]]
- period_days = GetDateArr_strdays(START, END)
- days = []
-
- # ## 逐站点提取数据
- for sid in sidArr:
- print(sid)
-
- # 计算起始搜索行数,提高提取速度
- sr = sidArr.index(sid) * 28
-
- c = ClimateData(dataDir, dataDir_out, int(sid), fields, period, days)
- c.ExtractData(sr=sr)
- c.SaveData(period_days, avg=False, d=False)
复制代码数据提取Python代码详见:http://gaohr.win/site/blogs/2019/2019-08-20-china-daily-ground-climate-data-extraction.html
Fighting, GISer!
|