力技でどうにかしようとしている

id:yellow_73:20080204#p1 のつづき。
実際にやってみました。半分以上は、これでよいことにするようにしました。
問題なのは ST_IsRing() で false を返すもの。
とりあえず、ダンプ形式の当該レコードを見てみる。WKBを抜き出す。
先頭の01060000001000000001030000までは固定。
先頭1バイトがエンディアン('01'はリトル)を示し、次の4バイト('06000000')がマルチポリゴンを示し、次の4バイト('01000000')がポリゴン数が1であることを示しています。次は1つ目(1つしかありませんが)のポリゴンで、先頭1バイトがエンディアン、続く4バイト('03000000')がポリゴンを示します。この次に来る4バイトがリング数です。
ここからリングごとのチャンクで、2次元のdoubleがずらっとシリアルに並んでいます。1ポイントごとに2*8バイト=16バイト=32文字を取っています。
これらの区切りごとに改行を入れていくと、データ構造が見えてきます。
Cで、標準入力で文字列を受け付け、doubleにしてprintf()で標準出力に出すものを作り、これを実行しているところに、上で改行を入れたデータのうち、リングごとにポイントデータをコピーペースト、そしてgnuplotでとりあえずリングの様子を見ています。