我正在尝试定位海滩的潮汐信息。我有一个包含纬度经度值的两个海滩表,在提取海滩的结果时,我还想查询潮汐表,并根据潮汐表中最近的纬度经度确定该海滩的高潮和低潮。我有两个表,它们的结构如下:
下面是我的表结构:
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。
我正在使用这个联合,但是没有得到返回的结果。
(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)我相信有一个更精确的方法可以做到这一点,只是不能让我的头脑围绕着这个。
发布于 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,但我希望这能对您有所帮助。
https://stackoverflow.com/questions/7206544
复制相似问题