PostGIS 3の気になったところのメモ
現時点でもメモです
この記事には大した情報はありません。今後増えるかも知れませんし、そのままかも知れません。メモレベルを超えたと判断すると、この節は削除されます。
…10年後にこの節が残ってたりしてね☆
はじめに
2019年10月20日にPostGIS 3.0.0がリリースされました。
まだ全く触ってないのですが、マニュアルを見て気になったところをメモしていきます。
ラスタ機能の引き離し
PostGIS 2.xではPostGISを有効にするとラスタ機能も使用できていました(このためGDALは原則必要とされていました)が、3.xではラスタ機能はpostgis_raster
エクステンションになり、postgis
エクステンションから外れました。
個人的な感想として、いくつかのデータベースを作っていると、ラスタを使うデータベースとベクタしか扱わないデータベースとがはっきり分かれるので、特に困ることは無いと思います。
ST_AsGeoJSON(record)が登場
10月23日作成
レコードでGeoJSONを作ってくれるようになり、"properties"
要素も含むようになりました。
db=# SELECT ST_AsGeoJSON(g_pref.*) FROM g_pref limit 1;
st_asgeojson
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
{"type": "Feature", "geometry": {"type":"Point","coordinates":[142.847299479,43.46928589]}, "properties": {"gid": 1, "pcode": 1, "pname": "北海道", "lastat": null}}
(1 行)
折り返しとインデントを付けると次のようになります。
{
"type": "Feature",
"geometry": {
"type":"Point",
"coordinates":[142.847299479,43.46928589]
},
"properties": {
"gid": 1,
"pcode": 1,
"pname": "北海道",
"lastat": null
}
}
なお、coordinates
のaxis orderは、経度、緯度の順です。https://tools.ietf.org/html/rfc7946#section-3.1.1 参照。
ST_AsGeoJSONのCRSのデフォルトがWGS84に
10月23日作成
GeoJSONの仕様が、いつからか忘れたけど、WGS84がデフォルトになっています。
SRS
が4326
の場合には"crs"
要素が出現せず、4326
以外では出現するようになりました。
db=# SELECT ST_AsGeoJSON(q.*) FROM (SELECT gid, ST_Transform(c_geom, 3857) AS c_geom FROM g_pref limit 1) AS q;
st_asgeojson
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
{"type": "Feature", "geometry": {"type":"Point","crs":{"type":"name","properties":{"name":"EPSG:3857"}},"coordinates":[15901688.6,5383676.93]}, "properties": {"gid": 1}}
(1 行)
SFCGALはエクステンションだけで使用
(2019年10月25日更新)
ジオメトリエンジンとして、1.xからGEOSを使っていましたが、2.xからは一部にSFCGALを使えるようになりました。
SFCGALが独自に持つ機能を使う関数については、postgis_sfcgal
エクステンションの導入によって、その関数が使用可能になるだけなので、普通のエクステンションの話ですので特に注意すべき話ではありません。
それとは別に、2.xでは、GEOSとSFCGALの両方が持つ機能を使う関数があり、両方に対応させていた点です。この場合に、GEOSとSFCGALのどちらを使うかは、GUCのpostgis.backend
で決めていました。
3.xでは、GEOSとSFCGALの両方が持つ機能を使う関数は、SFCGALを使わないようにしています。さらに、postgis.backend
がなくなりました (postgis/lwgeom_backend_api.c
が消えています)。
もちろん、postgis_sfcgal
エクステンションとは別の話でして、こちらは3.xでも有効です。
気になったこと
並列処理
PostgreSQL 12 が必須ですが、どうも多くの関数で、特に意識せずに並列処理が可能になるようです。
Proj.6対応
Proj.6に対応しました。
座標変換パラメータの探索順序が変わりました。SPATIAL_REF_SYSでなく、Proj.6データベースが優先されるようになったそうです。これにより、Proj.6に与えるシフトパラメータがそのまま使えるようになりました。その次にWKT、最後にproj4textのパラメータ指定、の順になるようです。
おわりに
いかがだったでしょうか。
先に「最初にメモレベルだって言いましたよね?」と言っといてやる。
本記事のライセンス
この記事は クリエイティブ・コモンズ 表示 4.0 国際 ライセンス の下に提供されています。
Discussion