座標元期のサポート
Added in version 3.4.
ダイナミックCRSと座標元期
この文書は,ダイナミックCRSに関連する座標元期のサポートについて説明するものです.
ダイナミックCRSでは,地球表面上の点の座標は時間とともに変化する可能性があります.座標が明確であるためには,常に有効な元期で座標を修飾する必要があります.座標元期は,観測が収集された元期である必要はありません.
ダイナミックCRSの例には, WGS 84 (G1762)
, ITRF2014
, ATRF2014
があります.
汎用EPSG:4326 WGS 84 CRSもダイナミックと見なされますが,その位置精度が2メートルであるデータムアンサンブルに基づいているため,使用をお勧めしません.代わりに, WGS 84 (G1762)などの実装しているものの1つを使用してください.
OGRSpatialReference::IsDynamic()
メソッドを使用して,CRSがダイナミックかどうかをテストできます.
The OGRSpatialReference::SetCoordinateEpoch()
and
OGRSpatialReference::GetCoordinateEpoch()
methods can be used to
set/retrieve a coordinate epoch associated with a CRS. The coordinate epoch is
expressed as a decimal year (e.g. 2021.3 for April 21, 2021).
形式的には,観測の座標元期は観測に属します.しかし,ほとんどの形式では観測ごとの元期を保存することはできず,典型的な使用法は同じ元期の観測のセットです.したがって,私たちは元期をCRSのプロパティとして保存し,それがすべての観測に有効であると仮定します.この選択は,ほとんどの使用法に対して処理,保存,形式の複雑さを緩和します.現時点では,異なる元期の観測や点を含むデータセットを処理することはできません.
ベクトル形式の場合,ジオメトリごとの座標元期も意味をなすことができますが,ほとんどの形式がレイヤーごとのCRSのみをサポートしているため,現時点ではレイヤーレベルでの座標元期のサポートを制限しています.基本となる座標変換メカニズムは,頂点ごとの座標元期をサポートできます.
ラスターおよびベクター形式でのサポート
執筆時点では,GDAL/OGRで処理される形式には,座標元期をエンコードする標準化された方法はありません.そのため,既存のリーダーとできるだけ後方互換性があるようにエンコード方法を選択しました.対応する公式仕様がこの概念を考慮に入れるように進化する場合,これらのエンコーディングは変更される可能性があります.座標元期は,作成されたレイヤー/データセットのSRSにアタッチされた場合にのみ書き込まれます.
FlatGeoBuf
座標元期は,FlatGeoBufファイルの Crs.wkt
ヘッダーフィールドに設定された, COORDINATEMETADATA 構造の EPOCH
サブノードを使用して,WKT:2019文字列としてエンコードされます.
COORDINATEMETADATA[
GEOGCRS["WGS 84 (G1762)",
DYNAMIC[FRAMEEPOCH[2005.0]],
DATUM["World Geodetic System 1984 (G1762)",
ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1.0]]
],
CS[ellipsoidal,3],
AXIS["(lat)",north,ANGLEUNIT["degree",0.0174532925199433]],
AXIS["(lon)",east,ANGLEUNIT["degree",0.0174532925199433]],
AXIS["ellipsoidal height (h)",up,LENGTHUNIT["metre",1.0]]
],
EPOCH[2016.47]
]
注釈
このような構造は,GDAL < 3.4 では理解されませんが,CRSに関連付けられたEPSGコードがある場合,これは古いGDALバージョンで問題を引き起こしません.
GeoPackage vector/raster
座標元期が関連付けられている各ベクター/ラスターテーブルは,CRS WKT拡張の拡張バージョンを使用して, gpkg_spatial_ref_sys
テーブルの epoch
列にエンコードされます(https://github.com/opengeospatial/geopackage/pull/600).
GeoTIFF
座標元期は,新しいGeoTIFF GeoKey, CoordinateEpochGeoKey
(コード5120,タイプDOUBLE)としてエンコードされます.
Geotiff_Information:
Version: 1
Key_Revision: 1.0
Tagged_Information:
ModelTiepointTag (2,3):
0 0 0
440720 3751320 0
ModelPixelScaleTag (1,3):
60 60 0
End_Of_Tags.
Keyed_Information:
GTModelTypeGeoKey (Short,1): ModelTypeProjected
GTRasterTypeGeoKey (Short,1): RasterPixelIsArea
GTCitationGeoKey (Ascii,22): "WGS 84 / UTM zone 11N"
GeogCitationGeoKey (Ascii,7): "WGS 84"
GeogAngularUnitsGeoKey (Short,1): Angular_Degree
ProjectedCSTypeGeoKey (Short,1): PCS_WGS84_UTM_zone_11N
ProjLinearUnitsGeoKey (Short,1): Linear_Meter
CoordinateEpochGeoKey (Double,1): 2021.3
End_Of_Keys.
End_Of_Geotiff.
JPEG2000
GeoJP2ボックスは上記のGeoTIFFエンコーディングを使用します.
Persistent Auxiliary Metadata (.aux.xml)
座標元期は, SRS
要素の coordinateEpoch
属性としてエンコードされます.
<PAMDataset>
<SRS dataAxisToSRSAxisMapping="1,2" coordinateEpoch="2021.3">PROJCS["WGS 84 / UTM zone 11N",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",-117],PARAMETER["scale_factor",0.9996],PARAMETER["false_easting",500000],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["Easting",EAST],AXIS["Northing",NORTH],AUTHORITY["EPSG","32611"]]</SRS>
<!-- snip -->
</PAMDataset>
GDAL VRT
座標元期は, SRS
要素の coordinateEpoch
属性としてエンコードされます.
<VRTDataset rasterXSize="20" rasterYSize="20">
<SRS dataAxisToSRSAxisMapping="1,2" coordinateEpoch="2021.3">PROJCS["WGS 84 / UTM zone 11N",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",-117],PARAMETER["scale_factor",0.9996],PARAMETER["false_easting",500000],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["Easting",EAST],AXIS["Northing",NORTH],AUTHORITY["EPSG","32611"]]</SRS>
<!-- snip -->
</VRTDataset>
ユーティリティでのサポート
gdalinfo and ogrinfo report the coordinate epoch, when attached to a dataset/layer SRS.
gdal_edit.py has a -a_coord_epoch
option to define the epoch of a dataset in place.
gdal_translate and ogr2ogr have a -a_coord_epoch
option to be used
together with -a_srs
, and otherwise preserve the coordinate epoch in the output SRS
from the source SRS when no SRS related options are specified.
gdalwarp and ogr2ogr have a -s_coord_epoch
option to be used together with -s_srs
(resp. -t_coord_epoch
option to be used together with -t_srs
) to override/set the
coordinate epoch of the source (resp. target) CRS.
PROJ 9.4以前では,2つのダイナミックCRS間の変換をサポートしていなかったため, -s_coord_epoch
と -t_coord_epoch
は相互に排他的でした.
gdalwarp は適切な場合に出力SRSに座標元期を保持します.
座標変換でのサポート
The OGRCoordinateTransformation
class can perform time-dependent
transformations between a static and dynamic CRS based on the coordinate epoch
passed per vertex.
静的CRSとダイナミックCRS間の時間依存変換を行う際に,ダイナミックCRSに関連付けられた座標元期を考慮することもできます. OGR_CT_USE_SRS_COORDINATE_EPOCH
構成オプションを NO
に設定して,ソースまたはターゲットCRSに関連付けられた座標元期を使用しないようにすることができます.
頂点ごとの時間が指定されている場合,それはCRSに関連付けられた時間を上書きします.