oracle近似查找,距离内的Oracle空间搜索

对于mySQL距离搜索,你有很好的参考.

忘记Oracle Spatial的东西.代码太多,复杂性太大,没有足够的增值.

这是一个可以解决问题的查询.这使用法定里程的距离.编辑这修复了mdarwin提到的错误,如果你试图将它用于北极或南极的位置,则以划分检查为代价.

SELECT id, city, LATITUDE, LONGITUDE, distance

FROM

(

SELECT id,

city,

LATITUDE, LONGITUDE,

(3959 * ACOS(COS(RADIANS(LATITUDE))

* COS(RADIANS(mylat))

* COS(RADIANS(LONGITUDE) - RADIANS(mylng))

+ SIN(RADIANS(LATITUDE))

* SIN(RADIANS(mylat))

))

AS distance,

b.mydst

FROM Cities

JOIN (

SELECT :LAT AS mylat,

:LONG AS mylng,

:RADIUS_LIMIT AS mydst

FROM DUAL

)b ON (1 = 1)

WHERE LATITUDE >= mylat -(mydst/69)

AND LATITUDE <= mylat +(mydst/69)

AND LONGITUDE >= mylng -(mydst/(69 * COS(RADIANS(mylat))))

AND LONGITUDE <= mylng +(mydst/(69 * COS(RADIANS(mylat))))

)a

WHERE distance <= mydst

ORDER BY distance

如果您以公里为单位工作,请将mydst / 69更改为mydst / 111.045,并将3959更改为6371.4. (1/69将英里转换为度数; 3959是行星半径的值.)

现在,您可能会想要将这个大型查询用作“魔术黑盒子”.不要这样做!这不是很难理解,如果你理解它,你将能够做得更好.这是正在发生的事情.

该子句是使查询快速运行的核心.它会在您的Cities表中搜索您指定的点附近的城市.

WHERE LATITUDE >= mylat -(mydst/69)

AND LATITUDE <= mylat +(mydst/69)

AND LONGITUDE >= mylng -(mydst/(69 * COS(RADIANS(mylat))))

AND LONGITUDE <= mylng +(mydst/(69 * COS(RADIANS(mylat))))

要使它工作,你肯定需要一个LATITUDE列的索引. LONGITUDE列上的索引也会有所帮助.它进行近似搜索,寻找在您的点附近的地球表面上的准矩形块内的​​行.它选择了太多的城市,但不是太多.

此子句允许您从结果集中删除额外的城市:

WHERE distance <= mydst

该子句是用于计算每个城市与您的观点之间的大圆距离的半正公式.

(3959 * ACOS(COS(RADIANS(LATITUDE))

* COS(RADIANS(mylat))

* COS(RADIANS(LONGITUDE) - RADIANS(mylng))

+ SIN(RADIANS(LATITUDE))

* SIN(RADIANS(mylat))

此子句允许您输入您的点和半径限制,只需输入一次作为查询的绑定变量.它很有用,因为各种公式多次使用这些变量.

SELECT :LAT AS mylat,

:LONG AS mylng,

:RADIUS_LIMIT AS mydst

FROM DUAL

查询的其余部分只是组织事物,以便您按距离选择和排序.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/496274.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring Data JPA 从入门到精通~Naming命名策略详解及其实践

Naming 命名策略详解及其实践 用 JPA 离不开 Entity 实体&#xff0c;我都知道实体里面有字段映射&#xff0c;而字段映射的方法有两种&#xff1a; 显式命名&#xff1a;在映射配置时&#xff0c;设置的数据库表名、列名等&#xff0c;就是进行显式命名&#xff0c;即通过 C…

C 和 C++ 字符串格式化

--------------------------------------------------------------------------------- gcc中格式化输出函数的研究&#xff1a;http://blog.csdn.net/dai_xiangjun/article/details/41356723 C语言格式化输出小结&#xff1a;http://blog.51cto.com/happyliu/1621709 代码如…

转载(四).Net Framework中的委托与事件

尽管 &#xff08;委托、事件与Observer设计模式 &#xff09;中的范例很好地完成了我们想要完成的工作&#xff0c;但是我们不仅疑惑&#xff1a;为什么.Net Framework 中的事件模型和上面的不同&#xff1f;为什么有很多的EventArgs参数&#xff1f; 在回答上面的问题之前&am…

激光雷达:从光电技术角度看自动驾驶

来源&#xff1a; 传感器技术激光雷达和与之竞争的传感器技术&#xff08;相机、雷达和超声波&#xff09;加强了对传感器融合的需要&#xff0c;也对认真谨慎地选择光电探测器、光源和MEMS振镜提出了更高的要求。传感器技术、成像、雷达、光探测技术及测距技术&#xff08;激光…

Spring Data JPA 从入门到精通~定义查询方法的配置方法

定义查询方法的配置方法 由于 Spring JPA Repository 的实现原理是采用动态代理的机制&#xff0c;所以我们介绍两种定义查询方法&#xff0c;从方法名称中可以指定特定用于存储的查询和更新&#xff0c;或通过使用 Query 手动定义的查询&#xff0c;取决于实际对数据的操作&a…

socket的长连接、短连接、半包、粘包与分包

socket的半包&#xff0c;粘包与分包的问题和处理代码&#xff1a;http://blog.csdn.net/qq_16112417/article/details/50392463 知乎关于长连接和短连接&#xff1a;https://www.zhihu.com/search?typecontent&q长连接%20短连接 TCP网络通讯如何解决分包粘包问题&#…

在Windows2003server上安装msn9.0以上版本的解决办法

方法一&#xff1a; 最近windows 强制升级了msn 9的版本。导致我在windows2003下的msn又一次需要剥离出msi文件才能安装了。在网上逛了一圈发现了如下方法&#xff0c;这里分享下&#xff0c;同时&#xff0c;也感谢作者的详细步骤。 2003SERVER版安装MSN 9.0&#xff08;版本2…

oracle exec编译失效,编译oracle失效的函数、存储过程、视图等

进行oracle开发时常常为不时失效的存储过程&#xff0c;函数等苦恼&#xff0c;于是下决心解决这个问题&#xff0c;东查西找&#xff0c;找到一个好东东&#xff0c;在基础上又修改了一下,问题终于被我解决了。1。建立一个存储过程CREATE OR REPLACE PROCEDURE TIMER_AUTO_REC…

2018年中国人工智能行业研究报告|附下载

来源&#xff1a;网络大数据、艾瑞咨询广义人工智能指通过计算机实现人的头脑思维所产生的效果&#xff0c;是对能够从环境中获取感知并执行行动的智能体的描述和构建;相对狭义的人工智能包括人工智能产业(包含技术、算法、应用等多方面的价值体系)、人工智能技术(包括凡是使用…

浅谈基于TCP和UDP的协议设计

From&#xff1a;http://blog.sina.com.cn/s/blog_48d4cf2d0101859x.html 一个基于TCP/WebSockets的超级精简的长连接消息协议&#xff1a;https://studygolang.com/articles/10506 github 上 一个简单的消息协议&#xff1a;https://github.com/acrazing/stmp google prot…

Spring Data JPA 从入门到精通~方法的查询策略设置

方法的查询策略设置 通过下面的命令来配置方法的查询策略&#xff1a; EnableJpaRepositories(queryLookupStrategy QueryLookupStrategy.Key.CREATE_IF_NOT_FOUND) 其中&#xff0c;QueryLookupStrategy.Key 的值一共就三个&#xff1a; Create&#xff1a;直接根据方法名…

IE6下PNG图片透明效果(PNG图片做背景也可以)

懒人萱在这里保证发的文章都是高质量的经过测试的JS代码&#xff0c;而且IE6、IE7和火狐都兼容的&#xff0c;希望大家多多关注我的帖子&#xff0c;我会把我的经验都共享出来哦&#xff01;  懒人萱在寻找PNG图片透明效果的JS特效代码的时候&#xff0c;发现大部分的效果只能…

oracle数据块调用存储过程,VC调用存储过程的通用方法(ORACLE篇)

先对上一篇调用SQLServer的存储过程作一点补充&#xff0c;就是如果存储过程里有Insert,update,delete等操作&#xff0c;最后返回结果集&#xff0c;按示例代码有可能得不到数据&#xff0c;因为返回的数据有可能不在第一个结果集&#xff0c;需要进行遍历&#xff1a;long ln…

不用地图如何导航?DeepMind提出新型双路径强化学习「智能体」架构

来源&#xff1a;deepmind、arXiv作者&#xff1a;Piotr Mirowski、Matthew Koichi Grimes、Mateusz Malinowski、Karl Moritz Hermann、Keith Anderson、Denis Teplyashin、Karen Simonyan、Koray Kavukcuoglu、Andrew Zisserman、Raia Hadsell「雷克世界」编译&#xff1a;嗯…

C 和 C++ 宏 详解

From&#xff1a;https://www.cnblogs.com/njczy2010/p/5773061.html C中的预编译宏详解&#xff1a;http://www.cppblog.com/bellgrade/archive/2010/03/18/110030.html C语言的宏总结&#xff1a;http://blog.csdn.net/pirlck/article/details/51254590 C 语言中的 宏定义…

常用代码生成工具介绍

1&#xff1a;CodeSmith工具优点&#xff1a;支持模板类&#xff0c;可扩展强。建议使用。目前公认的最强大的代码生成工具&#xff0c;支持各种语言。可以和开发环境无缝集成。例如&#xff1a;Vs2008等。缺点&#xff1a;不免费&#xff0c;最新的可破解版本为4.0.2&#xff…

Spring Data JPA 从入门到精通~查询方法的创建

查询方法的创建 内部基础架构中有个根据方法名的查询生成器机制&#xff0c;对于在存储库的实体上构建约束查询很有用&#xff0c;该机制方法的前缀 find…By、read…By、query…By、count…By 和 get…By 从所述方法和开始分析它的其余部分&#xff08;实体里面的字段&#x…

oracle表参数,Oracle 表的创建 及相关参数

1、创建表完整语法CREATE TABLE [schema.]table(column datatype [, column datatype] … )[TABLESPACE tablespace][PCTFREE integer][PCTUSED integer][INITRANS integer][MAXTRANS integer][STORAGE storage-clause][LOGGING | NOLOGGING][CACHE | NOCACHE] ];说明&#xff…

人工智能在能源行业的5个应用

作者&#xff1a;CB Insights . 来源&#xff1a;CometLabs摘要&#xff1a;自2012年以来&#xff0c;把人工智能和能源产业放在一起进行报道的新闻开始增多。本文简要描述了人工智能在能源行业的5个应用方向&#xff0c;及对应的案例。能源行业会产生大量的数据。为了将这些数…

fork vfork exit _exit (转)

原文地址&#xff1a;http://hi.baidu.com/ikaruga11/blog/item/fb6d75725a8d8d148701b080.htmlAPUE上的一个例子&#xff1a;example1 (forkt.c ):#include<stdlib.h>#include<unistd.h>#include<stdio.h>#include<sys/types.h>int glob 5;int main(…