awk运用三维数组进行插值获得任意经纬度处的水层沉积层地壳厚度
awk三维数组与插值
目的:给定经纬度,获得该点地下的冰层水层沉积层和地壳的厚度
实现:awk一行命令
下载Crust1.0模型
该数据集的详细介绍见官网.
解压后有几个文件:crust1.vp,crust1.vs,crust1.rho,crust1.bnds,分别代表P波速度,S波速度,密度和深度.
数据格式
每个文件共有64800行,9列,每行经纬度如下表所列。crust1.bnds的每行代表某个经纬度所对应的水层,冰层,上中下沉积层和上中下地壳的深度。
行号 | latitude | lat_index | longitude | lon_index |
---|---|---|---|---|
1 | 89.5 | 180 | -179.5 | 0 |
2 | 89.5 | 180 | -178.5 | 1 |
--- | --- | --- | --- | --- |
360 | 89.5 | 180 | 179.5 | 359 |
361 | 88.5 | 179 | -179.5 | 0 |
362 | 89.5 | 179 | -178.5 | 1 |
--- | --- | --- | --- | --- |
64800 | -89.5 | 0 | 179.5 | 359 |
awk三维数组存储
在BEGIN{}里将三维数组初始化,在{}里将数据存储到三维数组中,在END{}里线性插值
lat=-89.5
lon=-179.5
cat /opt/crust10/crust1.bnds | awk 'BEGIN{
for (lat_index=0; lat_index<180; lat_index++) {
for (lon_index=0; lon_index<360; lon_index++) {
for (i=1; i<=9; i++) {
value[lat_index,lon_index,i]=0.0
}
}
}
}{
lat_index=180-int(NR/360);
lon_index=NR%360;
for (i=1; i<=9; i++) {
value[lat_index,lon_index,i]=$i
}
}END{
lat_index1=int('"$lat"'+89.5)
lat_index2=lat_index+1
lon_index1=int('"$lon"'+179.5)
lon_index2=lon_index+1
for (i=1; i<9; i++) {
lat1='"$lat"'+89.5-lat_index1
lat2=1.0-lat1
lon1='"$lon"'+179.5-lon_index1
lon2=1.0-lon1
print i,value[lat_index1,lon_index1,i]*lon2*lat2+value[lat_index1,lon_index2,i]*lon1*lat2+value[lat_index2,lon_index1,i]*lon2*lat1+value[lat_index2,lon_index2,i]*lon1*lat1
}
}' | cat
awk运用三维数组进行插值获得任意经纬度处的水层沉积层地壳厚度的更多相关文章
- C++类实现三维数组算法
在学习北京大学教授的<程序设计实习 / Practice on Programming>中,遇到了一个习题,花了很长时间研究,现在分享出来: 课题地址:https://class.cour ...
- Jni :三维数组处理方法 ,以整形三维数组为例 C++实现
本文原创,转载请注明地址:http://www.cnblogs.com/baokang/p/4982846.html 关于Jni的基本使用方法,请参阅:Java 调用 C++ (Java 调用 dll ...
- C语言三维数组分解
很多人在学习C的时候,感觉三维数组很难想象,而且不理解深度是什么?做了一个图,帮大家分解一下 ...
- Java 一维数组 二维数组 三维数组
二维数组包含一位数组 三维数组就是在二维数组的基础上,再加一层.把二维数组看做是一维数组就可以了,按照上述理解类推. 下面是 一维 二维 三维数组例子 一维数组: int[] array1 ...
- 三维数组——与 宝玉QQ群讨论交流之二
宝玉 12:27:35 这几天看了大部分大家交的作业,发现一个主要问题还是卡在对三维数组的理解上,之前把三维数组类比成三维空间可能会造成误导 宝玉 12:27:45 其实鞠老师解释的很好: 三维数组 ...
- c# 基础之数组(包含三维数组)
public enum ChessType { White = , None=, Black=, } class Program { static void Main(string[] args) { ...
- php三维数组变二维数组
<?php $result = Array(0 => Array(0 => Array(bid => 41,brealname => 'we教官',cid => 4 ...
- java读取目录下所有csv文件数据,存入三维数组并返回
package dwzx.com.get; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; ...
- php三维数组去重(示例代码)
php三维数组去重的示例代码. 假设叫数组 $my_array; <?php // 新建一个空的数组. $tmp_array = array(); $new_array = array(); ...
随机推荐
- 高精度减法(C++实现)
高精度减法 简介 用于计算含有超过一般变量存放不下的非负整数 高精度加法这个过程是模拟的小学竖式减法计算 注:在本文中,我们默认输入的第一个数为被减数,且被减数大于减数 原理基本上与高精度加法相同,仅 ...
- ZABBIX Proxy容器启动的配置过程
ZABBIX Proxy容器启动的配置过程 环境介绍 版本 zabbix6 zabbix server 与 zabbix proxy 非同一台主机,zabbix proxy为主动方式提交给server ...
- VMware下ubuntu 20.04扩容/磁盘
最近搞zabbix监控,发现搭建的监控server主机磁盘告警.提示/超过阈值80%. 有实在VMware软件下的虚拟机,首先我就是给虚机磁盘增加容量. 增加后发现没什么改变,看来还需要其他操作. 在 ...
- 史上最全log4j2远程命令执行漏洞汇总报告
已投稿信安之路公众号,文章链接
- Intellij IDEA 2022 正式发布,这些功能真不错
Intellij IDEA 2022 正式发布了,作为正版用户,胖哥赶紧更新了一波,好家伙!这几个功能确实很香啊.新版更新的东西真不少,不愧是一个大版本更新. 依赖分析 IDEA的依赖检查.依赖冲突解 ...
- 计算机系统5-> 计组与体系结构2 | MIPS指令集(上)| 指令系统
系列的上一篇计算机系统4-> 计组与体系结构1 | 基础概念与系统评估,学习了一些计算机的基础概念,将一些基本的计算机组成部分的功能和相互联系了解了一下,其中很重要的一个抽象思想就是软硬件的接口 ...
- Android第1-2周作业
作业1:安装环境,截图编程界面,截图运行界面 作业2:九宫格 <?xml version="1.0" encoding="utf-8"?> < ...
- Synchronized锁及其膨胀
一.序言 在并发编程中,synchronized锁因其使用简单,在线程间同步被广泛应用.下面对其原理及锁升级过程进行探究. 二.如何使用 1.修饰实例方法 当实例方法被synchronized修饰时, ...
- OSPF MTU问题
OSFP(开放式最短路径优先)链路状态协议,IGP 1.mtu 检测 链路俩段不匹配 假设双方的mtu不一致时 ospf建立如下: R1与R2交互hello报文,其中包含:目的IP地址:224.0.0 ...
- InnoDB数据存储结构
MySQL服务器上 存储引擎 负责对表中数据的读取和写入工作,不同存储引擎中 存放的格式 一般是不同的,甚至有的存储引擎(Memory)不用磁盘来存储数据. 页 (Page) 是磁盘和内存之间交互的基 ...