2、环境数据类型与来源:气象数据、空气质量数据、水文数据、土壤数据、遥感数据

做环境数据可视化,第一步不是学工具,而是搞清楚——你手里拿到的数据到底是什么玩意儿?

我见过太多人,一上来就对着CSV文件猛画图,结果画出来的东西自己都解释不通。说白了,你不了解数据的脾气,工具再牛也白搭。

这一章,咱们就把环境数据的五大类型掰开揉碎讲清楚。每种数据长什么样、从哪来、有什么坑,我都会结合自己踩过的坑跟你聊。

核心观点:环境数据可视化不是「画图」,而是「翻译」。把物理世界的复杂现象,翻译成人眼能看懂的视觉语言。翻译的前提,是你得懂原文。

环境数据类型 气象数据 空气质量数据 水文数据 土壤数据 遥感数据 温度/湿度/风速/气压 PM2.5/PM10/O₃/NO₂ 水位/流量/水质 pH/有机质/重金属 卫星影像/NDVI/LST 五大环境数据类型及其核心指标 可视化分析的第一步:理解你的数据

2.1 气象数据:最「老实」的数据类型

气象数据是我个人觉得最容易上手的环境数据。为什么?因为它规律性强,时间序列特征明显,而且公开数据源特别多。

常见指标:

  • 温度:地表温度、近地面气温(2米高度)
  • 湿度:相对湿度、绝对湿度
  • 风速风向:平均风速、最大风速、主导风向
  • 气压:海平面气压、站压
  • 降水量:小时降水量、日累计降水量

我的经验:做气象数据可视化,最容易犯的错是「时间对齐」。不同站点的数据采样频率可能不一样——有的每小时一次,有的每三小时一次。我刚开始做全国气温分布图时,直接把不同频率的数据混在一起画,结果等温线图出现了诡异的「锯齿」。后来养成了习惯:先统一时间分辨率,再动手画图。

常见数据来源:

数据源 特点 获取方式
中国气象数据网 国内站点最全,历史数据可追溯 API / 批量下载
NOAA(美国海洋大气局) 全球站点,格式标准 FTP / API
ERA5 再分析数据 网格化数据,空间连续 CDS API

注意:再分析数据(如ERA5)是模型模拟出来的,不是实测值。做精度要求高的分析时,一定要用站点实测数据做验证。我曾经吃过这个亏——用ERA5数据做城市热岛分析,结果跟实测差了3度多。

2.2 空气质量数据:最「敏感」的数据类型

空气质量数据这几年特别火。为什么?因为它跟老百姓的生活直接相关。你想想看,每天打开手机看AQI指数的人,比看气温的人多多了。

核心指标:

  • PM2.5 / PM10:颗粒物浓度,单位 μg/m³
  • O₃:臭氧,夏季污染的主要元凶
  • NO₂ / SO₂:气态污染物,主要来自工业排放
  • CO:一氧化碳,交通排放的标志物
  • AQI:空气质量指数,综合指标

我个人习惯把空气质量数据分成两类:「一次污染物」和「二次污染物」。一次污染物是直接排放的,比如汽车尾气里的NO₂。二次污染物是化学反应生成的,比如O₃。这个分类对可视化配色很有帮助——一次污染物用暖色,二次污染物用冷色,观众一眼就能区分。

避坑指南:我曾经做过一个全国AQI热力图,发现华北地区冬天一片红。乍一看以为是污染严重,后来才发现——是因为北方冬天供暖导致PM2.5飙升,但数据里没有区分「人为排放」和「自然背景」。所以做空气质量可视化时,一定要标注数据的时间背景和气象条件。

数据获取示例(Python):

import requests
import pandas as pd

# 从中国环境监测总站API获取实时数据
url = "https://air.cnemc.cn:18002/rest/api/v2/station/realTimeData"
params = {
    "stationCode": "1001A",  # 站点编码
    "dataType": "hourly"
}
response = requests.get(url, params=params)
data = response.json()

# 转为DataFrame
df = pd.DataFrame(data['data'])
print(df[['time', 'pm25', 'pm10', 'o3', 'no2']].head())

2.3 水文数据:最「危险」的数据类型

水文数据,说白了就是跟水有关的一切数据。为什么说它「危险」?因为水文数据的变化往往意味着灾害——洪水、干旱、水质污染。做水文可视化,责任重大。

常见指标:

  • 水位:河流、湖泊、水库的水面高度
  • 流量:单位时间内通过断面的水量
  • 水质参数:pH、溶解氧、氨氮、总磷
  • 降水量:与气象数据重叠,但水文更关注径流响应

我的经验:水文数据最怕「断点」。河流水位数据经常因为传感器故障出现缺失。我建议拿到数据后,第一件事不是画图,而是做缺失值分析。如果缺失率超过20%,这个数据基本不能用。别问我怎么知道的——我有一整年的长江水位数据,因为传感器被船撞坏了,中间缺了三个月,最后只能重来。

数据来源对比:

数据源 覆盖范围 更新频率 数据质量
水利部水文局 全国主要河流 实时/每日 高(人工校核)
USGS(美国地质调查局) 全球主要河流 15分钟/小时
GRDC(全球径流数据中心) 全球站点 月/年 中(历史数据)

2.4 土壤数据:最「复杂」的数据类型

土壤数据是我觉得最难搞的。为什么?因为土壤是三维的——不仅有水平分布,还有垂直分层。而且土壤性质变化特别慢,一个地方的土壤数据可能十年都不变,但一旦变了就很难恢复。

核心参数:

  • 物理性质:质地(砂/粉/黏)、容重、孔隙度
  • 化学性质:pH、有机质、阳离子交换量
  • 养分指标:氮、磷、钾含量
  • 污染指标:重金属(镉、铅、砷等)

注意:土壤数据的空间分辨率差异巨大。全球尺度的土壤数据(如HWSD)分辨率只有1公里,而田间尺度的数据可以精确到米级。做可视化时,一定要在图上标注数据的分辨率,否则会误导观众。我记得有一次做全国土壤pH分布图,用了1公里分辨率的数据,结果被专家质疑「你这图连我们村那块地的酸碱度都看不出来」——嗯,确实看不出来。

2.5 遥感数据:最「大」的数据类型

遥感数据,说白了就是卫星拍的照片。但跟普通照片不一样,遥感影像有多个波段,每个波段记录不同的地表信息。

常见数据产品:

  • Landsat:30米分辨率,16天重访周期,免费
  • MODIS:250-1000米分辨率,每天覆盖,免费
  • Sentinel-2:10米分辨率,5天重访周期,免费
  • 高分系列:国产卫星,最高0.5米分辨率

常用遥感指数:

指数 公式 用途
NDVI(归一化植被指数) (NIR - Red) / (NIR + Red) 植被覆盖度评估
LST(地表温度) 热红外波段反演 城市热岛监测
NDWI(归一化水体指数) (Green - NIR) / (Green + NIR) 水体提取

核心建议:遥感数据最大的坑是「云覆盖」。一张卫星影像如果有超过30%的云,基本就是废片。我建议做时间序列分析时,先用云掩膜处理,再合成无云影像。Python里用rasterio或xarray都可以做,别偷懒。

2.6 数据获取的通用原则

讲了这么多数据类型,最后分享几个通用原则:

  1. 先看元数据:拿到数据后,第一件事是看说明文档。数据的时间范围、空间范围、采样方法、精度信息,全在元数据里。
  2. 做数据质量检查:缺失值、异常值、重复值,这些基础检查不能省。我一般用pandas的describe()info()快速过一遍。
  3. 保持数据溯源:每个数据文件都要记录来源和下载时间。别问我为什么强调这个——有一次我用了三个月前的数据做分析,结果发现数据源已经更新了,所有结论都得重来。
  4. 尊重数据版权:很多环境数据有使用限制,尤其是商业用途。用之前看清楚协议。

好了,这一章的内容就到这里。记住一句话:数据是可视化分析的基石。基石不稳,楼盖得再高也是危楼。下一章,咱们聊聊怎么把这些数据装进Python里,开始真正的可视化之旅。


专注资料整理