環境情報収集サイトにおける XML や KML の応用
咸 周亨
†福田 知弘
†加賀 有津子
‡†大阪大学大学院工学研究科環境・エネルギー工学専攻 〒565-0871 大阪府吹田市山田丘 2-1
‡大阪大学大学院工学研究科ビジネスエンジニアリング専攻 〒565-0871 大阪府吹田市山田丘 2-1
E-mail: †(hahm,fukuda)@it.see.eng.osaka-u.ac.jp, ‡[email protected]
あらまし 環境情報収集サイトは環境政策や環境教育などのため国内外の環境情報を収集・整備構築されつつあ
る。近年では GIS 活用により空間情報を付加したシステムが開発されているが、一方的な情報提供に
とどまっており、ユーザーが空間情報を扱えるうえに自由に参加できる対話型の投稿システムを開発
する必要がある。本稿では、web2.0 に代表する技術を用いて XML や KML に基づく空間データ処理を連
携させた環境情報収集サイトを構築する。
キーワード XML, KML, データベース、ウェブサイト適用
The practical application of XML and KML in the location base website
service for sustainable environmental design
Joohyung Hahm
†Tomohiro Fukuda
†and Atsuko Kaga
‡†Environmental design and information technology, Division of sustainable energy and environmental engineering,
Graduate school of engineering, Osaka University 2-1 Yamadaoka, suita, Osaka, 565-0871 Japan
‡Management of Industry and Technology , Graduate school of engineering, Osaka University 2-1 Yamadaoka, suita,
Osaka, 565-0871 Japan
E-mail: †(hahm,fukuda)@it.see.eng.osaka-u.ac.jp, ‡[email protected]
Abstract For an environmental policy or an environmental education, Environmental information site which has a
domestic and foreign environmental information has developed. In recent years the system added spatial
information to has developed by GIS practical use, but it remain in one-direction reporting. So it is necessary to
develop the interactive system which a user can treat spatial information, can submit his/her own information,
and can participate freely. This paper reports the development of environment information system which links
spatial data transaction based XML or KML to web 2.0 system.
Keyword XML, KML, Database, The Application of Web site
1. はじめに
環 境 情 報 収 集 サ イ ト に は 国 立 環 境 研 究 所 の EIC ネ ッ ト ( Environmental Information & Communication network) や 環 境 省 の ECO family な ど が あ る 。 こ の ウ ェ ブ サ イ ト は 環 境 の 保 全 に 関 す る 知 識 の 国 民 へ の 普 及 を 図 る と と も に 、 国 等 の 環 境 政 策 及 び 企 業 、 民 間 に よ る 自 主 的 な 環 境 保 全 に 関 す る 取 組 の 支 援 を 目 指 し て い る 。 国 内 外 の 環 境 情 報 を 収 集 、 整 備 し 、 こ れ ら の 情 報 を 容 易 に 利 用 で き る よ う 、 国 際 的 な 連 携 も 図 り つ つ 、 イ ン タ ー ネ ッ ト 等 を 通 じ て 提 供 す る と い う 目 的 で 体 系 的 な 収 集 整 理 、 各 デ ー タ の 相 互 利 用 、 総 合 化 、 解 析 等 が 可 能 と な る よ う デ ー タ ベ ー ス 化 を 進 め て い る 。ま た 、 地 理 情 報 シ ス テ ム ( GIS) を 活 用 し ,空 間 情 報 を 付 加 し た 環 境 情 報 シ ス テ ム の 整 備 な ど 、 国 民 に わ か り や す い 情 報 提 供 手 法 の 開 発 ・ 導 入 を 進 め て い る 。 し か し 、 GIS な ど を 利 用 し た 環 境 情 報 シ ス テ ム の 現
状 に 関 し て は 地 図 に 環 境 デ ー タ を 載 せ る こ と に よ る 一 方 的 な 情 報 発 信 に と ど ま っ て い る 現 状 が あ る 。 そ の た め 、 ユ ー ザ ー が 空 間 情 報 を 扱 え る う え に 自 由 に 参 加 で き る 対 話 型 の 情 報 投 稿 シ ス テ ム の 開 発 が 求 め ら れ て い る 。 そ こ で 本 稿 で は 、 情 報 発 信 者 が 一 方 的 に 提 供 す る GIS デ ー タ を ユ ー ザ ー が 閲 覧 す る こ と に と ど ま ら ず に 環 境 位 置 情 報 を 対 話 的 に 登 録 す る た め の 支 援 シ ス テ ム の 構 築 を 目 的 と す る 。 最 近 、 新 し い ウ ェ ブ 技 術 で あ る AJAX(Asynchronous JavaScript And XML)に 大 き な 注 目 が 集 ま り 、 構 造 的 な デ ー タ 処 理 が 要 求 さ れ る ウ ェ ブ サ イ ト 構 築 を 中 心 に 導 入 が 増 加 し て お り 種 々 の 開 発 も 進 ん で い る 。 そ の 一 つ で あ る OPEN API、 Google map API に よ る 位 置 情 報 取 得 シ ス テ ム は 活 発 に 利 用 さ れ て お り 、 そ こ で は 、 ユ ー ザ ー が 位 置 情 報 を 含 む 記 事 を 投 稿 し た 際 に そ の 記 事 の テ ー ブ ル は タ イ ト ル や コ メ ン ト 、 緯 度 経 度 、 写 真 デ ー タ な ど の フ ィ ー ル ド が 必 要 と な る 。 MySQL に 蓄 積 さ れ る こ れ ら の デ ー タ を 地 図 上 に 表 示 す る 際 に は 構 造 的 な フ ァ イ ル 形 式 の デ ー タ が 要 求 さ れ る の で 、 XML ( Extensible Markup Language) を 利 用 し て い る 。
Google Earth の デ ー タ フ ァ イ ル で あ る KML(Keyhole Markup Language)フ ァ イ ル 方 式 が 実 際 の ウ ェ ブ サ イ ト の API と 連 動 し て 利 用 す る こ と は ま だ 実 用 化 さ れ て い な い 。 本 稿 は 環 境 情 報 収 集 サ イ ト を 構 築 す る 際 に 位 置 情 報 を 扱 う た め に 利 用 し た XML や KML の 連 動 や 変 換 処 理 方 法 を 開 発 し 、 実 用 化 シ ス テ ム を 構 築 す る 。
2. システム概要
2.1 システムの構成
本 稿 に お け る 環 境 情 報 収 集 サ イ ト と は 一 般 ユ ー ザ ー が サ イ ト に 接 続 し て 世 界 中 の 環 境 情 報 を 収 集 す る も の で あ る 。 簡 易 な 手 続 き に よ り 登 録 さ れ た ユ ー ザ ー か ら 位 置 情 報 付 き 記 事 の 投 稿 が 行 わ れ る の で 、 既 存 の 位 置 情 報 サ イ ト や GIS サ ー ビ ス よ り 幅 広 い デ ー タ 収 集 が 可 能 で あ る 。 位 置 情 報 付 き 記 事 の 投 稿 は ユ ー ザ ー の PC で Google Map API を 利 用 す る 場 合 と 、 撮 影 し た 写 真 に 位 置 情 報 添 付 が で き る GPS 機 能 付 き 携 帯 電 話 を 利 用 す る 場 合 と が あ る 。 Fig.1 に シ ス テ ム 概 要 を 示 す 。Fig. 1 システム概 要
2.2 データの項目
ユ ー ザ ー か ら 入 力 さ れ る の は Google map API で 取 得 し た 緯 度 、 経 度 や 記 事 の タ イ ト ル や コ メ ン ト と 写 真 で あ る 。 こ れ ら の デ ー タ は PHP で 分 解 さ れ て MySQL デ ー タ ベ ー ス に 保 存 さ れ る ( Fig.3)。 Fig. 2 データ入 力 画 面 処 理 前 緯 度 経 度 タ イ ト ル コ メ ン ト 写 真 処 理 後 経 度 緯 度 タ イ ト ル コ メ ン ト 写 真 フ ァ イ ル 名 Fig.3 データ処 理 項 目 携 帯 電 話 利 用 の 場 合 は 撮 影 し た 画 像 を 添 付 し て 指 定 さ れ た メ ー ル ア ド レ ス に 送 信 し 、 サ ー バ ー が 添 付 さ れ た 写 真 の EXIF 情 報 か ら 位 置 情 報 を 取 得 し て MySQL に 保 存 す る 。
3. MySQL データの利用
3.1 XML ファイル作成
DOM(Document Object Model)関 数 で 生 成 さ れ る 。
unlink("../onavi/kml/".$ member [us er_id]."_folder.xml");
$connect =
mysql_connect("localhost","onavi"," pass word") or die("DB error: ".mysql_error());
mysql_select_db("navi") or die(mysql_ error()); $query = "select * from kml";
if($member[us er_id]){
$query = "select * from kml where id ='$member[user_id]'"; }
$result = mysql_query($query,$connect); $doc = domxml_new_doc("1.0");
$root = $doc->create_ element("markers"); $root = $doc->append_child($root); while($data = mysql_fetch_array($result)){ $lll=explode(",",$data[ll]);
$imgname=explode(".",$data[pic_name]);
$head=$doc->create_ element("marker lat= ¥"".$lll[0]."¥" lng=¥"".$lll[1]."¥"name=¥"".$data[kml_t_utf8]."¥"k=¥"". $data[kml_k_utf8]."¥"no=¥"".$data[no]."¥"imgm=¥"".$im gname[0]." ¥" img=¥"".$imgname[0]."_t.jpg¥""); $head = $root->append_child($head); } echo"<PRE>"; $doc->dump_file("../onavi/kml/".$member[user_ id]."_fo lder.xml",fals e,true); echo"</PRE>"; mysql_clos e($connect); Fig.4 XML 作 成 PHP コード Fig.4 は PHP で XML を 生 成 す る コ ー ド で あ る 。 具 体 的 に は MySQL に 保 存 さ れ た 位 置 情 報 を ユ ー ザ ー 別 統 計 分 類 や 分 析 、さ ら に Google map API で 表 示 す る た め の 、 ユ ー ザ ー 別 の XML フ ァ イ ル を 作 成 す る 。
結 果 、 Fig.5 の よ う な XML フ ァ イ ル を 生 成 す る こ と が で き た 。
<?xml version="1.0" ?> - <mar kers>
<marker lat="35.125911" lng="136.081767" name=" 百 菜 劇 場 " k="NPO・菜 園 " no="223" imgm="tori" img="tori_t.jpg" />
<marker lat="35.681004" lng="139.763957" name="百 菜 市 場 @丸 の内 " k="10 月 19・20 日 限 定 開 店 " no="213" imgm="marunouchi" img="marunouchi_t.jpg" /> </markers> Fig.5 作 成 された XML の例 Fig.5 の そ れ ぞ れ の フ ィ ー ル ド は Fig.6 の よ う に ア イ コ ン や サ ム ネ イ ル で 表 示 さ れ る 。 よ り 直 感 的 な イ ン タ フ ェ ー ス の 具 現 が 可 能 に な っ た 。 Fig. 6 XML の画 面 表 示 Fig.5 の XML フ ァ イ ル は リ ア ル タ イ ム に 更 新 さ れ る よ う に な っ て お り 、 MySQL デ ー タ ベ ー ス を 基 に し て 作 成 さ れ る の で 、 検 索 の 結 果 な ど の 条 件 で 自 動 的 に 再 構 築 が 可 能 で あ る 。
3.2 KML ファイル作成
$lll=explode(",",$ll); $doc = domxml_new_doc("1.0");$root = $doc->create_ element("Placemark"); $root = $doc->append_child($root);
$head = $doc->creat e_element("name"); $head = $root ->append_child($head); $text = $doc->create_text_node($t); $text = $head->append_child($text);
$head = $doc->creat e_element("des cription"); $head = $root ->append_child($head);
$text = $doc->create_text_node($k."<br><a href=".$r.">Original Map Location</a>");
$text = $head->append_child($text); $head = $doc->creat e_element("styleUrl"); $head = $root ->append_child($head);
$text =
$doc->creat e_text_node("root://st yleMaps#default+nicon =0x304+hicon=0x314"); ア イ コ ン ク リ ッ ク に よ る 詳 し い 環 境 環 境 情 報 表 示 ア イ コ ン 投 稿 さ れ た 写 真 の サ ム ネ イ ル 群
$text = $head->append_child($text); $head = $doc->creat e_element("Point"); $head = $root->append_child($head);
$title = $doc- >create_element("coordinates"); $title = $head->append_ child($title);
$text = $doc->create_text_node($lll[1].",".$lll[0 ].",0"); $text = $title->append_child($text); echo"<PRE>"; $doc->dump_file($lll[0]."_".$lll[1].".kml",false,true); //echo ht mlentitles($doc->dump_mem()); echo"</PRE>"; Fig. 7 KML 作 成 PHP コード Google earth は KML,KMZ 方 式 の フ ァ イ ル で 位 置 情 報 が 記 述 さ れ て お り 、 KML は XML と 基 本 的 な 構 造 が 同 一 で あ る た め 、 コ ー ド の 作 成 原 理 は XML の 場 合 と 若 干 異 な っ て い る 。 Fig.7 は PHP の DOM 関 数 を 利 用 し て 指 定 さ れ た 構 造 の KML を 生 成 す る コ ー ド で あ り 、 意 味 は Fig.4 と 同 じ で あ る 。結 果 、Fig.8 の よ う に KML を 生 成 す る こ と が で き た 。 <?xml version="1.0" encoding="UTF -8"?> <kml x mlns="http://earth.google.com/kml/2.1"> <Placemark> <name> 水 質 汚 染 対 策 </name> <description> 河 川 横 断 オ イ ル フ ェ ン ス が 張 ら れ ま し た 。 <br><a href=>Original Map Location</a>
</description> <st yleUrl> root://styleMaps#default+nicon=0x304+hicon=0x3 14 </styleUrl> <Point> <coordinates> 139.137726,37.938782,0 </coordinat es> </Point> </Placemark> </kml> Fig.8 作 成 された KML の例 Fig. 8 の よ う に 生 成 さ れ た KML フ ァ イ ル は Google earth に よ っ て 、3 次 元 空 間 で の ア イ コ ン や サ ム ネ イ ル な ど で 表 現 す る こ と が 可 能 に な っ た 。 (Fig.9) Fig. 9 KML の画 面 表 示
4. まとめ
MySQL の table と field の 構 造 を Fig.10 の よ う な XML や KML の SGML(Standard Generalized Markup Language)に再 構 造 化 す る こ と で Google Map と Google Earth で 閲 覧 可 能 で あ り 、 環 境 情 報 を 収 集 す る た め の 投 稿 サ イ ト を 構 築 し た 。 Fig.6,9 の よ う に 対 話 的 な イ ン タ フ ェ ー ス を 提 供 し て い る 。 直 感 的 な イ ン タ フ ェ ー ス に よ っ て 、 ユ ー ザ ー は デ ー タ の 投 稿 が 簡 単 な 操 作 で 可 能 で あ る 。 構 築 さ れ る XML 型 の 構 造 的 デ ー タ に よ っ て 、 分 類 別 の 検 索 や 分 析 が 可 能 に な り 、 新 た な 対 話 型 GIS を 実 現 し た 。 本 稿 で は 緯 度 、 経 度 に よ る 各 地 点 の 位 置 情 報 の 扱 い に と ど ま っ て い る が 、 今 後 は 地 域 的 な 情 報 を 収 集 す る た め の 線 的 、面 的 な 位 置 情 報 処 理 の 開 発 が 必 要 で あ る 。 さ ら に 、 こ の シ ス テ ム を 応 用 し て 環 境 情 報 収 集 サ イ ト 構 築 に と ど ま ら ず 、 不 動 産 情 報 な ど の 分 野 で も 適 用 で き る 汎 用 的 シ ス テ ム の 開 発 を 目 指 す 。
参考文 献
1. W3C(world wide web Consortium),XML(Extensible markup language), http:// www.w3.org/XML/
2. W3C(world wide web Consortium), Document Object Model (DOM) Level 1 Specification,
http:// www.w3.org/TR/REC-DOM-Level-1/ 3. The PHP group, GD-info,
http://jp2.php.net/manual/kr/function.gd -info.php 4. . Google, Google MAPs API version 2 reference, http:// www.g oogle.com/apis/maps/documentation/refere nce.html
5. Google earth Airlines, Blender imports KML, http:// www.googleearthairlines.com/ ア イ コ ン ク リ ッ ク に よ る 詳 し い 環 境 環 境 情 報 表 示 ア イ コ ン 投 稿 さ れ た 写 真 の サ ム ネ イ ル 群