gpt4 book ai didi

mysql - MYSQL Spatial 使用的指标是什么?

转载 作者:行者123 更新时间:2023-11-30 01:29:15 26 4
gpt4 key购买 nike

我正在尝试确定 MySQL Spatial 5.6.12 的公制系统.

例如,我创建了下表来存储多个记录的点几何图形。

CREATE TABLE POINTS_DATA(
RECORD_ID INT(15),
STREET_ADDRESS VARCHAR(50),
CITY VARCHAR(50),
STATE VARCHAR(25),
ZIPCODE VARCHAR(11),
LOCATION_GEO_CODES_SDO POINT NOT NULL,
SPATIAL INDEX(LOCATION_GEO_CODES_SDO),
PRIMARY KEY(RECORD_ID)
) ENGINE=MyISAM;

创建表后,我成功向表中插入了一些记录。

现在我构建了以下查询来获取距指定纬度/经度一英里以内的所有记录。这是我为此运行的查询:

SELECT RECORD_ID, STREET_ADDRESS, CITY, STATE, ZIPCODE
, GLength(LineStringFromWKB(LineString(LOCATION_GEO_CODES_SDO
, POINT(-85.123,39.113))) AS DISTANCE
FROM POINTS_DATA
HAVING DISTANCE < 1 ORDER BY DISTANCE;

运行此查询后,我确实得到了一些记录,但距离似乎不是英里或米。它是一些小数值,例如 0.0123、0.0145 等......

我在 MySQL 中找不到任何相关文档?有谁知道MySQL使用什么公制?如果有的话,如何将其转换为里程?

这意味着,如果我需要运行上面的查询来获取一英里内的所有记录,我该如何重建它?

最佳答案

MySQL Spatial 使用 GLength 几何的空间引用系统。您尚未定义用于数据的 SRID(如果有),但根据您提供的值猜测,SRID 是默认值。因此,您获得的值只是两点之间的笛卡尔距离,以度为单位。

由于您只计算一条线的距离,因此您可以删除 GLength 并使用半正弦公式自行计算距离。请参阅MySQL Great Circle Distance (Haversine formula) .

关于mysql - MYSQL Spatial 使用的指标是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17657344/

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