高手指点,如果用SQL语句计算两地坐标之间的距离

jkjj20 2009-05-21 08:27:34
表中有如下字段
T_From T_To
101°43′36〃26°30′33〃 101°43′55〃26°29′44〃
如何能计算出两地之间的距离呢,实际的数据库设计中,T_From 和 T_To 里面的内容全部都是拆分存放的。也就是
T_From 的数值是放在6个字段中, T_To也一样。


...全文
406 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
弘毅致远 2009-05-21
  • 打赏
  • 举报
回复
友情帮顶。
sdhdy 2009-05-21
  • 打赏
  • 举报
回复
友情帮顶!
14154 2009-05-21
  • 打赏
  • 举报
回复
这个问题太专业了,需要专业知识
ch315537 2009-05-21
  • 打赏
  • 举报
回复
需要提醒一下,上述各式在涉及到跨赤道,跨起点经线时需要做特殊处理,能再套用上述公式!就是说两个点要么都在北半球,要么都在南半球,但如果是一南一北跨赤道就需要改进公式了。涉及到坐标参数转化。但如果仅仅是用于中国或者亚洲等某一局部都应该没问题。
JonasFeng 2009-05-21
  • 打赏
  • 举报
回复
感觉跟GPS定位一样。

经度,纬度。从一个点到另一个点。

应该有个公式可算的。
ai_li7758521 2009-05-21
  • 打赏
  • 举报
回复
专业问题,帮顶
ch315537 2009-05-21
  • 打赏
  • 举报
回复
呵呵,遇到专业问题了,
首先提取字段,T_From 的前三个字段取出来组合起来为J1,后三个为W1.同理表T_To的前三为J2,后三为W2,这个应该不难。
在量算两点的地表距离时,一般讲地表看做规则的球面,且地球半径R为已知量。据此,可根据以下公式求得,
|AB|=[(RcosJ1cosW1-RcosJ2cosW2)^2+(RsinJ1cosφ1-RsinW2cosW2)^2+(RsinW1-RsinW2)^2]^(1/2)
|AB| = 2*R^2-2*R^2*(cos(J1-J2)cosW1cosW2+sinW1sinW2)
但难度是要对经纬度做加减操作,SQL提供正余弦的函数,但不知道有没有加减法的函数。这个楼主自己可以想办法解决。
或者请楼下的解决。
水族杰纶 2009-05-21
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 pt1314917 的回复:]
101°43′36〃26°30′33〃
--------
怎么样计算?这些符号代表啥?说说计算规律```
[/Quote]
..
pt1314917 2009-05-21
  • 打赏
  • 举报
回复
101°43′36〃26°30′33〃
--------
怎么样计算?这些符号代表啥?说说计算规律```
--小F-- 2009-05-21
  • 打赏
  • 举报
回复
拆分存放的的字段可以合并
--小F-- 2009-05-21
  • 打赏
  • 举报
回复
这个应该有个公式吧 是什么公式??

34,594

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧