[pgsql-jp: 25283] Re: 幾何関数について 教えてください

Nobuyuki MIURA miura @ gungun.net
2002年 3月 14日 (木) 15:28:53 JST


三浦と申します.コメントありがとうございます > 大川 様,尾野 様

From: 大川敏生 <ohkawa @ agr.nagoya-u.ac.jp>
Date: Wed, 13 Mar 2002 13:32:37 +0900
> 
> Nobuyuki MIURA wrote:
> > 私の場合は,ある点がどのポリゴン中に包含されるかを検索しようとしております.
> > ポリゴンはそこそこ複雑なので,PostgreSQLの幾何データ型を使うと,
> > 8Kbyteの壁にあたってしまいます.
> > #7.1.3だと,8Kbyteを越えるようなポリゴンもなぜかinsert, selectは
> > #できているのですが,rtreeのindexは張れません
> 
> PostgreSQLは7.1以降であれば、8Kbyteの壁は破られたのでは、、

documentをきちんと読んでいなくてすみません ^^;
7.1のリリースノートを見たら,まさにそのことが書いてありました.

rtree indexを張ろうとすると,

geodata=# create index hoge_poly_index on hoge_poly using rtree (latlon_poly);
ERROR:  index_formtuple: data takes 8620 bytes, max is 8191

と怒られるので,てっきり,8Kbyteの壁の問題かと思い込んでおりました.


From: "Hisaji ONO" <hi-ono @ mn.xdsl.ne.jp>
Date: Wed, 13 Mar 2002 22:02:49 +0900
> 
> > ポリゴンはそこそこ複雑なので,PostgreSQLの幾何データ型を使うと,
> > 8Kbyteの壁にあたってしまいます.
> > #7.1.3だと,8Kbyteを越えるようなポリゴンもなぜかinsert, selectは
> > #できているのですが,rtreeのindexは張れません
> >
> 7.2だとこの制限ははずされているようですね。

7.2 でも,indexを張ろうとすると,同じエラーが出てしまいました.

どなたかうまく行っている方はいらっしゃいますか?

あるいは何か思い当たることがある方がいたら教えてください.

---------------------------------

私の環境等

version of PostgreSQL: 7.2
configure option:
--prefix=/usr/local/pgsql72 --enable-locale --enable-multibyte --enable-syslog
OS: FreeBSD
options of initdb: -E EUC_JP 

こんなテーブルに,

         Table "hoge_poly"
   Column    |     Type     | Modifiers 
-------------+--------------+-----------
 id          | character(5) | 
 edaban      | character(8) | 
 latlon      | point        | 
 latlon_poly | polygon      | 

geodata=# create index hoge_poly_index on hoge_poly using rtree (latlon_poly);

とかとやると,
例えば,6006ポイントからなるポリゴンのデータを入れると,

ERROR:  index_formtuple: data takes 15424 bytes, max is 8191

などと出ました.

6006ポイントからなるこのポリゴンデータは,

01664|00008990|(520650.0,154996.0)|((520650.0,154996.0),(520638.0,154994.0),(520632.0,154986.0),(520627.0,154985.0),(520622.0,154985.0),(520615.0,154980.0),(520609.0,154982.0),(520606.0,154980.0),(520604.0,154976.0),(520591.0,154977.0),
(中略)
,(520650.0,154996.0))

のようなもので,copyコマンドで,delimiters '|' で入れています.

どれくらいのサイズが臨界点かはまだチェックしきれていません m_O_m

---------------------------------



pgsql-jp メーリングリストの案内