gpt4 book ai didi

MySQL 无法检查点是否在距离内... MBRContains 查询错误或 Bug?

转载 作者:行者123 更新时间:2023-11-30 23:15:40 27 4
gpt4 key购买 nike

我有以下经纬度:

lat - 18.9802767 
lng - 72.8142511

我正在尝试对距兴趣点 10 公里以内的地点进行以下查询。

select mbrcontains( geomfromtext(
'LINESTRING(72.8993663648088 19.0702857,72.72913583519122 18.8902677)'
),
geomfromtext(
'point(18.9802767 72.8142511)'
) );

Linestring 几何对象派生 self 试图确定的确切点是在使用来自 this 的 mysql 5.1 及更高版本的方法内使用公式的示例:

线串(点(@lng+10/(111.1/cos(弧度(@lat))),@lat+10/111.1),点(@lng-10/(111.1/cos(弧度( @lat))),@lat-10/111.1))

据我了解,该点落在最小外接矩形 (MBR) 范围内。然而,查询返回一个 0 作为答案。以上是遵循 this 中给出的原则示例。

查询有什么问题?我怎么知道该点是否在某个地理空间距离内(在这种情况下,MBR 点是使用距离坐标给定的点 10 公里计算的:lat - 18.9802767,lng - 72.8142511)。

顺便说一句,我使用的是 MySQL 5.5.32。

最佳答案

您的点不在该行的 MBR 范围内。看起来您已经反转了直线或点上的纬度或经度坐标。交换 'point(18.9802767 72.8142511)' 中的 X 和 Y 以获得该点,该点将位于该行的 MBR 内:

POINT (72.8142511 18.9802767)

如果您依赖 MySQL,您可以考虑更新到 MySQL 5.6,然后使用 Buffer 函数从您感兴趣的点创建一个圆形区域,然后使用 ST_Within 查找该圆形区域内的任何内容。

如果您不依赖 MySQL,请考虑 PostGIS,它提供了一个很好的 ST_DWithin 函数,使这些比较变得非常容易。

关于MySQL 无法检查点是否在距离内... MBRContains 查询错误或 Bug?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18006916/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com