需要全国2400+个站点的2021年后的数据,可交换、可有偿!万分感激!

当年做毕业论文那会在中国气象数据共享网下载的中国地面气候资料日值数据集(V3.0)(1951.1-2020.12),数据集包含了中国基本气象站、基准气候站、一般气象站在内的主要2474个站点1951年1月以来本站气压、气温、降水量、蒸发量、相对湿度、风向风速、日照时数和0cm地温要素的日值数据。

现在毕业论文需要2021年以后的数据作为验证,目前到2024年的数据只有400+个站点,研究区覆盖较少,万分感谢!

某网站实在太贵了,问完价格后汇报导师,导师说“你把我卖了吧”,手里还有一些其他数据,也可以交换,当然仅用于科研,绝对规范使用数据!

实在不行的话,有没有同行要购买这部分数据集的,可以一起团购!

附:当年做本科论文的时候数据处理过程,虽然有点简单,但是也是当年各种论坛和百度出来的,当时科研小白,望各位大神指教!

下载后的数据,解压后是这样的:

以降水数据为例:

一、合并降水数据txt文件

此处用到的是bat命令,bat代码如下:

=====

copy *.txt PRE.txt

=====

此时生成了1个特别大的txt文件:PRE.txt

文件有3个多G

二、接下来要做的是提取每个站点的数据

bat命令有点慢了,我们要使用更高效的python软件

1、准备文件

创建文件夹在你的电脑上创建一个文件夹,例如:

在 Windows 系统中,可以创建一个名为 “data_processing” 的文件夹,路径为 “C:\data_processing”。

在 macOS 或 Linux 系统中,可以创建一个名为 “data_processing” 的文件夹,路径为 “/users/yourusername/data_processing”(将 “yourusername” 替换为你的系统用户名)。

2、放置输入文件将需要处理的 txt 文件(假设为 “original.txt”)复制到上述文件夹中。也可以不创建,用本来的文件路径就可以,此处只是方便新手看明白。

3、创建 Python 脚本文件

(1)打开文本编辑器

在 Windows 上,可以打开 “记事本”(Notepad)。

通过点击 “开始” 菜单,搜索 “记事本” 并打开它。

在 macOS 上,可以打开 “TextEdit”。

通过点击 “Finder” 中的 “应用程序” 文件夹,找到 “TextEdit” 并打开它。

(2)输入脚本代码

将以下代码粘贴到文本编辑器中:

=====

import mmap

import os

from collections import defaultdict

def process_large_file_with_mmap(file_path):

    class_files = defaultdict(list)

    with open(file_path, 'r+b') as file:

        mmap_file = mmap.mmap(file.fileno(), 0, access=mmap.ACCESS_READ)

        for line in iter(mmap_file.readline, b""):

            line = line.decode().strip()

            if line:

                class_key = line[:5]

                class_files[class_key].append(line)

        mmap_file.close()

    return class_files

def write_class_files(class_files):

    for class_key, lines in class_files.items():

        with open(f"{class_key}.txt", 'w') as file:

            file.writelines([line + "\n" for line in lines])

if __name__ == "__main__":

    input_file = "C:/data_processing/original.txt"  # Windows 文件路径

    # input_file = "/users/yourusername/data_processing/original.txt"  # macOS/Linux 文件路径

    class_files = process_large_file_with_mmap(input_file)

    write_class_files(class_files)

    print("分类完成!")

=====

需要再啰嗦一下:

如果你使用的是 Windows 系统,代码中应保留 input_file = "C:/data_processing/original.txt"

如果你使用的是 macOS 或 Linux 系统,代码中应将 input_file 修改为 /users/yourusername/data_processing/original.txt,其中 yourusername 替换为你的系统用户名。

(3)保存文件

点击文本编辑器的 “文件” 菜单,选择 “另存为”。

将文件名设置为 “process_large_file.py”。

将文件保存到与 “original.txt” 文件相同的文件夹中(例如 “C:\data_processing” 或 “/users/yourusername/data_processing”)。

(4)运行脚本

脚本右键—打开方式---pycharm打开—运行即可

运行后结果为:

已按照站点分类好!

三、将txt转换为Excel文件

方法很多,当年比较笨,科研小白,所以直接用Excel表里面命令实现的。

1、打开Excel并启用开发工具:

打开Excel。

点击 “文件” -> “选项” -> “自定义功能区”。

在右侧的 “主选项卡” 列表中,勾选 “开发工具”,然后点击 “确定”。

2、打开VBA编辑器:

在 “开发工具” 选项卡中,点击 “Visual Basic” 按钮,打开VBA编辑器。

3、插入新模块:

在VBA编辑器中,右键点击 “VBAProject (你的工作簿名称)” -> “插入” -> “模块”。

4、编写VBA代码:

将以下代码复制到模块中:

=====

Sub TxtToExcel()

    Dim txtFolder As String

    Dim excelFolder As String

    Dim txtFile As String

    Dim fileNum As Integer

    Dim textLine As String

    Dim cleanedData As Variant

    Dim i As Integer

    Dim ws As Worksheet

    Dim nextRow As Long

    Dim wb As Workbook

    

    ' 设置txt文件所在的文件夹路径

    txtFolder = "E:\PRE\"

    

    ' 设置输出Excel文件的文件夹路径

    excelFolder = "E:\output\"

    

    ' 创建输出文件夹(如果不存在)

    If Dir(excelFolder, vbDirectory) = "" Then

        MkDir excelFolder

    End If

    

    ' 遍历txt文件夹中的所有txt文件

    txtFile = Dir(txtFolder & "*.txt")

    Do While txtFile <> ""

        ' 创建一个新的Excel工作簿

        Set wb = Workbooks.Add

        Set ws = wb.Sheets(1)

        

        ' 打开txt文件

        fileNum = FreeFile

        Open txtFolder & txtFile For Input As fileNum

        

        ' 读取txt文件内容

        nextRow = 1

        Do While Not EOF(fileNum)

            Line Input #fileNum, textLine

            

            ' 去除多余的空格并分割数据

            cleanedData = Split(Replace(textLine, "  ", " "), " ") ' 替换连续空格为单个空格

            

            ' 进一步处理可能存在的连续空格

            ReDim preservedData(0 To UBound(cleanedData))

            Dim j As Integer

            j = 0

            For i = 0 To UBound(cleanedData)

                If cleanedData(i) <> "" Then

                    preservedData(j) = cleanedData(i)

                    j = j + 1

                End If

            Next i

            ReDim Preserve preservedData(0 To j - 1)

            

            ' 将数据写入工作表

            For i = 0 To UBound(preservedData)

                ws.Cells(nextRow, i + 1).Value = preservedData(i)

            Next i

            

            nextRow = nextRow + 1

        Loop

        

        ' 关闭txt文件

        Close fileNum

        

        ' 保存Excel文件

        wb.SaveAs excelFolder & Left(txtFile, Len(txtFile) - 4) & ".xlsx"

        wb.Close

        

        ' 获取下一个txt文件

        txtFile = Dir

    Loop

    

    MsgBox "转换完成!", vbInformation

End Sub

=======

5、运行宏:

在VBA编辑器中,按 F5 或点击 “运行” 按钮来运行 ImportTxtFiles 宏。

6、啰嗦两句:

将上述代码复制到Excel的VBA编辑器中。

修改代码中的 txtFolder 和 excelFolder 路径,分别指向你的txt文件所在文件夹和希望输出Excel文件的文件夹。

运行宏,完成!(PS这个方法时间有点长,上个厕所或者出去玩一会再回来)

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐