Перейти к основному содержанию
Перейти к основному содержанию

Исторические данные наблюдений погоды на Тайване

Этот набор данных содержит исторические измерения метеорологических наблюдений за последние 128 лет. Каждая строка представляет собой измерение для пары «момент времени — метеостанция».

Источник этого набора данных доступен здесь, а список номеров метеостанций можно найти здесь.

Источниками метеорологических наборов данных являются метеостанции, созданные Центральной метеорологической администрацией (код станции начинается с C0, C1 и 4), а также сельскохозяйственные метеостанции, относящиеся к Совету по вопросам сельского хозяйства (код станции отличается от перечисленных выше):

  • StationId
    • MeasuredDate — время наблюдения
    • StnPres — атмосферное давление на станции
    • SeaPres — давление на уровне моря
    • Td — температура точки росы
    • RH — относительная влажность
    • Другие элементы, где они доступны

Загрузка данных

Предобработанные данные

Набор данных был преобразован из формата «одно измерение на строку» в формат «одна строка по идентификатору метеостанции и дате измерения», т.е.

StationId,MeasuredDate,StnPres,Tx,RH,WS,WD,WSGust,WDGust,Precp,GloblRad,TxSoil0cm,TxSoil5cm,TxSoil20cm,TxSoil50cm,TxSoil100cm,SeaPres,Td,PrecpHour,SunShine,TxSoil10cm,EvapA,Visb,UVI,Cloud Amount,TxSoil30cm,TxSoil200cm,TxSoil300cm,TxSoil500cm,VaporPressure
C0X100,2016-01-01 01:00:00,1022.1,16.1,72,1.1,8.0,,,,,,,,,,,,,,,,,,,,,,,
C0X100,2016-01-01 02:00:00,1021.6,16.0,73,1.2,358.0,,,,,,,,,,,,,,,,,,,,,,,
C0X100,2016-01-01 03:00:00,1021.3,15.8,74,1.5,353.0,,,,,,,,,,,,,,,,,,,,,,,
C0X100,2016-01-01 04:00:00,1021.2,15.8,74,1.7,8.0,,,,,,,,,,,,,,,,,,,,,,,

Просто выполнить запрос и убедиться, что результирующая таблица менее разрежённая и что некоторые элементы имеют значение NULL, поскольку на этой метеостанции их невозможно измерить.

Этот набор данных доступен по следующему адресу в Google Cloud Storage. Либо скачайте набор данных на локальную файловую систему (и вставьте его с помощью клиента ClickHouse), либо вставьте данные напрямую в ClickHouse (см. Вставка из URL).

Чтобы скачать:

wget https://storage.googleapis.com/taiwan-weather-observaiton-datasets/preprocessed_weather_daily_1896_2023.tar.gz

# Опционально: Проверьте контрольную сумму \{#option-validate-the-checksum}
md5sum preprocessed_weather_daily_1896_2023.tar.gz
# Контрольная сумма должна совпадать с: 11b484f5bd9ddafec5cfb131eb2dd008 \{#checksum-should-be-equal-to-11b484f5bd9ddafec5cfb131eb2dd008}

tar -xzvf preprocessed_weather_daily_1896_2023.tar.gz
daily_weather_preprocessed_1896_2023.csv

# Опционально: Проверьте контрольную сумму \{#option-validate-the-checksum}
md5sum daily_weather_preprocessed_1896_2023.csv
# Контрольная сумма должна совпадать с: 1132248c78195c43d93f843753881754 \{#checksum-should-be-equal-to-1132248c78195c43d93f843753881754}

Исходные сырые данные

Далее приведены сведения о шагах по загрузке исходных необработанных данных, которые затем можно преобразовать и конвертировать по своему усмотрению.

Загрузка

Чтобы скачать исходные сырые данные:

mkdir tw_raw_weather_data && cd tw_raw_weather_data

wget https://storage.googleapis.com/taiwan-weather-observaiton-datasets/raw_data_weather_daily_1896_2023.tar.gz

# Опционально: Проверка контрольной суммы \{#option-validate-the-checksum}
md5sum raw_data_weather_daily_1896_2023.tar.gz
# Контрольная сумма должна совпадать с: b66b9f137217454d655e3004d7d1b51a \{#checksum-should-be-equal-to-b66b9f137217454d655e3004d7d1b51a}

tar -xzvf raw_data_weather_daily_1896_2023.tar.gz
466920_1928.csv
466920_1929.csv
466920_1930.csv
466920_1931.csv
...

# Опционально: Проверка контрольной суммы \{#option-validate-the-checksum}
cat *.csv | md5sum
# Контрольная сумма должна совпадать с: b26db404bf84d4063fac42e576464ce1 \{#checksum-should-be-equal-to-b26db404bf84d4063fac42e576464ce1}

Получение данных метеостанций Тайваня

wget -O weather_sta_list.csv https://github.com/Raingel/weather_station_list/raw/main/data/weather_sta_list.csv

# Опционально: Преобразование кодировки UTF-8-BOM в UTF-8 \{#option-convert-the-utf-8-bom-to-utf-8-encoding}
sed -i '1s/^\xEF\xBB\xBF//' weather_sta_list.csv

Создание схемы таблицы

Создайте таблицу MergeTree в ClickHouse (через клиент ClickHouse).

CREATE TABLE tw_weather_data (
    StationId String null,
    MeasuredDate DateTime64,
    StnPres Float64 null,
    SeaPres Float64 null,
    Tx Float64 null,
    Td Float64 null,
    RH Float64 null,
    WS Float64 null,
    WD Float64 null,
    WSGust Float64 null,
    WDGust Float64 null,
    Precp Float64 null,
    PrecpHour Float64 null,
    SunShine Float64 null,
    GloblRad Float64 null,
    TxSoil0cm Float64 null,
    TxSoil5cm Float64 null,
    TxSoil10cm Float64 null,
    TxSoil20cm Float64 null,
    TxSoil50cm Float64 null,
    TxSoil100cm Float64 null,
    TxSoil30cm Float64 null,
    TxSoil200cm Float64 null,
    TxSoil300cm Float64 null,
    TxSoil500cm Float64 null,
    VaporPressure Float64 null,
    UVI Float64 null,
    "Cloud Amount" Float64 null,
    EvapA Float64 null,
    Visb Float64 null
)
ENGINE = MergeTree
ORDER BY (MeasuredDate);

Вставка данных в ClickHouse

Вставка данных из локального файла

Данные можно вставить из локального файла следующим образом (в клиенте ClickHouse):

INSERT INTO tw_weather_data FROM INFILE '/path/to/daily_weather_preprocessed_1896_2023.csv'

где /path/to — это конкретный путь пользователя к локальному файлу на диске.

Пример ответа после вставки данных в ClickHouse выглядит следующим образом:

Идентификатор запроса: 90e4b524-6e14-4855-817c-7e6f98fbeabb

Выполнено.
131985329 строк в результате. Время выполнения: 71.770 сек. Обработано 131.99 млн строк, 10.06 ГБ (1.84 млн строк/сек., 140.14 МБ/сек.)
Пиковое использование памяти: 583.23 МиБ.

Вставка из URL

INSERT INTO tw_weather_data SELECT *
FROM url('https://storage.googleapis.com/taiwan-weather-observaiton-datasets/daily_weather_preprocessed_1896_2023.csv', 'CSVWithNames')

Чтобы узнать, как ускорить этот процесс, ознакомьтесь с нашей публикацией в блоге о настройке загрузки больших объёмов данных.

Проверка числа строк и объёма данных

  1. Посмотрим, сколько строк было вставлено:
SELECT formatReadableQuantity(count())
FROM tw_weather_data;
┌─formatReadableQuantity(count())─┐
│ 131,99 миллиона                 │
└─────────────────────────────────┘
  1. Давайте посмотрим, сколько места на диске используется для этой таблицы:
SELECT
    formatReadableSize(sum(bytes)) AS disk_size,
    formatReadableSize(sum(data_uncompressed_bytes)) AS uncompressed_size
FROM system.parts
WHERE (`table` = 'tw_weather_data') AND active
┌─disk_size─┬─uncompressed_size─┐
│ 2.13 GiB  │ 32.94 GiB         │
└───────────┴───────────────────┘

Примеры запросов

Q1: Получите максимальное значение температуры точки росы для каждой метеостанции за заданный год

SELECT
    StationId,
    max(Td) AS max_td
FROM tw_weather_data
WHERE (year(MeasuredDate) = 2023) AND (Td IS NOT NULL)
GROUP BY StationId

┌─StationId─┬─max_td─┐
│ 466940    │      1 │
│ 467300    │      1 │
│ 467540    │      1 │
│ 467490    │      1 │
│ 467080    │      1 │
│ 466910    │      1 │
│ 467660    │      1 │
│ 467270    │      1 │
│ 467350    │      1 │
│ 467571    │      1 │
│ 466920    │      1 │
│ 467650    │      1 │
│ 467550    │      1 │
│ 467480    │      1 │
│ 467610    │      1 │
│ 467050    │      1 │
│ 467590    │      1 │
│ 466990    │      1 │
│ 467060    │      1 │
│ 466950    │      1 │
│ 467620    │      1 │
│ 467990    │      1 │
│ 466930    │      1 │
│ 467110    │      1 │
│ 466881    │      1 │
│ 467410    │      1 │
│ 467441    │      1 │
│ 467420    │      1 │
│ 467530    │      1 │
│ 466900    │      1 │
└───────────┴────────┘

Получено 30 строк. Затрачено: 0,045 сек. Обработано 6,41 млн строк, 187,33 МБ (143,92 млн строк/сек., 4,21 ГБ/сек.)

Q2: Выборка сырых данных за заданный интервал времени, по полям и метеостанции

SELECT
    StnPres,
    SeaPres,
    Tx,
    Td,
    RH,
    WS,
    WD,
    WSGust,
    WDGust,
    Precp,
    PrecpHour
FROM tw_weather_data
WHERE (StationId = 'C0UB10') AND (MeasuredDate >= '2023-12-23') AND (MeasuredDate < '2023-12-24')
ORDER BY MeasuredDate ASC
LIMIT 10
┌─StnPres─┬─SeaPres─┬───Tx─┬───Td─┬─RH─┬──WS─┬──WD─┬─WSGust─┬─WDGust─┬─Precp─┬─PrecpHour─┐
│  1029.5 │    ᴺᵁᴸᴸ │ 11.8 │ ᴺᵁᴸᴸ │ 78 │ 2.7 │ 271 │    5.5 │    275 │ -99.8 │     -99.8 │
│  1029.8 │    ᴺᵁᴸᴸ │ 12.3 │ ᴺᵁᴸᴸ │ 78 │ 2.7 │ 289 │    5.5 │    308 │ -99.8 │     -99.8 │
│  1028.6 │    ᴺᵁᴸᴸ │ 12.3 │ ᴺᵁᴸᴸ │ 79 │ 2.3 │ 251 │    6.1 │    289 │ -99.8 │     -99.8 │
│  1028.2 │    ᴺᵁᴸᴸ │   13 │ ᴺᵁᴸᴸ │ 75 │ 4.3 │ 312 │    7.5 │    316 │ -99.8 │     -99.8 │
│  1027.8 │    ᴺᵁᴸᴸ │ 11.1 │ ᴺᵁᴸᴸ │ 89 │ 7.1 │ 310 │   11.6 │    322 │ -99.8 │     -99.8 │
│  1027.8 │    ᴺᵁᴸᴸ │ 11.6 │ ᴺᵁᴸᴸ │ 90 │ 3.1 │ 269 │   10.7 │    295 │ -99.8 │     -99.8 │
│  1027.9 │    ᴺᵁᴸᴸ │ 12.3 │ ᴺᵁᴸᴸ │ 89 │ 4.7 │ 296 │    8.1 │    310 │ -99.8 │     -99.8 │
│  1028.2 │    ᴺᵁᴸᴸ │ 12.2 │ ᴺᵁᴸᴸ │ 94 │ 2.5 │ 246 │    7.1 │    283 │ -99.8 │     -99.8 │
│  1028.4 │    ᴺᵁᴸᴸ │ 12.5 │ ᴺᵁᴸᴸ │ 94 │ 3.1 │ 265 │    4.8 │    297 │ -99.8 │     -99.8 │
│  1028.3 │    ᴺᵁᴸᴸ │ 13.6 │ ᴺᵁᴸᴸ │ 91 │ 1.2 │ 273 │    4.4 │    256 │ -99.8 │     -99.8 │
└─────────┴─────────┴──────┴──────┴────┴─────┴─────┴────────┴────────┴───────┴───────────┘

Получено 10 строк. Затрачено: 0.009 сек. Обработано 91.70 тыс. строк, 2.33 МБ (9.67 млн. строк/сек., 245.31 МБ/сек.)

Благодарности

Мы хотели бы отметить работу Центрального метеорологического управления и сети агрометеорологических наблюдательных станций Совета по сельскому хозяйству по подготовке, очистке и распространению этого набора данных. Мы высоко ценим их усилия.

Ou, J.-H., Kuo, C.-H., Wu, Y.-F., Lin, G.-C., Lee, M.-H., Chen, R.-K., Chou, H.-P., Wu, H.-Y., Chu, S.-C., Lai, Q.-J., Tsai, Y.-C., Lin, C.-C., Kuo, C.-C., Liao, C.-T., Chen, Y.-N., Chu, Y.-W., Chen, C.-Y., 2023. Application-oriented deep learning model for early warning of rice blast in Taiwan. Ecological Informatics 73, 101950. https://doi.org/10.1016/j.ecoinf.2022.101950 [13/12/2022]