写在前面,本文转载自微信公众号“测绘者说”
在进行地球物理相关研究(特别是质量负荷)时,经常会用到德国地学中心(GFZ)提供的产品。其中包括但不限于非潮汐大气负荷、非潮汐海洋负荷、陆地水负荷等数据。但是在下载数据的过程中也遇到了一些不方便的地方。
GFZ官网(http://esmdata.gfz-potsdam.de:8080/repository/entry/show?entryid=e0fff81f-dcae-469e-8e0a-eb10caf2975b)
以陆地水负荷数据下载为例
数据下载界面
官方提供了几种下载方式
第一是根据用户需要,划定边界,从服务器下载边界内的数据。
第二是根据用户提供所需要的站点的经纬度,然后提供相应坐标点的数据。
第三是先把完整的数据下载到本地,根据GFZ提供的linux代码,通过内插得到所需要的站点的数据。
由于一次性需要下载比较多的站点的数据,但是又不想用方法三下载大量数据再内插,也不想用方法二一个个输经纬度然后下载数据,于是就有了方法四,也是本文的核心。
在使用方法二时,发现底下有一个链接,该链接就是下载时提交的地址,且有一定的规律
仔细一看发现就是站点的经纬度,起始时间,以及数据类型等等。
这样就可以根据用户所需要的站点坐标、时间、以及数据类型通过将目标链接编辑提前编辑好,然后循环调用wget来下载相关数据了
具体实现的相关代码如下:
# -*- coding: utf-8 -*-
"""
Created on Thu May 27 21:15:34 2021
@author: CHLi
"""
import wget
start_year = '2011'
start_month = '01'
start_day = '01'
end_year = '2017'
end_month = '12'
end_day = '31'
variable = 'duV'
url1 = 'http://esmdata.gfz-potsdam.de:8080/repository/entry/show/2010-now_point?'
url2 = 'submit=Get%20Point&output=data.gridaspoint'
url3 = '&entryid=f77b5404-b9b8-47ca-b6e2-8771af18b16d'
url4 = '&location.latitude='
url5 = '&location.longitude='
url6 = '&calendar=proleptic_gregorian'
url7 = '&fromdate='+start_year+'-'+start_month+'-'+start_day
url8 = '%2012%3A00%3A00%20UTC'
url9 = '&todate='+end_year+'-'+end_month+'-'+end_day
url10 = '%2012%3A00%3A00%20UTC'
url11 = '&format=csv'
url12 = '&variable='+variable
download_site = 'GFZ_data'
filename = 'GNSS_info.txt'
with open(filename, 'r') as f:
fileinfo = f.readlines()
for item in fileinfo:
item1 = item.rstrip('\n')
item2 = item1.split(' ')
posname = item2[0]
poslon = item2[1]
poslat = item2[2]
url = url1+url2+url3+url4+poslat+url5+poslon+url6 \
+url7+url8+url9+url10+url11+url12
download_name = download_site+ '\\' + posname + '.' + variable
wget.download(url, download_name)
print('finish:'+posname)
运行结果如下