簡體   English   中英

mysql在行字符串mbrcontains中使用lat long列

[英]mysql Using lat long columns in linestring mbrcontains

我將緯度和經度存儲為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( ''多邊形((50.619 0.479,53.153 0.019,54.089 -3.495,51.504 -2.941,50.619 0.479)), ''),GeomFromText('LINESTRING( addresseslatitude addresseslongitudeaddresses1latitude 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....

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM