Sql Server空间在oracle中查找最近邻居

时间:2017-07-03 09:50:23

标签: sql-server nearest-neighbor spatial-query

我在使用Long Lat找到sql server中最近的点时遇到了麻烦。 我想传递一个longitued和latitude参数,然后用它来找到该区域中最近的点。

还有办法选择所有具有几何函数的表吗?

1 个答案:

答案 0 :(得分:0)

我已经找到了解决这个问题的方法。这可能对某人有帮助。 我已经为这段代码添加了一些优化。 @ Points.STBuffer(1)确定搜索距离所以我只放1m,因为我需要一个精确的长和lat,因为我点击它。

ALTER PROCEDURE [dbo].[getFacilityDetailsOnClick]
    -- Add the parameters for the stored procedure here
    @long float,
    @lat float
AS
BEGIN

    DECLARE @points geometry
    SET @points = geometry :: Point(@long,@lat,32651);
    DECLARE @searchArea GEOMETRY;
    SET @searchArea = @Points.STBuffer(1);
    @tbl nvarchar(255)


SELECT @sSQL = 'SELECT FEATID, NAME , @tbl as FACILITYNAME , @facility as FACILITYID FROM (SELECT TOP 1  featid, NAME , geometry.STDistance(@pnts) as distance from '
                + QUOTENAME(@tbl) +' WHERE geometry.Filter(@searchArea) = 1 ORDER BY distance) AS tbl'
    EXEC sp_executesql @sSQL , N'@pnts GEOMETRY , @searchArea GEOMETRY , @tbl nvarchar(255) , @facility int ', @Points , @searchArea , @tbl ,@facility;