close

為了因應 TWD97 等台灣專屬的座標系統不支援於 Flex 的 SpecialReference

 佛心人士開發了一個座標系統轉換專用的 js

 下載網址如下(此連結有可能隨時失效)

      http://trac.osgeo.org/openlayers/browser/sandbox/madair/lib/proj4js/proj4js.js?rev=4572

此 js 是因開發 Flex 圖台
 該資料庫點位座標用到的座標系統為 TWD97
故自 Flex 呼叫此 js 來實作座標系統轉換
此 js 還需寫另一支實作座標系統轉換的 js 來叫用
使用範例如下

1. 載入proj4js.js
     
於需引用 roj4js.js 的網頁中 import proj4js.js 及 另一支自行撰寫用來實作座標系統轉換的 js
以 Flex 為例
必須於 ~\html-template\index.template.html import proj4js.js 及 實作座標系統轉換的 js

2. 定義自定座標檔案(座標檔案的自定方法有多種,可用檔案的方式, 或者在程式內自行宣告或者直接給定EPSG名稱proj4js會自己抓取) 以下採用自己定義的方式 幾個台灣常用的座標系統如下:

Proj4js.defs["EPSG:3821"] = "+title=經緯度:TWD67 +proj=longlat +towgs84=-752,-358,-179,-.0000011698,.0000018398,.0000009822,.00002329 +ellps=aust_SA +units=度 +no_defs";
Proj4js.defs["EPSG:3825"] = "+title=二度分帶:TWD97 TM2 澎湖 +proj=tmerc +lat_0=0 +lon_0=119 +k=0.9999 +x_0=250000 +y_0=0 +ellps=GRS80 +units=公尺 +no_defs";
Proj4js.defs["EPSG:3826"] = "+title=TWD97 TM2+proj=tmerc +lat_0=0 +lon_0=121 +k=0.9999 +x_0=250000 +y_0=0 +ellps=GRS80 +units=公尺 +no_defs";

3. 宣告要使用的投影系統, 這邊Proj()的方法有點類似 loading 的方式會把程式加載到proj4js內, 例如

var EPSG3826 = new Proj4js.Proj('EPSG:3826');
var EPSG4326 = new Proj4js.Proj('EPSG:4326');

4. 自定轉換函式

          // 此範例是將 EPSG3826 轉為 EPSG4326
function TransCoord(x, y) {
var result;
if (Proj4js) {
          var p = new Proj4js.Point(parseFloat(x), parseFloat(y));
          Proj4js.transform(EPSG3826, EPSG4326, p);
                    // 回傳為 Object 使用方法如 obj.x、obj.y
          result = {x: p.x, y: p.y};
          }
          return result;
}

再來就可用 var c = TransCoord(217400, 2672400);
來取得轉換過的座標 (c.x, c.y)

arrow
arrow
    全站熱搜

    流風羽 發表在 痞客邦 留言(0) 人氣()