0

私は 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) を表現することに関係しているのではないかと思いましたが、その証拠は見つかりませんでした。

誰かがこれに光を当てることができれば、私はそれを大いに感謝します.

4

1 に答える 1