[英]Can ST_BUFFER and ST_WITHIN be used for linestrings within a linestring?
我正在使用 MariaDB 並嘗試根據另一個線串內的線串條件獲取數據。 為了允許線串不必完全在其中(由於 GPX 坐標的可變性),我想包含一個緩沖區。
SELECT * FROM tableX WHERE ST_WITHIN( linestring
( linestring ,r), (SELECT linestring FROM linestring
WHERE id=@id) )
我希望至少檢索一行,因為這一行也是用相同的查詢檢索的,沒有緩沖區(所以,我希望這等於 r=0)。 但是,無論 r 有多大或多小,我都會得到一張空表。
在文檔中它說 ST_BUFFER 適用於所有幾何對象,但我只看到線串/多邊形中的點的示例。 這讓我想知道是否可以將此 function 應用於線串中的線串?
我找到了解決方案。
First, the ST_BUFFER creates a polygon geometry object so the ST_BUFFER function should be used only for the second argument of ST_WITHIN - since a polygon object can never be within a linestring object by definition.
其次,半徑應該遠小於 1(不要以整數計算)。 在可視化結果時,可以看到這對應於線串周圍的一個巨大的圓圈范圍。 我為我的解決方案找到的半徑是 r=0.001。
希望它對其他人有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.