使用Python处理SRTM(.hgt)文件 引言 最近在做美赛时,使用了高精度的地形文件(海拔高度),因此在网站上下载了高精度的.hgt文件,并学习了处理。于是记录下来,有了这一篇笔记。 SRTM以.hgt为结尾,文件的名字解释了hgt文件的范围。比如,文件名字为N30E11,表示范围时30°N11°E到31°N12°E的正方形网格范围。 因此使用Numpy打开hgt文件的代码下面所示: import numpy as np SAMPLES = 1201 # Change this to 3601 for SRTM1 def read_hgt (f_name, lat, lon): with open(f_name, 'rb') as hgt_data: elevations = np.fromfile(hgt_data /I55/S{}E{}.hgt'.format(lat, lon) with open(f_name, 'rb') as hgt_data: elevations = np.fromfile
) # 也有用300hPa的 mon = 1 # 目标月 time_target = f'2015-{mon:02d}-08' # 目标日期 p0 = 1000 * units('hPa') hgt_day_path = './2015年/hgt.2015.nc' hgt_mon_path = './2015年/hgt.mon.mean.nc' uwnd_day_path = './2015年/uwnd.2015. uwnd.mon.mean.nc' vwnd_day_path = './2015年/vwnd.2015.nc' vwnd_mon_path = './2015年/vwnd.mon.mean.nc' hgt_day = xr.open_dataset(hgt_day_path)['hgt'] * units('m') hgt_mon = xr.open_dataset(hgt_mon_path)['hgt'] * # 位势高度转位势 Φ_day = mpcalc.height_to_geopotential(hgt_day) Φ_mon = mpcalc.height_to_geopotential(hgt_mon
= future_d01.result() lon_1, lat_1,proj, hgt_1 = future_d02.result() lon_2, lat_2,proj , hgt_2 = future_d03.result() return lon, lat, proj, hgt, lon_1, lat_1, hgt_1 ,lon_2, lat_2,hgt meta=False) lat = getvar(f, 'lat', meta=False) proj = get_cartopy(wrfin=f) hgt = getvar(f, 'HGT_M', meta=False) hgt[hgt < 0] = 0 return lon, lat, proj, hgt lon, lat, proj, hgt, lon_1, lat_1, hgt_1 ,lon_2, lat_2,hgt_2= process_data() 03 绘图部分 两层嵌套示例 provinces = BasicReader
一个省份会有大约几十个hgt文件(用ArcGIS就可以打开)。 同时,也已经帮大家用arcpy写好了批量拼接的代码。 import arcpy from arcpy import env from glob import glob # *号之前替换为某个省的文件夹,如‘E:\影像\dem\SRTM1 v3.0 贵州\*.hgt file=glob(r'E:\dem\*.hgt') #目标文件夹 merge_location=r'E:\dem' arcpy.MosaicToNewRaster_management(input_rasters
" def Draw500HgtJulyG(): # 打开文件 Hgt = xr.open_dataset(fLoc)["hgt"] # 选定数据 time_label = (Hgt['time'].dt.year >= 1990) & (Hgt['time'].dt.year <= 2019) & \ (Hgt["time"].dt.month == 7) Hgt500Mean = Hgt[time_label].loc[dict(level=500.0)].mean("time").loc[:0, :] # 设置画布 fig = plt.figure(figsize=(16, 10)) # 选定经纬度 lat = np.array(Hgt500Mean['lat']) lon = np.array (Hgt500Mean["lon"]) # 创建一个投影 proj = ccrs.NorthPolarStereo(central_longitude=90) # 创建一个画纸,
神奇海螺说有两种办法,那我们就都试试 方法一 ph = getvar(ncfile, "PH") phb = getvar(ncfile, "PHB") hgt = getvar(ncfile, "HGT ") P=ph+phb P = destagger(P,0,meta=True) gmp=P/9.81-hgt we1 = interplevel(we, gmp ,100) we1 绘图效果如下 方法二 gmp1 = z - hgt we2 = interplevel(we, gmp1 ,100) we2 绘图效果如下 小结 绘图可见两种方法相差非常小,作差之后也是如此。
getvar(ncfile, "PH",timeidx=0)[:,10:140,10:140] phb=getvar(ncfile, "PHB",timeidx=0)[:,10:140,10:140] hgt =getvar(ncfile, "HGT",timeidx=0)[10:140,10:140] o3 = getvar(ncfile, "o3",timeidx=0)[:,10:140,10:140] P=ph+phb P = destagger(P,0,meta=True) gmp=P/9.81-hgt z_list=[10000.,5000.,3000.,1000.]
=hgt_in[:,iy1:iy2,ix1:ix2] pres2pv=pres2pv_in[iy1:iy2,ix1:ix2] pressfc=pressfc_in[iy1:iy2,ix1:ix2] # ') lev = np.array(lev, dtype='float') u = np.array(u, dtype='float') v = np.array(v, dtype='float') hgt = np.array(hgt, dtype='float') pres2pv = np.array(pres2pv, dtype='float') pressfc = np.array(pressfc [iy,ix]=( ((lev[iz]-tp[iy,ix])*hgt[iz+1,iy,ix]+ (tp[iy,ix]-lev [iz+1])*hgt[iz,iy,ix])/ (lev[iz]-lev[iz+1]) ) # calculate PV
02-22T00:00:00 Dataset Provider NASA / USGS / JPL-Caltech Collection Snippet ee.Image("NASA/NASADEM_HGT Accessed 2020-12-30 from LP DAAC - NASADEM_HGT 代码: var dataset = ee.Image('NASA/NASADEM_HGT/001'); var
对 4,500 万对基因组配对的比较表明,跨生境的水平基因转移(HGT)是人类与土壤 ARG 连通性的关键驱动因素。 对共享 ARG 片段上下游 ±5 kb 的注释显示,多数与可移动遗传元件(MGE)共定位,支持其为水平基因转移(HGT)所致。 95%的参与HGT的Rank I ARGs在其上下游5kb范围内检测到移动遗传元件,证实了移动性在ARGs传播中的关键作用。 机制解析与科学意义 ARGs传播的双重机制 研究揭示了ARGs跨栖息地传播的两种主要机制:垂直基因转移(VGT)和水平基因转移(HGT)。 HGT则通过广宿主范围的通用类群(如污水处理厂中的气单胞菌属和生物气溶胶中的约翰逊不动杆菌)实现跨栖息地传播。
由于温和噬菌体可以整合进宿主基因组成为前噬菌体,他们可以成为病毒序列资源从而在HGT中起到关键作用(温和型噬菌体更容易形成共侵染)。 生物信息学的分析表明,温和噬菌体发生HGT的频率要远大于烈性噬菌体。假如根据基因共享来构建一个噬菌体的关系网,那么温和型噬菌体将居于网络的中间,而烈性噬菌体居于网络的外围。 温和性噬菌体所起的作用类似于HGT的基因池。(如上图中lambda是温和型的,T7、T4等是裂解型的)。 根据基因组的共享基因情况,可以绘制噬菌体的网络联系。 前面讲了生活史(温和型或者裂解型)对HGT有影响,但并不能解释全部,即使是温和型噬菌体,也有部分基因流通速率较低,可能宿主和环境等因素对HGT也有影响。 事实上,相同taxonomy宿主的也可以形成不同类群的phage cluster,但是彼此之间也有遗传上的联系,不同宿主噬菌体之间联系的程度不一样,暗示了不同的HGT速率。
1、准备地形数据 将地形tif文件转换为hgt地形。地形数据使用的开放的12.5米地形。使用右侧【gis工具】-tif转hgt2、将地形文件复制到 blosm插件临时目录中。没有目录的可以手工创建。
1 11:24:02 2019 BJ-YZ-DS-SW1&2 %%10DRVPLAT/4/Log Info: -DevIP=172.16.32.5-Slot=2; Slot 2,unit 0 DLB_HGT_FLOWSET_TIMESTAMP_PAGE_X 1 11:24:02 2019 BJ-YZ-DS-SW1&2 %%10DRVPLAT/4/Log Info: -DevIP=172.16.32.5-Slot=2; Slot 2,unit 0 DLB_HGT_FLOWSET_TIMESTAMP_PAGE_X 1 11:24:02 2019 BJ-YZ-DS-SW1&2 %%10DRVPLAT/4/Log Info: -DevIP=172.16.32.5-Slot=2; Slot 2,unit 0 DLB_HGT_FLOWSET_TIMESTAMP_PAGE_X 1 11:24:02 2019 BJ-YZ-DS-SW1&2 %%10DRVPLAT/4/Log Info: -DevIP=172.16.32.5-Slot=2; Slot 2,unit 0 DLB_HGT_FLOWSET_TIMESTAMP_PAGE_X
一般都是以年月风速进行计算的,此处简化为wrfout小时100m处的风速数据 z = getvar(ncfile,"z") ws = getvar(ncfile, "wspd_wdir", units="m s-1")[0] hgt = getvar(ncfile, "HGT") gmp = z - hgt ws100 = interplevel(ws, gmp ,100) # 将数组展平为1D数组 ws100fl = ws100
wspd_wdir', timeidx=ALL_TIMES, method='cat')[1] z = getvar(wrf_list, 'z', timeidx=ALL_TIMES, method='cat') hgt = getvar(wrf_list,'HGT', timeidx=ALL_TIMES, method='cat') gmp = z - hgt wdir100= interplevel(wdir, gmp
1 11:24:02 2019 BJ-YZ-DS-SW1&2 %%10DRVPLAT/4/Log Info: -DevIP=172.16.32.5-Slot=2; Slot 2,unit 0 DLB_HGT_FLOWSET_TIMESTAMP_PAGE_X 1 11:24:02 2019 BJ-YZ-DS-SW1&2 %%10DRVPLAT/4/Log Info: -DevIP=172.16.32.5-Slot=2; Slot 2,unit 0 DLB_HGT_FLOWSET_TIMESTAMP_PAGE_X 1 11:24:02 2019 BJ-YZ-DS-SW1&2 %%10DRVPLAT/4/Log Info: -DevIP=172.16.32.5-Slot=2; Slot 2,unit 0 DLB_HGT_FLOWSET_TIMESTAMP_PAGE_X 1 11:24:02 2019 BJ-YZ-DS-SW1&2 %%10DRVPLAT/4/Log Info: -DevIP=172.16.32.5-Slot=2; Slot 2,unit 0 DLB_HGT_FLOWSET_TIMESTAMP_PAGE_X
ggmice主要可视化绘制函数 我们还是查看ggmice工具中的数据可视化绘制函数,详细介绍如下: ggmice()绘制不完整数据或估算数据 ggmice(dat, aes(age, hgt)) + geom_point() ggmice(imp, aes(x = .imp, y = hgt)) + geom_jitter(height = 0, width = 0.25) + geom_boxplot plot_pred(pred) plot_trace()绘制 MICE 算法的跟踪线,用于收敛性评估 # create traceplot for one variable plot_trace(imp, "hgt
这种方法不在函数体内对数据成员初始化,而是在函数首部实现,例如定义构造函数可以采用如下形式: Box::Box(int hgt,int wid,int len):height(hgt),width(wid
在软件右侧【gis工具】中将地形tif文件转换为 hgt地形序列文件接着点击导出---模型文件导出在模型文件导出对话框中,开启地形。选择hgt地形数据文件夹。并开始导出。
12_00.nc')#读取再分析资料 lon=f['lon_0'][:]#读取经度 lat=f['lat_0'][:]#读取纬度 lons,lats=np.meshgrid(lon,lat)#网格化 HGT_P0 _L100_GLL0=f['HGT_P0_L100_GLL0'][21][:][:]*0.1#我们常用的是位势十米,所以要乘0.1 RH_P0_L100_GLL0=f['RH_P0_L100_GLL0' ) create_map(ax3) ###########首先是将数据全部绘制出来,不做取舍################### a=ax3.contour(lons[:,:],lats[:,:],HGT_P0 ##########然后是仅仅截取要绘制的部分数据来绘图################## c=ax2.contour(lons[40:81,90:140],lats[40:81,90:140],HGT_P0 第三种方法强制指定标签位置################################## m=ax1.contour(lons[40:81,90:140],lats[40:81,90:140],HGT_P0