PROJ.4介紹——初始認識html
前言spa
PROJ是一個通用的座標轉換軟件,它將地理空間座標從一個座標系轉換爲另外一個座標系。這包括地圖投影和大地座標變換。命令行
PROJ包含命令行應用程序,能夠方便地從文本文件或直接從用戶輸入轉換座標。除了命令行實用程序以外,PROJ還提供了相關的API。API容許開發人員在本身的軟件中使用PROJ的功能,而沒必要本身實現相似的功能。code
PROJ最初是一個純粹製圖應用程序,容許用戶使用許多不一樣的製圖投影將大地座標轉換爲投影座標。多年來,隨着需求的日益增長,對數據轉移的支持也逐漸進入PROJ。今天,PROJ支持100多種不一樣的地圖投影,能夠用於除最晦澀的大地測量技術以外的全部基準面之間座標轉換。htm
快速起步blog
1.座標系轉投影空間開發
命令關鍵詞:projget
座標轉換由PROJ術語中所稱的「proj-strings」來定義。proj-string描述任何轉換,無論它有多麼簡單或複雜。最簡單的狀況是大地座標的投影。本節主要介紹一些簡單的狀況,並介紹proj-string的基本結構。討論了大地變換中的複雜狀況。cmd
proj-strings保存給定座標轉換的參數,例如:string
+proj=merc +lat_ts=56.5 +ellps=GRS80
#+proj=merc 表示:將座標系做爲墨卡託投影
#+ellps=GRS80 表示:橢球體GRS80(橢球體名稱、座標系)
#+lat_ts=56.5 有效緯度範圍Latitude of true scale
例如,一個proj-string由一個投影說明符 +proj 、一些應用於該投影的參數以及(若是須要的話)對一個基準位移的描述組成。在上面的例子中,大地座標被轉換成投影空間,在GRS80橢球面上,用Mercator投影,其緯度爲北緯56.5度。PROJ中的每個投影均可以用一個簡寫來標識,好比上面例子中的merc。
利用上述投影定義做爲命令行實用程序proj的參數,咱們能夠將大地座標轉換爲投影空間,在cmd中輸入:
#利用proj作轉換
#輸入類型爲 +ellps=GRS80
#由於沒有定義+lat_0 緯度起點、+lon_0 中央經線,應該默認按照 +ellps=GRS80 的默認中經線 和 默認 維度0 做爲參考點
#輸出墨卡託投影
proj +proj=merc +lat_ts=56.5 +ellps=GRS80
#在cmd中接着輸入參數
55.2 12.2
#獲得 55.2 12.2 維度、經度轉換爲米的數據
3399483.80 752085.60
#這一段命令分爲3部分
2.座標系轉換
命令關鍵詞:cs2cs
PROJ還附帶了cs2cs實用程序,該實用程序用於從一個座標參考系統轉換到另外一個座標參考系統。假設咱們想要將上面的墨卡託座標轉換爲UTM,咱們能夠用cs2cs來實現:
#在cmd中輸入:
#+to表示:參數用於將源投影定義和目標投影定義分隔。
cs2cs +proj=merc +lat_ts=56.5 +ellps=GRS80 +to +proj=utm +zone=32
#再輸入
3399483.80 752085.60
#獲得
6102578.00 1921733.78 0.00
#這段命令分爲4部分
#或者在cmd中輸入:
cs2cs +proj=latlon +lat_ts=56.5 +ellps=GRS80 +to +proj=utm +zone=32
#再輸入
55.2 12.2
#獲得
6102577.99 1921733.77 0.00
#這段命令分爲4部分
關於EPSG
EPSG代碼是與座標系定義相關聯的數字代碼。如:EPSG:4326(EPSG:4326就是WGS84),你能夠理解爲EPSG文件對座標系作了相關的歸類整理。
詳細資料能夠看:http://www.epsg.org/
#在cmd中輸入
cs2cs +init=epsg:4326 +to +init=epsg:25832
#在輸入
56 12
#能夠獲得
6230195.91 1917547.45 0.00
#若是輸入的緯度、經度爲
55.2 12.2
#獲得
6102577.99 1921733.77 0.00
#和輸入:cs2cs +proj=latlon +lat_ts=56.5 +ellps=GRS80 +to +proj=utm +zone=32 獲得的效果是同樣的
#這段代碼分爲4部分
# Hu Tzu Shan 1950 <4236> +proj=longlat +ellps=intl +towgs84=-637,-549,-203,0,0,0,0 +no_defs <>
# ETRS89 / UTM zone 32N <25832> +proj=utm +zone=32 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs <>