Jos*_*hua 5 mysql geospatial latitude-longitude
我想在MySQL数据库中存储数千个纬度/经度点.我成功地设置了表并使用地理空间扩展添加数据,其中"coord"列是Point(lat,lng).
问题:
我想快速找到纬度'X'度和经度'Y'度的'N'个最近的条目.由于还没有实现Distance()函数,我使用GLength()函数来计算(X,Y)和每个条目之间的距离,按升序距离排序,并限制为'N'个结果.问题是这不是用球面几何计算最短距离.这意味着如果Y = 179.9度,最近的条目列表将仅包括从179.9开始的经度并且即使存在更近的条目且经度从-179.9增加而减少.
在数据库中使用球形几何时,通常如何处理经度上的不连续性?必须有一个简单的解决方案,但我必须只是寻找错误的东西,因为我没有找到任何有用的东西.
我应该忘记GLength()函数并创建自己的函数来计算角度分离吗?如果我这样做,它仍然会很快并利用地理空间扩展吗?
谢谢!
玩笑
更新:
这正是我上面所描述的.但是,它仅适用于SQL Server.显然,SQL Server具有Geometry 和 Geography数据类型.地理位置完全符合我的需要.MySQL中有类似的东西吗?
在数据库中处理球形几何形状时,通常如何处理经度的不连续性?
没有多少人为此使用 MySQL,因为它的地理空间扩展并没有真正达到标准。
从文档中: “所有计算都是假设欧几里得(平面)几何形状完成的。 ”
解决方案通常是自己推出。
或者,您可以伪造它 - 如果您的距离小于 500 英里左右,那么您可以将纬度和经度视为直角坐标,并仅使用欧几里德距离公式 ( sqrt(a^2 + b^2))。
| 归档时间: |
|
| 查看次数: |
1923 次 |
| 最近记录: |