Proj.4坐標系統創建參數


Proj.4坐標系統創建參數

本文由烏合之眾lym瞎編,歡迎轉載blog.cnblogs.net/oloroso

本文原文地址 (https://github.com/OSGeo/proj.4/wiki/GenParms)[https://github.com/OSGeo/proj.4/wiki/GenParms]

grid shift翻譯為網格轉換

翻譯有諸多不妥和錯誤,請見諒。

這個文檔目的是描述所有PROJ.4的參數,可以應用於所有或大多數坐標系統定義。本文檔並不試圖描述特定於投影類型的特定參數。其中一些可以在GeoTIFF 投影變換列表找到。大多數參數的詳細文檔是可從 PROJ.4 主頁訪問

參數列表

通用參數:

(這里包括PROJ.4配置cs2cs和基准面支持)

+a         橢球體長半軸長度
+alpha     ? 用於斜墨卡托和其它幾個可能的投影
+axis      軸方向 (new in 4.8.0)
+b         橢球體短半軸長度
+datum     基准面名(見`proj -ld`)
+ellps     橢球體名(見`proj -le`)
+k         比例因子(old name)
+k_0       比例因子(new name)
+lat_0     維度起點
+lat_1     標准平行緯線第一條
+lat_2     標准平行緯線第二條
+lat_ts    有效緯度范圍Latitude of true scale
+lon_0     中央經線
+lonc      ? 經度用於斜墨卡托和其它幾個可能的投影
+lon_wrap  Center longitude to use for wrapping (見下文)
+nadgrids  NTv2網格文件的文件名,用於基准面轉換(見下文)
+no_defs   不要使用/usr/share/proj/proj_def.dat缺省文件
+over      允許經度超出-180到180范圍,禁止wrapping (見下文)
+pm        備用本初子午線(通常是一個城市的名字,見下文)
+proj      投影名(見`proj -l`)
+south     表示南半球UTM區域
+to_meter  乘數,轉換地圖單位為1.0m
+towgs84   3或7參數基准面轉換(見下文)
+units     meters(米), US survey feet(美國測量英尺),等.
+vto_meter 垂直變換為米.
+vunits    垂直單位.
+x_0       東偽偏移
+y_0       北偽偏移
+zone      UTM區域

由Gerald Evenden提供的擴展列表 "grepped out of the RCS directory".

(libproj4 by G.E.; 沒有基准面支持)

+a         橢球體長半軸長度
+alpha     ? 用於斜墨卡托和其它幾個可能的投影
+azi
+b         橢球體短半軸長度
+belgium
+beta
+czech
+e         橢球體的偏心率= sqrt(1 - b^2/a^2) = sqrt( f*(2-f) )
+ellps     橢球體名(見`proj -le`)
+es        橢球體的偏心率的平方
+f         橢球體扁平程度= 1-sqrt(1-e^2) (經常用倒數表示,例:1/298)
+geoc
+guam
+h
+k         比例因子(old name)
+K
+k_0       比例因子(new name)
+lat_0     維度起點
+lat_1     標准平行緯線第一條
+lat_2     標准平行緯線第二條
+lat_b
+lat_t
+lat_ts    Latitude of true scale
+lon_0     中央經線
+lon_1
+lon_2
+lonc      ? 經度用於斜墨卡托和其它幾個可能的投影
+lsat
+m
+M
+n
+no_cut
+no_off
+no_rot
+ns
+o_alpha
+o_lat_1
+o_lat_2
+o_lat_c
+o_lat_p
+o_lon_1
+o_lon_2
+o_lon_c
+o_lon_p
+o_proj
+over
+p
+path
+proj      投影名(見`proj -l`)
+q
+R
+R_a
+R_A       計算半徑,使得球體的面積是等同於橢圓體的面積
+rf        橢球體扁平程度倒數(例:298)
+R_g
+R_h
+R_lat_a
+R_lat_g
+rot
+R_V
+s
+south     表示南半球UTM區域
+sym
+t
+theta
+tilt
+to_meter  乘數,轉換地圖單位為1.0m
+units     meters(米), US survey feet(美國測量英尺),等.
+vopt
+W
+westo
+x_0       東偽偏移
+y_0       北偽偏移
+zone      UTM區域

See GE's libproj4 manual for further details (copy in wayback machine).

更多投影詳細信息在 http://www.remotesensing.org/geotiff/proj_list/

單位

水平單位可以使用+units= 關鍵字指定一個單位的符號名(如:us-ft)。另外轉換為米單位可以使用+to_meter關鍵字指定(如: 美國英尺為0.304800609601219米)。-lu參數用於cs2csproj可以列出支持單位名稱.默認單位是度(degrees)。

垂直單位

垂直單位(Z)可以使用+vunits=關鍵字指定一個單位的符號名(如: us-ft)。另外轉換為米單位可以使用+vto_meter關鍵字指定(如: 美國英尺為0.304800609601219米).-lu參數用於cs2csproj可以列出支持單位名稱。如果沒有指定垂直單位,垂直單元將默認為與水平坐標相同的.

注意垂直單位轉換僅在pj_transform()和建立在這基礎上的程序(如cs2cs)。低層次的投影函數pj_fwd()pj_inv()以及直接使用它們的程序(如proj),根本不處理垂直單位.

東/北偽偏移

幾乎所有的坐標系統都運行東偽偏移(+x_0)和北偽偏移(+y_0)。請注意,這些值是米單位的,即使坐標系是一些其它單位的.一些坐標系統(如UTM)具有隱含的東/北偽偏移值.

lon_wrap, 超范圍部分經度環繞

默認情況下PROJ.4在經度范圍-180到180環繞包覆。+over可用於禁用默認warp(環繞包覆)。
which is done at a low level - in pj_inv(). This is particularly useful with projections like eqc where it would desirable for X values past -20000000 (roughly) to continue past -180 instead of wrapping to +180.

The +lon_wrap option can be used to provide an alternative means of doing longitude wrapping within pj_transform(). The argument to this option is a center longitude. So +lon_wrap=180 means wrap longitudes in the range 0 to 360. Note that +over does not disable +lon_wrap.

pm - 本初子午線

本初子午線可以聲明表示聲明的坐標系本初子午線和格林威治之間的偏移。本初子午線是使用"pm"參數聲明的,可能被分配一個符號名稱或替代相對於格林尼治子午線的經度(例如:+pm=-10,即表示本初子午線為相對格林尼治子午線東偏10度)。

當前子午線聲明只被pj_transform() API利用,而不被pj_inv()pj_fwd()利用。因此用戶工具cs2cs遵守本初子午線參數,但是proj程序忽略它.

支持以下預先聲明本初子午線名稱。這些都可以使用cs2cs -lm列出.

   greenwich 0dE                           
      lisbon 9d07'54.862"W                 
       paris 2d20'14.025"E                 
      bogota 74d04'51.3"E                  
      madrid 3d41'16.48"W                  
        rome 12d27'8.4"E                   
        bern 7d26'22.5"E                   
     jakarta 106d48'27.79"E                
       ferro 17d40'W                       
    brussels 4d22'4.71"E                   
   stockholm 18d3'29.8"E                   
      athens 23d42'58.815"E                
        oslo 10d43'22.5"E                  

使用示例:位置long=0, lat=0在基於格林威治的lat/long坐標轉換到基於馬德里作為本初子午線的lat/long坐標.

# 源坐標系    	+proj=latlong +datum=WGS84
# 目標坐標系	+proj=latlong +datum=WGS84 +pm=madrid
 cs2cs +proj=latlong +datum=WGS84 +to +proj=latlong +datum=WGS84 +pm=madrid
0 0                           <i>(input)</i>
3d41'16.48"E    0dN 0.000     <i>(output)</i>

towgs84 - 基准面轉換到WGS84

基准面變換可以使用3參數空間變換(地心空間直角坐標系),或7參數變換(平移 + 旋轉 + 縮放)。可以使用towgs84參數來描述.

在三個參數的情況下,這三個參數轉換以米為單位的地心坐標位置。

例如,下面演示了從希臘GGRS87基准變換到WGS84.

# 源坐標系		+proj=latlong +ellps=GRS80 +towgs84=-199.87,74.79,246.62
# 目標坐標系	+proj=latlong +datum=WGS84
s2cs +proj=latlong +ellps=GRS80 +towgs84=-199.87,74.79,246.62 \
    +to +proj=latlong +datum=WGS84
20 35
20d0'5.467"E    35d0'9.575"N 8.570

EPSG提供示例,使用近似7參數變換WGS72到WGS84。

cs2cs +proj=latlong +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0.219 \
    +to +proj=latlong +datum=WGS84
4 55
4d0'0.554"E     55d0'0.09"N 3.223

七參數情況下使用delta_x, delta_y, delta_z, Rx - rotation X, Ry - rotation Y, Rz - rotation Z, M_BF - Scaling。三個平移參數是米單位,如同3參數情況。旋轉參數是角秒(角度單位)。縮放值的百萬分之一,是尺度變化值(實際縮放值=1.0+縮放因子/1000000)。

在3和7參數變換的更完整的討論,可以在EPSG數據庫中找到(trf_method的9603和9606)。在PROJ.4內,以下計算被用於towgs84變換(going to WGS84)。x、y和 z坐標是地心坐標.

三參數變換(simple offsets):

  x[io] = x[io] + defn->datum_params[0];
  y[io] = y[io] + defn->datum_params[1];
  z[io] = z[io] + defn->datum_params[2];

七參數變換(translation, rotation and scaling):

  #define Dx_BF (defn->datum_params[0])
  #define Dy_BF (defn->datum_params[1])
  #define Dz_BF (defn->datum_params[2])
  #define Rx_BF (defn->datum_params[3])
  #define Ry_BF (defn->datum_params[4])
  #define Rz_BF (defn->datum_params[5])
  #define M_BF  (defn->datum_params[6])

  x_out = M_BF*(       x[io] - Rz_BF*y[io] + Ry_BF*z[io]) + Dx_BF;
  y_out = M_BF*( Rz_BF*x[io] +       y[io] - Rx_BF*z[io]) + Dy_BF;
  z_out = M_BF*(-Ry_BF*x[io] + Rx_BF*y[io] +       z[io]) + Dz_BF;

注意EPSG方法9607(coordinate frame rotation)系數可以由PROJ.4通過對旋轉參數取負數得到轉換到EPSG方法9606 (position vector 7-parameter)支持。這些方法其他方面是相同的。
這里實際的意思是,對於布爾沙模型的七參數(ArcGIS使用的也是),與這里使用的七參數(實際測試是DSNP+模型),在三個旋轉參數上正負號是相反的。

nadgrids - 基於網格的基准調整

在許多地方(尤其是北美洲和澳大利亞)國家大地測量組織針對不同的基准(比如NAD27到NAD83之間進行轉換)提供網格轉換(gird shift)的文件。這些網格轉換文件包括在每個網格位置上施加的偏移。實際上,網格位移通常是基於包含四個網格點之間的內插計算的。

PROJ.4當前支持在某些情況下使用網格轉換文件在當前基准和WGS84直接轉換。網格轉換表的格式是ctable(使用PROJ.4 nad2bin程序生成二進制格式), NTv1 (舊的加拿大格式), and NTv2 (.gsb新的加拿大和澳大利亞格式).

網格變換的使用,是在坐標系統定義中指定nadgrids關鍵字時使用。例如:

# +nadgrids=ntv1_can.dat 指定使用網格變換文件
% cs2cs +proj=latlong +ellps=clrk66 +nadgrids=ntv1_can.dat \
    +to +proj=latlong +ellps=GRS80 +datum=NAD83 << EOF
-111 50 
EOF
111d0'2.952"W   50d0'0.111"N 0.000

在上面例子中,網格轉換文件/usr/local/share/proj/ntv1_can.dat被加載,並用於獲得選定的點進行網格轉換后的值。

它可能列出多個網格轉換文件,在這種情況下,將依次嘗試每一個grid shift文件,直到找到包含被轉換點的。

cs2cs +proj=latlong +ellps=clrk66 \
          +nadgrids=conus,alaska,hawaii,stgeorge,stlrnc,stpaul \
    +to +proj=latlong +ellps=GRS80 +datum=NAD83 << EOF
-111 44
EOF
111d0'2.788"W   43d59'59.725"N 0.000

跳過丟失網格

可選的特定前綴@可用於網格轉換文件。如果它不存在,將繼續搜索下一個網格。通常沒有找到任何網格,將產生錯誤。例如,下面將使用ntv2_0.gsb文件(見 [[NonFreeGrids]]),如果不可以則回退使用ntv1_can.dat文件.

cs2cs +proj=latlong +ellps=clrk66 +nadgrids=@ntv2_0.gsb,ntv1_can.dat \
    +to +proj=latlong +ellps=GRS80 +datum=NAD83 << EOF
-111 50 
EOF
111d0'3.006"W   50d0'0.103"N 0.000

null網格

一個特殊的'''null'''網格轉換文件在4.4.6(不含)版本后發布。這個文件給全世界提供一個零點(zero)轉換。它可以添加在nadgrids文件列表的末尾,在你想在所有其它網格有效區域外的點施加一個零點轉換的時候。通常情況下,如果要轉換的點不在任何網格中,將發生錯誤。

cs2cs +proj=latlong +ellps=clrk66 +nadgrids=conus,null \
    +to +proj=latlong +ellps=GRS80 +datum=NAD83 << EOF
-111 45
EOF
111d0'3.006"W   50d0'0.103"N 0.000

cs2cs +proj=latlong +ellps=clrk66 +nadgrids=conus,null \
    +to +proj=latlong +ellps=GRS80 +datum=NAD83 << EOF
-111 44
-111 55
EOF
111d0'2.788"W   43d59'59.725"N 0.000
111dW   55dN 0.000

下載並安裝網格

The source distribution of PROJ.4 contains only the ntv1_can.dat file. To get the set of US grid shift files it is necessary to download an additional distribution of files from the PROJ.4 site, such as ftp://ftp.remotesensing.org/pub/proj/proj-nad27-1.1.tar.gz. Overlay it on the PROJ.4 source distribution, and re-configure, compile and install. The distributed ASCII .lla files are converted into binary (platform specific) files that are installed. On windows using the nmake /f makefile.vc nadshift command in the proj\src directory to build and install these files.

It appears we can't redistribute the Canadian NTv2 grid shift file freely, though it is better than the NTv1 file. However, end users can download it for free from the NRCan web site. After downloading it, just dump it in the data directory with the other installed data files (usually /usr/local/share/proj). See [[NonFreeGrids]] for details.

注意事項

  • 當點在在網格重疊區域時(例如conus(圓錐)和ntv1_can.dat)選擇第一個查找到的,而不管是否適當。所以,例如 +nadgrids=ntv1_can.dat,conus將導致加拿大的數據被用於美國北部一些地區,即使conus數據經過批准用於該區域。仔細選擇文件和文件順序是必要的。在某些情況下,邊界跨越數據集可能需要被預先分割成加拿大和美國的點,以便他們可進行適當網格的轉換。
  • 有針對NAD83和NAD83基准面的各種HPGN版本之間轉換的附加網格。使用這些未經測試的,你可能會遇到的問題。FL.lla,WO.lla,MD.lla,TN.lla和WI.lla都是高精度網格轉換的例子。小心!
  • 設置PROJ_DEBUG環境變量的值,可以知道正在應用網格轉換的其他信息。這將導致用什么網格去轉換點信息輸出到stderr上。各個加載網格的邊界值等。
  • PROJ.4始終假定網格包含轉換 NAD83 (基本上是 WGS84)。其他類型的網格可能被或不被使用。

軸定向

從PROJ 4.8.0開始,+axis可以用於控制坐標系的軸方向。默認的定向是"easting, northing, up",但方向或軸可以翻轉,使用axes組合在+axis切換。axes的值是:

  • "e" - 東
  • "w" - 西
  • "n" - 北
  • "s" - 南
  • "u" - 上
  • "d" - 下

它們與+axis結合的形式如下:

  • +axis=enu - 默認的東、北、標高.
  • +axis=neu - northing, easting, up - 針對"lat/long"地理坐標,或南向的橫軸墨卡托很有用.
  • +axis=wnu - westing, northing, up - 一些行星坐標系具有"west positive"坐標系統.

注意+axis參數只適用於通過pj_transform()進行坐標轉換 (它可用於命令行程序cs2cs,但不用於proj).


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM