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]
- 在標準輸出上打印地圖的寬度和高度。 沒有讀取輸入文件。要僅輸出寬度或高度,請分別附加
w
或h
。要輸出地圖點的繪圖座標,請輸入g
lon /lat。報告的繪圖尺寸的單位可以通過-D進行更改。要輸出參考點的地圖座標,請選擇j
code(使用標準的兩個字符對齊代碼),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
設置。附加+t
epoch以報告連續點的絕對時間(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