tft每日頭條

 > 圖文

 > 如何将經緯坐标轉換為地理坐标

如何将經緯坐标轉換為地理坐标

圖文 更新时间:2024-07-30 13:21:03

在我們的屏幕上,有一張地圖,這張地圖經過縮放、平移、旋轉,最終地理坐标和屏幕坐标的關系大緻如下圖所示:

如何将經緯坐标轉換為地理坐标(如何實現經緯度坐标和xy坐标間的轉換)1

這種關系要怎麼描述呢?我們可以假設地圖是一張紙,而屏幕是一堵牆。隻要我們有兩個圖釘,我們就能把紙定在牆上。我們把這兩個點稱為錨點。錨點在屏幕坐标系上的坐标是(x1,y1)和(x2,y2),對應在地理坐标系上的坐标是(lon1,lat1)和(lon2,lat2)。

如何将經緯坐标轉換為地理坐标(如何實現經緯度坐标和xy坐标間的轉換)2

那現在的問題就變成了,已知兩個錨點的坐标,轉換算法有哪些?

(1)地理坐标轉屏幕坐标:已知任意一點的地理坐标(lon,lat),求它在屏幕上的坐标(x,y)

(2)屏幕坐标轉地理坐标:已知任意一點的屏幕坐标(x,y),求它的經緯度坐标(lon,lat)

1、地理坐标平面化

首先是地理坐标的平面化轉化。在一個小範圍内(例如是方圓幾公裡内),我們可以假設地面是平的,而不是彎的。如果經緯度都用弧度表示,那麼1緯度對應的長度是:

1lat_len=R*lat,其中R是地球半徑。而相同經度間的距離會随着緯度的增加而減少,在lat這一緯度下,1經度對應的長度是1lon_len=R*lon*cos(lat)。那麼,(lon,lat)這個坐标平面化後的坐标就是:(R*lon*cos(lat),R*lat)

2、向量法

由已知點和未知點組成兩組向量:由于坐标系轉換是線性變換,所以兩組向量有以下特性:(1)兩向量在不同的坐标系中的長度比是相同的;(2)兩向量在不同的坐标系中的夾角是相同的。

根據上面兩個特性,我們可列出方程組:

設向量1為(dx1,dy1),(dlon1,dlat1),向量2為(dx2,dy2),(dlon2,dlat2),

其中dx1=x2-x1,dy1=y2-y1,dlon1=lon2-lon1,dlat1=lat2-lat1

Dx2=x-x1,dy2=y-y1,dlon2=lon-lon1,dlat2=lat-lat1,

然後k1=norm(dx1,dy1),k2=norm(dlon1,dlat1),k3=norm(dx2,dy2),k4=norm(dlon2,dlat2)

有方程組:

(1)k1/k2 = k3/k4

(2)(dx1*dlon1 dy1*dlat1)/k1/k2 = (dx2*dlon2 dy2*dlat2)/k3/k4

通過解上面的方程組,我們就能得到未知和屏幕坐标或未知的地理坐标。

3、C#代碼實現

地理坐标轉屏幕坐标:

如何将經緯坐标轉換為地理坐标(如何實現經緯度坐标和xy坐标間的轉換)3

如何将經緯坐标轉換為地理坐标(如何實現經緯度坐标和xy坐标間的轉換)4

屏幕坐标轉地理坐标:

如何将經緯坐标轉換為地理坐标(如何實現經緯度坐标和xy坐标間的轉換)5

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关圖文资讯推荐

热门圖文资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved