gpt4 book ai didi

mysql 在 linestring mbrcontains 中使用 lat long 列

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

我将纬度和经度存储为 mysql 表中的 float 。我正在尝试使用 SELECT ... WHERE 命令仅获取每行中两组坐标之间的线在边界内的行,即

...Where MBRContains(GeomFromText('Polygon((50.619 0.479,53.153 0.019,54.089 -3.495,51.504 -2.941,50.619 0.479))'),GeomFromText('LINESTRING(52.57846832 -2.12799001, 51.50733566 -0.1276831)')) ....

效果很好,但是当我将 LINESTRING 更改为

... where MBRContains( GeomFromText(''Polygon((50.619 0.479,53.153 0.019,54.089 -3.495,51.504 -2.941,50.619 0.479))''), GeomFromText('LINESTRING(addresses.latitude addresses.longitude,addresses1.latitude addresses1.longitude)'))

它失败了。显然 select 之前已经连接到 address 表以创建 address 和 address1 表,这是正确的。

有什么想法吗?谢谢

最佳答案

您正在引用 LINESTRING 引号内的列,因此 MySQL 将其视为 WKT 定义的一部分:

'LINESTRING(addresses.latitude addresses.longitude,addresses1.latitude addresses1.longitude)'

由于您的列值未被解除引用,因此此 WKT 无效,并且当无效的 WKT 传递给 GeomFromText 时,MySQL 悄悄返回 NULL,导致 MBRContains 失败。使用 CONCAT 为 GeomFromText 建立正确的 LINESTRING:

CONCAT('LINESTRING(',addresses.latitude',' ',addresses.longitude,',',addresses1.latitude....

关于mysql 在 linestring mbrcontains 中使用 lat long 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14362178/

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