首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于GIS点的两个表的MySQL联合查找最近结果

问基于GIS点的两个表的MySQL联合查找最近结果
EN

Stack Overflow用户
提问于 2011-08-26 22:52:09
回答 1查看 207关注 0票数 0

我正在尝试定位海滩的潮汐信息。我有一个包含纬度经度值的两个海滩表,在提取海滩的结果时,我还想查询潮汐表,并根据潮汐表中最近的纬度经度确定该海滩的高潮和低潮。我有两个表,它们的结构如下:

下面是我的表结构:

代码语言:javascript
复制
table 'beaches'
pri_id    location    lat         lng
1         seal beach  38.344      -122.877
2         newport     37.877      -121.988
3         rocks       34.987      -122.344


table 'tides'
pri_id    lat        lng        low_time   high_time
1         38.565     -123.454   05:00      13:00
2         42.343     -121.234   06:00      14:00
3         42.453     -122.433   05:30      13:30

我当然不是想在这里听起来懒惰,只是找不到很多关于做这件事的最佳方法的信息。本质上,我需要获取beaches.lat和beaches.lng值,然后查询潮汐表,找到最近的tides.lat和tides.lng,然后根据最近的位置返回tides.high_time和tides.low_time。

我正在使用这个联合,但是没有得到返回的结果。

代码语言:javascript
复制
(SELECT tide_date,tide_time,lat,lng FROM (SELECT * FROM tides ORDER BY lat ASC, lng ASC) a WHERE a.lat<=200 AND a.lng<=200 LIMIT 0,5)
UNION
(SELECT location,lat, lng FROM (SELECT * FROM beaches ORDER BY lat ASC, lng ASC) b
WHERE b.lat>200 AND b.lng>200
LIMIT 0,5)

我相信有一个更精确的方法可以做到这一点,只是不能让我的头脑围绕着这个。

EN

回答 1

Stack Overflow用户

发布于 2011-08-26 23:29:35

如果您将查询放在http://gis.stackexchange.com上,您可能会获得更好的帮助,因为阅读器一直在处理这类数据。

您正在寻找计算半正弦公式,有几种方法可以做到这一点。

这是我找到的一个包含半正弦计算示例的页面。

http://www.movable-type.co.uk/scripts/latlong.html

下面是一些SQL中触发器函数语法的链接。我没有使用过MySql,所以我不知道是否支持所有的trig函数。http://www.coderecipes.net/sql-trigonometric-functions.aspx

当然,有很多关于哪个更好的讨论…https://gis.stackexchange.com/questions/4906/why-is-law-of-cosines-more-preferable-than-haversine-when-calculating-distance-be

很抱歉,我不能直接生成您想要的SQL,但我希望这能对您有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7206544

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档