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.yresult = {x: p.x, y: p.y};
}return result;}
再來就可用 var c = TransCoord(217400, 2672400);
來取得轉換過的座標 (c.x, c.y)
全站熱搜