2008年7月31日木曜日

PostGISで地図を表示 6東京都の人口データの準備

東京都の人口のデータの準備をします。

東京都総務局ホームページ
http://www.soumu.metro.tokyo.jp/index.htm

東京都の統計
http://www.toukei.metro.tokyo.jp/index.htm

住民基本台帳による世帯と人口
http://www.toukei.metro.tokyo.jp/juukim/jm-index.htm

で最新の統計データをダウンロードします。
私は、平成20年6月のデータをダウンロードしました。
データは人が見やすいように作成されています。
これを人口総数(A+B)、男、女、外国人登録人口に行政コードを追加した単純な表にします。

例えば、
0 OpenOffice.org Calc でダウンロードしたファイルを開く
1 列のタイトルは1行にする
2 市区町村の行以外を削除する(空行や合計行など)
3 市区町村名、人口総数(A+B)、男、女、外国人登録人口以外の列を削除する
4 セルの中のスペースをすべて削除する
5 行政コードを追加する (行政コード、市区町村名、人口総数(A+B)、男、女、外国人登録人口の順にしました。)
6 タイトル行を削除する
7 CSVファイルとして出力

行政コードは、インターネットで探すか、次のようにマップデータから作成します。

Eclipseを起動して tokyo データベースに接続します。
データベース構造(Database Structure) ウィンドウの

public -> テーブル(table) -> gyoseikai

をクリックを右クリックし、 Selectステートメントの生成 をクリックします。
SQLエディタ に次のように入力して実行します。

select distinct code, gun_seirei, shikuchoso from "public"."gyoseikai"

表示された結果を右クリックして、 エクスポート->export to .csv をクリックします。
include column header をチェックし、宛先 ボタンをクリックして保存先とファイル名を指定し、OK ボタンをクリックします。

csvファイルを開き code (行政コード)をコピーし、加工した人口データに貼り付けます。
(どちらも行政コード順になっているのでそのまま貼り付けられます。)


*コマンドでCSVファイルに出力

user@debian:~$ psql -F ',' -A -t -c 'SELECT DISTINCT code, gun_seirei, shikuchoso from gyoseikai' tokyo > gyosei_code.csv

参考

user@debian:~$ 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=> \o gyosei_code.txt
tokyo=> SELECT DISTINCT code, gun_seirei, shikuchoso from gyoseikai;
tokyo=> \!less gyosei_code.txt
tokyo=> \o
tokyo=> \q

バージョン8.3なら次も可能

tokyo=> \COPY (SELECT DISTINCT code, gun_seirei, shikuchoso from gyoseikai) TO 'code2.csv' WITH DELIMITER ','

続く…

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の地図を表示してください。

2008年7月29日火曜日

PostGISで地図を表示 4マップファイルの作成

PostGISホームページのPostGIS Manualの

4.7. Using Mapserver
http://postgis.refractions.net/docs/ch04.html#id2592529

を参考にPostGISで地図を表示してみます。
最初に、tokyo_shp.map を参考に PostGIS 用のマップファイル tokyo_pgis.map を作成します。
tokyo_shp.map をコピーして、

user@debian:~/mapfile$ cp tokyo_shp.map tokyo_pgis.map

gyoseikai レイヤを次のように修正します。

MAP
NAME tokyo_pgis_map #ここを修正
---
LAYER
NAME gyoseikai
GROUP gyoseikai
TYPE POLYGON
STATUS ON
CONNECTIONTYPE POSTGIS
CONNECTION "dbname=tokyo host=localhost user=user password=password"
DATA "the_geom from gyoseikai"
LABELITEM "shikuchoso" #PostGISでは大文字小文字を区別します
METADATA
"group_title" "行政界"
# "layer_encoding" "SJIS" #ここを削除
"searchfield" "shikuchoso" #PostGISでは大文字小文字を区別します
"fields" "gun_seirei:郡政令,shikuchoso:市区町村"
END
CLASS
NAME "City Boundaries"
STYLE
OUTLINECOLOR 153 153 153
END
LABEL
MINFEATURESIZE 40
TYPE TRUETYPE
FONT vl-gothic
ENCODING UTF-8 #ここを修正
SIZE 8
END
END
TEMPLATE temp_tokyo_shp.html
END
END

LAYER
NAME gun_seirei
GROUP gun_seirei
TYPE ANNOTATION
STATUS ON
CONNECTIONTYPE POSTGIS
CONNECTION "dbname=tokyo host=localhost user=user password=password"
DATA "the_geom from gyoseikai"
LABELITEM "gun_seirei"
METADATA
"group_title" "郡政令"
# "layer_encoding" "SJIS" #ここを削除
"searchfield" "gun_seirei"
"fields" "gun_seirei:郡政令,shichoso:市区町村"
END
CLASS
NAME "Gun Seirei Label"
LABEL
MINFEATURESIZE 40
TYPE TRUETYPE
FONT vl-gothic
ENCODING UTF-8 #ここを修正
SIZE 8
POSITION uc #gyoseikaiレイヤのラベルと重ならないように
END
END
TEMPLATE temp_tokyo_shp.html
END
END
---

2008年7月28日月曜日

PostGISで地図を表示 3シェイプファイルを登録

shp2pgsqlコマンドを使ってシェイプファイルをデータベースに登録します。
一般ユーザでシェイプファイルのあるディレクトリに移動して、次のように入力します。

postgres@debian:$ exit
user@debian-vmware:~$ cd mapdata/tokyo/
user@debian:~/mapdata/tokyo$ shp2pgsql -W sjis N03-071001_13.shp gyoseikai > gyoseikai.sql
user@debian:~/mapdata/tokyo$ psql -d tokyo -f gyoseikai.sql
user@debian:~/mapdata/tokyo$ 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=> \dt
List of relations
Schema | Name | Type | Owner
--------+------------------+-------+-------
public | geometry_columns | table | user
public | gyoseikai | table | user
public | spatial_ref_sys | table | user
(3 rows)

gyoseikaiテーブル内のカラムとその他の一覧を表示してみます。

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)
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


Eclipseでデータベースを操作してみます。
最初に、PostgreSQLをJavaで操作できるようにSynapticパッケージマネージャでpostgresql用(一緒にPostGIS用も)のjdbc[libpg-java, libpostgis-java]をインストールします。

Eclipseに SQL Explorer プラグインをインストールします。

Eclipseに SQL Explorer
http://eclipsesql.sourceforge.net/

の Download リンクをクリックして

SQL Explorer Plugin 3.5.0.RC5

をダウンロードしてください。
ダウンロードしたファイルを解凍します。

unzip sqlexplorer_plugin-3.5.0.RC5.zip

featuresフォルダの中身をExplorerのfeaturesのフォルダに
pluginsフォルダの中身をExplorerのpluginsのフォルダに全部入れてください。
Eclipseを起動します。
ウィンドウ->パースペクティブを開く->その他 をクリックします。
パースペクティブを開く でSQL Explorerを選択し OK をクリックします。

*ganymedeの場合
1 メニューバーの ヘルプ->ソフトウェアの更新 をクリックします。
2 ソフトウェア更新及びアドオン ポップアップウィンドウが表示されたら サイトの追加 ボタンをクリックします。
3 サイトの追加 ポップアップウィンドウの ロケーション に次のURLを入力して OK ボタンをクリックします。
http://eclipsesql.sourceforge.net/
4 ソフトウェア更新及びアドオン ポップアップウィンドウ表示されたら、追加されたsqlexplorer のアップデートサイトのチェックボックスをクリックしてチェックし、インストール ボタンをクリックします。
5 インストール ポップアップウィンドウ表示されたら 終了 ボタンをクリックします。(何も表示されていなくてもOKです。バグ?)
6 フィーチャーライセンス が表示されたら 使用条項の条件に同意します をクリックし 終了 ボタンをクリックします。
7 インストールが終了したら ソフトウェア更新 ポップアップウィンドウ表示されるので はい ボタンをクリックし、eclipseを再起動します。

ウインドウ->設定をクリックします。
設定ポップアップウィンドウのSQL Explorer->JDBC ドライバーをクリックします。
PostgreSQL を選択して 編集 ボタンをクリックします。
Change Driverポップアップウィンドウの 追加クラス・パス タブをクリックし、追加 ボタンをクリックします。
ポップアップウィンドウで /usr/share/java/postgresql-jdbc3-8.2.jar を選んで OK ボタンをクリックします。
Change Driverポップアップウィンドウで postgresql-jdbc3-8.2.jar を選んで ドライバー をボタンをクリックし、ドライバクラス名 が表示されたら OK ボタンをクリックします。
設定 ポップアップウィンドウの OK ボタンをクリックします。

接続 ウィンドウ上で右クリックし、新規接続プロファイル をクリックします。
新規接続プロファイル作成 ポップアップで次のように入力します。

Name:tokyo
Drivers:PostgreSQL
URL:jdbc:postgresql:[[:<5432>/]]
->jdbc:postgresql://localhost:5432/tokyo
User Name:user
Password:*******
Auto Logon:チェック(お好みで)

OK ボタンをクリックします。
接続 ウィンドウ上の tokyo の user を右クリックし 接続 をクリックします。
データベース構造(Database Structure) ウィンドウの

public -> テーブル(table) -> gyoseikai

をクリックし データベース詳細(Database Detail) ウィンドウの プレビュー(Preview) タブをクリックすると gyoseikaiテーブル のデータ内容が表示されます。

2008年7月24日木曜日

PostGISで地図を表示 2データベースの作成

データベースを作成し、一般ユーザを登録します。

PostGISホームページ
http://postgis.refractions.net/

のDocumentation(html)の

PostGIS Manual
http://postgis.refractions.net/docs/



Chapter 2. Installation
http://postgis.refractions.net/docs/ch02.html

の2.2PostGISの5,6,7を参考に前回使用した東京都のデータを使用したデータベースを作成します。
これには3つのステップがあります。

1:PostgreSQLのpl/pgsql言語サポートの有効化
2:lwpostgis.sqlの読み込み
3:spatial_ref_sys.sqlの読み込み

です。
pl/pgsqlはデータベース内に組み込むことができる内部的なプログラミング言語をサポートします。
lwpostgis.sqlはPostGISの機能で、pl/pgsqlが有効になって読み込むことができます。
spatial_ref_sys.sqlは投影法に関する情報です。
lwpostgis.sqlとspatial.sqlの場所は、SynapticパッケージマネージャでPostGISを検索し、プロパティをクリックして、インストール済みパッケージタブをクリックすると表示されます。

postgres@debian:~$ createdb template_postgis
postgres@debian:~$ createlang plpgsql template_postgis
postgres@debian:~$ psql -d template_postgis -f /usr/share/postgresql-8.1-postgis/lwpostgis.sql
postgres@debian:~$ psql -d template_postgis -f /usr/share/postgresql-8.1-postgis/spatial_ref_sys.sql

作成したtemplate_postgisをテンプレートとしてオーナーがuserでtokyoというデータベースを作成します。

postgres@debian:~$ createdb -T template_postgis -O user tokyo
postgres@debian:~$ psql -l
List of databases
Name | Owner | Encoding
------------------+----------+----------
postgres | postgres | UTF8
template0 | postgres | UTF8
template1 | postgres | UTF8
template_postgis | postgres | UTF8
tokyo | user | UTF8


ここまでの作業をテンプレートを作成しないで、直接tokyoというデータベースを作成することもできます。
そのときは、template_postgisをtokyoと読み替えてください。

tokyoデータベースのgeometry_columnテーブルとspatial_ref_sysテーブルのオーナーをuserに変更します。

postgres@debian:~$ 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=# \d
List of relations
Schema | Name | Type | Owner
--------+------------------+-------+----------
public | geometry_columns | table | postgres
public | spatial_ref_sys | table | postgres
(2 rows)

tokyo=# ALTER TABLE geometry_columns OWNER TO user;
ALTER TABLE
tokyo=# ALTER TABLE spatial_ref_sys OWNER TO user;
ALTER TABLE
tokyo=# \d
List of relations
Schema | Name | Type | Owner
--------+------------------+-------+-------
public | geometry_columns | table | user
public | spatial_ref_sys | table | user
(2 rows)

tokyoデータベースに一般ユーザuserを追加します。

tokyo=# CREATE USER user;
ERROR: role "user" already exists (既に登録済み場合)
tokyo=# ALTER USER user with password 'password'; ('password' ''内の pasword は任意)
ALTER ROLE
tokyo=# \q

2008年7月23日水曜日

PostGISで地図を表示 1PostGISのインストール

PostGISをインストールします。

リレーショナルデータベース管理ソフトPostgreSQLに格納されているデータを空間データとして利用するための拡張機能、PostGISを使って地図を表示します。
操作の前にPostgreSQLについて調べておくといいでしょう。

PostGISのインストール
DebianのPostGISパッケージは、etch(sutable:安定版)かsid(unstable:不安定版)があり、lenny (testing:次期候補版)にはありません。
今回は、etchを使うことにします。
/ets/apt/sources.listにetchを追加してください。

---
deb http://ftp.jp.debian.org/debian/ etch main contrib non-free
deb http://ftp2.jp.debian.org/debian/ etch main contrib non-free
deb-src http://ftp.jp.debian.org/debian/ etch main contrib non-free

deb http://security.debian.org/ etch/updates main contrib non-free
deb-src http://security.debian.org/ etch/updates main contrib non-free

deb http://ftp.jp.debian.org/debian/ lenny main contrib non-free
---

Synapticパッケージマネージャで パッケージ情報の再読込 をします。

編集->パッケージ情報の再読込

SynapticパッケージマネージャでPostGISを検索してpostgresql-8.1-postgis をインストールすれば、必要なパッケージがすべてインストールされます。


PostgreSQLはpostgresユーザで操作します。
DebianはPostgreSQLをインストールすると自動的にpostgresユーザが作成されます。
postgresユーザにパスワードを設定します。
Root Terminalで

#passwd postgress
新しいUNIXパスワードを入力してください:*********
新しいUNIX パスワードを再入力してください:*********
passwd: パスワードは正しく更新されました

PostgreSQLが動作しているテストしてみます。
端末でpostgresユーザで次のように実行してください。

user@debian:~$ su - postgres
パスワード:*********
postgres@debian:~$ psql -l
List of databases
Name | Owner | Encoding
-----------+----------+----------
postgres | postgres | UTF8
template0 | postgres | UTF8
template1 | postgres | UTF8
(3 rows)

PostgreSQLにユーザを追加します。

postgres@debian:~$ createuser user (userはDebianの一般ユーザと同じにしてください)
Shall the new role be a superuser? (y/n) n (スーパーユーザ No)
Shall the new role be allowed to create databases? (y/n) n (データベースを作る許可 No)
Shall the new role be allowed to create more new roles? (y/n) n (権限を与える許可 No)
CREATE ROLE

2008年7月22日火曜日

国土数値地図で東京を表示 9Layer Nameを日本語にする

Identify/Query(ポイント表示)、Search(検索)結果のレイヤ名Layer Nameの日本語表示

QueryクエリやSearch検索の結果が表示されるマップインフォメーションMap Infoの部分のレイヤ名Layer Nameを日本語名にしてみました。

Identify/Query:
htdocs/map_query_float.phpファイルの次の行(2か所)

echo "<p>Layer Name:</p> <h6>" . $oLayer->name . "</h6>";

を次のようにかえます。

---
//get LAYER_TITLE
$szLayerTitle = $oLayer->getMetaData("group_title");
if ($szLayerTitle != '') {
$layertitle = $szLayerTitle;
} else {
$layertitle = $oLayer->name;
}
//END get LAYER_TITLE
echo "<p>Layer Name:</p> <h6>" . $layertitle . "</h6>";




Search:
htdocs/tools/search/kaSearch.phpファイルの次の行(2か所)

echo "<p>Layer Name:</p> <h6>" . $oLayer->name . "</h6>";

を次のようにかえます。

//get LAYER_TITLE
$szLayerTitle = $oLayer->getMetaData("group_title");
if ($szLayerTitle != '') {
$layertitle = $szLayerTitle;
} else
$layertitle = $oLayer->name;
//END get LAYER_TITLE
echo "<p>Layer Name:</p> <h6>" . $layertitle . "</h6>";



区も検索可能にしてみます。
tokyo_shp.mapに次のレイヤを追加します。

---
LAYER
NAME gun_seirei
GROUP gun_seirei
TYPE ANNOTATION
STATUS ON
DATA "../mapdata/tokyo/N03-071001_13.shp"
LABELITEM "GUN_SEIREI"
METADATA
"group_title" "郡政令"
"layer_encoding" "SJIS"
"searchfield" "GUN_SEIREI"
"fields" "GUN_SEIREI:郡政令,SHIKUCHOSO:市区町村"
END
CLASS
NAME "Gun Seirei Label"
LABEL
MINFEATURESIZE 40
TYPE TRUETYPE
FONT vl-gothic
ENCODING SJIS
SIZE 8
POSITION uc #ラベルが重ならないようにずらします (cuとなっていたのを修正2009.7.20)
END
END
TEMPLATE temp_tokyo_shp.html
END

END # End of Mapfile

2008年7月21日月曜日

国土数値地図で東京を表示 8日本語の地図のLegend(凡例)設定

Legend(凡例)の日本語表示

htdocs/legend_template.htmlを見ると、MapServerが出力するLegendを利用しているので、mapfileで設定するとCLASS NAMEの日本語がそのまま表示できます。

マップファイル tokyo_shp.map の LEGEND を次のように追加します。

---
LEGEND
TRANSPARENT TRUE
LABEL
TYPE TRUETYPE #フォントのタイプ
FONT vl-gothic #フォントの種類
COLOR 0 0 0 #フォントの色
ENCODING UTF-8 #文字コード
SIZE 10 #フォントの大きさ
OFFSET 0 -4 #文字の位置 数字は左右、上下の順
END
END
---

gyoseikaiレイヤのクラス名を"行政界"に修正します。

---
LAYER
NAME gyoseikai
GROUP gyoseikai
TYPE POLYGON
STATUS ON
DATA "../mapdata/tokyo/N03-071001_13.shp"
NAMEITEM "SHIKUCHOSO"
METADATA
"group_title" "行政界"
"layer_encoding" "SJIS"
"queryable" "true"
"searchfield" "SHIKUCHOSO"
"fields" "GUN_SEIREI:郡政令,SHIKUCHOSO:市区町村"
END
CLASS
NAME "行政界" #ここを修正
STYLE
OUTLINECOLOR 153 153 153
END
LABEL
MINFEATURESIZE 40
TYPE TRUETYPE
FONT vl-gothic
ENCODING SJIS
SIZE 8
END
END
TEMPLATE temp_tokyo_shp.html
END
END
---


2008年7月20日日曜日

国土数値地図で東京を表示 7日本語の地図のSearch設定

日本語の地図のSearch設定

tokyo_shp.mapのgyoseikaiレイヤにSearchに必要な設定を追加します。

---
 LAYER
  NAME gyoseikai
  GROUP gyoseikai
  TYPE POLYGON
  STATUS ON
  DATA "../mapdata/tokyo/N03-071001_13.shp"
  LABELITEM "SHIKUCHOSO"
  METADATA
   "group_title" "行政界"
   "layer_encoding" "SJIS"
   "queryable" "true"
   "searchfield" "SHIKUCHOSO" #ここを追加
   "fields" "GUN_SEIREI:郡政令,SHIKUCHOSO:市区町村"
  END
  CLASS
   NAME "City Boundaries"
   STYLE
    OUTLINECOLOR 153 153 153
   END
   LABEL
    MINFEATURESIZE 40
    TYPE TRUETYPE
    FONT vl-gothic
    ENCODING SJIS
    SIZE 8
   END
  END
  TEMPLATE temp_tokyo_shp.html
 END
---

しかし、これだけでは結果が抽出されません。
これは、ka-Mapがutf-8でかかれているのですが、マップデータはShift-JISだからです。



マップデータの文字コードをka-Mapで表示できるように変換するようにしました。
htdocs/tools/search/kaSearch.phpファイルの次の行を修正します。

//iconv("UTF-8", "ISO-8859-13", $_REQUEST['searchstring']);
//$psearch = $searchstring; //Kumar version
(この行をコメントアウト。"ISO-8859-3"を"sjis"に変えると他の文字コードのデータが使えなくなる。)

次の行の下に//get LAYERENCODING以下を追加
$szSearchfield = $oLayer->getMetaData('searchfield'); //140行あたり
//PRINTING STUFF

//get LAYERENCODING
$oLayer = $oMap->getLayer($i);
$szLayerEncode = $oLayer->getMetaData("layer_encoding");
if ($szLayerEncode != '') {
 $layerencode = $szLayerEncode;
} else {
 $layerencode = 'utf-8';
}
//END get LAYERENCODING

$searchstring = iconv("utf-8", $layerencode, $_REQUEST['searchstring']);
$psearch = $searchstring; //Kumar version

すべてのecho"$val";の前に次の行を追加します。(275行あたり)

$val = iconv($layerencode, "UTF-8", $val);

2008年7月19日土曜日

国土数値地図で東京を表示 7日本語の地図のQuery設定

tokyo_shp.mapのgyoseikaiレイヤにクエリに必要な設定を追加します。

---
 LAYER
  NAME gyoseikai
  GROUP gyoseikai
  TYPE POLYGON
  STATUS ON
  DATA "../mapdata/tokyo/N03-071001_13.shp"
  LABELITEM "SHIKUCHOSO"
  METADATA
   "group_title" "行政界"
   "queryable" "true" #ここを追加
   "fields" "GUN_SEIREI:郡政令,SHIKUCHOSO:市区町村" #ここを追加
  END
  CLASS
   NAME "City Boundaries"
   STYLE
    OUTLINECOLOR 153 153 153
   END
   LABEL
    MINFEATURESIZE 40
    TYPE TRUETYPE
    FONT vl-gothic
    ENCODING SJIS
    SIZE 8
   END
  END
  TEMPLATE temp_tokyo_shp.html #ここを追加
 END
---

TEMPLATE temp_tokyo_shp.htmlの内容は次のようになります。

<html>
 <head>
  <title>Tokyo shp Template</title>
 </head>
 <body>
  <li>[GUN_SEIREI]
  <li>[SHIKUCHOSO]
 </body>
</html>

しかし、これだけでは結果が文字化けしてしまいます。




これは、ka-Mapがutf-8でかかれている文字エンコードutf-8で表示されるのですが、マップデータはShift-JISだからです。
ちなみに、クエリの結果のタイトルにあたるエイリアスはマップファイルの文字はが読み込まれていますが、Debianのlocateがutf-8になっているので文字化けしません。

マップデータの文字コードをka-Mapで表示できるように変換するようにしました。
まず、マップファイルtokyo_shp.mapのgyoseikaiレイヤのメタデータMETADATAにマップデータの文字コードSJISを指定します。

---
METADATA
 "group_title" "行政界"
 "layer_encoding" "SJIS" #ここを追加
 "queryable" "true"
 "fields" "GUN_SEIREI:郡政令,SHIKUCHOSO:市区町村"
END
---

htdocs/map_query_float.phpファイルの すべての//END METADATA の前につぎのように追加します。

---
//get LAYERENCODING
$szLayerEncode = $oLayer->getMetaData("layer_encoding");
 if ($szLayerEncode != '') {
  $layerencode = $szLayerEncode;
 } else {
  $layerencode = 'utf-8';
 }
//END METADATA
---

すべてのecho"$val";の前に次の行を追加します。
(2009.7.18現在 コードが変わったようです。echo"<td>$val</td>";の前に追加してください。)

$val = iconv($layerencode, "UTF-8", $val);

2008年7月18日金曜日

国土数値地図で東京を表示 6Eclipseのインストール

Eclipseを使ってみました

ka-Mapで日本語表示ができるようにコードを修正するので、開発支援ツールのEclipseをインストールします。
EclipseはJavaの開発支援ツールですが、PluginをインストールすることでJavaScriptやPHPなど他のプログラミング言語の開発支援ツールにもなります。

JRE(Java Runtime Environment)のインストール
Eclipseが動作するにはJREが必要です。
Synapticパッケージマネージャでjreを検索し、sun-java*-jreをインストールします。
私は、sun-java6-jreをインストールしました。

Eclipseのインストール
Eclipse本体は、Debianのパッケージを使用しないで、Eclipseのホームペ時からダウンロードします。
パッケージは、Eclipse IDE for Java Developersを選びました。

Eclipse
http://www.eclipse.org/

のダウンロードページ

Eclipse Downloads
http://www.eclipse.org/downloads/

から、Eclipse IDE for Java Developers -をクリックし、Download from: をクリックしてダウンロードします。

デスクトップに移動し解凍します。
~$ cd Desktop/
~/Desktop$ tar xvzf eclipse-java-ganymede-linux-gtk.tar.gz

Debianの場合、このままでは正常に起動しません。
次の手順でeclipseフォルダ直下にjreのリンクを作成します。
1 Synapticパッケージマネージャでsun-java6-jreを選択し、プロパティボタンをクリックしてインストール済みパッケージタブをクリックします。
2 /usr/lib/jvmにjava-6-sunがインストールされているを確認して、次のようにフォルダ一覧を確認します。

~/Desktop$ ls -l /usr/lib/jvm/
合計 8
drwxr-xr-x 5 root root 4096 2008-05-31 08:29 java-1.5.0-gcj-4.3-1.5.0.0
lrwxrwxrwx 1 root root 19 2008-06-21 10:58 java-6-sun -> java-6-sun-1.6.0.06
drwxr-xr-x 6 root root 4096 2008-06-21 10:58 java-6-sun-1.6.0.06
lrwxrwxrwx 1 root root 26 2008-05-31 08:29 java-gcj -> java-1.5.0-gcj-4.3-1.5.0.0

3 eclipseフォルダへ移動し、次のようにリンクを作成します。

~/Desktop$ cd eclipse/
~/Desktop/eclipse$ ln -s /usr/lib/jvm/java-6-sun jre

4 次のようにしてリンクを確認します。

~/Desktop/eclipse$ ls -l
---
lrwxrwxrwx 1 nob61 nob61 23 2008-06-21 14:10 jre -> /usr/lib/jvm/java-6-sun
---


表示が英語なので日本語化します。
色々ありますが、私はpleiadesプラグインをインストールしました。
初回起動前にインストールしておいた方がいいようです。

MergeDoc Project
Pleiades
http://mergedoc.sourceforge.jp/index.html#/pleiades.html

のダウンロードの最新版1.2.3.p*クリックしてダウンロードします。
pleiades_1.2.3.p*.zipを解凍します。

~/Desktop/eclipse$ cd ../
~/Desktop$ unzip pleiades_1.2.2.zip

readmeフォルダのreadme_pleiades.txtのインストールの項にしたがってインストールします。

1 解凍してできたpluginsの中身(jp.sourceforge.mergedoc.pleiades)をeclipseのpuluginsフォルダへ、featuresの中身(jp.sourceforge.mergedoc.pleiades)をeclipseのfeaturesフォルダへ移動します。

2 eclipseフォルダのeclipse.ini の最終行に以下の記述を追加します。
-javaagent:plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar

3は好みでやってもやらなくてもいいです。
かっこいい起動画面なので私はやってみました。
行の先頭に // を追加しました。


JavaScriptとPHPの修正の支援にAptana Studioをインストールします。

aptanaホームページ
http://aptana.com/

からEclipse Pluginのダウンロード手順を取得します。

eclipseアイコンをダブルクリックしてEclipseを起動します。
バグが表示されて起動できないときは、コマンド

~/Desktop/eclipse$./eclipse

で起動しました。
0 つぎのように表示されたら OK ボタンをクリックしてください。



1 ようこそ が表示されていたら ワークスペース を表示します。



2 メニューバーの ヘルプ->ソフトウェアの更新 をクリックします。
3 ソフトウェア更新及びアドオン ポップアップウィンドウが表示されたら サイトの追加 ボタンをクリックします。
4 サイトの追加 ポップアップウィンドウの ロケーション にaptanaホームページに記載してあったアップデートサイトのURLを入力して OK ボタンをクリックします。
5 ソフトウェア更新及びアドオン ポップアップウィンドウ表示されたら、追加されたaptana studio のアップデートサイトのチェックボックスをクリックしてチェックし、インストール ボタンをクリックします。
6 インストール ポップアップウィンドウ表示されたら 終了 ボタンをクリックします。(何も表示されていなくてもOKです。バグ?)
7 フィーチャーライセンス が表示されたら 使用条項の条件に同意します をクリックし 終了 ボタンをクリックします。
8 インストールが終了したら ソフトウェア更新 ポップアップウィンドウ表示されるので はい ボタンをクリックし、eclipseを再起動します。

Aptana PHP のインストール
1 ウィンドウ->パースペクティブを開く->その他で パースペクティブを開く ポップアップウィンドウで Aptana を選択して OK ボタンをクリックします。
2 Aptana Studio Start Page を表示し(ヘルプ->Aptana Studio Start Page)、Plugins の PHP の install をクリックします。




3 更新 ポップアップウィンドウの Aptana PHP のチェックボックスをチェックし、次へ ボタンをクリックします。
4 フィーチャーライセンス ポップアップウィンドウが表示されたら 使用条項の条件に同意します をクリックし 終了 ボタンをクリックします。
5 インストール ポップアップウィンドウが表示されたら 終了 ボタンをクリックします。
6 検査 ポップアップウィンドウが表示されたら すべてインストール ボタンをクリックします。
7 インストールが終了したら インストール/更新 ポップアップウィンドウ表示されるので はい ボタンをクリックし、eclipseを再起動します。

2008年7月17日木曜日

国土数値地図で東京を表示 5ka-Map GROUPの日本語表示

GROUPのタイトルを日本語にします

Main Page/ja-Ka-Map Wiki
http://ka-map.ominiverdi.org/wiki/index.php/Main_Page/ja

の  マップファイル設定 の Adding International character support for layer names レイヤー名に国際文字を使用するには をクリックします。

ここには、レイヤー名に国際文字を使用する方法が英語で書いてあります。
また、[ka-Map-user]メーリングリストも参考にしました。
(1) add a metadata which called "group_title" in each group in .map file(マップファイルのメタデータ metadata に group_title を追加)に書かれている設定でマップファイルに設定します。

tokyo_shp.mapのgyoseikaiレイヤを次のように追加します。

---
 LAYER
  NAME gyoseikai
  GROUP gyoseikai #追加 英語で
  TYPE POLYGON
  STATUS ON
  DATA "../mapdata/tokyo/N03-071001_13.shp"
  LABELITEM "SHIKUCHOSO"
  METADATA #追加
   "group_title" "行政界" #追加
  END #追加
  CLASS
   NAME "City Boundaries"
   STYLE
    OUTLINECOLOR 153 153 153
   END
   LABEL
     MINFEATURESIZE 40
    TYPE TRUETYPE
    FONT vl-gothic
    ENCODING SJIS
    SIZE 8
   END
  END
  TEMPLATE temp_tokyo_shp.html
 END
---

(2) in kamap.js file は、Adding International character support for layer nameではなく、メーリングリストを参考に次のように追加します。
(ka-map/htdocs/kaMap.js)
---
this.opacity = (typeof(o.opacity) != 'undefined') ? o.opacity : 100;

this.title = (typeof(o.title) != 'undefined') ? o.title : 'unnamed';
//この行を追加

this.imageformat = (typeof(o.imageformat) != 'undefined') ? o.imageformat : null;
---

(3) add the "title" attribute like... もメーリングリストを参考に次のように追加します。
init.php ファイルに
(ka-map/htdocs/init.php)
---
/* detect layer opacity (default 100% opaque) */
$opacity = $oLayer->getMetaData('opacity');
if ($opacity == '') {
$opacity = 100;
}

$title = $oLayer->getMetaData('group_title');
//この行を追加

/* detect tile source options (cache, redraw, nocache, or auto) */
$tileSource =
strtolower($oLayer->getMetaData('tile_source'));
if(($tileSource != 'cache') && ($tileSource != 'redraw') && ($tileSource != 'refresh') && ($tileSource != 'nocache')) {
$tileSource = 'auto';
}

---
"opacity:".$opacity.",".

"title:'".$title."',".
//この行を追加

"imageformat:'".$imageformat."',".
---

(4)in kaLegend.js file を次のように修正します。
(ka-map/htdocs/kaLegend.js
---
//td.innerHTML = name;
//この行のコメントアウト
td.innerHTML = oLayer.title;
//この行を追加
---



しかし、これでは、GROUPを設定していないものも含めたすべてのマップファイルのすべてのレイヤのメタデータ METADATA に "group_title" を設定しないと、Map info のレイヤ名が空欄になってしまいます。



そこで、独自に次のように修正してみました。

---
//td.innerHTML = name;
//この行のコメントアウト
if (oLayer.title != '') {
gtitle = oLayer.title;
} else {
gtitle = name;
}
td.innerHTML = gtitle;
//これらの行を追加
---

2008年7月16日水曜日

国土数値地図で東京を表示 4LABELの日本語表示

地図に市区町村名を表示します。

地図に市区町村名(ラベル)を表示するには、マップファイルに次のように追加します。

---
 LAYER
  NAME gyoseikai
  TYPE POLYGON
  STATUS ON
  DATA "../mapdata/tokyo/N03-071001_13.shp"
  LABELITEM "SHIKUCHOSO" #追加
  CLASS
   NAME "City Boundaries"
   STYLE
    OUTLINECOLOR 153 153 153
   END
   LABEL #追加
    MINFEATURESIZE 40 #
   END #
  END
 END
---



このままでは日本語が表示できません。
日本語を表示できるように次のようにします。
次の内容のfonts.txtというファイルを作成します。

kochi-gothic /usr/share/fonts/truetype/kochi/kochi-gothic.ttf
vl-gothic /usr/share/fonts/truetype/vlgothic/VL-Gothic-Regular.ttf
vl-pgothic /usr/share/fonts/truetype/vlgothic/VL-PGothic-Regular.ttf

どれか1行でOKです。
フォント名 フォントがある場所の絶対パス という内容になっています。
フォント名は任意のわかりやすい名前をつけてください。
パスはSynapticパッケージマネージャで、例えば gothic で検索するとパッケージ一覧が表示されます。
インストールされているパッケージを選択し、プロパティをクリックしてインストール済みファイルタブをクリックすると、パスが表示されます。

マップファイル全体は次のようになります。

MAP
 NAME tokyo_shp_map
 STATUS ON
 SIZE 600 300
 EXTENT 138.85 35.4 140 35.975
 UNITS DD
 IMAGECOLOR 255 255 255
 IMAGETYPE png
 FONTSET "fonts.txt" #マップファイルからの相対パス マップファイルと同じフォルダの意味
 WEB
  IMAGEPATH "/home/nob61/ka-map/htdocs/tmp/kacache/"
  IMAGEURL "/ka-map/tmp/kacache/"
 END

 LEGEND
  TRANSPARENT TRUE
 END

 SCALEBAR
  TRANSPARENT TRUE
 END

 LAYER
  NAME gyoseikai
  TYPE POLYGON
  STATUS ON
  DATA "../mapdata/tokyo/N03-071001_13.shp"
  LABELITEM "SHIKUCHOSO"
  CLASS
   NAME "City Boundaries"
   STYLE
    OUTLINECOLOR 153 153 153
   END
   LABEL
    MINFEATURESIZE 40
    TYPE TRUETYPE #フォントのタイプ
    FONT vl-gothic #fonts.txtで指定したフォント名
    ENCODING SJIS #マップデータのエンコード
    SIZE 8 #フォントサイズ
   END
  END
 END
END

2008年7月15日火曜日

国土数値地図で東京を表示 3地図の表示

最初に、マップデータN03-071001_13の情報を知るために管理ツールをインストールします。
Synapticパッケージマネージャでgdal-binを検索してインストールします。
mapdataフォルダへ移動しtokyoフォルダ内の利用可能なレイヤ名を表示します。

~/mapdata$ ogrinfo tokyo
INFO: Open of `tokyo'
using driver `ESRI Shapefile' successful.
1: N03-071001_13 (Polygon)

次に、N03-071001_13レイヤのデータを表示します。

~/mapdata$ ogrinfo -summary tokyo N03-071001_13
INFO: Open of `tokyo'
using driver `ESRI Shapefile' successful.

Layer name: N03-071001_13
Geometry: Polygon
Feature Count: 3299
Extent: (136.069482, 20.425119) - (153.986900, 35.898424)
Layer SRS WKT:
(unknown)
TODOFUKEN: String (8.0)
SHICHO: String (8.0)
GUN_SEIREI: String (10.0)
SHIKUCHOSO: String (14.0)
CODE: String (5.0)

このレイヤは、Geometry: Polygonからポリゴンデータであることが分かります。
また、Extent: (136.069482, 20.425119) - (153.986900, 35.898424)は座標で緯度経度を表し、レイヤの範囲が分かります。

これをもとに、マップファイルを作成します。

MAP
 NAME tokyo_shp_map #任意の名前
 STATUS ON
 SIZE 600 300
 EXTENT 136.069482 20.425119 153.986900 35.898424 #ogrinfoで得た情報から
 UNITS DD
 IMAGECOLOR 255 255 255
 IMAGETYPE png

 WEB
  IMAGEPATH "/home/nob61/ka-map/htdocs/tmp/kacache/"
  IMAGEURL "/ka-map/tmp/kacache/"
 END

 LEGEND
  TRANSPARENT TRUE
 END

 SCALEBAR
  TRANSPARENT TRUE
 END

 LAYER
  NAME gyoseikai #任意の名前
  TYPE POLYGON #ogrinfoで得た情報から
  STATUS ON
  DATA "../mapdata/tokyo/N03-071001_13.shp" #シェイプファイルの相対位置
  CLASS
   NAME "City Boundaries" #任意の名前
   STYLE
    OUTLINECOLOR 153 153 153 #面の外周の色(灰色)
   END
  END
 END
END #MAP END

shp2imgで地図を確認します。(2008-7-15現在 セグメンテーション違反で画像が生成できません。)

~/mapfile$shp2img -m tokyo_shp.map -o tokyo_shp.png

画像ビューワで確認すると、範囲が広すぎるのが分かります。
(ウィンドウを開くとアイコンがプレビューで表示されます。)
今回は、諸島部分を除いた範囲にします。

---
EXTENT 138.85 35.4 140 35.975
---

全体は次の様になります。

MAP
 NAME tokyo_shp_map
 STATUS ON
 SIZE 600 300
 EXTENT 138.85 35.4 140 35.975 #変更
 UNITS DD
 IMAGECOLOR 255 255 255
 IMAGETYPE png

 WEB
  IMAGEPATH "/home/nob61/ka-map/htdocs/tmp/kacache/"
  IMAGEURL "/ka-map/tmp/kacache/"
 END

 LEGEND
  TRANSPARENT TRUE
 END

 SCALEBAR
  TRANSPARENT TRUE
 END

 LAYER
  NAME gyoseikai
  TYPE POLYGON
  STATUS ON
  DATA "../mapdata/tokyo/N03-071001_13.shp"
  CLASS
   NAME "City Boundaries"
   STYLE
    OUTLINECOLOR 153 153 153
   END
  END
 END
END


shp2imgで地図を確認します。(2008-7-15現在 セグメンテーション違反で画像が生成できません。)


~/mapfile$shp2img -m tokyo_shp.map -o tokyo_shp.png

ka-Mapのconfig.phpに次のように追加します。

---
$aszWeather = array (
'title' => 'Global Weather',
'path' => '/home/nob61/ka-map/htdocs/global.map',
'scales' => array( 100000000, 50000000, 15000000 ),
'format' =>'PNG'
);

//ここを追加
$aszTokyo = array (
'title' => 'Tokyo',
'path' => '/home/nob61/mapfile/tokyo_shp.map',
'scales' => array( 500000, 250000, 100000 ),
'format' =>'PNG'
);

$aszMapFiles = array( /* 'gmap' => $aszGMap */
'weather' => $aszWeather, //カンマを
'tokyo' => $aszTokyo //ここを追加
/* Add more elements to this array to offer multiple mapfiles */

);
---

ka-Mapを表示して、tokyoを選択します。

2008年7月14日月曜日

国土数値地図で東京を表示 2データの修正

ダウンロードしたファイルを解凍します。
(N03-071001_13.zipを右クリック->書庫をマネージャで開く->次の3つのファイルを選択して展開
N03-071001_13.dbf
N03-071001_13.shp
N03-071001_13.shx

または、mapdataのフォルダへ移動して端末(Terminal)で次のように入力してEnterキーを押します。(ユーザディレクトリにmapdataフォルダがある場合)

~/mapdata$unzip N03-07001_13.zip
inflating: KS-META-N03-071001_13.xml
inflating: N03-071001_13.dbf
inflating: N03-071001_13.shp
inflating: N03-071001_13.shx
inflating: N03-071001_13.xml

このうち必要なのは次の3つです。

N03-071001_13.dbf
N03-071001_13.shp
N03-071001_13.shx

この圧縮ファイルは解凍後にフォルダが作成されないので、mapdataの中にtokyoのフォルダを作成してこれらのファイルを移動しておくとわかりやすくなります。

N03-071001_13.dbfをOpenOffice.org Calc で開きます。
アプリケーション->オフィス->OpenOffice.org Calc
文字列は日本語(Shift-JIS)にします。

列のタイトルの日本語部分だけアルファベットに換えます。(後で使い易くするため)

都道府県,C,8 -> todofuken,C,8
支庁.C,8 -> shicho,C,8
郡_政令市,C,10 -> gun_seirei,C,10
市区町村,C,14 -> shikuchoso,C,14
コード,C,5 -> code,C,5

保存をすると「このドキュメントには・・・」と表示されるので、「はい」をクリックします。
閉じてください。

2008年7月13日日曜日

国土数値地図で東京を表示 1データのダウンロード

国土数値地図で東京を表示します。

国土交通相は地理空間情報を推進するための一貫として、国土数値情報のダウンロードサービスをしてます。
このうちのJPGIS準拠データのダウンロードサービスから東京のデータをダウンロードして地図を表示してみます。

国土交通省国土計画局GISのページへようこそ
http://www.mlit.go.jp/kokudokeikaku/gis/index.html

国土数値情報ダウンロードサービス
http://nlftp.mlit.go.jp/ksj/index.html

JPGIS準拠のデータのダウンロード
http://nlftp.mlit.go.jp/ksj/jpgis/jpgis_datalist.html

行政区域をクリックします。

今回使用するファイルはシェイプファイル(Shape File)なので変換の必要はありません。
しかし、このデータの中にはXML形式のものがあるので、そのときはシェイプファイルにするためのデータ変換ツールが必要です。
このツールはWindowsで動作するので、Windowsにダウンロードします。
また、動作にはJava 2 Runtime Environment ver. 1.4以上も必要です。
「XMLスキーマ等について」の「データ変換ツール」をクリックします。
データ変換ツールのダウンロードの「変換ツールはこちらからダウンロードできます。(ksjtool_v1.5.zip 約19MB)」をクリックします。
ディスクに保存してください。
ksjtool_v1.5.zipを解凍します。
(ksjtool_manual.pdfに詳しく書いてあるので読んでください。)
KsjToolInstaller.exeをダブルクリックします。
ksjtool_manual.pdf通りにインストールと操作をしてください。

東京の行政区域のデータをダウンロードします。
ダウンロードデータの選択で東京のチェックボックスをクリックしてチェックします。
選択ボタンをクリックします。

データのダウンロード(3.ファイルの選択)で最新のデータのチェックボックスをクリックしてチェックします。(2008-6-11現在 平成19年度)
選択ボタンをクリックします。

データのダウンロード(4.国土数値情報利用約款)の内容を読み、同意するボタンをクリックします。

データのダウンロード(5.ダウンロード)でダウンロードボタンをクリックします。
ダイアログボックス---ダウンロードしますか?のOKボタンをクリックします。
mapdataという名前のフォルダに保存してください。

2008年7月9日水曜日

グラフィカルなデータ表示 4グラフ

MapServerページの

Dynamic Charting
http://mapserver.gis.umn.edu/docs/howto/dynamic-charting

を参考に人口をグラフで表します。

IMAGETYPE を png24 に修正します。
新しいレイヤはcloudsレイヤとcountriesレイヤの間に追加します。


MAP
 NAME global_graph_map
 STATUS ON
 SIZE 600 300
 EXTENT -180 -90 180 90
 UNITS DD
 IMAGECOLOR 204 204 255
 IMAGETYPE png24 #png24に修正

---
 LAYER
  NAME totalpop
  GROUP totalpop
  TYPE chart #グラフの指定
  DATA "data/freegis_worlddata-0.1_simpl/countries_simpl.shp"
  PROCESSING "chart_type=pie" #円グラフの指定
  PROCESSING "chart_size=20" #グラフのサイズ
  STATUS ON
  CLASS
   NAME "male"
   STYLE
    SIZE [male] #グラフ要素
    COLOR 51 51 255 #グラフの色
   END
  END
  CLASS
   NAME "female"
   STYLE
    SIZE [female]
   COLOR 255 51 51
  END
 END

 LAYER
  NAME countries
---

円グラフで male と female の割合を青と赤で表示します。
同じ国でも地域が飛び地になっていると一つの描画ポイントになるので、グラフが国の数よりも多くなります。
円グラフが12時から始まっていません。
MINFEATURESIZE のような設定があるといいのですが。


2008年7月2日水曜日

グラフィカルなデータ表示 3円積図

人口を円積図で表します。人口によって円の大きさを変えて表示します。

マップファイルに描画する図の設定(SYMBOL)と新しいレイヤを追加します。
SYMBOLはレイヤの前に、新しいレイヤはcloudsレイヤとcountriesレイヤの間に追加します。
LABELを表示しないとSTYLEで設定したcircleが表示されませんでした。
---
SYMBOL
 NAME 'circle'
 TYPE ELLIPSE
 FILLED TRUE
 POINTS
  1 1
 END
END
---
LAYER
 NAME clouds
 TYPE RASTER
 STATUS ON
 DATA "data/day_clouds.tif"
END

LAYER
 NAME totalpop
 GROUP totalpop
 TYPE ANNOTATION #基準点が計算され、地物は表示されません。ラベルのみ表示したいときに使われます。
 STATUS ON #初期状態 ON:表示 OFF:非表示
 DATA "data/freegis_worlddata-0.1_simpl/countries_simpl.shp"
 LABELITEM "total" #LABELを使うときのフィールドの属性値の指定
 CLASSITEM "total" #CLASSを使うときのフィールドの属性値の指定
 CLASS
  NAME "over 100milion" #凡例のタイトルになります
  EXPRESSION ([total] >= 100000000) #描画する条件値(式)
  LABEL #LABELを表示しないとSTYLEで設定したcircleが表示されませんでした。
   SIZE tiny #文字の大きさ
   MINFEATURESIZE 300
   COLOR 255 204 204
   OUTLINECOLOR 102 51 51
   POSITION ul #文字の位置:upper-left 中心の上左
  END
  STYLE #表示されるものの外観を定義
   SYMBOL 'circle' #定義した'circle'を使用
   COLOR 255 0 0 #'circle'の塗りつぶしの色
   SIZE 20 #'circle'の大きさ
  END
 END
 CLASS
  NAME "10 to 100milion"
  EXPRESSION ([total] < 100000000 AND [total] >= 10000000)
  LABEL
   SIZE tiny
   MINFEATURESIZE 300
   COLOR 255 204 204
   OUTLINECOLOR 102 51 51
   POSITION ul
  END
  STYLE
   SYMBOL 'circle'
   COLOR 255 0 0
   SIZE 10
  END
 END
 CLASS
  NAME "1 to 10milion"
  EXPRESSION ([total] < 1000000 AND [total] >= 1000000)
  LABEL
   SIZE tiny
   MINFEATURESIZE 300
   COLOR 255 204 204
   OUTLINECOLOR 102 51 51
   POSITION ul
  END
  STYLE
   SYMBOL 'circle'
   COLOR 255 0 0
   SIZE 5
  END
 END
END

LAYER
NAME countries
---




ただいま、Debianで mapserver5.0.2 と libgdal1_1.5.0 で セグメンテーション違反で地図が表示されません。MapServerホームページに対処があるようですが、探している最中です。もしくは、libgcc1-4.3 を libgcc1-4.2 にすると大丈夫なようですが、 libgcc1-4.2 が見つかりません。