`

Ruby 版根据经纬度计算距离

 
阅读更多
ER = 6378137.0
FL = 1/298.257;

def rad(d) 
    d * Math::PI / 180.0
end

def calc_distance(lat1, lng1, lat2, lng2)
	cl1 = rad((lat1 + lat2)/2)
	cl2 = rad((lat1 - lat2)/2)
	cl = rad((lng1 - lng2)/2)

    	scl1 = Math.sin(cl1) ** 2
   	scl2 = Math.sin(cl2) ** 2
   	scl = Math.sin(cl) ** 2

	s = scl2 * (1 - scl) + (1 - scl1) * scl
    	c = (1 - scl2) * (1 - scl) + scl1 * scl
	w = Math.atan(Math.sqrt(s / c))
	r = Math.sqrt(s * c) / w;
	d = 2 * w * ER;
	
	h1 =  (3 * r - 1) / 2 / c
    	h2 = (3 * r + 1) / 2 / s;
    	s = d * (1 + FL * (h1 * scl1 * (1 - scl2) - h2 * (1 - scl1) * scl2));
	
	puts '> 99km' if s > 99000
	s
end

 

分享到:
评论

相关推荐

    安装rvm,把ruby版本提升至3.0.0

    在IT行业中,管理和切换Ruby版本是一项常见的任务,特别是在开发环境中,不同的项目可能依赖于不同版本的Ruby。`RVM`(Ruby Version Manager)是解决这一问题的利器,它允许开发者在多个Ruby版本之间轻松切换。本文...

    Ruby-GeokitGeokitgem提供了地理编码和距离计算

    Ruby-Geokit是一个强大的开源库,专为Ruby开发者设计,用于处理与地理位置相关的任务,如地理编码、反向地理编码以及进行距离和方向的计算。这个gem极大地简化了在Ruby应用中集成地理服务的工作,使得开发者能够轻松...

    ruby在unbuntu的安装版本

    Ruby是一种强大的、面向对象的脚本语言,尤其适合Web开发,如使用Rails框架。在Ubuntu操作系统上安装Ruby,可以让你利用其丰富的库和工具来构建高效的应用程序。本指南将详细讲解如何在Ubuntu系统上安装Ruby 2.1.5这...

    Ruby-rubybuild编译和安装Ruby

    Ruby是一种动态、开源的编程语言,以其简洁、优雅的语法和强大的元编程能力著称。在Ruby开发中,为了管理不同版本的Ruby环境,我们常常会使用到`rbenv`和`ruby-build`这两个工具。本文将详细介绍如何使用`ruby-build...

    ruby最新版稳定版

    Ruby,一种为简单快捷的面向对象编程(面向对象程序设计)而创的脚本语言,在20世纪90年代由日本人松本行弘(Yukihiro Matsumoto)开发,遵守GPL协议和Ruby License。它的灵感与特性来自于 Perl、Smalltalk、Eiffel、...

    PROGRAMMING+RUBY中文版

    PROGRAMMING+RUBY中文版 PROGRAMMING+RUBY中文版 PROGRAMMING+RUBY中文版

    Ruby基础教程(第5版)1

    《Ruby基础教程(第5版)》是一本由日本知名编程专家高桥征义和后藤裕藏共同著作,经过Ruby之父松本行弘审校的编程入门指南。本书专注于教授Ruby 2.3版本的语法和核心概念,旨在帮助初学者轻松掌握这门强大的面向...

    Ruby版本管理工具ruby-build.zip

    ruby-build 是一个 rbenv 插件,它提供了一个 rbenv install 命令来在类 UNIX 系统上编译和安装不同版本的 Ruby。你还可以在需要精确控制 Ruby 版本安装的环境中使用不带 rbenv 的 ruby-build。用法在开始之前,...

    rvincenty:Ruby的Vincenty公式的实现,以计算地球上两点之间的距离

    这是Vincenty公式的Ruby实现,用于计算地球上两点之间的距离。 该公式假定地球的形状是扁球形,因此比假定球形地球的其他方法要准确得多。 该代码在很大程度上受到Chris Venues Javascript实现和解释的启发: 两...

    Ruby元编程第二版中文

    这本书“Ruby元编程第二版”专注于讲解Ruby语言的这一独特特性,旨在帮助开发者更好地理解和利用Ruby的元编程能力。 元编程的基本概念是程序能够自省、修改自身或者在运行时生成新的代码。在Ruby中,元编程的强大之...

    Ruby Ruby Ruby Ruby Ruby Ruby

    Ruby Ruby Ruby Ruby Ruby Ruby

    Ruby-fryfish的一个简单的ruby版本管理器

    4. 自动配置:根据当前目录下的 .ruby-version 文件自动选择合适的 Ruby 版本。 5. 兼容性:可能支持其他 Ruby 相关工具,如 bundler(用于管理 gem 包的工具)。 在 fish shell 中,fry 可能会提供更加流畅的...

    programming+ruby中文版第二版

    《Programming Ruby中文版第二版》是一本专注于Ruby编程语言的权威指南,对于想要深入学习和理解Ruby编程的读者来说,是一本不可多得的资源。Ruby作为一种动态、面向对象的编程语言,以其简洁、优雅的语法和强大的元...

    重构 ruby版 英文原版 Refactoring Ruby Edition

    在Ruby编程语言的领域中,《重构 Ruby 版》是一本著名的参考书籍,该书由 Jay Fields、Shane Harvie 和 Martin Fowler 共同撰写,其中 Martin Fowler 是重构方面的权威专家。 书中详细介绍了重构的概念和技术,以及...

    Ruby-rubyinstall安装RubyJRubyRubiniusMagLevorMRuby

    在Ruby的世界里,管理不同的Ruby实现(如MRI、JRuby、Rubinius、MagLev和MRuby)是非常重要的,这有助于开发者根据项目需求选择最适合的运行时环境。`ruby-install`就是这样一个工具,它允许用户方便地安装和管理...

    ruby安装升级及命令自行编译安装非APTGET方式安装升级的办法

    当新的Ruby版本发布时,可以根据个人需求选择是否升级。例如,对于Ruby 1.9.2版本的升级: - 下载Ruby 1.9.2的源码包并按照前述步骤进行编译安装。 - 更改PATH环境变量中的路径指向新的版本目录。 这种方式实现了...

    ruby 1.9.3 p484稳定版本

    Ruby 1.9.3 p484 是一个重要的编程语言版本,专为Windows平台设计,提供了稳定且高效的运行环境。Ruby是一种动态、面向对象的脚本语言,因其简洁、优雅的语法和强大的元编程能力而深受开发者喜爱。在1.9.3这个版本中...

    Ruby 版数据库连接池

    Ruby 版数据库连接池, 可以参考。 数据库是postgresql

    Programming Ruby中文版(第二版)

    本书是它的第2版,其中包括超过200页的新内容,以及对原有内容的修订,涵盖了Ruby 1.8中新的和改进的特性以及标准库模块。它不仅是您学习Ruby语言及其丰富特性的一本优秀教程,也可以作为日常编程时类和模块的参考...

    Eloquent RUBY kindle 版

    Eloquent RUBY Kindle 版本

Global site tag (gtag.js) - Google Analytics