gpt4 book ai didi

mysql - 如何将 MySQL 地理空间扩展与球形几何一起使用

转载 作者:可可西里 更新时间:2023-11-01 07:06:38 25 4
gpt4 key购买 nike

我想在 MySQL 数据库中存储数千个纬度/经度点。我成功地设置了表格并使用地理空间扩展添加了数据,其中列“coord”是一个点(lat,lng)。

问题:

我想快速找到最接近纬度“X”度和经度“Y”度的“N”个条目。由于 Distance() 函数尚未实现,我使用 GLength() 函数计算 (X,Y) 和每个条目之间的距离,按距离升序排序,并限制为“N”个结果。问题是这不是用球面几何计算最短距离。这意味着如果 Y = 179.9 度,最接近的条目列表将仅包括从 179.9 开始并递减的经度,即使更接近的条目存在经度从 -179.9 增加。

在数据库中处理球形几何体时,通常如何处理经度的不连续性?必须有一个简单的解决方案,但我一定是在寻找错误的东西,因为我没有找到任何有用的东西。

我是否应该忘记 GLength() 函数并创建自己的函数来计算角距?如果我这样做,它仍然会很快并利用地理空间扩展吗?

谢谢!

乔希


更新:

This正是我上面所描述的。但是,它仅适用于 SQL Server。显然 SQL Server 有一个 Geometry Geography 数据类型。地理位置正是我所需要的。 MySQL 中有类似的东西吗?

最佳答案

How does one typically handle the discontinuity in longitude when working with spherical geometries in databases?

为此使用 MySQL 的人并不多,因为它的地理空间扩展并不真正符合要求。

来自文档:"All calculations are done assuming Euclidean (planar) geometry. "

解决方案通常是roll your own .

或者,您可以伪造它——如果您的距离小于 500 英里左右,那么您可以将您的纬度和经度视为直角坐标,并仅使用欧氏距离公式 (sqrt(a^2 + b^2)).

关于mysql - 如何将 MySQL 地理空间扩展与球形几何一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4635588/

25 4 0
文章推荐: 更新mysql
文章推荐: sql - 国际化的MySQL数据库设计
文章推荐: sql查询 friend 的 friend
文章推荐: MySql更新优化?
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com