`

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

    Redis安装遇到错误解决方案Error installing redis: redis requires Ruby version >= 2.3.0. 先安装rvm,再把ruby版本提升至2.3.0

    ruby最新版稳定版

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

    PROGRAMMING+RUBY中文版

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

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

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

    ruby代码ruby代码ruby代码ruby代码ruby代码ruby代码

    ruby代码ruby代码ruby代码ruby代码ruby代码ruby代码ruby代码ruby代码

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

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

    Ruby 版数据库连接池

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

    Programming Ruby中文版(第二版)

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

    Eloquent RUBY kindle 版

    Eloquent RUBY Kindle 版本

    ruby基础教程(中文第四版).epub

    是市面上最适合初学者入门的 Ruby 教程,由 ruby 创始人亲自编写。 这是一本绝对不会让初学者失望的Ruby入门书。 ——Ruby之父 松本行弘 本书为日本公认的最好的Ruby入门教程。 松本行弘亲自审校并作序推荐。 ...

    Ruby元编程第二版中文

    Ruby元编程第二版,中文影印版,便于英文不好的同学们学习

    ruby2ruby.zip

    ruby2ruby 提供一些用来根据 RubyParser 兼容的 Sexps 轻松生成纯 Ruby 代码的方法。可在 Ruby 中轻松实现动态语言处理。 标签:ruby2ruby

    ruby DBI ruby DBI ruby DBI

    ruby DBI ruby DBI ruby DBIruby DBI ruby DBI ruby DBIruby DBI ruby DBI ruby DBIruby DBI ruby DBI ruby DBIruby DBI ruby DBI ruby DBIruby DBI ruby DBI ruby DBIruby DBI ruby DBI ruby DBIruby DBI ruby DBI ...

    《重构(Ruby版)》

    《重构(Ruby版)》电子书。 本书的内容 本书是一本专门为职业Ruby程序员编写的重构指导。我们的目标是要向你展示怎样以一种受到严格控制同时又高效的方式来进行重构。你会学习到不在代码里引入bug并能按部就班地改进...

    ruby在unbuntu的安装版本

    这是linux版本下的ruby2.1.5版本,亲测可用,现在最新的版本

    重构 ruby版 英文原版 Refactoring Ruby Edition

    重构 ruby版 英文原版 Refactoring Ruby Edition 高清

    Ruby完全自学手册 下

    《Ruby完全自学手册》是一本完全覆盖Ruby和Ruby on Rails的完全自学手册。《Ruby完全自学手册》的特色是由浅入深、循序渐进,注重理论和实践的结合。虽然定位为入门手册,但是依然涉及许多高级技术和应用,覆盖到的...

    programming+ruby中文版第二版

    《 programming+ruby中文版第二版》 对programming+ruby 中文版的再版。

    ruby语言最新版本

    Ruby是一种纯粹的面向对象编程语言。它由日本的松本行弘(まつもとゆきひろ/Yukihiro Matsumoto)创建于1993年。 您可以在 www.ruby-lang.org 的 Ruby 邮件列表上找到松本行弘(まつもとゆきひろ/Yukihiro Matsumoto...

Global site tag (gtag.js) - Google Analytics