簡體   English   中英

ST_BUFFER 和 ST_WITHIN 可以用於線串中的線串嗎?

[英]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.

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