2013-02-12 130 views
0

在我的MySQL数据库中,我有三个字段x,y,z代表一个位置。从数据库中的笛卡尔坐标选择极坐标

我想将这些坐标转换为极坐标az,el,r,并基于这些坐标选择其中(例如)az位于某个区域内的行。

我该如何去做这个在MySQL?

编辑:
的如何真正问题坐标变换,而是,如果MySQL能够根据某种方法转换数据,然后选择数据,一旦它的用基于变换数据的比较的标准来变换。

+0

然后我回答你的问题在我的参考? – Hituptony 2013-02-12 21:08:23

回答

3

解决三角...

笛卡尔=多远沿多远了 极地=多远,什么角度

为了转换你需要解决两个直角三角形众所周知双方

你需要用勾股定理找到长边(斜边)

需要正切函数找到角度

r = √ (x2 + y2) =毕达哥拉斯 θ = tan-1 (y/x) =正切函数

假设没有负值 - 那么你将不得不采取正切函数的逆,或将它们转换为他们的积极对应

Mysql的Pythagorus

SQRT((POWER(242-'EAST',2)) + (POWER(463-'NORT',2))) < 50 

假设你的坐标是这样的....这里是一个例子

http://www.tek-tips.com/viewthread.cfm?qid=1397712

正切函数这里

http://dev.mysql.com/doc/refman/5.0/en/mathematical-functions.html#function_tan

1

恕我直言,这实在是一个球形坐标系的数学问题,而不是MySQL特有的问题。
在这种情况下,MySQL恰好是数据容器。

对于任何解决方案,您需要首先计算出数学,然后将其应用于数据。
我可以帮助MySQL,但我不得不谷歌解决这些方程式,我的手指很累=)

+0

我已编辑帖子强调它不是数学问题。假设它与坐标没有任何关系,但是,比如说,在mysql应该根据处理价格的某些标准选择之前必须处理的价格。我想象一下某种存储过程。 – kasperhj 2013-02-12 21:00:04

+0

这真是太棒了 - 目前尚不清楚您开始寻找哪种方法。 – Raad 2013-02-13 09:31:55