我将纬度和经度存储为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(addresses
。latitude
。addresses
。longitude
,addresses1
。latitude
addresses1
。longitude
)'))
它失败。显然,该选择先前已加入到地址表中以创建正确的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/