here으로 표시되어 있으므로 극으로 이동함에 따라 경도가 1도 감소하는 값 (몇 킬로미터인지)이 표시됩니다. 주어진 km (위도와 경도)에 대해 경도 1 도가있는 현재 km를 계산하는 알고리즘이 필요합니다.T-SQL은 특정 좌표에 따라 경도 값을 1.0으로 계산합니다.
감사합니다.
here으로 표시되어 있으므로 극으로 이동함에 따라 경도가 1도 감소하는 값 (몇 킬로미터인지)이 표시됩니다. 주어진 km (위도와 경도)에 대해 경도 1 도가있는 현재 km를 계산하는 알고리즘이 필요합니다.T-SQL은 특정 좌표에 따라 경도 값을 1.0으로 계산합니다.
감사합니다.
특정 지리적 지점의 위도와 경도의 길이, 나는 다음과 같은 알고리즘을 사용 : 추가 매개 변수 킬로미터 추가
-- Geograpic Point Cordinates
DECLARE @LATTIDUDE REAL=45
DECLARE @LONGITUDE REAL=45
DECLARE @Distance REAL=10
-- Constants
DECLARE @ConvertionConstant AS FLOAT=2*PI()/360
DECLARE @MetersPerDegree AS FLOAT
DECLARE @LattidueInRadians AS [email protected]*@LATTIDUDE
DECLARE @LongitudeParameter1 AS FLOAT=111412.84
DECLARE @LongitudeParameter2 AS FLOAT=-93.5
DECLARE @LongitudeParameter3 AS FLOAT=0.118
SET @MetersPerDegree=(@LongitudeParameter1*COS(@LattidueInRadians))+(@LongitudeParameter2*(COS(3*@LattidueInRadians)))+(@LongitudeParameter3*COS(5*@LattidueInRadians))
DECLARE @LongitudeRangeTemp AS [email protected]/(@MetersPerDegree/1000)
-- Results for longitude
SELECT @LongitudeRangeTemp AS DegreesForGivenKM
SELECT @MetersPerDegree AS MetersPerDegreeOfLongitude
-- Constants
DECLARE @LatitudeParameter1 AS FLOAT=111132.92
DECLARE @LatitudeParameter2 AS FLOAT=-559.82
DECLARE @LatitudeParameter3 AS FLOAT=1.175
DECLARE @LatitudeParameter4 AS FLOAT=-0.0023
-- Results for longitude
SET @MetersPerDegree=(@LatitudeParameter1+(@LatitudeParameter2*COS(2*@LattidueInRadians))+(@LatitudeParameter3*COS(4*@LattidueInRadians))+(@LatitudeParameter4*COS(6*@LattidueInRadians)))
DECLARE @LatitudeRangeTemp AS [email protected]/(@MetersPerDegree/1000)
SELECT @LatitudeRangeTemp AS DegreesForGivenKM
SELECT @MetersPerDegree AS MetersPerDegreeOfLatitude
- 코드는 어떻게 계산합니다 많은도가 주어진 킬로미터와 같습니다.
코드를 함수로 자유롭게 구현할 수 있습니다.
이것은 실제로 생각보다 어렵지만 Google은 까다로운 부분을 도와줍니다.
하지만, 기본적으로 당신이 어떤 변화를 사용할 수 있습니다
declare @radius as float;
declare @latitude as float;
declare @circumference float;
set @radius = 6378 -- in km
set @latitude = 0 -- 0 = equator : 90 = pole
set @circumference = 2 * pi() * @radius * cos(radians(@latitude))
select @circumference
select (@circumference/360) as km
select (@circumference/360)/1.609344 as miles
나는 지구가 기하학적 영역이 아니며, 완전 평면이 아니라는 사실이다하는 언급 까다로운 비트 -하지만 위 예를 들어 훨씬 더 정확한 반경을 사용할 수 있다면 매우 대략적입니다.
편집 :
또는, 당신은 SQL 2008 (또는 그 이상)이있는 경우, 당신은 "지리"데이터 유형 및 STDistance() 함수를 사용할 수 있습니다. 위의 예에서
declare @p1 geography = geography::STPointFromText('POINT(1 ' + cast(@latitude as varchar(10))+')', 4326)
declare @p2 geography = geography::STPointFromText('POINT(2 ' + cast(@latitude as varchar(10))+')', 4326)
SELECT @p1.STDistance(@p2); -- this is in metres
는 동일한 위도, 두 지점 사이의 거리를 찾지 만 1 °의 경도 35 °의 경도에서. 몇 미터를 계산하기 위해
@HighPerformanceMark 매우 도움이되었습니다. 너무 많은 시간을 소비하는 무언가를 배우기 시작해야하는 이유는, 예를 들어 T-SQL에서 구현하려고 할 때입니다. 나는 부정적인 견해, 의견 및 싫어하는 것이 아플니다. – gotqn
@HighPerformanceMark 한 가지 방법으로나 다른 방법으로 해결책을 찾을 것이며, 여기에 게시 할 것입니다. 이렇게하면 미래에 사람들이 이와 같은 것을 찾는 데 시간을 절약 할 수 있으며 SO가 가져다주는 커다란 이점입니다. 따라서 당신의 의견은 도움이되지 않으며 누군가를 해칠 수 있으며 질문을 포기하고 결국 답변을 포기할 수 있습니다. 하지만 이것은 결국 개인적인 선택입니다 ... – gotqn