MySQL 8.0 リファレンスマニュアル MySQL NDB Cluster 8.0 を含む
このページは機械翻訳したものです。
このセクションでは、GeoJSON ドキュメントと空間値の間の変換関数について説明します。 GeoJSON は、ジオメトリ/地理的特徴をエンコードするためのオープンスタンダードです。 詳細は、http://geojson.orgを参照してください。 ここで説明する関数は、GeoJSON 仕様リビジョン 1.0 に従います。
GeoJSON では、MySQL でサポートされているものと同じジオメトリデータ型または地理データ型がサポートされます。 ジオメトリオブジェクトが抽出される点を除き、フィーチャおよび FeatureCollection オブジェクトはサポートされていません。 CRS のサポートは SRID を識別する値に制限されています。
MySQL では、JSON 値に対する操作を可能にするために、ネイティブの JSON
データ型および一連の SQL 関数もサポートされています。 詳細は、セクション11.5「JSON データ型」およびセクション12.18「JSON 関数」を参照してください。
ST_AsGeoJSON(
g
[, max_dec_digits
[, options
]])
ジオメトリ g
から GeoJSON オブジェクトを生成します。 オブジェクト文字列には、接続文字セットと照合順序があります。
いずれかの引数が NULL
の場合、戻り値は NULL
です。 NULL
以外の引数が無効な場合は、エラーが発生します。
max_dec_digits
を指定すると、座標の小数点以下の桁数が制限され、出力が丸められます。 指定しない場合、この引数のデフォルトは 2 32− 1 の最大値です。 最小値は 0 です。
options
はビットマスクです (指定されている場合)。 次のテーブルに、許可されるフラグ値を示します。 ジオメトリ引数の SRID が 0 の場合は、要求するフラグ値に対しても CRS オブジェクトは生成されません。
フラグ値 | 意味 |
---|---|
0 | オプションなし。 これは、options が指定されていない場合のデフォルトです。 |
1 | バウンディングボックスを出力に追加します。 |
2 | 短い形式の CRS URN を出力に追加します。 デフォルトの形式は短い形式 (EPSG: ) です。 |
4 | 長い形式の CRS URN (urn:ogc:def:crs:EPSG:: ) を追加します。 このフラグはフラグ 2 をオーバーライドします。 たとえば、オプション値 5 と 7 は同じことを意味します (バウンディングボックスと長い形式の CRS URN を追加します)。 |
mysql> SELECT ST_AsGeoJSON(ST_GeomFromText('POINT(11.11111 12.22222)'),2);
+-------------------------------------------------------------+
| ST_AsGeoJSON(ST_GeomFromText('POINT(11.11111 12.22222)'),2) |
+-------------------------------------------------------------+
| {"type": "Point", "coordinates": [11.11, 12.22]} |
+-------------------------------------------------------------+
ST_GeomFromGeoJSON(
str
[, options
[, srid
]])
GeoJSON オブジェクトを表す文字列 str
を解析し、ジオメトリを戻します。
いずれかの引数が NULL
の場合、戻り値は NULL
です。 NULL
以外の引数が無効な場合は、エラーが発生します。
options
では、座標ディメンションが 2 より大きいジオメトリを含む GeoJSON 文書の処理方法を説明します (指定されている場合)。 次のテーブルに、許可される options
値を示します。
オプション値 | 意味 |
---|---|
1 | ドキュメントを却下し、エラーを生成します。 これは、options が指定されていない場合のデフォルトです。 |
2, 3, 4 | ドキュメントを受け入れ、より高い座標寸法の座標を除去します。 |
options
の値が 2、3 および 4 の場合、現在も同じ結果になります。 座標ディメンションが 2 より大きいジオメトリが将来サポートされる場合は、これらの値によって異なる効果が生じる可能性があります。
srid
引数を指定する場合は、32 ビットの符号なし整数である必要があります。 指定しない場合、ジオメトリの戻り値の SRID は 4326 になります。
srid
が未定義の空間参照システム (SRS) を参照すると、ER_SRS_NOT_FOUND
エラーが発生します。
地理 SRS ジオメトリ引数で、範囲外の経度または緯度を持つ引数がある場合、エラーが発生します:
経度の値が (−180, 180]の範囲にない場合は、ER_LONGITUDE_OUT_OF_RANGE
エラーが発生します。
緯度の値が[−90, 90]の範囲にない場合は、ER_LATITUDE_OUT_OF_RANGE
エラーが発生します。
表示される範囲は度数です。 SRS で別の単位が使用されている場合、範囲ではその単位に対応する値が使用されます。 浮動小数点演算のため、正確な範囲制限はわずかに偏差します。
GeoJSON ジオメトリ、地物および地物コレクションオブジェクトには、crs
プロパティがある場合があります。 解析関数は、urn:ogc:def:crs:EPSG::
および srid
EPSG:
ネームスペース内の名前付き CRS URN を解析しますが、リンクオブジェクトとして指定された CRS は解析しません。 また、srid
urn:ogc:def:crs:OGC:1.3:CRS84
は SRID 4326 として認識されます。 オブジェクトに認識されない CRS がある場合、エラーが発生しますが、オプションの srid
引数が指定された場合、CRS は無効であっても無視されます。
トップレベルオブジェクト SRID とは異なる SRID を指定する crs
メンバーが GeoJSON 文書の下位レベルで見つかった場合、ER_INVALID_GEOJSON_CRS_NOT_TOP_LEVEL
エラーが発生します。
GeoJSON 仕様で指定されているように、GeoJSON 入力 (Point
、LineString
など) の type
メンバーの解析では大/小文字が区別されます。 この指定は、MySQL では大/小文字が区別されない、他の解析の大/小文字の区別に関するサイレントです。
この例は、単純な GeoJSON オブジェクトの解析結果を示しています。 座標の順序が使用される SRID に依存することを確認します。
mysql>SET @json = '{ "type": "Point", "coordinates": [102.0, 0.0]}';
mysql>SELECT ST_AsText(ST_GeomFromGeoJSON(@json));
+--------------------------------------+ | ST_AsText(ST_GeomFromGeoJSON(@json)) | +--------------------------------------+ | POINT(0 102) | +--------------------------------------+ mysql>SELECT ST_SRID(ST_GeomFromGeoJSON(@json));
+------------------------------------+ | ST_SRID(ST_GeomFromGeoJSON(@json)) | +------------------------------------+ | 4326 | +------------------------------------+ mysql>SELECT ST_AsText(ST_SRID(ST_GeomFromGeoJSON(@json),0));
+-------------------------------------------------+ | ST_AsText(ST_SRID(ST_GeomFromGeoJSON(@json),0)) | +-------------------------------------------------+ | POINT(102 0) | +-------------------------------------------------+