我将纬度和经度存储为mysql表中的浮点数。
我正在尝试使用SELECT ... 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更改为


  ...其中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(addresseslatitudeaddresseslongitudeaddresses1latitude addresses1longitude)'))


它失败。显然,该选择先前已加入到地址表中以创建正确的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 - mysql在行字符串mbrcontains中使用lat long列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14362178/

10-12 15:00