<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>程式設計 遇上 小提琴 &#187; 地理</title>
	<atom:link href="http://blog.ez2learn.com/tag/%e5%9c%b0%e7%90%86/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.ez2learn.com</link>
	<description>Victor&#039;s個人部落格，關於程式設計與小提琴</description>
	<lastBuildDate>Tue, 07 Feb 2012 03:26:25 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>經緯度轉換TWD97</title>
		<link>http://blog.ez2learn.com/2009/08/15/lat-lon-to-twd97/</link>
		<comments>http://blog.ez2learn.com/2009/08/15/lat-lon-to-twd97/#comments</comments>
		<pubDate>Fri, 14 Aug 2009 17:04:48 +0000</pubDate>
		<dc:creator>victor</dc:creator>
				<category><![CDATA[中文文章]]></category>
		<category><![CDATA[分享]]></category>
		<category><![CDATA[座標]]></category>
		<category><![CDATA[地理]]></category>
		<category><![CDATA[地理資訊]]></category>
		<category><![CDATA[轉換]]></category>
		<category><![CDATA[GIS]]></category>
		<category><![CDATA[Lat]]></category>
		<category><![CDATA[Lon]]></category>
		<category><![CDATA[TWD97]]></category>

		<guid isPermaLink="false">http://blog.ez2learn.com/?p=713</guid>
		<description><![CDATA[最近因為專題上的需要，需要把經緯度轉成TWD97的座標，而在更早之前我寫的電力座標轉換程式，則是需要把TWD97的座標轉換成經緯度，今天我們來談談關於這些地理座標的轉換 麥卡脫投影 首先，我們都知道，地球是圓型的，更精確的來說，是橢圓型的，更正確來說，是不完美的橢圓型，而我們常用的地圖是平面的，為了能把地圖顯示在平面上，我們需要把地圖投影到平面上，而投影的方式有很多種，我們常見的地圖通常是使用麥卡脫投影，想像一下，用一張紙，捲起來成圓筒將地球包覆，在地球的中心擺一個光源，而從這光源發射的光線，透過地球表面映在紙面上，我們把這些映出來的影像畫下來，接著把紙攤平開來，如此一來我們就有了平面的地圖，這個過程就稱為麥卡脫投影，其實就只是把曲面的幾合圖型對應到平面的過程而已 地圖的變形 而經緯度是將地球以角度的方式分割的一種座標系，那什麼又是TWD97? 如我們剛才所說的，經緯度是以角度的方式來計算的座標，如果我們有一張地圖，光有經緯度我們沒辦法指出這個經緯度是在地圖上的哪裡，這時候我們就要經過麥卡脫投影，將經緯度透過某些特定的參數投影到地圖上，換算成平面的座標，單位為公尺，如此一來我們就可以較準確地指出，這個經緯度對應到地圖上的座標是在哪裡，而投影是會變形的，因為我們把曲面的東西投影在平面上，多少都會有變形 如上圖所示，我們可以發現，我們用紙圓筒將地球包起來，可是接觸地球表面的點只有一個，而其它地方離地球表面越來越遠，這造成從地心投出的光線越偏越多，也就是說，離這條線越遠的地方，地圖的變形越大，所以其實每張地圖並不是所有地方的大小尺吋都是正確的，只有那條線是正確的，往兩邊移變形會越來越大，因此，如果我們以日本為此線的中央的話，來到台灣地圖可能已經嚴重變形，我們都知道土地吋土吋金，想想看如果我們的地圖存在著很嚴重的變形問題，可能原本小小的圖地在地圖上變形成很大的一塊，這樣是沒辦法接受的，為此，每個國家通常都會有他們自己的投影參數，以適合他們自己的國家，不會讓地圖變形太大，當灣當然也有自己的地圖，因此也需要自己的投影參數基準，而台灣自己的投影座標基準就叫做TWD97(Taiwan Datum 1997)，其實在這之前有更早的TWD67，也只是較早期在用的投影基準，因為兩者投影參數的不同，所以即使同樣的座標，在實際上的位置其實是不一樣的，我們在此只介紹TWD97 TWD97 那TWD97又是怎麼樣的一個大地基準呢? 他是一個以東經121度為中央經線的大地基準，也就是，想像一下拿一張紙，將地球包起來，而接觸到地球的那條線經過東經121度，TWD97使用的就是這樣的投影方式，而我們先前有提到地球是不完美的橢圓，為了要計算投影的座標，TWD97一樣有一些參數是地球的橢圓半徑用來計算投影，因為不同的參數算出來的數字會不同，因此每個大地座標基準的參數一樣要規定 公式 現在我們知道了TWD97是從地球投影到地圖的座標系的基準，可是光知道這些其實沒什麼用處，重點是我們要能算出來，這時我們就需要投影的公式，這投影公式可以參考這個網頁 Converting UTM to Latitude and Longitude (Or Vice Versa) 從這網頁裡我們可以發現這個公式實在是又臭又長，我在打成程式時就出了不少錯，看到眼睛都快花掉，首先先看他的參數，lat是我們輸入的緯度，long是我們輸入的經度，接著就是關於投影的一些參數，a是地球赤道半徑(Equatorial Radius)，而b是兩極半徑(Polar Radius)，而long0是指中央經線，也就是我所說的卷紙接觸地球的線，而k0是延著long0的縮放比例，長度單位都是公尺，而角度都是用弧度，我之前一直算錯就有因為是用成角度來計算，全部都要是弧度才對，我們在此用的參數是 a = 6378137.0公尺 b = 6356752.314245公尺 long0 = 121度 k0 = 0.9999 而這網頁上打的公式有一些錯誤，像是 B&#8217; &#8230; <a href="http://blog.ez2learn.com/2009/08/15/lat-lon-to-twd97/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>最近因為專題上的需要，需要把經緯度轉成TWD97的座標，而在更早之前我寫的電力座標轉換程式，則是需要把TWD97的座標轉換成經緯度，今天我們來談談關於這些地理座標的轉換</p>
<p><span id="more-713"></span></p>
<h2>麥卡脫投影</h2>
<p>首先，我們都知道，地球是圓型的，更精確的來說，是橢圓型的，更正確來說，是不完美的橢圓型，而我們常用的地圖是平面的，為了能把地圖顯示在平面上，我們需要把地圖投影到平面上，而投影的方式有很多種，我們常見的地圖通常是使用麥卡脫投影，想像一下，用一張紙，捲起來成圓筒將地球包覆，在地球的中心擺一個光源，而從這光源發射的光線，透過地球表面映在紙面上，我們把這些映出來的影像畫下來，接著把紙攤平開來，如此一來我們就有了平面的地圖，這個過程就稱為麥卡脫投影，其實就只是把曲面的幾合圖型對應到平面的過程而已</p>
<h2>地圖的變形</h2>
<p>而經緯度是將地球以角度的方式分割的一種座標系，那什麼又是TWD97? 如我們剛才所說的，經緯度是以角度的方式來計算的座標，如果我們有一張地圖，光有經緯度我們沒辦法指出這個經緯度是在地圖上的哪裡，這時候我們就要經過麥卡脫投影，將經緯度透過某些特定的參數投影到地圖上，換算成平面的座標，單位為公尺，如此一來我們就可以較準確地指出，這個經緯度對應到地圖上的座標是在哪裡，而投影是會變形的，因為我們把曲面的東西投影在平面上，多少都會有變形</p>
<p><a href="http://blog.ez2learn.com/wp-content/uploads/2009/08/projection.jpg"><img class="alignnone size-medium wp-image-714" title="projection" src="http://blog.ez2learn.com/wp-content/uploads/2009/08/projection-300x300.jpg" alt="projection" width="300" height="300" /></a></p>
<p>如上圖所示，我們可以發現，我們用紙圓筒將地球包起來，可是接觸地球表面的點只有一個，而其它地方離地球表面越來越遠，這造成從地心投出的光線越偏越多，也就是說，離這條線越遠的地方，地圖的變形越大，所以其實每張地圖並不是所有地方的大小尺吋都是正確的，只有那條線是正確的，往兩邊移變形會越來越大，因此，如果我們以日本為此線的中央的話，來到台灣地圖可能已經嚴重變形，我們都知道土地吋土吋金，想想看如果我們的地圖存在著很嚴重的變形問題，可能原本小小的圖地在地圖上變形成很大的一塊，這樣是沒辦法接受的，為此，每個國家通常都會有他們自己的投影參數，以適合他們自己的國家，不會讓地圖變形太大，當灣當然也有自己的地圖，因此也需要自己的投影參數基準，而台灣自己的投影座標基準就叫做TWD97(<span lang="EN-US">Taiwan Datum 1997</span>)，其實在這之前有更早的TWD67，也只是較早期在用的投影基準，因為兩者投影參數的不同，所以即使同樣的座標，在實際上的位置其實是不一樣的，我們在此只介紹TWD97</p>
<h2>TWD97</h2>
<p>那TWD97又是怎麼樣的一個大地基準呢? 他是一個以東經121度為中央經線的大地基準，也就是，想像一下拿一張紙，將地球包起來，而接觸到地球的那條線經過東經121度，TWD97使用的就是這樣的投影方式，而我們先前有提到地球是不完美的橢圓，為了要計算投影的座標，TWD97一樣有一些參數是地球的橢圓半徑用來計算投影，因為不同的參數算出來的數字會不同，因此每個大地座標基準的參數一樣要規定</p>
<h2>公式</h2>
<p>現在我們知道了TWD97是從地球投影到地圖的座標系的基準，可是光知道這些其實沒什麼用處，重點是我們要能算出來，這時我們就需要投影的公式，這投影公式可以參考這個網頁</p>
<p><a href="http://www.uwgb.edu/dutchs/UsefulData/UTMFormulas.htm">Converting UTM to Latitude and Longitude (Or Vice Versa)</a></p>
<p>從這網頁裡我們可以發現這個公式實在是又臭又長，我在打成程式時就出了不少錯，看到眼睛都快花掉，首先先看他的參數，lat是我們輸入的緯度，long是我們輸入的經度，接著就是關於投影的一些參數，a是地球赤道半徑(Equatorial Radius)，而b是兩極半徑(Polar Radius)，而long0是指中央經線，也就是我所說的卷紙接觸地球的線，而k0是延著long0的縮放比例，長度單位都是公尺，<strong>而角度都是用弧度</strong>，我之前一直算錯就有因為是用成角度來計算，<strong>全部都要是弧度才對</strong>，我們在此用的參數是</p>
<p>a = 6378137.0公尺<br />
b = 6356752.314245公尺<br />
long0 = 121度<br />
k0 = 0.9999</p>
<p>而這網頁上打的公式有一些錯誤，像是</p>
<p>B&#8217; = (3 tan/2)[1 - n + (7/8)(n<sup>2</sup> - n<sup>3</sup>) + (55/64)(n<sup>4</sup> - n<sup>5</sup>) ...]</p>
<p>一開始我弄得一頭霧水，tan/2到底是什麼樣的標記方式，一開始我猜是tan(1/2)，但是錯了，後來猜是tan代入後面那串除以二，也是錯，又或著代入後面那串後再除以二，還是錯，找了其它資料才發現是他打錯了，那t是多餘的，所以3tan/2其實是3an/2，光為了這點浪費了我不少時間，另一個錯誤是</p>
<p>E&#8217; = (315 tan<sup>4</sup>/512)[1 - n  ...]</p>
<p>512應該是51才對</p>
<h2>計算程式</h2>
<p>有了參數和公式，我們就可以寫程式來幫我們算，因為這用手算實在是太累人了，光看公式就眼花了，更何況是手算，計算是電腦的強項，當然是閃開，讓專業的來，以下是Lat/Lon轉TWD97的Python原始碼</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">from</span> <span style="color: #dc143c;">math</span> <span style="color: #ff7700;font-weight:bold;">import</span> tan, sin, cos, radians
&nbsp;
<span style="color: #ff7700;font-weight:bold;">class</span> LatLonToTWD97<span style="color: black;">&#40;</span><span style="color: #008000;">object</span><span style="color: black;">&#41;</span>:
    <span style="color: #483d8b;">&quot;&quot;&quot;This object provide method for converting lat/lon coordinate to TWD97
    coordinate
&nbsp;
    the formula reference to
    http://www.uwgb.edu/dutchs/UsefulData/UTMFormulas.htm (there is lots of typo)
    http://www.offshorediver.com/software/utm/Converting UTM to Latitude and Longitude.doc
&nbsp;
    Parameters reference to
    http://rskl.geog.ntu.edu.tw/team/gis/doc/ArcGIS/WGS84%20and%20TM2.htm
    http://blog.minstrel.idv.tw/2004/06/taiwan-datum-parameter.html
    &quot;&quot;&quot;</span>
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">def</span> <span style="color: #0000cd;">__init__</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>,
        a = <span style="color: #ff4500;">6378137.0</span>,
        b = <span style="color: #ff4500;">6356752.314245</span>,
        long0 = radians<span style="color: black;">&#40;</span><span style="color: #ff4500;">121</span><span style="color: black;">&#41;</span>,
        k0 = <span style="color: #ff4500;">0.9999</span>,
        dx = <span style="color: #ff4500;">250000</span>,
    <span style="color: black;">&#41;</span>:
        <span style="color: #808080; font-style: italic;"># Equatorial radius</span>
        <span style="color: #008000;">self</span>.<span style="color: black;">a</span> = a
        <span style="color: #808080; font-style: italic;"># Polar radius</span>
        <span style="color: #008000;">self</span>.<span style="color: black;">b</span> = b
        <span style="color: #808080; font-style: italic;"># central meridian of zone</span>
        <span style="color: #008000;">self</span>.<span style="color: black;">long0</span> = long0
        <span style="color: #808080; font-style: italic;"># scale along long0</span>
        <span style="color: #008000;">self</span>.<span style="color: black;">k0</span> = k0
        <span style="color: #808080; font-style: italic;"># delta x in meter</span>
        <span style="color: #008000;">self</span>.<span style="color: black;">dx</span> = dx
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">def</span> convert<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, lat, lon<span style="color: black;">&#41;</span>:
        <span style="color: #483d8b;">&quot;&quot;&quot;Convert lat lon to twd97 
&nbsp;
        &quot;&quot;&quot;</span>
        a = <span style="color: #008000;">self</span>.<span style="color: black;">a</span>
        b = <span style="color: #008000;">self</span>.<span style="color: black;">b</span>
        long0 = <span style="color: #008000;">self</span>.<span style="color: black;">long0</span>
        k0 = <span style="color: #008000;">self</span>.<span style="color: black;">k0</span>
        dx = <span style="color: #008000;">self</span>.<span style="color: black;">dx</span>
&nbsp;
        e = <span style="color: black;">&#40;</span><span style="color: #ff4500;">1</span>-b<span style="color: #66cc66;">**</span><span style="color: #ff4500;">2</span>/a<span style="color: #66cc66;">**</span><span style="color: #ff4500;">2</span><span style="color: black;">&#41;</span><span style="color: #66cc66;">**</span><span style="color: #ff4500;">0.5</span>
        e2 = e<span style="color: #66cc66;">**</span><span style="color: #ff4500;">2</span>/<span style="color: black;">&#40;</span><span style="color: #ff4500;">1</span>-e<span style="color: #66cc66;">**</span><span style="color: #ff4500;">2</span><span style="color: black;">&#41;</span>
        n = <span style="color: black;">&#40;</span>a-b<span style="color: black;">&#41;</span>/<span style="color: black;">&#40;</span>a+b<span style="color: black;">&#41;</span>
        nu = a/<span style="color: black;">&#40;</span><span style="color: #ff4500;">1</span>-<span style="color: black;">&#40;</span>e<span style="color: #66cc66;">**</span><span style="color: #ff4500;">2</span><span style="color: black;">&#41;</span><span style="color: #66cc66;">*</span><span style="color: black;">&#40;</span>sin<span style="color: black;">&#40;</span>lat<span style="color: black;">&#41;</span><span style="color: #66cc66;">**</span><span style="color: #ff4500;">2</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span><span style="color: #66cc66;">**</span><span style="color: #ff4500;">0.5</span>
        p = lon-long0
&nbsp;
        A = a<span style="color: #66cc66;">*</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">1</span> - n + <span style="color: black;">&#40;</span><span style="color: #ff4500;">5</span>/<span style="color: #ff4500;">4.0</span><span style="color: black;">&#41;</span><span style="color: #66cc66;">*</span><span style="color: black;">&#40;</span>n<span style="color: #66cc66;">**</span><span style="color: #ff4500;">2</span> - n<span style="color: #66cc66;">**</span><span style="color: #ff4500;">3</span><span style="color: black;">&#41;</span> + <span style="color: black;">&#40;</span><span style="color: #ff4500;">81</span>/<span style="color: #ff4500;">64.0</span><span style="color: black;">&#41;</span><span style="color: #66cc66;">*</span><span style="color: black;">&#40;</span>n<span style="color: #66cc66;">**</span><span style="color: #ff4500;">4</span>  - n<span style="color: #66cc66;">**</span><span style="color: #ff4500;">5</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
        B = <span style="color: black;">&#40;</span><span style="color: #ff4500;">3</span><span style="color: #66cc66;">*</span>a<span style="color: #66cc66;">*</span>n/<span style="color: #ff4500;">2.0</span><span style="color: black;">&#41;</span><span style="color: #66cc66;">*</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">1</span> - n + <span style="color: black;">&#40;</span><span style="color: #ff4500;">7</span>/<span style="color: #ff4500;">8.0</span><span style="color: black;">&#41;</span><span style="color: #66cc66;">*</span><span style="color: black;">&#40;</span>n<span style="color: #66cc66;">**</span><span style="color: #ff4500;">2</span> - n<span style="color: #66cc66;">**</span><span style="color: #ff4500;">3</span><span style="color: black;">&#41;</span> + <span style="color: black;">&#40;</span><span style="color: #ff4500;">55</span>/<span style="color: #ff4500;">64.0</span><span style="color: black;">&#41;</span><span style="color: #66cc66;">*</span><span style="color: black;">&#40;</span>n<span style="color: #66cc66;">**</span><span style="color: #ff4500;">4</span> - n<span style="color: #66cc66;">**</span><span style="color: #ff4500;">5</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
        C = <span style="color: black;">&#40;</span><span style="color: #ff4500;">15</span><span style="color: #66cc66;">*</span>a<span style="color: #66cc66;">*</span><span style="color: black;">&#40;</span>n<span style="color: #66cc66;">**</span><span style="color: #ff4500;">2</span><span style="color: black;">&#41;</span>/<span style="color: #ff4500;">16.0</span><span style="color: black;">&#41;</span><span style="color: #66cc66;">*</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">1</span> - n + <span style="color: black;">&#40;</span><span style="color: #ff4500;">3</span>/<span style="color: #ff4500;">4.0</span><span style="color: black;">&#41;</span><span style="color: #66cc66;">*</span><span style="color: black;">&#40;</span>n<span style="color: #66cc66;">**</span><span style="color: #ff4500;">2</span> - n<span style="color: #66cc66;">**</span><span style="color: #ff4500;">3</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
        D = <span style="color: black;">&#40;</span><span style="color: #ff4500;">35</span><span style="color: #66cc66;">*</span>a<span style="color: #66cc66;">*</span><span style="color: black;">&#40;</span>n<span style="color: #66cc66;">**</span><span style="color: #ff4500;">3</span><span style="color: black;">&#41;</span>/<span style="color: #ff4500;">48.0</span><span style="color: black;">&#41;</span><span style="color: #66cc66;">*</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">1</span> - n + <span style="color: black;">&#40;</span><span style="color: #ff4500;">11</span>/<span style="color: #ff4500;">16.0</span><span style="color: black;">&#41;</span><span style="color: #66cc66;">*</span><span style="color: black;">&#40;</span>n<span style="color: #66cc66;">**</span><span style="color: #ff4500;">2</span> - n<span style="color: #66cc66;">**</span><span style="color: #ff4500;">3</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
        E = <span style="color: black;">&#40;</span><span style="color: #ff4500;">315</span><span style="color: #66cc66;">*</span>a<span style="color: #66cc66;">*</span><span style="color: black;">&#40;</span>n<span style="color: #66cc66;">**</span><span style="color: #ff4500;">4</span><span style="color: black;">&#41;</span>/<span style="color: #ff4500;">51.0</span><span style="color: black;">&#41;</span><span style="color: #66cc66;">*</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">1</span> - n<span style="color: black;">&#41;</span>
&nbsp;
        S = A<span style="color: #66cc66;">*</span>lat - B<span style="color: #66cc66;">*</span>sin<span style="color: black;">&#40;</span><span style="color: #ff4500;">2</span><span style="color: #66cc66;">*</span>lat<span style="color: black;">&#41;</span> + C<span style="color: #66cc66;">*</span>sin<span style="color: black;">&#40;</span><span style="color: #ff4500;">4</span><span style="color: #66cc66;">*</span>lat<span style="color: black;">&#41;</span> - D<span style="color: #66cc66;">*</span>sin<span style="color: black;">&#40;</span><span style="color: #ff4500;">6</span><span style="color: #66cc66;">*</span>lat<span style="color: black;">&#41;</span> + E<span style="color: #66cc66;">*</span>sin<span style="color: black;">&#40;</span><span style="color: #ff4500;">8</span><span style="color: #66cc66;">*</span>lat<span style="color: black;">&#41;</span>
&nbsp;
        K1 = S<span style="color: #66cc66;">*</span>k0
        K2 = k0<span style="color: #66cc66;">*</span>nu<span style="color: #66cc66;">*</span>sin<span style="color: black;">&#40;</span><span style="color: #ff4500;">2</span><span style="color: #66cc66;">*</span>lat<span style="color: black;">&#41;</span>/<span style="color: #ff4500;">4.0</span>
        K3 = <span style="color: black;">&#40;</span>k0<span style="color: #66cc66;">*</span>nu<span style="color: #66cc66;">*</span>sin<span style="color: black;">&#40;</span>lat<span style="color: black;">&#41;</span><span style="color: #66cc66;">*</span><span style="color: black;">&#40;</span>cos<span style="color: black;">&#40;</span>lat<span style="color: black;">&#41;</span><span style="color: #66cc66;">**</span><span style="color: #ff4500;">3</span><span style="color: black;">&#41;</span>/<span style="color: #ff4500;">24.0</span><span style="color: black;">&#41;</span> <span style="color: #66cc66;">*</span> \
            <span style="color: black;">&#40;</span><span style="color: #ff4500;">5</span> - tan<span style="color: black;">&#40;</span>lat<span style="color: black;">&#41;</span><span style="color: #66cc66;">**</span><span style="color: #ff4500;">2</span> + <span style="color: #ff4500;">9</span><span style="color: #66cc66;">*</span>e2<span style="color: #66cc66;">*</span><span style="color: black;">&#40;</span>cos<span style="color: black;">&#40;</span>lat<span style="color: black;">&#41;</span><span style="color: #66cc66;">**</span><span style="color: #ff4500;">2</span><span style="color: black;">&#41;</span> + <span style="color: #ff4500;">4</span><span style="color: #66cc66;">*</span><span style="color: black;">&#40;</span>e2<span style="color: #66cc66;">**</span><span style="color: #ff4500;">2</span><span style="color: black;">&#41;</span><span style="color: #66cc66;">*</span><span style="color: black;">&#40;</span>cos<span style="color: black;">&#40;</span>lat<span style="color: black;">&#41;</span><span style="color: #66cc66;">**</span><span style="color: #ff4500;">4</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
&nbsp;
        y = K1 + K2<span style="color: #66cc66;">*</span><span style="color: black;">&#40;</span>p<span style="color: #66cc66;">**</span><span style="color: #ff4500;">2</span><span style="color: black;">&#41;</span> + K3<span style="color: #66cc66;">*</span><span style="color: black;">&#40;</span>p<span style="color: #66cc66;">**</span><span style="color: #ff4500;">4</span><span style="color: black;">&#41;</span>
&nbsp;
        K4 = k0<span style="color: #66cc66;">*</span>nu<span style="color: #66cc66;">*</span>cos<span style="color: black;">&#40;</span>lat<span style="color: black;">&#41;</span>
        K5 = <span style="color: black;">&#40;</span>k0<span style="color: #66cc66;">*</span>nu<span style="color: #66cc66;">*</span><span style="color: black;">&#40;</span>cos<span style="color: black;">&#40;</span>lat<span style="color: black;">&#41;</span><span style="color: #66cc66;">**</span><span style="color: #ff4500;">3</span><span style="color: black;">&#41;</span>/<span style="color: #ff4500;">6.0</span><span style="color: black;">&#41;</span> <span style="color: #66cc66;">*</span> \
            <span style="color: black;">&#40;</span><span style="color: #ff4500;">1</span> - tan<span style="color: black;">&#40;</span>lat<span style="color: black;">&#41;</span><span style="color: #66cc66;">**</span><span style="color: #ff4500;">2</span> + e2<span style="color: #66cc66;">*</span><span style="color: black;">&#40;</span>cos<span style="color: black;">&#40;</span>lat<span style="color: black;">&#41;</span><span style="color: #66cc66;">**</span><span style="color: #ff4500;">2</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
&nbsp;
        x = K4<span style="color: #66cc66;">*</span>p + K5<span style="color: #66cc66;">*</span><span style="color: black;">&#40;</span>p<span style="color: #66cc66;">**</span><span style="color: #ff4500;">3</span><span style="color: black;">&#41;</span> + <span style="color: #008000;">self</span>.<span style="color: black;">dx</span>
        <span style="color: #ff7700;font-weight:bold;">return</span> x, y
<span style="color: #ff7700;font-weight:bold;">if</span> __name__ == <span style="color: #483d8b;">'__main__'</span>:
    <span style="color: #ff7700;font-weight:bold;">from</span> <span style="color: #dc143c;">math</span> <span style="color: #ff7700;font-weight:bold;">import</span> degrees
&nbsp;
    c = LatLonToTWD97<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
    lat = radians<span style="color: black;">&#40;</span><span style="color: #008000;">float</span><span style="color: black;">&#40;</span><span style="color: #008000;">raw_input</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'lat:'</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
    lon = radians<span style="color: black;">&#40;</span><span style="color: #008000;">float</span><span style="color: black;">&#40;</span><span style="color: #008000;">raw_input</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'lon:'</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">'input lat/lon'</span>, degrees<span style="color: black;">&#40;</span>lat<span style="color: black;">&#41;</span>, degrees<span style="color: black;">&#40;</span>lon<span style="color: black;">&#41;</span>
    x, y = c.<span style="color: black;">convert</span><span style="color: black;">&#40;</span>lat, lon<span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: black;">&#40;</span>x, y<span style="color: black;">&#41;</span></pre></div></div>

<p>經過我找網路上的三角點資料來計算後，跟那些資料比起來的誤差都在公分以下，不過這個程式只做為參考用，不負任何責任</p>
<h2>TWD97轉lat/lon</h2>
<p>由於我先前寫的<a href="http://blog.ez2learn.com/2009/07/09/power-grid-position/">電力座標定位程式</a>，台電的電力座標用的是地圖座標，因此我需要將TWD97轉換成Lat/Lon才能在google地圖上定位，為此我也寫了TWD97轉成lat/lon的JAVA程式，</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">com.ez2learn.android.powergrid.geo</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> TMToLatLon <span style="color: #009900;">&#123;</span>
	<span style="color: #008000; font-style: italic; font-weight: bold;">/**
		@brief TM coordinate to lat lon formula
&nbsp;
		reference to http://www.uwgb.edu/dutchs/UsefulData/UTMFormulas.htm
&nbsp;
		@param TMParameter object
		@param x
		@param y
	**/</span>
	<span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">double</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> convert<span style="color: #009900;">&#40;</span>TMParameter tm, <span style="color: #000066; font-weight: bold;">double</span> x, <span style="color: #000066; font-weight: bold;">double</span> y<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000066; font-weight: bold;">double</span> dx <span style="color: #339933;">=</span> tm.<span style="color: #006633;">getDx</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">double</span> dy <span style="color: #339933;">=</span> tm.<span style="color: #006633;">getDy</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">double</span> lon0 <span style="color: #339933;">=</span> tm.<span style="color: #006633;">getLon0</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">double</span> k0 <span style="color: #339933;">=</span> tm.<span style="color: #006633;">getK0</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">double</span> a <span style="color: #339933;">=</span> tm.<span style="color: #006633;">getA</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">double</span> b <span style="color: #339933;">=</span> tm.<span style="color: #006633;">getB</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">double</span> e <span style="color: #339933;">=</span> tm.<span style="color: #006633;">getE</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		x <span style="color: #339933;">-=</span> dx<span style="color: #339933;">;</span>
		y <span style="color: #339933;">-=</span> dy<span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">// Calculate the Meridional Arc</span>
		<span style="color: #000066; font-weight: bold;">double</span> M <span style="color: #339933;">=</span> y<span style="color: #339933;">/</span>k0<span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">// Calculate Footprint Latitude</span>
		<span style="color: #000066; font-weight: bold;">double</span> mu <span style="color: #339933;">=</span> M<span style="color: #339933;">/</span><span style="color: #009900;">&#40;</span>a<span style="color: #339933;">*</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1.0</span> <span style="color: #339933;">-</span> <span style="color: #003399;">Math</span>.<span style="color: #006633;">pow</span><span style="color: #009900;">&#40;</span>e, <span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">/</span><span style="color: #cc66cc;">4.0</span> <span style="color: #339933;">-</span> <span style="color: #cc66cc;">3</span><span style="color: #339933;">*</span><span style="color: #003399;">Math</span>.<span style="color: #006633;">pow</span><span style="color: #009900;">&#40;</span>e, <span style="color: #cc66cc;">4</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">/</span><span style="color: #cc66cc;">64.0</span> <span style="color: #339933;">-</span> <span style="color: #cc66cc;">5</span><span style="color: #339933;">*</span><span style="color: #003399;">Math</span>.<span style="color: #006633;">pow</span><span style="color: #009900;">&#40;</span>e, <span style="color: #cc66cc;">6</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">/</span><span style="color: #cc66cc;">256.0</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">double</span> e1 <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1.0</span> <span style="color: #339933;">-</span> <span style="color: #003399;">Math</span>.<span style="color: #006633;">pow</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1.0</span> <span style="color: #339933;">-</span> <span style="color: #003399;">Math</span>.<span style="color: #006633;">pow</span><span style="color: #009900;">&#40;</span>e, <span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>, <span style="color: #cc66cc;">0.5</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">/</span> <span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1.0</span> <span style="color: #339933;">+</span> <span style="color: #003399;">Math</span>.<span style="color: #006633;">pow</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1.0</span> <span style="color: #339933;">-</span> <span style="color: #003399;">Math</span>.<span style="color: #006633;">pow</span><span style="color: #009900;">&#40;</span>e, <span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>, <span style="color: #cc66cc;">0.5</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000066; font-weight: bold;">double</span> J1 <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">3</span><span style="color: #339933;">*</span>e1<span style="color: #339933;">/</span><span style="color: #cc66cc;">2</span> <span style="color: #339933;">-</span> <span style="color: #cc66cc;">27</span><span style="color: #339933;">*</span><span style="color: #003399;">Math</span>.<span style="color: #006633;">pow</span><span style="color: #009900;">&#40;</span>e1, <span style="color: #cc66cc;">3</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">/</span><span style="color: #cc66cc;">32.0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">double</span> J2 <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">21</span><span style="color: #339933;">*</span><span style="color: #003399;">Math</span>.<span style="color: #006633;">pow</span><span style="color: #009900;">&#40;</span>e1, <span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">/</span><span style="color: #cc66cc;">16</span> <span style="color: #339933;">-</span> <span style="color: #cc66cc;">55</span><span style="color: #339933;">*</span><span style="color: #003399;">Math</span>.<span style="color: #006633;">pow</span><span style="color: #009900;">&#40;</span>e1, <span style="color: #cc66cc;">4</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">/</span><span style="color: #cc66cc;">32.0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">double</span> J3 <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">151</span><span style="color: #339933;">*</span><span style="color: #003399;">Math</span>.<span style="color: #006633;">pow</span><span style="color: #009900;">&#40;</span>e1, <span style="color: #cc66cc;">3</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">/</span><span style="color: #cc66cc;">96.0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">double</span> J4 <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1097</span><span style="color: #339933;">*</span><span style="color: #003399;">Math</span>.<span style="color: #006633;">pow</span><span style="color: #009900;">&#40;</span>e1, <span style="color: #cc66cc;">4</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">/</span><span style="color: #cc66cc;">512.0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000066; font-weight: bold;">double</span> fp <span style="color: #339933;">=</span> mu <span style="color: #339933;">+</span> J1<span style="color: #339933;">*</span><span style="color: #003399;">Math</span>.<span style="color: #006633;">sin</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">2</span><span style="color: #339933;">*</span>mu<span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> J2<span style="color: #339933;">*</span><span style="color: #003399;">Math</span>.<span style="color: #006633;">sin</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">4</span><span style="color: #339933;">*</span>mu<span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> J3<span style="color: #339933;">*</span><span style="color: #003399;">Math</span>.<span style="color: #006633;">sin</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">6</span><span style="color: #339933;">*</span>mu<span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> J4<span style="color: #339933;">*</span><span style="color: #003399;">Math</span>.<span style="color: #006633;">sin</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">8</span><span style="color: #339933;">*</span>mu<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">// Calculate Latitude and Longitude</span>
&nbsp;
		<span style="color: #000066; font-weight: bold;">double</span> e2 <span style="color: #339933;">=</span> <span style="color: #003399;">Math</span>.<span style="color: #006633;">pow</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>e<span style="color: #339933;">*</span>a<span style="color: #339933;">/</span>b<span style="color: #009900;">&#41;</span>, <span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">double</span> C1 <span style="color: #339933;">=</span> <span style="color: #003399;">Math</span>.<span style="color: #006633;">pow</span><span style="color: #009900;">&#40;</span>e2<span style="color: #339933;">*</span><span style="color: #003399;">Math</span>.<span style="color: #006633;">cos</span><span style="color: #009900;">&#40;</span>fp<span style="color: #009900;">&#41;</span>, <span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">double</span> T1 <span style="color: #339933;">=</span> <span style="color: #003399;">Math</span>.<span style="color: #006633;">pow</span><span style="color: #009900;">&#40;</span><span style="color: #003399;">Math</span>.<span style="color: #006633;">tan</span><span style="color: #009900;">&#40;</span>fp<span style="color: #009900;">&#41;</span>, <span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">double</span> R1 <span style="color: #339933;">=</span> a<span style="color: #339933;">*</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">-</span><span style="color: #003399;">Math</span>.<span style="color: #006633;">pow</span><span style="color: #009900;">&#40;</span>e, <span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">/</span><span style="color: #003399;">Math</span>.<span style="color: #006633;">pow</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">-</span><span style="color: #003399;">Math</span>.<span style="color: #006633;">pow</span><span style="color: #009900;">&#40;</span>e, <span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">*</span><span style="color: #003399;">Math</span>.<span style="color: #006633;">pow</span><span style="color: #009900;">&#40;</span><span style="color: #003399;">Math</span>.<span style="color: #006633;">sin</span><span style="color: #009900;">&#40;</span>fp<span style="color: #009900;">&#41;</span>, <span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>, <span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">3.0</span><span style="color: #339933;">/</span><span style="color: #cc66cc;">2.0</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">double</span> N1 <span style="color: #339933;">=</span> a<span style="color: #339933;">/</span><span style="color: #003399;">Math</span>.<span style="color: #006633;">pow</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">-</span><span style="color: #003399;">Math</span>.<span style="color: #006633;">pow</span><span style="color: #009900;">&#40;</span>e, <span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">*</span><span style="color: #003399;">Math</span>.<span style="color: #006633;">pow</span><span style="color: #009900;">&#40;</span><span style="color: #003399;">Math</span>.<span style="color: #006633;">sin</span><span style="color: #009900;">&#40;</span>fp<span style="color: #009900;">&#41;</span>, <span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>, <span style="color: #cc66cc;">0.5</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000066; font-weight: bold;">double</span> D <span style="color: #339933;">=</span> x<span style="color: #339933;">/</span><span style="color: #009900;">&#40;</span>N1<span style="color: #339933;">*</span>k0<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">// lat</span>
		<span style="color: #000066; font-weight: bold;">double</span> Q1 <span style="color: #339933;">=</span> N1<span style="color: #339933;">*</span><span style="color: #003399;">Math</span>.<span style="color: #006633;">tan</span><span style="color: #009900;">&#40;</span>fp<span style="color: #009900;">&#41;</span><span style="color: #339933;">/</span>R1<span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">double</span> Q2 <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #003399;">Math</span>.<span style="color: #006633;">pow</span><span style="color: #009900;">&#40;</span>D, <span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">/</span><span style="color: #cc66cc;">2.0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">double</span> Q3 <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">5</span> <span style="color: #339933;">+</span> <span style="color: #cc66cc;">3</span><span style="color: #339933;">*</span>T1 <span style="color: #339933;">+</span> <span style="color: #cc66cc;">10</span><span style="color: #339933;">*</span>C1 <span style="color: #339933;">-</span> <span style="color: #cc66cc;">4</span><span style="color: #339933;">*</span><span style="color: #003399;">Math</span>.<span style="color: #006633;">pow</span><span style="color: #009900;">&#40;</span>C1, <span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> <span style="color: #cc66cc;">9</span><span style="color: #339933;">*</span>e2<span style="color: #009900;">&#41;</span><span style="color: #339933;">*</span><span style="color: #003399;">Math</span>.<span style="color: #006633;">pow</span><span style="color: #009900;">&#40;</span>D, <span style="color: #cc66cc;">4</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">/</span><span style="color: #cc66cc;">24.0</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">double</span> Q4 <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">61</span> <span style="color: #339933;">+</span> <span style="color: #cc66cc;">90</span><span style="color: #339933;">*</span>T1 <span style="color: #339933;">+</span> <span style="color: #cc66cc;">298</span><span style="color: #339933;">*</span>C1 <span style="color: #339933;">+</span> <span style="color: #cc66cc;">45</span><span style="color: #339933;">*</span><span style="color: #003399;">Math</span>.<span style="color: #006633;">pow</span><span style="color: #009900;">&#40;</span>T1, <span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> <span style="color: #cc66cc;">3</span><span style="color: #339933;">*</span><span style="color: #003399;">Math</span>.<span style="color: #006633;">pow</span><span style="color: #009900;">&#40;</span>C1, <span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> <span style="color: #cc66cc;">252</span><span style="color: #339933;">*</span>e2<span style="color: #009900;">&#41;</span><span style="color: #339933;">*</span><span style="color: #003399;">Math</span>.<span style="color: #006633;">pow</span><span style="color: #009900;">&#40;</span>D, <span style="color: #cc66cc;">6</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">/</span><span style="color: #cc66cc;">720.0</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">double</span> lat <span style="color: #339933;">=</span> fp <span style="color: #339933;">-</span> Q1<span style="color: #339933;">*</span><span style="color: #009900;">&#40;</span>Q2 <span style="color: #339933;">-</span> Q3 <span style="color: #339933;">+</span> Q4<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">// long</span>
		<span style="color: #000066; font-weight: bold;">double</span> Q5 <span style="color: #339933;">=</span> D<span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">double</span> Q6 <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1</span> <span style="color: #339933;">+</span> <span style="color: #cc66cc;">2</span><span style="color: #339933;">*</span>T1 <span style="color: #339933;">+</span> C1<span style="color: #009900;">&#41;</span><span style="color: #339933;">*</span><span style="color: #003399;">Math</span>.<span style="color: #006633;">pow</span><span style="color: #009900;">&#40;</span>D, <span style="color: #cc66cc;">3</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">/</span><span style="color: #cc66cc;">6</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">double</span> Q7 <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">5</span> <span style="color: #339933;">-</span> <span style="color: #cc66cc;">2</span><span style="color: #339933;">*</span>C1 <span style="color: #339933;">+</span> <span style="color: #cc66cc;">28</span><span style="color: #339933;">*</span>T1 <span style="color: #339933;">-</span> <span style="color: #cc66cc;">3</span><span style="color: #339933;">*</span><span style="color: #003399;">Math</span>.<span style="color: #006633;">pow</span><span style="color: #009900;">&#40;</span>C1, <span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #cc66cc;">8</span><span style="color: #339933;">*</span>e2 <span style="color: #339933;">+</span> <span style="color: #cc66cc;">24</span><span style="color: #339933;">*</span><span style="color: #003399;">Math</span>.<span style="color: #006633;">pow</span><span style="color: #009900;">&#40;</span>T1, <span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">*</span><span style="color: #003399;">Math</span>.<span style="color: #006633;">pow</span><span style="color: #009900;">&#40;</span>D, <span style="color: #cc66cc;">5</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">/</span><span style="color: #cc66cc;">120.0</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">double</span> lon <span style="color: #339933;">=</span> lon0 <span style="color: #339933;">+</span> <span style="color: #009900;">&#40;</span>Q5 <span style="color: #339933;">-</span> Q6 <span style="color: #339933;">+</span> Q7<span style="color: #009900;">&#41;</span><span style="color: #339933;">/</span><span style="color: #003399;">Math</span>.<span style="color: #006633;">cos</span><span style="color: #009900;">&#40;</span>fp<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #000066; font-weight: bold;">double</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #009900;">&#123;</span><span style="color: #003399;">Math</span>.<span style="color: #006633;">toDegrees</span><span style="color: #009900;">&#40;</span>lat<span style="color: #009900;">&#41;</span>, <span style="color: #003399;">Math</span>.<span style="color: #006633;">toDegrees</span><span style="color: #009900;">&#40;</span>lon<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>先前也有寫一個python版本的做測試，不過弄丟了，雖然後來我再寫了一份，不過沒有檢查過，所以在此就不提供，此程式一樣僅供參考，不負任何責任</p>
<h2>特別感謝</h2>
<p>特別感謝ptt上的nehex網友，我一個外行人寫這非我專業領域的東西光是背景知識就弄得一頭霧水時，如果沒有他的熱心幫忙，我可能一輩子也寫不出來</p>
<p>最後，因為這不是我的專業，如果上面的說法有任何錯誤，麻煩請指正一下，謝謝</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ez2learn.com/2009/08/15/lat-lon-to-twd97/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>

