mapproject

官方文件:mapproject
簡介:地圖投影正變換及逆變換
譯文作者:@cugliming

mapproject 從表數據中讀取(經度,緯度)位置,並使用指定的地圖投影和比例尺計算(x,y)座標。

也可以讀取(x,y)位置並通過逆變換計算(經度,緯度)值。通過這種方式,我們可以將已知投影類型的地圖數字化爲線性(x,y)點,再將其變換爲地理座標。

也可以計算沿軌道到固定點的距離,或者最接近直線的距離。或用於執行各種基準轉換。

讀入的數據字段必須具有(經度,緯度)或(x,y);關於如何讀取(緯度,經度)文件,請參閱選項 -:

mapproject還可以根據構成軌跡的輸入座標來計算各種輔助輸出數據。方位角、距離、到其它直線的距離以及沿着直線的行進時間等,都可以通過使用 -A-G-L-Z選項中的一個或多個來計算。

語法

gmt mapproject [ tables ] -Jparameters -Rregion [ -Ab|B|f|F|o|O[lon0/lat0][+v] ] [ -C[dx/dy] ] [ -Dc|i|p ] [ -E[datum] ] [ -F[unit] ] [ -G[lon0/lat0][+a][+i][+uunit][+v] ] [ -I ] [ -Lline.xy[+uunit][+p] ] [ -N[a|c|g|m] ] [ -Q[d|e] ] [ -S ] [ -T[h]from[/to] ] [ -V[level] ] [ -W[g|h|j|n|w|x] ] [ -Z[speed][+a][+i][+f][+tepoch] ] [ -bbinary ] [ -dnodata ] [ -eregexp ] [ -fflags ] [ -ggaps ] [ -hheaders ] [ -iflags ] [ -jflags ] [ -oflags ] [ -pflags ] [ -sflags ] [ -:[i|o] ] [ --PAR=value ]

必須選項

-Jprojection (more …)
设置地图投影方式。
-Rxmin/xmax/ymin/ymax[+r][+uunit] (more …)
指定数据范围
UTM投影比較特殊:如果使用 -C 選項且未指定 -R 範圍,則將區域設置爲給定的UTM區域,以保留完整的橢圓形解(有關更多信息,請參見RESTRICTIONS)。

可選選項

table
一个或多个ASCII或二进制表数据。若不提供表数据,则会从标准输入中读取。
-Ab|B|f|F|o|O[lon0/lat0][+v]
計算沿着某軌跡,或到某固定點(lon/lat)的方位角。-Af計算每個數據點的(前向)方位角,使用-Ab計算數據點到固定點的反方位角。使用-Ao可獲得(-90/90)方向,而非方位角(0/360)。大寫的F,B,O,表示從大地緯度轉換爲地心緯度,並估計測地線的方位角(假設當前的橢球體不是球體)。如果沒有給出固定點,則從上一個點開始計算方位角(或反方位角)。或者,通過輸入文件中的3-4列,利用+v選項以獲得可變的第二個點(lon0 / lat0)。有關-A如何影響輸出記錄的信息,請參見輸出順序。
-C[dx/dy]
將投影座標的中心設置爲地圖投影中心(默認爲左下角)。也可以通過指定dx/dy,在投影結果中加上一定的偏移量(指定-I後,則減去該偏移量),如特定投影類型中的東、北僞偏移量。偏移量的單位是有效的繪圖距離單位(請參閱PROJ_LENGTH_UNIT),但如果指定了-F,偏移量單位爲米。
-Dc|i|p
臨時覆蓋PROJ_LENGTH_UNIT,並改用c(釐米),i(英寸)或p(像素)爲單位。該選項不能與-F一起使用。
-E[datum]
將大地座標(lon,lat,height)轉換爲以地球爲中心的地球固定座標(ECEF)(x,y,z)(逆向轉換,添加-I)。
-F[unit]
強制使用1:1比例尺,即輸出數據(或輸入,參見-I)爲真實投影下的米數。如果要指定其他單位,請附加所需的單位(請參閱units)。如果沒有-F,則輸出(或輸入,請參見-I)以PROJ_LENGTH_UNIT指定的單位(或者採用-D)。
-G[lon0/lat0][+a][+i][+uunit][+v]

計算沿某軌跡的距離,或到某固定點(用-Glon0 / lat0指定)的距離。

在距離後加上+u以指定單位(參閱Units,以瞭解可用單位及如何計算距離[真實半徑的大圓]);例如,c表示使用輸入座標的笛卡爾距離,C使用投影座標的笛卡爾距離。C單位需要設置-R-J。如果沒有給出固定點,將計算沿輸入點定義的軌跡的累積距離[指定+a,也表示計算累積距離]; 附加+i可獲取連續點之間的增量距離,或者同時附加+a +i,以同時獲得累積距離及增量距離。或者,通過輸入文件中的3-4列,附加+v以獲得可變的第二個點(lon0 / lat0)。有關-G如何影響輸出記錄的信息,參見輸出順序。

-I
進行逆變換,即從(x,y)數據獲取(經度,緯度)。
-Lline.xy[+uunit][+p]

判斷從輸入數據點到ASCII多段文件line.xy中指定的行的最短距離。

距離和最近點的座標將作爲三個新列添加到輸出中。追加距離單位(參閱Unites以獲取可用單位以及如何計算距離[使用真實半徑的大圓]),例如c(使用輸入座標的笛卡爾距離),C(使用投影座標的笛卡爾距離)。C單位需要設置-R-J。附加+p以報告線段ID和小數點編號,而不是最近點的lon/lat。 有關-L如何影響輸出記錄的信息,請參見輸出順序。

-N[a|c|g|m]
從大地緯度(使用當前的橢球,參閱PROJ_ELLIPSOID)轉換爲四個不同輔助緯度中的一個,經度不受影響。從authalic(等積?),conformal(等角?),geocentric(地心座標系?)和meridional latitudes(子午線緯度?)[地心座標系]中選擇。使用-I將輔助緯度轉換爲大地緯度。
-Q[d|e]

列出所有投影參數。

-Qd,僅列出基準;-Qe僅列出橢圓體。

-S
不轉換區域之外的點。
-T[h]from[/to]
使用標準的Molodensky轉換對datums(基準面?)之間進行座標轉換。如果第3個輸入列的高度高於橢圓形,則使用-Th [默認假定height = 0,即在橢圓形上]。使用基準面的ID(參見-Qd)指定基準或給出橢球:dx,dy,dz,其中橢球可以是橢球ID(參見-Qe),也可以指定爲a[,inv_f],其中a是半長軸,inv_f是反展平(如果省略,則爲0)。
-V[level] (more …)
设置 verbose 等级 [c]
-W[g|h|j|n|w|x]
在標準輸出上打印地圖的寬度和高度。 沒有讀取輸入文件。要僅輸出寬度或高度,請分別附加wh。要輸出地圖點的繪圖座標,請輸入glon /lat。報告的繪圖尺寸的單位可以通過-D進行更改。要輸出參考點的地圖座標,請選擇jcode(使用標準的兩個字符對齊代碼),nrx / ry(其中參考點以0-1範圍內的標準化位置給出)或xpx / py,直接給出點。[默認值返回地圖的寬度和高度]。
-Z[speed][+a][+i][+f][+tepoch]

計算沿-G指定軌跡的行進時間;附加一個恆定的單位,如果缺失,則會從第3列讀取。

速度爲單位時間(單位由TIME_UNIT [m / s]指定)內通過的距離(單位由-G指定)。附加+i可以輸出連續點之間的增量行進時間,+a可以獲取累積的行進時間,或者同時加上以獲取兩種時間信息。使用+f將累積的(經過的)旅行時間格式化爲ISO 8601規定格式。至於用於表示秒的小數位數,請查閱FORMAT_CLOCK_OUT設置。附加+tepoch以報告連續點的絕對時間(ETA)。最後,由於需要增加距離,因此需要帶有+i修飾符的-G選項。有關-Z如何影響輸出記錄的信息,請參見輸出順序。

-bi[ncols][t] (more …)
设置二进制输入数据的格式
-bo[ncols][type] (more …)
设置二进制输出的数据格式
-d[i|o]nodata (more …)
将输入数据中等于 nodata 的记录替换为 NaN,或将输出数据中值为 NaN 的记录替换为 nodata
-e[~]”pattern” | -e[~]/regexp/[i] (more …)
只接受匹配指定模式的数据记录
-f[i|o]colinfo (more …)
指定输入或输出列的数据类型
-g[a]x|y|d|X|Y|D|[col]zgap[u][+n|p] (more …)
确定数据或线段的间断
-h[i|o][n][+c][+d][+rremark][+rtitle] (more …)
跳过或生成指定数目的头段记录
-icols[+l][+sscale][+ooffset][,][,t[word]] (more …)
设置输入数据列及简单变换(0表示第一列,t 表示文本列)
-je|f|g (more …)
设置球面距离的计算方式
-ocols[,…][,t[word]] (more …)
设置输出数据列(0表示第一列,t 表示文本列)
-p[x|y|z]azim[/elev[/zlevel]][+wlon0/lat0[/z0]][+vx0/y0] (more …)
设置3D透视视角
-s[cols][+a|+r] (more …)
设置 NaN 记录的处理方式
-:[i|o] (more …)
交换输入或输出中的第1和第二列。
-^-
显示简短的帮助信息,包括模块简介和基本语法信息(Windows下只能使用 -
-++
显示帮助信息,包括模块简介、基本语法以及模块特有选项的说明
-? 或无参数
显示完整的帮助信息,包括模块简介、基本语法以及所有选项的说明
--PAR=value
临时修改GMT参数的值,可重复多次使用。参数列表见 gmt.conf

示例

將經緯度座標數據轉換爲Mercator網格上以cm爲單位的(x,y)

本示例中,Mercator每度表示爲2cm:

gmt mapproject  -R105/108/33/36 -Jm2c << EOF
105 33
106 34
107 35
108 36
EOF

輸出結果:

0       0
2       2.38727963335
4       4.80309472214
6       7.24888693724

UTM轉化爲地理座標

  • UTM座標單位爲m
  • 需要知道該座標的UTM分帶號,本示例座標所在帶號爲51
# 將UTM座標轉換爲經緯度
echo 311072.4 3542183.5 | gmt mapproject -Ju51/1:1 -C -F -I
# 輸出結果:
121.000000401   32.0000000858

# 將Gauss-Kruger座標轉換爲經緯度
echo 310996.760635 3543600.93152 | gmt mapproject -Ju51/1:1 -C -F -I --PROJ_SCALE_FACTOR=1
# 輸出結果:
121 31.9999999997

注意: Gauss-Kruger座標可直接使用UTM的-Ju投影,曲別在於Gauss-Kruger的比例因子爲1,而UTM比例因子爲0.9996.

經緯度轉化爲UTM

# 經緯度轉換爲Gauss-Kruger
echo 121 32 | gmt mapproject -Ju51/1:1 -C -F --PROJ_SCALE_FACTOR=1
# 輸出結果
310996.760635 3543600.93152

# 經緯度轉換爲UTM
echo 121 32 | gmt mapproject -Ju51/1:1 -C -F
# 輸出結果
311072.361931 3542183.49115