平面坐標轉換成經緯度

一、平面坐標轉換成經緯度軟體

對於沒有編程基礎的人來說,使用平面坐標轉換成經緯度軟體是一個較為方便的選擇。市面上有多種軟體可以進行坐標轉換,其中較為常見的有百度地圖和Autocad等軟體。

以百度地圖為例,其提供的解決方案如下:

function pointToLngLat(x, y) {
    var projection = map.getMapType().getProjection();
    var point = new BMap.Pixel(x, y);
    var lnglat = projection.pointToLngLat(point);
    return {
        lng: lnglat.lng,
        lat: lnglat.lat
    };
}

將平面坐標的X、Y值傳入pointToLngLat函數即可得到經度和緯度的值。

二、經緯度坐標如何轉換成平面坐標

經緯度坐標通過進行坐標轉換,也可以轉換成對應的平面坐標。這在地圖製作、定位等方面比較常見。

以C#為例,使用Proj.Net包可以實現經緯度坐標轉換成平面坐標,代碼示例如下:

//定義WGS84坐標系的參考橢球體和投影坐標系
var geographicCoordinateSystem = GeographicCoordinateSystem.WGS84;
var projectedCoordinateSystem = ProjectedCoordinateSystem.WebMercator;

//定義一個點(經緯度)
var point = new Point(-118.5, 34.0, geographicCoordinateSystem); 

//坐標轉換
var result = DotSpatial.Projections.GeographicToProjected(point, projectedCoordinateSystem);

//獲取轉換後的X、Y值
var x = result.X;
var y = result.Y;

三、平面坐標轉換成經緯度app

為了方便用戶,現在市面上也有多款手機app可以進行平面坐標轉換成經緯度。其中,著名的地圖app百度地圖以及谷歌地圖都提供了該功能。

以百度地圖為例,進入定位->更多工具->坐標拾取即可進入某一點的經緯度坐標界面,然後將平面坐標值傳入即可得到對應的經緯度坐標值。

四、平面坐標轉換成經緯度在線

如果不想安裝軟體,可以在線進行平面坐標轉換成經緯度操作。網上有多款網站可以提供該功能,其中,比較常用的有騰訊地圖、高德地圖、OSM等。

以高德地圖為例,其平面坐標轉換成經緯度解決方案如下:

//定義轉換後的坐標系
var point = new AMap.Pixel(x, y);
var lngLat = map.getMapObj().getProjection().pointToLngLat(point);

//獲取轉換後的經、緯度值
var lng = lngLat.getLng();
var lat = lngLat.getLat(); 

五、平面坐標轉換成經緯度函數

如果需要在程序代碼中進行坐標轉換,可以使用各種語言提供的庫或函數。常見的如C#的Proj.Net包和Python的Pyproj庫等。

以Python中的Pyproj庫為例:

//定義轉換後的坐標系
p = proj.Proj(proj="utm", zone="11T", ellps="WGS84")
lon, lat = p(x, y, inverse=True)

//獲取轉換後的經、緯度值
print(lon, lat) 

六、平面坐標轉換成經緯度公式

如果不想使用第三方庫或者軟體,也可以使用公式手動進行坐標轉換。其中,根據不同的坐標系和投影方式,公式也有所不同。

以高斯-克呂格投影為例,其公式如下:

var a = 6378137.000; //地球長半軸
var ee = 0.00669342162296594323; //偏心率平方
var lng = x / 20037508.34 * 180;
var lat = y / 20037508.34 * 180;
lat = 180 / Math.PI * (2 * Math.atan(Math.exp(lat * Math.PI / 180)) - Math.PI / 2);

var radLat = lat * Math.PI / 180;
var magic = Math.sin(radLat);
magic = 1 - ee * magic * magic;
var sqrtMagic = Math.sqrt(magic);
lng = (lng / 180) * Math.PI;
var realLat = radLat - (sqrtMagic * (1.0 - ee)) / magic * 0.5 * Math.sin(2.0 * radLat) + (sqrtMagic / magic) * 0.5 * magic * Math.sin(radLat) * (Math.cos(radLat) * 2.0 * Math.cos(2.0 * lng) + 1.5 * Math.cos(radLat) * sqrtMagic * Math.sin(2.0 * lng));
var realLng = (lng - (0.5 * sqrtMagic * Math.cos(radLat) * 2.0 * Math.sin(2.0 * lng))
          - (0.5 * sqrtMagic / (magic) * Math.sin(radLat))
          + (sqrtMagic / (magic) * Math.cos(radLat)) * Math.cos(2.0 * lng))
          * 180 / Math.PI;
return {
    lng: realLng,
    lat: realLat
};

七、平面坐標轉換成經緯度坐標

在坐標系和投影方式確定的情況下,平面坐標可以通過坐標轉換成對應的經緯度坐標。為了簡單起見,以下以高斯-克呂格投影為例,給出相應的坐標轉換代碼。

var a = 6378245.0; //長半軸
var ee = 0.00669342162296594323; //偏心率平方
var x0 = 500000; //中央經線
var y0 = 0; //地圖縱向舉例

function getCoordinate(x, y) {
    var dx = x - x0;
    var dy = y - y0;
    var B = getB(dy, a);
    var L = getL(dx, B, a, ee);
    var lng = L * 180 / Math.PI;
    var lat = B * 180 / Math.PI;
    return {
        lng: lng,
        lat: lat
    };
}

function getB(dy, a) {
    var Bf = dy / a;
    var Mf = getM(Bf, a, ee);
    var d = 0;
    var ee1 = (1 - ee) / (1 + ee);
    do {
        Bf = (dy + Mf - d) / a;
        d = ee1 * Math.sin(2 * Bf) * Mf;
    } while (Math.abs(dy + Mf - d) > 1E-10);
    return Bf;
}

function getL(dx, B, a, ee) {
    var tf = Math.tan(B);
    var nf = Math.sqrt(1 - ee * Math.pow(Math.sin(B), 2));
    var Nf = a / nf;
    var Xf = dx / Nf;
    var Bf = B + tf * Xf * Xf * (1 / 2.0 - (5 + 3 * tf * tf + 10 * ee - 4 * ee * ee - 9 * ee * tf * tf)
                      * Xf * Xf / (24 * nf * nf * nf * nf));
    var Lf = Xf * (1 / nf - (1 + 2 * tf * tf + ee * ee) * Xf * Xf / (6 * nf * nf * nf) + (5 + 28 * tf * tf
                      + 24 * tf * tf * tf * tf + 6 * ee * ee + 8 * ee * tf * tf)
                      * Xf * Xf * Xf * Xf / (120 * nf * nf * nf * nf * nf * nf)) / Math.cos(B);
    var L = Lf + 110;
    return L;
}

function getM(B, a, ee) {
    var N = a / Math.sqrt(1 - ee * Math.sin(B) * Math.sin(B));
    var T = Math.tan(B) * Math.tan(B);
    var C = ee * Math.pow(Math.cos(B), 2);
    var mj = a * (1 - ee) * Math.pow(Math.cos(B), 3) *
             ((1 - ee * Math.sin(B) * Math.sin(B)) *
             (0.5 * B +
             (5 - T + (9 * C) + (4 * Math.pow(C, 2))) *
             Math.pow(B, 3) / (24 * Math.pow(N, 2))) +
             (Math.pow(B, 5) * (61 - (58 * T) + Math.pow(T, 2) +
             (600 * C) - (330 * ee))) / (720 * Math.pow(N, 4)));
    return mj;
}

八、平面坐標轉換成經緯度步驟

總體而言,平面坐標轉換成經緯度的步驟如下:

1. 確定原始坐標系和投影方式;

2. 確定轉換後的坐標系和投影方式;

3. 提供需要轉換的平面坐標值;

4. 根據不同的轉換方式(軟體、在線、公式、函數等),進行具體的坐標轉換、運算;

5. 獲取轉換後的經、緯度坐標值。

原創文章,作者:PMHF,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/138384.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
PMHF的頭像PMHF
上一篇 2024-10-04 00:19
下一篇 2024-10-04 00:19

相關推薦

  • c# enum轉換成string

    本文將從以下幾個方面詳細闡述c#中enum類型轉換成string類型的方法及注意事項。 一、基本語法和示例 c#中的enum類型可以看作是一組有名字的常量值,通常用於定義一組相關的…

    編程 2025-04-29
  • python字元轉換成位元組的方法

    Python是一種很流行的編程語言,它支持多種數據類型的操作和轉換。在實際應用中,我們經常需要把字元轉換成位元組來進行網路傳輸或者文件讀取等操作。Python提供了很多方法可以完成這…

    編程 2025-04-28
  • Python實用技巧:如何將數據轉換成字典?

    在Python運用中,字典是一種非常常見的數據類型,它可以存儲具有鍵、值對的數據,可以方便快捷地對數據進行查找和保存,因此常常被用來作為數據的主要存儲方式。在Python中,我們可…

    編程 2025-04-27
  • 高德地圖坐標拾取詳解

    一、什麼是高德地圖坐標拾取 高德地圖坐標拾取是一項非常常用的功能,它可以幫助用戶快速地獲取某一個位置的經緯度信息,以供後續的應用開發使用。比如,我們在開發地圖應用時,需要用到某個地…

    編程 2025-04-24
  • 百度地圖獲取經緯度詳解

    一、獲取百度地圖上的經緯度 百度地圖JavaScript API提供了一個函數,可以獲取地圖上任意點的經緯度坐標。 // 點擊地圖獲取經緯度 map.addEventListene…

    編程 2025-04-23
  • C語言中將string轉換成int的方法

    一、使用atoi函數 在C語言中,可以使用標準庫函數atoi將字元串轉換為整數。該函數會將字元串的數字部分轉換為整數,並返迴轉換後的整數。如果字元串中存在非數字字元,則該函數會停止…

    編程 2025-04-12
  • 如何將SQL中的時間戳轉換成日期

    一、什麼是時間戳 時間戳是指從標準計時時間(1970-01-01 00:00:00)起至現在的時間總秒數。在SQL中,常用的時間戳函數是UNIX_TIMESTAMP()和FROM_…

    編程 2025-02-25
  • ggbiplot:用於生成二維平面生物信息學數據可視化的R包

    一、簡介 ggbiplot是一個用於生成二維平面生物信息學數據可視化的R包,它可以通過ggplot2包來創建雙主成分分析(Biplot),並且支持添加基於PCA、MCA、CA等降維…

    編程 2025-02-25
  • 如何在百度地圖中獲取經緯度

    一、百度地圖如何獲取經緯度坐標 百度地圖可以通過三種方式獲取經緯度坐標,它們分別是: 在地圖上點擊獲取經緯度坐標 使用百度地圖API獲取經緯度坐標 利用瀏覽器F12開發者工具獲取經…

    編程 2025-02-15
  • Matlab繪圖坐標刻度設置

    一、準備工作 使用Matlab繪圖前,需要準備一些必要的工作。首先確保你的Matlab版本是最新的,其次確認所需的數據是否準確且按照正確的方式進行存儲。Matlab繪圖沒有大小限制…

    編程 2025-02-15

發表回復

登錄後才能評論