-1
A
回答
1
爲了計算有多少米,經度和緯度的特定地理點的長度,我用下面的算法:
-- 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
另外一個參數是公里加 - 代碼將計算如何許多度數等於給定的公里數。
您可以自由地在函數中實現代碼。
1
這實際上比您想象的要難,但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°的經度和2°的經度。
相關問題
- 1. 根據寬度和高度(座標和大小)計算值的算法
- 2. 根據視口中的標題計算經度和緯度
- 3. 計算從經度,緯度,速度座標和航向
- 4. 計算Java中緯度和經度座標的「框」
- 5. 計算經度和緯度的中心座標
- 6. 根據特定標準計數值SQL
- 7. Java - 根據給定的座標,方位和距離計算第二個座標
- 8. SSAS根據另一個計算的度量計算度量值
- 9. 計算邊界框距離Java中的緯度/經度座標一定距離
- 10. 從緯度/經度座標計算像素值(使用matplotlib底圖)
- 11. 根據最小/最大緯度/經度座標計算zoomToSpan()度數在地圖中查看
- 12. 根據起點,方位和距離計算新經度和緯度的計算?
- 13. 根據緯度和經度計算角度
- 14. 經緯度座標
- 15. 計算座標
- 16. 如何根據使用javascript的緯度和經度值來計算面積?
- 17. 根據特定時區計算日期
- 18. 如何根據分辨率計算鼠標座標c#
- 19. 根據給定角度的點的中值計算
- 20. UPDATE:根據Python中特定列的str值計算向量長度
- 21. GPS計算器轉換,計算新點的緯度/經度值
- 22. 根據給定的比特數計算最大值
- 23. 如何根據列值做特定的MySQL計算?
- 24. 根據中心和邊長計算正多邊形的座標
- 25. 如何計算哪個象限屬於(座標)緯度和經度的點
- 26. 計算兩個緯度和經度地理座標之間的距離
- 27. 計算兩個緯度/經度座標之間的方位和羅盤方向
- 28. 計算座標45度捕捉
- 29. 根據x和y座標以及javascript中的寬度和高度值計算面積
- 30. 數據庫經緯度座標示例
@HighPerformanceMark這非常有幫助。爲什麼我應該開始學習會花費太多時間的東西,如果我有一個例子,我會嘗試在T-SQL中實現它。我厭惡消極意見,評論和仇恨。 – gotqn
@HighPerformanceMark我會以某種方式或其他方式找到解決方案,我會在這裏發佈 - 這將爲將來節省時間尋找類似的東西,這是SO帶來的巨大好處。所以,像你這樣的評論是沒有幫助的,只能冒犯別人,迫使他放棄提問並最終回答。但畢竟這是個人選擇...... – gotqn