用EXCEL完成GPS座標轉換的簡易方法 - 台部落

文章推薦指數: 80 %
投票人數:10人

[摘要] 對利用EXCEL電子表格進行高斯投影換算的方法進行了較詳細的介紹,對如何進行GPS座標系轉換進行了分析,提出了一種簡單實用的座標改正轉換方法 ... 請輸入正確的登錄賬號或密碼 註冊 忘記密碼 首頁 未分類 正文 用EXCEL完成GPS座標轉換的簡易方法 原創 nfugxf 2018-09-0112:04 [摘要] 對利用EXCEL電子表格進行高斯投影換算的方法進行了較詳細的介紹,對如何進行GPS座標系轉換進行了分析,提出了一種簡單實用的座標改正轉換方法,介紹了用EXCEL完成轉換的思路。

[關鍵字] 電子表格;GPS;座標轉換 作爲尖端技術GPS,能方便快捷性地測定出點位座標,無論是操作上還是精度上,比全站儀等其他常規測量設備有明顯的優越性。

隨着我國各地GPS差分臺站的不斷建立以及美國SA政策的取消,使得單機定位的精度大大提高,有的已經達到了亞米級精度,能夠滿足國土資源調查、土地利用更新、遙感監測、海域使用權清查等工作的應用。

在一般情況下,我們使用的是1954年北京座標系或1980年西安座標系(以下分別簡稱54系和80系),而GPS測定的座標是WGS-84座標系座標,需要進行座標系轉換。

對於非測量專業的工作人員來說,雖然GPS定位操作非常容易,但座標轉換則難以掌握,EXCEL是比較普及的電子表格軟件,能夠處理較複雜的數學運算,用它來進行GPS座標轉換、面積計算會非常輕鬆自如。

要進行座標系轉換,離不開高斯投影換算,下面分別介紹用EXCEL進行換算的方法和GPS座標轉換方法。

一、用EXCEL進行高斯投影換算 從經緯度BL換算到高斯平面直角座標XY(高斯投影正算),或從XY換算成BL(高斯投影反算),一般需要專用計算機軟件完成,在目前流行的換算軟件中,存在一個共同的不足之處,就是靈活性較差,大都需要一個點一個點地進行,不能成批量地完成,給實際工作帶來許多不便。

筆者發現,用EXCEL可以很直觀、方便地完成座標換算工作,不需要編制任何軟件,只需要在EXCEL的相應單元格中輸入相應的公式即可。

下面以54係爲例,介紹具體的計算方法。

完成經緯度BL到平面直角座標XY的換算,在EXCEL中大約需要佔用21列,當然讀者可以通過簡化計算公式或考慮直觀性,適當增加或減少所佔列數。

在EXCEL中,輸入公式的起始單元格不同,則反映出來的公式不同,以公式從第2行第1列(A2格)爲起始單元格爲例,各單元格的公式如下: 單元格 單元格內容 說明 A2 輸入中央子午線,以度.分秒形式輸入,如115度30分則輸入115.30 起算數據L0 B2 =INT(A2)+(INT(A2*100)-INT(A2)*100)/60+(A2*10000-INT(A2*100)*100)/3600 把L0化成度 C2 以度小數形式輸入緯度值,如38°14′20″則輸入38.1420 起算數據B D2 以度小數形式輸入經度值 起算數據L E2 =INT(C2)+(INT(C2*100)-INT(C2)*100)/60+(C2*10000-INT(C2*100)*100)/3600 把B化成度 F2 =INT(D2)+(INT(D2*100)-INT(D2)*100)/60+(D2*10000-INT(D2*100)*100)/3600 把L化成度 G2 =F2-B2 L-L0 H2 =G2/57.2957795130823 化作弧度 I2 =TAN(RADIANS(E2)) Tan(B) J2 =COS(RADIANS(E2)) COS(B) K2 =0.006738525415*J2*J2    L2 =I2*I2    M2 =1+K2    N2 =6399698.9018/SQRT(M2)    O2 =H2*H2*J2*J2    P2 =I2*J2    Q2 =P2*P2    R2 =(32005.78006+Q2*(133.92133+Q2*0.7031))    S2 =6367558.49686*E2/57.29577951308-P2*J2*R2+((((L2-58)*L2+61)*O2/30+(4*K2+5)*M2-L2)*O2/12+1)*N2*I2*O2/2 計算結果X T2 =((((L2-18)*L2-(58*L2-14)*K2+5)*O2/20+M2-L2)*O2/6+1)*N2*(H2*J2) 計算結果Y 表中公式的來源及EXCEL軟件的操作方法,請參閱有關資料,這裏不再贅述。

按上面表格中的公式輸入到相應單元格後,就可方便地由經緯度求得平面直角座標。

當輸入完所有的經緯度後,用鼠標下拉即可得到所有的計算結果。

表中的許多單元格公式爲中間過程,可以用EXCEL的列隱藏功能把這些沒有必要顯示的列隱藏起來,表面上形成標準的計算報表,使整個計算表簡單明瞭。

從理論上講,可計算的數據量是無限的,當第一次輸入公式後,相當於自己完成了一軟件的編制,可另存起來供今後重複使用,一勞永逸。

二、GPS座標轉換方法與面積計算 GPS所採用的座標系是美國國防部1984世界座標系,簡稱WGS-84,它是一個協議地球參考系,座標系原點在地球質心。

GPS的測量結果與我國的54系或80系座標相差幾十米至一百多米,隨區域不同,差別也不同,經粗落統計,我國西部相差70米左右,東北部140米左右,南部75米左右,中部45米左右。

由此可見,必須將WGS-84座標進行座標系轉換才能供標圖使用。

座標系之間的轉換一般採用七參數法或三參數法,其中七參數爲X平移、Y平移、Z平移、X旋轉、Y旋轉、Z旋轉以及尺度比參數,若忽略旋轉參數和尺度比參數則爲三參數方法,三參數法爲七參數法的特例。

這裏的Z、Y、Z是空間大地直角座標系座標,爲轉換過程的中間值。

在實際工作中我們常用的是平面直角座標,是否可以跳過空間直角座標系,省略複雜的運算,進行簡單轉換呢?爲此,筆者進行了長期的實踐,證明是可行的。

其在原理是:不把GPS所測定的WGS-84座標當作WGS-84座標,而是當作具有一定系統性誤差的54系座標值,然後通過國家已知點糾正,消除該系統誤差。

我們暫把該方法稱作座標改正法,下面以WGS-84座標轉換成54系座標爲例,介紹數據處理方法: 首先,在測區附近選擇一國家已知點,在該已知點上用GPS測定WGPS-84座標系經緯度B和L,把此座標視爲有誤差的54系座標,利用54系EXCEL將經緯度BL轉換成平面直角座標X’Y’,然後與已知座標比較則可計算出偏移量: △X=X-X’ △Y=Y-Y’ 式中的X、Y爲國家控制點的已知座標,X’、Y’爲測定座標,△X和△Y爲偏移量。

求得偏移量後,就可以用此偏移量糾正測區內的其他測量點了。

把其他GPS測量點的經緯度測量值,轉換成平面座標X’Y’,在此XY座標值上直接加上偏移值就得到了轉換後的54系座標: X=X’+△X Y=Y’+△Y 在上述EXCEL計算表的最後兩列,附加上求得的改正數並分別與計算出來的XY相加後,即得到轉換結果。

若測量路線是一閉合區域的話,可把計算結果按路線順序排列起來,再輸入相應的計算公式,即可計算出該區域的面積。

有關用座標計算面積的原理與公式,這裏不再敘述,讀者可參閱有關資料。

需要說明的是,面積的計算精度基本上不受座標轉換精度的影響,若只需要求算面積的話,可不進行座標系轉換這一步,只需要把BL化成XY就行了。

就1:1萬比例尺成圖而言,在一般的縣行政區範圍內(如40Km×40Km),用此簡單的座標改正法進行轉換與較複雜的七參數法沒有多大差別。

能否滿足1:1萬比例尺變更調查的要求,主要取決於GPS接收機本身的精度,與轉換方法的選擇關係不大。

當面積較大時,使用該方法可能會使誤差增大,這時可考慮分區域轉換 發表評論 登录 所有評論 還沒有人評論,想成為第一個評論的人麼?請在上方評論欄輸入並且點擊發布. 相關文章 C#OpenCVEmguCvmobilenet_v3對象檢測 鏈接:https://pan.baidu.com/s/1I9N3lRe_t9C24IKJRcv89Q?pwd=1212 由於OpenCVSharp缺少相關api,這次使用EmguCv,這個demo網上都是python版本的,抄寫爲C# 使用 eflay 2022-03-2214:33:27 《前端運維》一、Linux基礎--07Shell函數 linuxshell可以用戶定義函數,然後在shell腳本中可以隨便調用。

shell中函數的定義格式如下: [function]funname[()] { action; [returnint;] } Zaking 2022-03-2214:33:17 《前端運維》一、Linux基礎--06Shell流程控制 這章我們來學習下流程控制,簡單來說就是邏輯判斷和循環的寫法。

並不複雜,我們來簡單地看下。

1、if語句 shell的if語句有兩種寫法,一種是shell腳本式的,一種是命令式的。

ifcondition then command Zaking 2022-03-2214:33:17 Qt數據庫應用17-通用數據庫請求 一、前言 數據庫請求是在數據庫採集的基礎上,換成http請求的形式來獲取數據,這樣就脫離了數據庫組件,而採用的通用的http請求的形式從數據庫拿數據庫,這個通用性就非常廣泛了,比如對方用java採集到設備的數據存入數據庫,另外一個區域是用的 飛揚青雲 2022-03-2214:32:37 Runtime-InlineCache 從編譯說起。

以C1爲例,假設Java代碼有個invoke指令: voidfoo(){ base.vcall(); } 在編譯這個foo的時候,遇到base.vcall(),它會生成一個HIR指令Invoke,這個Invoke後 kelthuzadx 2022-03-2214:31:47 ElasticSearch7.3學習之採用restful風格對索引的增刪改查 1、爲什麼需要手動創建索引 直接put數據PUTindex/_doc/1,es會自動生成索引,並建立動態映射dynamicmapping。

這樣的話很大可能與實際的需求不服,在實際的應用上,我們需要自己手動建立索引和映射,這也是爲了更 |舊市拾荒| 2022-03-2214:30:36 Go開發效率工具一覽圖 高清無碼圖 前幾天發了朋友圈,結果衆多好友告訴我,看不清,看不清。





所以,今日特奉上高清無碼大圖,一字不差,供大家慢慢消化。

原圖(7.1MB)奉上,拿走不謝! 額外福利 除了奉上高清無碼原圖外,還悄悄告訴你一個無敵技巧,輸入goc KevinWan 2022-03-2214:27:56 顯示數字二進制數 #include usingnamespacestd; intmain() { intx; x=8; cout<(x)<



請為這篇文章評分?