lb_toolkits.download.downloadDEM 源代码

# -*- coding:utf-8 -*-
'''
@Project     : lb_toolkits

@File        : downloadDEM.py

@Modify Time :  2022/11/11 14:18   

@Author      : Lee    

@Version     : 1.0   

@Description :

'''
import os
import sys
import numpy as np
import datetime

from .cmr import cmr

[文档] class downloadDEM(cmr) : def __init__(self, username, password): self.username = username self.password = password self.token = self.get_tokens(username, password)
[文档] def searchfile(self, shortname='ASTGTM_NC', provider='LPDAAC_ECS', version=None, bounding_box=[-180, -90, 180, 90], **kwargs): ''' 利用cmr进行查询检索相关产品的下载地址 Parameters ---------- starttime : datetime 起始时间 endtime : datetime, optional 起始时间 satid : str, optional 卫星名 shortname : str 对应cmr中的short name provider : str, optional 产品提供的组织结构 pattern : str 对文件名进行模糊匹配 bounding_box: list [minX, minY, maxX, maxY] lower left longitude, lower left latitude, upper right longitude, upper right latitude. Returns ------- list 根据条件所匹配到的产品下载链接 ''' CMR_ProviderURL = 'https://cmr.earthdata.nasa.gov/search/site/' \ 'collections/directory/{Provider}/gov.nasa.eosdis'.format(Provider=provider) if not self.cmr_check_provider(shortname=shortname) : raise Exception('请参考Short Name>>"%s"' %(CMR_ProviderURL)) filelist = self.cmr_search(starttime=None, endtime=None, short_name=shortname, bounding_box=bounding_box, **kwargs) return filelist
[文档] def download(self, outdir, url, timeout=5*60, skip=False, wgetpath=None): ''' 根据输入url下载相应的文件 Parameters ---------- outdir: str 输出路径 url : str 下载链接 token : str EarthData账号的APP Keys timeout : int 时间限制 skip : bool 是否不做数据下载,直接返回文件名。默认是FALSE,下载文件。 Returns ------- str 下载数据的文件名 ''' if not os.path.isdir(outdir) : os.makedirs(outdir, exist_ok=True) filename = self.cmr_download(outdir, url, token=self.token, username=self.username, password=self.password, timeout=timeout, skip_download=skip, wgetpath=wgetpath) return filename
[文档] def searchDEM30M(self, minX=70, minY=10, maxX=140, maxY=55): urllist = [] for lat in np.arange(np.floor(minY), np.ceil(maxY)) : for lon in np.arange(np.floor(minX), np.ceil(maxX)) : if lat < -90 or lat > 90 : continue if lon < -180 or lat > 180 : continue if lat >= 0 : strlat = 'N%02d' %(lat) else: strlat = 'S%02d' %(lat) if lon >= 0 : strlon = 'E%03d' %(lon) else: strlon = 'W%03d' %(lon) url = r'https://data.lpdaac.earthdatacloud.nasa.gov/lp-prod-protected/ASTGTM.003/' \ 'ASTGTMV003_{lat}{lon}_dem.tif'.format(lat=strlat, lon=strlon) urllist.append(url) return urllist