我将纬度和经度存储为mysql表中的浮点数。 我试图使用SELECT ... WHERE命令只获取每行中两组坐标之间的行在一个边界内的行,即
... MBR包含的地方(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
。{ {1}}latitude
。addresses
,longitude
。addresses1
latitude
。addresses1
)'))
失败了。显然,select先前已经加入了地址表来创建地址和地址1表,这是正确的。
任何想法?感谢
答案 0 :(得分:0)
您正在引用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....