【发布时间】:2021-12-24 03:26:03
【问题描述】:
我正在 SQL Server 2017 中查询几何线上最接近给定点的点。以下内容适用于某些数据,而不适用于其他数据。我无法理解这种不一致。
declare @line geometry = 'LINESTRING(0 0, 10 10)'
declare @p1 geometry = 'POINT(3 2)'
declare @p2 geometry = 'POINT(3 1)'
select @p1.STBuffer(@p1.STDistance(@line)).STIntersection(@line).ToString()
select @p2.STBuffer(@p2.STDistance(@line)).STIntersection(@line).ToString()
p1 的结果是POINT (2.500000 2.499999),正如预期的那样。
p2 的结果是GEOMETRYCOLLECTION EMPTY,我想知道为什么。这些点并没有什么不同。
【问题讨论】:
-
我不是几何人,但我发现有趣的是
(3 0.9)和(3 1.1)和(3 1.000000000001)也会产生结果,但(3 1.0000000000001)和(1 3)失败。一定有一些关于 1(或接近 1)的东西? -
将
LINESTRING扩展到30 30,您将再次获得结果。我不提供这个作为解释。 :P
标签: sql-server spatial