当前位置: 首页 > news >正文

shell 脚本计算距离最近的坐标

shell 脚本计算距离最近的坐标

坐标数据文件geo.log格式如下:

beijing(116.405285,39.904989)
tinajin(117.190182,39.125596)
hebei(114.502461,38.045474)
shanxi(112.549248,37.857014)
neimenggu(111.670801,40.818311)
liaoning(123.429096,41.796767)
jilin(125.3245,43.886841)
heilongjiang(126.642464,45.756967)
shanghai1(121.472644,31.231706)
jiangsu(118.767413,32.041544)
zhejiang(120.153576,30.287459)
anhui(117.283042,31.86119)
fujian(119.306239,26.075302)
jiangxi(115.892151,28.676493)
shandong(117.000923,36.675807)
henan(113.665412,34.757975)
hubei(114.298572,30.584355)
hunan(112.982279,28.19409)
guangdong(113.280637,23.125178)
guangxi(108.320004,22.82402)
hainan(110.33119,20.031971)
chongqing(106.504962,29.533155)
sichuan(104.065735,30.659462)
guizhou(106.713478,26.578343)
yunnan(102.712251,25.040609)
xizang(91.132212,29.660361)
shanxi3(108.948024,34.263161)
gansu(103.823557,36.058039)
qinghai(101.778916,36.623178)
ningxia(106.278179,38.46637)
xinjiang(87.617733,43.792818)
taiwan(121.509062,25.044332)
xianggang(114.173355,22.320048)
aomen(113.54909,22.198951)

编写脚本文件 coordinate.sh

#!/bin/bash# 计算两点之间的距离
function distance {x1=$1y1=$2x2=$3y2=$4echo "scale=2; sqrt(($x2 - $x1)^2 + ($y2 - $y1)^2)" | bc
}# 检查参数是否传入
if [ -z "$1" ] || [ -z "$2" ]; thenecho "Usage: $0 <coordinates file> <point name>"exit 1
fi# 从文件中读取坐标点并计算最近的点
while IFS='(' read -r name rest; doname=$(echo $name | tr -d ' ')  # 去除空格rest=$(echo $rest | tr -d ')')  # 去除右括号IFS=',' read -r x y <<< "$rest"if [ "$name" = "$2" ]; thenxA=$xyA=$yelsedist=$(distance $xA $yA $x $y)if [ -z "$minDistance" ] || (( $(echo "$dist < $minDistance" | bc -l) )); thenminDistance=$distclosestPoint=$namefifi
done < "$1"  # 从传入的文件中读取坐标点echo "距离 $2 最近的点是 $closestPoint,距离为 $minDistance"

执行脚本文件 coordinate.sh

shell 脚本计算距离最近的坐标

相关文章:

  • 1.0 十大经典排序算法
  • 基于运算放大器的电压采集电路
  • Maven安装
  • 计算机组成学习-计算机系统概述总结
  • 一篇带你串通数据结构
  • python+pytest接口自动化(6)-请求参数格式的确定
  • 数据结构与算法-静态查找表
  • Fiddler抓包工具之高级工具栏中的重定向AutoResponder的用法
  • 【网络安全技术】实体认证技术Kerberos
  • Hdoop学习笔记(HDP)-Part.02 核心组件原理
  • 【linux】信号——信号保存+信号处理
  • go使用aes加密算法
  • 详细学习Pyqt5的20种输入控件(Input Widgets)
  • Docker下安装Redis
  • STM32 ADC转换器、串口输出
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • Facebook AccountKit 接入的坑点
  • isset在php5.6-和php7.0+的一些差异
  • JavaScript 奇技淫巧
  • Linux快速复制或删除大量小文件
  • React-Native - 收藏集 - 掘金
  • Redux 中间件分析
  • tensorflow学习笔记3——MNIST应用篇
  • 关于extract.autodesk.io的一些说明
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • 基于webpack 的 vue 多页架构
  • 快速体验 Sentinel 集群限流功能,只需简单几步
  • 前端每日实战:61# 视频演示如何用纯 CSS 创作一只咖啡壶
  • 深度学习入门:10门免费线上课程推荐
  • 移动端解决方案学习记录
  • elasticsearch-head插件安装
  • Semaphore
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • ​Linux·i2c驱动架构​
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • ###项目技术发展史
  • #NOIP 2014# day.1 T3 飞扬的小鸟 bird
  • #我与Java虚拟机的故事#连载07:我放弃了对JVM的进一步学习
  • (11)MATLAB PCA+SVM 人脸识别
  • (11)MSP430F5529 定时器B
  • (js)循环条件满足时终止循环
  • (ZT) 理解系统底层的概念是多么重要(by趋势科技邹飞)
  • (附源码)ssm教材管理系统 毕业设计 011229
  • (附源码)计算机毕业设计SSM基于健身房管理系统
  • (理论篇)httpmoudle和httphandler一览
  • (三分钟)速览传统边缘检测算子
  • (十三)Flask之特殊装饰器详解
  • (未解决)macOS matplotlib 中文是方框
  • (一)WLAN定义和基本架构转
  • (译) 函数式 JS #1:简介
  • (转) Face-Resources
  • (转)ABI是什么
  • .NET 设计一套高性能的弱事件机制
  • .NET 中的轻量级线程安全