2008年7月30日水曜日

PostGISで地図を表示 5空間インデックスの作成

パフォーマンスを向上させるために次の作業を実行します。
空間インデックスを作成します。

user@debian:~/mapfile$ psql tokyo
Welcome to psql 8.1.11, the PostgreSQL interactive terminal.

Type: \copyright for distribution terms
\h for help with SQL commands
\? for help with psql commands
\g or terminate with semicolon to execute query
\q to quit

tokyo=> CREATE INDEX idx_gyoseikai_geo ON gyoseikai USING GIST (the_geom);
CREATE INDEX

tokyo=> CREATE INDEX idx_gyoseikai_oid ON gyoseikai (oid);
ERROR: column "oid" does not exist

tokyo=> \d gyoseikai
Table "public.gyoseikai"
Column | Type | Modifiers
------------+-----------------------+---------------------------------------------------------
gid | integer | not null default nextval('gyoseikai_gid_seq'::regclass)
todofuken | character varying(8) |
shicho | character varying(8) |
gun_seirei | character varying(10) |
shikuchoso | character varying(14) |
code | character varying(5) |
the_geom | geometry |
Indexes:
"gyoseikai_pkey" PRIMARY KEY, btree (gid)
"idx_gyoseikai_geo" gist (the_geom)
Check constraints:
"enforce_dims_the_geom" CHECK (ndims(the_geom) = 2)
"enforce_geotype_the_geom" CHECK (geometrytype(the_geom) = 'MULTIPOLYGON'::text OR the_geom IS NULL)
"enforce_srid_the_geom" CHECK (srid(the_geom) = -1)

tokyo=> \q

oid カラムが自動的に付与されていないので、

tokyo=> CREATE INDEX idx_gyoseikai_oid ON gyoseikai (oid);
ERROR: column "oid" does not exist

でエラーが発生します。
効率的なクエリを事項するには、非空間データ(ここでは the_geom 以外のデータ)にインデックスを構築しておく必要があります。
gyoseikai テーブルは oid がないので、必要なときには、USING UNIQUE で gid か the_geomを指定します。

shp2imgで地図を確認します。

~/mapfile$shp2img -m tokyo_pgis.map -o tokyo_pgis.png
sid/lenny環境で動作するようになりましたが、lenny環境では、まだ、動作しません。2008-7-30OKになってます。2009-7-21)

ka-Mapのconfig.phpに次のように修正します。

---
$aszTokyo = array (
'title' => 'Tokyo',
'path' => '/home/user/mapfile/tokyo_pgis.map', //ここを修正
'scales' => array( 500000, 250000, 100000 ),
'format' =>'PNG'
);
---

ka-Mapを起動して、Tokyoの地図を表示してください。

0 件のコメント: