Skip to contents

LCZ4r 的本地功能是专门用于分析大型数据集(例如每小时气温读数)的专用工具。本教程重点介绍使用来自柏林的 23 个气象站收集的数据,作为 城市气候观测站(UCO).

概述

本地函数 LCZ4r,提供强大的工具来处理和分析城市气候数据。它们可以进行时间序列分析、热异常绘图、空间插值等。下面是这些函数的总结:

功能 描述 所需数据 需要互联网接入
lcz_ts() 分析 LCZ 时间序列 是的 不需要
lcz_anomaly() 计算 LCZ 热异常 是的 不需要
lcz_anomaly_map() 绘制 LCZ 热异常地图 是的 不需要
lcz_interp_map() 执行 LCZ 插值 是的 不需要
lcz_plot_interp() 可视化 LCZ 插值 是的 不需要
lcz_interp_eval() 评估 LCZ 插值 是的 不需要
lcz_uhi_intensity() 评估 LCZ 的城市热岛强度 是的 不需要

💡提示

  1. 利用 help(lcz_*) 函数来访问每个 LCZ4r 函数的详细文档。例如,要了解 lcz_ts 功能、类型 help("lcz_ts") 在控制台中。

  2. 每个 LCZ4r 函数都支持用于处理数据帧内缺失值的插补。有关插补方法的更多信息,请参阅每个函数文档中的“impute”参数。

数据输入要求

为了确保本地功能的顺利运行,输入数据应构造为具有以下列的数据框:

  1. 日期:此列应包含日期时间信息。此列必须标记为 “日期”、“时间”、“时间戳”或“日期时间”。确保日期时间格式符合 R 的约定(例如,YYYY-MM-DD HH:MM:SS)。可接受的格式包括“1999-02-01”。有关详细信息,请参阅格式日期和时间 露天包装R.

  2. 气象站标识符:用于识别气象站的栏。

  3. 气温或其他变量:至少有一列代表气温或任何其他目标变量。

  4. 纬度经度:两列表示每个站点的地理坐标。确保该列名为 “lat”或“latitude”“lon”、“long”或“longitude”

为了简化此设置,LCZ4r 提供了一个示例数据帧,您可以使用以下命令加载该数据帧:

library(LCZ4r)

# 从LCZ4r软件包加载数据
data("lcz_data")

# 检查数据结构
str(lcz_data)
Structure of the LCZ sample dataset

显示日期、站点、温度和坐标列的 LCZ 示例数据集的结构

导入您的数据

if(!require(data.table)) install.packages("data.table")

# 将路径替换为您的 CSV 文件的实际路径
my_data <- data.table::fread("PC/path/file_name.csv")

head(my_data)

自定义 LCZ4r 中的本地函数

您可以进一步自定义局部函数以满足特定的分析需求:

1、灵活时间选择

局部函数有一个参数 ... 它提供了按特定年、月、日和小时过滤数据的选项,以缩小分析范围。如何使用这些参数的示例包括:

  • 年份:指定要选择的年份的数值。例如, year = 1998:2004 选择 1998 年至 2004 年(含)之间的所有年份,而 year = c(1998, 2004) 仅选择 1998 年和 2004 年。

  • 月份:指定要选择的月份的数字或字符值。数值示例: month = 1:6 (一月至六月),或人物示例: month = c("January", "December").

  • :指定要选择的天数的数值。例如, day = 1:30 选择 1 到 30 之间的天数,或者 day = 15 仅选择该月的 15 天。

  • 小时:指定要选择的小时数的数值。例如, hour = 0:23 选择一天中的所有时间,同时 hour = 9 仅选择第 9 个小时。

  • 开始日期:指定开始日期的字符串 start = "DD/MM/YYYY" (例如“1/2/1999”)或“YYYY-mm-dd”格式(例如“1999-02-01”)。

  • 结束日期:指定结束日期的字符串 end = "DD/MM/YYYY" (例如“1/2/1999”)或“YYYY-mm-dd”格式(例如“1999-02-01”)。

示例

# 选择年份范围 (e.g., 1998:2004) or specific years (e.g., c(1998, 2004))
lcz_ts(
  lcz_map,
  year = 1998:2004
)

# 按月份筛选,或按数值筛选(e.g., 1:6 for January to June) or by names
lcz_anomaly(
  lcz_map,
  year = 2012, month = 9
)

# 确定一个具体日期,例如 2019 年 9 月 1 日。
lcz_interp_map(
  lcz_map,
  year = 2012, month = 9, day = 1 
)

# 在特定时间内
lcz_anomaly_map(
  lcz_map,
  year = 2012, month = 9, day = 1, hour = 5
)

# 使用开始日期和结束日期确定特定时期。
lcz_uhi_intensity(
  lcz_map,
  var = "airT", 
  station_id = "station",
  start = "1/9/2019", end = "30/10/2019"
)

欲了解更多信息,请参阅 openair 包中的实用函数.

2. 按时间窗口或站点分割 LCZ 时间序列

您可以使用以下方法对 LCZ 时间序列数据进行分段 by 参数,允许跨不同时间窗口或站点进行分析。可用的拆分选项包括:

  1. 时间段:“年”、“季节”、“季节年”、“月”、“月年”、“工作日”、“周末”。

  2. 日光分割:“日光”,将数据分为白天和夜间时段。请注意,日光选项可能会导致白天和夜间时间均以 UTC 表示。看 美国国家海洋和大气管理局 和论证 type露天套餐.

  3. 组合:您还可以使用类似的组合 c("daylight", "month") 或者 c("daylight", "season").

# 按月划分
lcz_ts(lcz_map, by = "month")

# 按季节划分
lcz_ts(lcz_map, by = "season")

# 按日照时间划分
lcz_anomaly(lcz_map, by = "daylight")

# 合并多个分割点
lcz_anomaly(lcz_map, by = c("daylight", "season"))

有关更多详细信息,请参阅 输入露天包装.

工作流程示例

以下是如何使用本地函数的一些实际示例:

时间序列分析

# 特定年份的基本时间序列
lcz_ts(
  lcz_map,
  var = "airT",
  station_id = "station",
  year = 2020
)
LCZ time series analysis showing temperature variations across different LCZ classes

LCZ 时间序列分析显示不同 LCZ 类别的温度变化

热异常测绘

# 绘制夏季月份的热异常图
lcz_anomaly_map(
  lcz_map,
  var = "airT",
  station_id = "station",
  month = 6:8,
  year = 2020
)
Thermal anomaly map showing temperature differences across urban zones

显示城市区域温差的热异常图

空间插值

# 推算特定日期的温度
lcz_interp_map(
  lcz_map,
  var = "airT",
  station_id = "station",
  year = 2020, month = 7, day = 15, hour = 12
)
Spatial interpolation of air temperature across the study area

研究区域气温的空间插值


有反馈或建议吗?

您有改进的想法或者发现错误吗?我们很乐意听取您的意见!单击下面的按钮创建新问题 (GitHub) 并直接与我们分享您的反馈或建议。

打开 GitHub 问题