我是靠谱客的博主 玩命咖啡,最近开发中收集的这篇文章主要介绍oracle中有没有distance,如何使用Oracle的sdo_distance,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

我试图计算Oracle DB中两点之间的距离,

Point A is 40.716715, -74.033907

Point B is 40.716300, -74.033900

使用这个sql语句:

SELECT sdo_geom.sdo_distance( sdo_geom.sdo_geometry(2001 ,8307 ,sdo_geom.sdo_point_type(40.716715, -74.033907 , NULL) ,NULL ,NULL)

,sdo_geom.sdo_geometry(2001 ,8307 ,sdo_point_type(40.716300,-74.033901, NULL) ,NULL ,NULL) ,0.0001 ,'unit=M') distance_in_m

from DUAL;

结果是12.7646185977151

使用Apple的CoreLocation api进行此操作时:

CLLocation* pa = [[CLLocation alloc] initWithLatitude:40.716715 longitude:-74.033907];

CLLocation* pa2 = [[CLLocation alloc] initWithLatitude:40.716300 longitude:-74.033900];

CLLocationDistance dist = [pa distanceFromLocation:pa2];

结果是46.0888946842423

自己实施

double dinstance_m(double lat1, double long1, double lat2, double long2){

double dlong = (long2 - long1) * d2r;

double dlat = (lat2 - lat1) * d2r;

double a = pow(sin(dlat/2.0), 2) + cos(lat1*d2r) * cos(lat2*d2r) * pow(sin(dlong/2.0), 2);

double c = 2 * atan2(sqrt(a), sqrt(1-a));

double d = 6367 * c;

return d * 1000.;

}

结果是46.120690774231

Oracle的实现显然是关闭的,但我不明白为什么.任何帮助将不胜感激.

最后

以上就是玩命咖啡为你收集整理的oracle中有没有distance,如何使用Oracle的sdo_distance的全部内容,希望文章能够帮你解决oracle中有没有distance,如何使用Oracle的sdo_distance所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部