查看原文
其他

R语言+QGIS处理NOAA全球气象数据(一)气象站点信息提取

走天涯徐小洋 走天涯徐小洋地理数据科学 2023-10-24

气象站点数据是地理相关研究非常重要的数据,由于国内数据共享程度低,获取困难,那么,没办法了吗?气象数据共享靠美帝啊。

全球逐小时气象数据

发现一个很方便的R包,可以获取NOAA数据,不光是这个ISD气象数据,其他也可以。

R语言获取ISD站点信息

R语言有一个rnoaa包,很神奇,可以直接下载NOAA数据。安装好这个包之后,加载包,就可以使用了。

搜索中国及周边区域气象站

为了方便查找中国区域的NOAA数据,我将中心点设置为经纬度103,36,搜索半径4000公里,搜索气象站点。代码如下:

library(tidyverse)
library(rnoaa)
library(rstatatools)
devtools::install_local("rstatatools.zip")

#获取气象站
x <- isd_stations_search(lat = 36, lon = 103, radius = 4000)  #中国中心经纬度103,36,扩展4000公里
if (requireNamespace("leaflet")) {
  library("leaflet")
  leaflet() %>%
    geoqmap(attribution = "走天涯徐小洋地理数据科学") %>%
    addCircles(lng = x$lon,
               lat = x$lat,
               popup = x$station_name) %>%
    clearBounds()
}

中国及周边区域的气象站点

获取的站点信息以数据框形式存储,可以看出内容很丰富:

  • usaf:站点编号
  • wban:WBAN编码
  • station_name:气象站名称
  • ctry:站点所在国家
  • lat:经度
  • lon:纬度
  • elev_m:高程,单位:米
  • begin:数据开始时间YYYYMMDD,年月日
  • end:数据结束时间
  • distance:应该是和指定的起始点(103,36)的距离,公里
获取的站点信息

筛选中国气象站

看到上面下载的内容,筛选中国气象站就不难了,直接根据ctry字段筛选,CH的,我对筛选结果进行了输出,存储为csv文件。

#获取中国境内气象站
x_cn = x %>% 
  filter(ctry=="CH")
#预览中国境内气象站
leaflet() %>%
  addTiles() %>%
  addCircles(lng = x_cn$lon,
             lat = x_cn$lat,
             popup = x_cn$station_name) %>%
  clearBounds()

write.csv(x_cn, file = "stationinfo.csv")
中国气象站

QGIS筛选气象站

感觉R里面交互不太方便,所以我把站点数据导出后,在QGIS中交互,查看站点信息,筛选,等等……

加载站点

前面已经将站点信息导出为csv,在QGIS里面很容易转为点。

加载站点CSV

为了看着方便,我使用QuickMapServices插件加了高德注记和ESRI影像底图。

导入QGIS

交互式查看

QGIS里面交互查看站点信息就方便多了,使用识别要素Identify Feature工具点击对应的气象站,就可以查看对应的气象站信息。

识别要素

按年份筛选站点

想看看哪些站点有2021年以后的数据,打开属性表,按表达式选择一下。

 "end" > 20210000

结果可以发现,2021年以后有观测数据的站点共有407个。

按表达式选择

选择2000-2021年都有数据的站点,共有380个

 "end" > 20210000 and  "begin" <=20000000

好了,这部分内容就到这里,后面开始使用rnoaa下载ISD气象站点数据。

参考文献

  1. https://cran.r-project.org/web/packages/rnoaa/index.html
  2. https://www.ncei.noaa.gov/products/land-based-station/integrated-surface-database
  3. GIS基础之GIS属性表操作

阅读原文参加对应视频课程学习

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存