私は PostGIS を使っていくつかの実験を行ってきましたが、私が気づいたことは次のとおりです。
次のように定義されたテーブルがあるとします。
CREATE TABLE IF NOT EXISTS geomtest (
id SERIAL PRIMARY KEY,
name TEXT NOT NULL,
geom geometry(POLYGON, 4326) NOT NULL
);
そして、次のポリゴンを追加します。
SRID=4326;POLYGON((0 0,0 10,10 10,10 0,0 0))
列を単独でクエリするgeom
と、ジオメトリの Hex 表現が得られます。代わりに を呼び出すとST_AsBinary(geom)
、バイナリ表現が得られます。
ただし、16 進表現と 2 進表現の両方をバイト配列に変換すると、得られる結果が少し異なります。最初のコメントは 16 進数を 2 進数に変換した結果で、次はそのままです。ST_AsBinary()
//[1 3 0 0 32 230 16 0 0 1 0 0 0 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 36 64 0 0 0 0 0 0 36 64 0 0 0 0 0 0 36 64 0 0 0 0 0 0 36 64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
//[1 3 0 0 0 1 0 0 0 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 36 64 0 0 0 0 0 0 36 64 0 0 0 0 0 0 36 64 0 0 0 0 0 0 36 64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
ご覧のとおり、最初の 4 バイトは同一です。ビッグ エンディアンかリトル エンディアンか、およびジオメトリのタイプ (3、この場合はポリゴン) を表します。残りのバイトも同じです。唯一の違いは、最初の 4 バイトの後に数バイトが追加されることです。
これが投影 (SRID=4326) を表現することに関係しているのではないかと思いましたが、その証拠は見つかりませんでした。
誰かがこれに光を当てることができれば、私はそれを大いに感謝します.