カテゴリ:

地理空間関数

ST_TRANSFORM

GEOMETRY オブジェクトをある 空間参照系(SRS) から別の空間参照系に変換します。

この関数を使用して、 オブジェクトの SRID と座標を変更して、新しい SRS (空間参照系)に一致 させます。座標を変更せずに SRID を変更する必要がある場合(例: SRID が正しくない場合)は、代わりに ST_SETSRID を使用します。

構文

ST_TRANSFORM( <geometry_expression> [ , <from_srid> ] , <to_srid> );
Copy

引数

必須:

geometry_expression

引数は GEOMETRY 型でなければなりません。

to_srid

使用する SRS を識別する 空間参照システム識別子(SRID)。この関数は、入力 GEOMETRY オブジェクトを、この SRS を使用する新しいオブジェクトに変換します。

オプション:

from_srid

入力 GEOMETRY オブジェクトの現在の SRS を識別する SRID。

この引数が省略された場合、この関数は入力 GEOMETRY オブジェクトで指定された SRID を使用します。

戻り値

この関数は、 to_srid により識別された SRS を使用する GEOMETRY オブジェクトを返します。

使用上の注意

  • SRIDs は、 EPSG 規格 (v10.082)に基づいています。たとえば、 SRID 4326は、コード4326の権限 EPSG に対応します。

  • 入力 GEOMETRY に正しい SRID が設定されているか、 from_srid 引数が指定されていることを確認してください。

  • 現在、この関数はデータムグリッドファイルをサポートしていません。すべての変換は、グリッドファイルの補正なしに、データムの静的パラメーターを使用して実行されます。

  • geometry_expressionfrom_srid、または to_srid が NULL の場合、この関数は NULL を返します。

  • from_srid または to_srid が有効な SRID に解決できない場合は、エラーが発生します。

次の例は、 POINT GEOMETRY オブジェクトを EPSG:32633(WGS 84 / UTM zone 33N)から EPSG:3857(Webメルカトル)に変換します。

-- Set the output format to EWKT
ALTER SESSION SET GEOMETRY_OUTPUT_FORMAT='EWKT';

SELECT
  ST_TRANSFORM(
    ST_GEOMFROMWKT('POINT(389866.35 5819003.03)', 32633),
    3857
  ) AS transformed_geom;
Copy
+---------------------------------------------------------------+
| transformed_geom                                              |
|---------------------------------------------------------------|
| SRID=3857;POINT(1489140.093765644 6892872.198680112)          |
+---------------------------------------------------------------+

GEOMETRY オブジェクトにソース SRID が正しく設定されていない場合は、関数の to_srid 引数に SRID を指定します。たとえば、 POINT GEOMETRY オブジェクトを EPSG:4326(WGS84)から EPSG:28992(Amersfoort / RD New)に変換します。

-- Set the output format to EWKT
ALTER SESSION SET GEOMETRY_OUTPUT_FORMAT='EWKT';

SELECT
  ST_TRANSFORM(
    ST_GEOMFROMWKT('POINT(4.500212 52.161170)'),
    4326,
    28992
  ) AS transformed_geom;
Copy
+---------------------------------------------------------------+
| transformed_geom                                              |
|---------------------------------------------------------------|
| SRID=28992;POINT (94308.66600006013 464038.16881095537)       |
+---------------------------------------------------------------+