2017-07-03 10 views
0

Long Latを使用してSQL Serverで最も近い点を見つけるのに問題があります。 longituedとlatitudeパラメータを渡して、その領域の最も近いポイントを見つけるために使用します。Sql Server spatial oracleのような最近傍を見つける

また、ジオメトリ関数を持つすべてのテーブルを選択する方法はありますか?

+0

あなたは以前に何を試しましたか?後者については、データ型ジオメトリを持つ列のsys.columnsを調べてみましたか? –

答えて

0

この問題の解決策はすでに見つかりました。これは誰かに役立つかもしれません。 すでにこのコードに最適化を追加しています。 @ Points.STBuffer(1)は探索距離を決定するので、私は正確に長さと緯度が必要なので、1mを置くだけです。

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; 
関連する問題