我正在与mariadb合作,并尝试根据另一个linestring中的linestring的条件获取数据。为了允许线串不必精确地位于(由于坐标中的gpx可变性),我想包括一个缓冲区。
从表格X中选择*其中st\U在(st\U缓冲区内( linestring
,r),(选择 linestring
从table那里id=@id) )
我希望至少检索一行,因为这一行也是用没有缓冲区的相同查询检索的(因此,我希望这等于r=0)。然而,不管r有多小或多大,我都得到一张空table。
在文档中,它说stu buffer适用于所有的几何体对象,但我只看到了在linestrings/polygons中有点的例子。这让我想知道是否有可能将此函数应用于linestring中的linestring?
1条答案
按热度按时间rseugnpd1#
我找到了解决办法。
首先,st\u buffer创建一个多边形几何体对象,因此st\u buffer函数应仅用于st\u within的第二个参数,因为根据定义,多边形对象永远不可能位于linestring对象内。
第二,半径应该远小于1(不要用整数来思考)。在可视化结果的同时,可以看到这对应于围绕线串的一个巨大的圆范围。我找到的解的半径是r=0.001。
希望对其他人有帮助。