GMT6绘制北半球

news2025/2/23 10:33:25

设置绘制区域及投影方式

投影方式选择立体等角投影,在GMT6中的命令是-Js
在这里插入图片描述

# 定义区域变量和投影变量,纬度从北纬30度到极点
region='-180/180/30/90'
projection='0/90/1:60000000'
gmt set PROJ_ELLIPSOID WGS-84

定义CPT及地形展示

现在定义一个CPT用于显示地形的颜色

# 定义一个CPT
gmt makecpt -Cearth -T-7000/4000 > land.cpt
# 绘制地形并添加海岸线
gmt grdimage -R$region -Js$projection @earth_relief_01m -I+d -Cland.cpt
gmt coast -R$region -Js$projection -Bafg -Di -W0.25p -A10000

完整代码:

#!/usr/bin/env -S bash -e
# GMT modern mode bash template
# Date:    2024-06-13T20:17:44
# User:    br
# Purpose: Purpose of this script
set -e
export GMT_SESSION_NAME=$$	# Set a unique session name
gmt makecpt -Cearth -T-7000/4000 > land.cpt

gmt begin North_Hemispher png
	# Place modern session commands here
	region='-180/180/30/90'
	projection='0/90/1:60000000'
	gmt set PROJ_ELLIPSOID WGS-84
	gmt grdimage -R$region -Js$projection @earth_relief_01m -I+d -Cland.cpt 
	gmt coast -R$region -Js$projection -Bafg -Di -W0.25p -A10000
gmt end show

结果展示:
在这里插入图片描述

只展示陆地地形

现在我有个需求只想展示陆地的地形,因为后面还要叠加海洋温度的数据
此时就需要使用GMT中提供的掩膜方法将陆地的地形数据提取出来,遮住海洋地形的数据

使用grdlandmask模块创建分辨率为1m的陆地掩膜,使用grdcut模块将陆地掩膜的范围裁剪到指定区域方便后续的数学运算,使用grdmath模块中的乘法操作将裁剪后的地形数据与陆地掩膜相乘。这样就得到了陆地的地形数据

gmt grdlandmask -R-180/180/30/90 -I1m -Dl -Gland_mask.nc
gmt grdcut @earth_relief_01m -R-180/180/30/90 -Gearth_relief_cut.nc
gmt grdmath earth_relief_cut.nc land_mask.nc MUL = masked_land.nc

然后将上面的完整代码稍作修改即可

#!/usr/bin/env -S bash -e
# GMT modern mode bash template
# Date:    2024-06-13T20:17:44
# User:    br
# Purpose: Purpose of this script
set -e
export GMT_SESSION_NAME=$$	# Set a unique session name
gmt makecpt -Cearth -T-7000/4000 > land.cpt

gmt begin North_Hemispher png
	# Place modern session commands here
	region='-180/180/30/90'
	projection='0/90/1:60000000'
	gmt set PROJ_ELLIPSOID WGS-84
	gmt grdimage -R$region -Js$projection masked_land.nc -I+d -Cland.cpt 
	gmt coast -R$region -Js$projection -Bafg -Di -W0.25p -A10000
gmt end show

结果展示:在这里插入图片描述

海洋温度数据

我这里有一个海温的数据,是ERA5月温度平均,是一张721*1440的0.25度的TIF文件
海温的范围大致在270-300K。陆地上没有数据,用白色表示
QGIS展示:
在这里插入图片描述

海温数据叠加到北半球

我们可以使用gdalinfo工具查看海温数据的相关信息:

gdalinfo SST.tif

相关信息:

Driver: GTiff/GeoTIFF
Files: SST.tif
       SST.tif.aux.xml
Size is 1440, 721
Origin = (-179.875000000000000,90.000000000000000)
Pixel Size = (0.250000000000000,-0.250000000000000)
Image Structure Metadata:
  INTERLEAVE=BAND
Corner Coordinates:
Upper Left  (-179.8750000,  90.0000000) 
Lower Left  (-179.8750000, -90.2500000) 
Upper Right ( 180.1250000,  90.0000000) 
Lower Right ( 180.1250000, -90.2500000) 
Center      (   0.1250000,  -0.1250000) 
Band 1 Block=1440x1 Type=Float32, ColorInterp=Gray
  Min=269.884 Max=304.888 
  Minimum=269.884, Maximum=304.888, Mean=286.909, StdDev=11.739
  Metadata:
    STATISTICS_MAXIMUM=304.88809204102
    STATISTICS_MEAN=286.90908880145
    STATISTICS_MINIMUM=269.88391113281
    STATISTICS_STDDEV=11.739334479632
    STATISTICS_VALID_PERCENT=66.11

显然直接将海温数据叠加到北半球上是不行的,首先需要对海温数据的范围进行裁剪,裁剪到指定区域

gmt grdcut SST.tif -R-180/180/30/90 -Gcut_SST.tif

接下来就可以进行叠加了。需要注意的是在GMT中后面的grdimage图层会覆盖掉前面的图层,所以需要使用-t选项设置一定的透明度。同时给海洋温度添加rainbow的CPT。完整代码:

#!/usr/bin/env -S bash -e
# GMT modern mode bash template
# Date:    2024-06-13T20:17:44
# User:    br
# Purpose: Purpose of this script
set -e
export GMT_SESSION_NAME=$$	# Set a unique session name
gmt makecpt -Cearth -T-7000/4000 > land.cpt
gmt makecpt -Crainbow -T270/300/1 > ocean.cpt

gmt begin North_Hemispher png
	# Place modern session commands here
	region='-180/180/30/90'
	projection='0/90/1:60000000'
	gmt set PROJ_ELLIPSOID WGS-84
	
	gmt grdimage -R$region -Js$projection masked_land.nc -I+d -Cland.cpt
	gmt grdimage -R$region -Js$projection cut_SST.tif -Cocean.cpt -t30 # -t设置透明度为30%
	
	gmt coast -R$region -Js$projection -Bafg -Di -W0.25p -A10000
	gmt colorbar -DJRM+w6.5c/0.5c+o1c/0+mc -Bxa -By -G270/300 

gmt end show

结果展示:

可以看到北极圈附近的海温相对较低,往南海温逐渐升高
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1824469.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

彻底理解 C 语言的数组在内存中到底是怎么存放的!

在C语言中,数组是经常被用到的重要数据类型,但在实际使用时,往往有很多工程师会出现各种各样的问题,如内存越界、错误的访问、初始化不当等。这其中有很大一个原因是没有彻底理解数组的存储机制,出现了一些非法地址或者…

基于springboot实现农产品直卖平台系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现农产品直卖平台系统的设计演示 摘要 计算机网络发展到现在已经好几十年了,在理论上面已经有了很丰富的基础,并且在现实生活中也到处都在使用,可以说,经过几十年的发展,互联网技术已经把地域信息的隔…

英语学习笔记36——Where ... ?

Where … ? ……在哪里? 词汇 Vocabulary beside prep. 在……旁边 同义词: near by 构成:be side side n. 边 搭配:side walk 人行道 例句:Bobby在我旁边。    Bobby is beside me. off prep. 离开&#xff…

Excel使用技巧(一)

一. 快速调整数据位置 已经录入数据的表格,要调整某一列的位置怎么办? 只要选中要调整的数据区域,然后按住Shift键不放,光标放到绿色边框位置后,按下鼠标左键不放拖动即可: 二. 取消合并单元格并恢复数据…

java反序列化---cc6链

目录 Transformer[]数组分析 链条代码跟进 ChainedTransformer.transform() LazyMap.get() TiedMapEntry.getValue() TiedMapEntry.hashCode() HashMap.hash() HashMap.put()的意外触发 LazyMap.get()中key的包含问题 cc6的payload如下 import org.apache.commons.co…

AI绘画入门教学:ComfyUI工作流安装教程

ComfyUI 是专为 Stable Diffusion 打造的图形用户界面(GUI),采用了基于节点的操作方式。用户可以通过连接不同的模块(即节点)来创建复杂的图像生成流程。这些节点涵盖了多样的功能,包括加载检查点模型、输入…

CSS从入门到精通——背景样式

目录 背景颜色 任务描述 相关知识 背景色 编程要求 背景图片 任务描述 相关知识 背景图片 设置背景图片 平铺背景图像 任务要求 背景定位与背景关联 任务描述 相关知识 背景定位 背景关联 简写背景 编程要求 背景颜色 任务描述 本关任务:在本关…

在不损失质量的情况下减小PDF 文件大小的 6 种方法

PDF 文件通常带有大量图形和图像,这可能会使 PDF 文件大小相当大。而当我们通过电子邮件上传或发送具有大小限制的 PDF 时,大型 PDF 经常会带来麻烦,或者大文件占用了太多空间。在这种情况下,在不损失质量的情况下减小 PDF 文件大…

文章MSM_metagenomics(一):介绍

介绍 欢迎大家关注全网生信学习者系列: WX公zhong号:生信学习者Xiao hong书:生信学习者知hu:生信学习者CDSN:生信学习者2 用于复现Huang et al. [huang2024establishment]研究分析的计算工作流程,所有复…

基于51单片机的智能水表

一.硬件方案 本设计主要以51单片机作为主控处理器的智能水表,该水表能够记录总的用水量和单次用水量,当用水量超出设定值时系统发出声光报警提醒,水量报警值能够通过按键进行自行设置,并且存储于AT24C02中,并且可以测…

法国恐脱欧、陷金融危机!股指本周跌6.2%,创三年多最大跌幅

内容提要 法国财政部长警告称,左翼政党联盟若上台可能导致法国脱欧,而且无论极右翼还是左翼上台,都可能导致法国爆发金融危机。由于政坛风险高企,法国股市周五延续跌势,本周已经抹掉2100亿美元市值,几乎回…

RabbitMQ实践——利用一致性Hash交换器做带权重的调度

在《RabbitMQ实践——利用一致性Hash交换器做负载均衡》一文中,我们介绍了如何开启一致性hash交换器,并实现了消息的负载均衡,以达到横向扩展消费者数量的能力。 但是现实中,可能存在这样的场景:一些队列所在的机器配置…

ComfyUI 宝藏插件之辅助工具

今天我们就来分享下这个 ComfyUI 辅助脚本工具的功能。 插件安装,小伙伴们直接在管理器里搜索「ComfyUI-Custom-Scripts」,点击安装就可以了,这里再告诉小伙伴们一个小技巧,点击名称可以跳转到插件所在的官网哦。 没有安装管理器…

linux中DNS域名解析服务(后续补充)

分离解析简介: 分离解析的域名服务器实际也是主域名服务器,这里主要是指根据不同的客户端提供不同的域名解析记录。比如来自内网和外网的不同网段地址的客户机请求解析同一域名时,为其提供不同的解析结果。 实验要求:防火墙要么关…

【第10章】Vue之Element Plus常用组件

文章目录 前言一、表格1. 带斑马纹表格2. 展示 二、分页1.国际化(中文)2.分页代码3. 展示 三、表单1. 表单代码2. 展示 四、卡片1. 卡片代码2. 展示 总结 前言 通过上一章的快速入门,我们已经学习了按钮使用,接下来学习Element Plus的常用组件&#xff…

HTMLCSS详细总结(提高版)

HTML5的新特性 1. HTML5 新增的语义化标签 <div class“header”> </div> <div class“nav”> </div> <div class“content”> </div> <div class“footer”> </div> <header>&#xff1a;头部标签<nav>&#…

Stable Diffusion【应用篇】【艺术写真】:粘土风之后陶瓷风登场,来看看如何整合AI艺术写真吧

在国外的APP Remini引爆了粘土滤镜后&#xff0c;接着Remini又推出了瓷娃娃滤镜。相当粘土滤镜&#xff0c;个人更喜欢瓷娃娃滤镜&#xff0c;因为陶瓷工艺更符合东方艺术审美。 下面我们就来看看陶瓷特效在AI写真方面的应用。话不多说&#xff0c;我们直接开整。 关于粘土整…

day54 动态规划 part10 300.最长递增子序列 674. 最长连续递增序列 718. 最长重复子数组

300.最长递增子序列 动规五部曲 1.dp[i]的定义 dp[i]表示i之前包括i的以nums[i]结尾的最长递增子序列的长度 2.状态转移方程 位置i的最长升序子序列等于j从0到i-1各个位置的最长升序子序列 1 的最大值。 所以&#xff1a;if (nums[i] > nums[j]) dp[i] max(dp[i], dp…

Trumpf将携其用于光学传感的VCSEL紧凑型激光器精彩亮相

这款卓越的激光器将助力工业环境下的光学传感器焕发新活力。在即将到来的德国纽伦堡传感器测试盛会上&#xff08;6月11日至13日&#xff09;&#xff0c;通快光子元件将献上两场震撼的现场演示&#xff0c;全方位展示其单模VCSEL解决方案的卓越性能。 其中一场演示将深入浅出地…

OPNsense 24.1 - 基于 FreeBSD 的开源防火墙和路由平台

OPNsense 24.1 - 基于 FreeBSD 的开源防火墙和路由平台 请访问原文链接&#xff1a;https://sysin.org/blog/opnsense/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.org 关于 OPNsense OPNsense 是一个开源、易于使用且易于构建…