【发布时间】:2020-02-02 20:54:07
【问题描述】:
我正在尝试转换现有查询,该查询返回距点(几何)特定距离内的所有记录
我在 mysql-workbench 中创建了一个存储过程,它需要很长时间和距离,我希望得到与查询相同的结果(返回指定距离内的所有记录。我哪里出错了,我在试图将 lat 和 long 的值传递给另一个空间函数以创建用户位置。但这里似乎没有失败
CREATE DEFINER=`root`@`localhost` PROCEDURE `findNearby`(
IN lat VARCHAR(255),
IN longVal VARCHAR(255),
IN distanceFrom INT
)
BEGIN
DECLARE user_location geometry default ST_GeomFromText( 'POINT(0 0)', 4326 ) ;
SET user_location = ST_GeomFromText( 'POINT(lat longVal)', 4326 );
SELECT
*,
ST_AsText(`location`) AS `pos_wkt`,
ST_Distance_Sphere(`location`, user_location) AS `distance`
FROM
`business_details`
WHERE ST_Distance_Sphere(`location`, user_location) <= distanceFrom;
END
SET @user_location = ST_GeomFromText( 'POINT(30 50)', 4326 );
SELECT
*,
ST_AsText(`location`) AS `pos_wkt`,
ST_Distance_Sphere(`location`, @user_location) AS `distance`
FROM
`business_details`
WHERE ST_Distance_Sphere(`location`, @user_location) <= (1000*5000);
3037 - 向函数 st_geomfromtext 提供的 GIS 数据无效。
【问题讨论】:
标签: mysql