一、經緯度的定義
經緯度是一種用於描述地球任意位置的坐標系統。它以地球質心為原點,以赤道和本初子午線為基準線,建立了一種地理坐標系,用來表示地球表面的點的位置。
二、度分秒的定義
單位圓上角的角度一般用度數表示,1°=π/180弧度。經緯度中,為了更加精確地描述地球表面上某點的位置,將角度細化為度、分、秒三個單位。
三、經緯度表示方法
經度和緯度分別表示地球表面上某一點相對於本初子午線和赤道的位置。經度從本初子午線起算,向東為正,向西為負;緯度從赤道起算,向北為正,向南為負。
以中國北京為例,其經度為116.40度,即116度24分,即116度24分0秒,或116度24’0”;其緯度為39.91度,即39度54分,即39度54分0秒,或39度54’0”。
四、經緯度的轉換
經緯度常常需要在不同坐標系之間進行轉換,以下是常見的轉換方法:
1. 度轉弧度
function degree2radian(degree) { return degree * Math.PI / 180; }
其中,Math.PI等於3.141592653589793。
2. 弧度轉度
function radian2degree(radian) { return radian * 180 / Math.PI; }
3. 度分秒轉度
function dms2degree(dms) { var degree = parseInt(dms.split('°')[0]); var minute = parseInt(dms.split('°')[1].split("'")[0]); var second = parseFloat(dms.split('°')[1].split("'")[1].split("''")[0]); return degree + minute / 60 + second / 3600; }
其中,dms是以度分秒為單位的經度或緯度,例如116度24’0”。
4. 度轉度分秒
function degree2dms(degree) { var d = parseInt(degree); var m = parseInt((degree - d) * 60); var s = ((degree - d) * 60 - m) * 60; return d + '°' + m + "'" + s.toFixed(2) + "''"; }
5. WGS84坐標系與火星坐標系的轉換
function wgs84togcj02(lng, lat) { var a = 6378245.0; var ee = 0.00669342162296594323; var pi = 3.1415926535897932384626; function transformlat(lng, lat) { var ret = -100.0 + 2.0 * lng + 3.0 * lat + 0.2 * lat * lat + 0.1 * lng * lat + 0.2 * Math.sqrt(Math.abs(lng)); ret += (20.0 * Math.sin(6.0 * lng * pi) + 20.0 * Math.sin(2.0 * lng * pi)) * 2.0 / 3.0; ret += (20.0 * Math.sin(lat * pi) + 40.0 * Math.sin(lat / 3.0 * pi)) * 2.0 / 3.0; ret += (160.0 * Math.sin(lat / 12.0 * pi) + 320 * Math.sin(lat * pi / 30.0)) * 2.0 / 3.0; return ret; } function transformlng(lng, lat) { var ret = 300.0 + lng + 2.0 * lat + 0.1 * lng * lng + 0.1 * lng * lat + 0.1 * Math.sqrt(Math.abs(lng)); ret += (20.0 * Math.sin(6.0 * lng * pi) + 20.0 * Math.sin(2.0 * lng * pi)) * 2.0 / 3.0; ret += (20.0 * Math.sin(lng * pi) + 40.0 * Math.sin(lng / 3.0 * pi)) * 2.0 / 3.0; ret += (150.0 * Math.sin(lng / 12.0 * pi) + 300.0 * Math.sin(lng / 30.0 * pi)) * 2.0 / 3.0; return ret; } function out_of_china(lng, lat) { if (lng 137.8347) return true; if (lat 55.8271) return true; return false; } if (out_of_china(lng, lat)) { return [lng, lat]; } else { var dlat = transformlat(lng - 105.0, lat - 35.0); var dlng = transformlng(lng - 105.0, lat - 35.0); var radlat = lat / 180.0 * pi; var magic = Math.sin(radlat); magic = 1 - ee * magic * magic; var sqrtmagic = Math.sqrt(magic); dlat = (dlat * 180.0) / ((a * (1 - ee)) / (magic * sqrtmagic) * pi); dlng = (dlng * 180.0) / (a / sqrtmagic * Math.cos(radlat) * pi); var mglat = lat + dlat; var mglng = lng + dlng; return [mglng, mglat]; } } function gcj02towgs84(lng, lat) { if (out_of_china(lng, lat)) { return [lng, lat]; } else { var dlat = transformlat(lng - 105.0, lat - 35.0); var dlng = transformlng(lng - 105.0, lat - 35.0); var radlat = lat / 180.0 * pi; var magic = Math.sin(radlat); magic = 1 - ee * magic * magic; var sqrtmagic = Math.sqrt(magic); dlat = (dlat * 180.0) / ((a * (1 - ee)) / (magic * sqrtmagic) * pi); dlng = (dlng * 180.0) / (a / sqrtmagic * Math.cos(radlat) * pi); var mglat = lat + dlat; var mglng = lng + dlng; return [lng * 2 - mglng, lat * 2 - mglat]; } }
其中,WGS84坐標系是GPS坐標系,火星坐標系是國內常用的坐標系,如高德地圖、百度地圖等。
五、經緯度的應用
經緯度在地理信息系統、移動定位、氣象預報、導航等方面有廣泛應用。
六、總結
經緯度度分秒是描述地球上任意一個點位置的常用坐標系,能夠實現不同坐標系之間的快速轉換。應用於多個領域,具有廣泛而重要的意義。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/246299.html