2015-01-27 4 views
0

내 테이블 (MICROSOFT SQL SERVER)에 지형 열을 추가하고 그 안에 지리 지점 데이터를 삽입했습니다 (4326). 는 지금은 질의 이하로 사용하여 특정 시점에서 모든 지점의 거리를 계산할 수 있어요 :Absoulte 위치 (X, Y)를 사용하여 거리 계산

DECLARE @X geography = geography::Point(0, 0 , 4326); 
SELECT TOP(4) *, LOCATION.STDistance(@ 
FROM [ADDRESS] A 
WHERE A.LOCATION IS NOT NULL 
ORDER BY LOCATION.STDistance(@X) ASC 

을하고 그것을 작동합니다. 그러나 유클리드 거리 공식을 사용하여 거리를 계산하고 싶습니다. sqrt ((y1-y2)^2 + (x1-x2)^2)) 가능한 경우 x 및 y 위치에 대해 두 개의 개별 열을 갖고 싶습니다. 고맙습니다.

감사

+0

Absoulte Positiones - that french? – Coffee

+3

예, SQL 서버에는 [SQRT 함수] (https://msdn.microsoft.com/en-us/library/ms176108.aspx)가 있으므로 두 열을 사용하여 직접 구현할 수는 없습니까? 그러나 유클리드 거리에 대해서는 [기하학 유형] (https://msdn.microsoft.com/en-us/library/cc280487.aspx)이 있습니다. 이는 단일 열에 저장 되더라도 모든 것을 수행합니다. – Rup

+1

당신이 가지고있는 어려움은 무엇입니까? –

답변

2

감사 RUP를 :) 나는 SRID 0 기하학 지역에서 유형을 변경!

UPDATE [ADDRESS] 
SET LOCATION = geometry::Point(1, 1, 0) 
WHERE ADDRESSCODE = 4 


DECLARE @X geometry = geometry::Point(0, 0 , 0) 
SELECT TOP(4) *, LOCATION.STDistance(@X) 
FROM [ADDRESS] A 
WHERE LOCATION IS NOT NULL 
ORDER BY LOCATION.STDistance(@X) ASC