ラベル Query の投稿を表示しています。 すべての投稿を表示
ラベル Query の投稿を表示しています。 すべての投稿を表示

2011年4月19日火曜日

9 マップデータ 6 - ka-Map 日本語の地図のQuery設定

9-4-5 日本語の地図のQuery設定

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

---
LAYER
NAME tokyo_kukaku
GROUP tokyo_kukaku
TYPE LINE
STATUS ON
CONNECTIONTYPE POSTGIS
CONNECTION "dbname=nippon_bmi host=localhost user=user password=password"
DATA "the_geom from tokyo_kukaku"
# DATA "../mapdata/tokyo_bmi/AdmArea.shp"
LABELITEM "name"
  METADATA
   "group_title" "行政界"
   "queryable" "true" #ここを追加
   "fields" "name:区市町村" #ここを追加
  END
CLASS
NAME "kukaku"
STYLE
COLOR 255 255 204
OUTLINECOLOR 204 204 204
END
   LABEL #ここから追加
    MINFEATURESIZE 40
    TYPE TRUETYPE
    FONT vl-gothic
    ENCODING utf-8
    SIZE 8
   END #ここまで
  END
  TEMPLATE name_template.html #ここを追加
 END
---

name_template.htmlの内容は次のようになります。
nippon_bmi_tokyo_pgis.map と同じフォルダにおいてください。

<html>
 <head>
  <title>Name Template</title>
 </head>
 <body>
  <li>[name]
 </body>
</html>

■参考
シェイプファイルで地図表示するときは、結果が文字化けしてしまいます。
これは、ka-Map は文字エンコード utf-8 で処理するのですが、シェイプファイルのデータは Shift-JIS だからです。

シェイプファイルのデータの文字コードを ka-Map で表示できるように次のようにしました。
Search 機能の修正にも必要ですので、ここで設定しておきます。
まず、マップファイル nippon_bmi_tokyo_pgis.map の tokyo_kukaku レイヤのメタデータ(METADATA)にシェイプファイルのデータの文字コード SJIS を指定します。

---
METADATA
 "group_title" "行政界"
 "layer_encoding" "SJIS" #ここを追加
 "queryable" "true"
 "fields" "name:Name"
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"<td>$val</td>"; の前に次の行を追加します。

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


すべて修正した後の画像です。

2011年4月17日日曜日

7 ka-map 6 - Query クエリー

7-7 Query クエリー

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

の ユーザーガイド の Query - How to setup a ka-Map! point and click query information system using the maps legend "i" icon をクリックします。
(地図の凡例 "i" アイコンを使った、任意の場所を指してクリックする ka-Map のクエリ情報システムのセットアップ)

ここには、クエリシステムを動作させる方法が書いてあります。
Mapfile Query Configuration for ka-Map!(ka-Map のためのマップファイルクエリ設定)に書かれている設定でクエリ機能を有効にします。

global.map を例にしてみます。
countries レイヤに METADATA オブジェクトを追加して

"queryable" "true"

を追加します。
このとき、このマップファイルのレイヤがクエリ可能なka-Mapのレイヤとして機能するためにグループ(GROUP)を定義してください。

---
LAYER
NAME countries
GROUP countries #必須
TYPE LINE
STATUS ON
DATA "mapdata/worlddata/countries_simpl.shp"
METADATA #ここを追加
"queryable" "true" #ここを追加
END #ここを追加
CLASS
NAME "Country Boundaries"
STYLE
COLOR 200 100 100
END
END
END
---

さらに、Using MapServer's Templating System for Queries を参考にクエリテンプレートを追加します。
global.map と同じフォルダに次の内容で name_template.html(ファイル名は任意)作成してください。

<html>
<head><title>Name Template</title></head>
<body>
<li> [name]
</body>
</html>

name: freegis_worlddata_0.1-simpl の属性の名前。 name という項目名で国名が設定されてます。

global.map に次の行を追加します。

TEMPLATE name_template.html

Ominiverdi's query system を参考に global.map のメタデータ(Metadata)に次の行を追加します。

fields "name:Name"

countries レイヤのコードは次のようになります。

---
LAYER
NAME countries
GROUP countries #必須
TYPE LINE
STATUS ON
DATA "mapdata/worlddata/countries_simpl.shp"
METADATA
"queryable" "true"
fields "name:Name" #ここを追加
END
CLASS
NAME "Country Boundaries"
STYLE
COLOR 200 100 100
END
END
TEMPLATE name_template.html #ここを追加
END
---


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月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年6月25日水曜日

ka-Mapの機能 2Query クエリ

Query クエリ
日本語になりにくい言葉ですが、敢えてあてはめれば「問い合わせ」機能というところでしょうか。
クリックしたところの情報が表示されます。



クリック前




i アイコンをクリック後




地図をクリック後



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


の ユーザーガイド の Query - How to setup a ka-Map! point and click query information system using the maps legend "i" icon をクリックします。
(地図の凡例"i"アイコンを使った、任意の場所を指してクリックするka-Mapのクエリ情報システムのセットアップ)

ここには、クエリシステムを動作させる方法が書いてあります。
Mapfile Query Configuration for ka-Map!(ka-Mapのためのマップファイルクエリ設定)に書かれている設定でクエリ機能を有効にします。

global.mapを例にしてみます。
countriesレイヤにMETADATAオブジェクトを追加して

"queryable" "true"

を追加します。
このとき、このマップファイルのレイヤがクエリ可能なka-Mapのレイヤとして機能するためにグループ(GROUP)を定義してください。

---
LAYER
NAME countries
GROUP countries #必須
TYPE LINE
STATUS ON
DATA "data/freegis_worlddata-0.1_simpl/countries_simpl.shp"
METADATA #ここを追加
"queryable" "true" #ここを追加
END #ここを追加
CLASS
NAME "Country Boundaries"
STYLE
COLOR 200 100 100
END
END
END
---

さらに、Using MapServer's Templating System for Queriesを参考にクエリテンプレートを追加します。
global.mapと同じフォルダに次の内容でglobal_template.html(ファイル名は任意)作成してください。

<html>
<head><title>Global Template</title></head>
<body>
<li> [name]
</body>
</html>

name freegis_worlddata_0.1 -simplの属性の名前。 nameという項目名で国名が設定されてます。

global.mapに次の行を追加します。

TEMPLATE global_template.html

Ominiverdi's query systemを参考にglobal.mapのメタデータ(Metadata)に次の行を追加します。

fields "name:Name"

countries レイヤのコードは次のようになります。


---
LAYER
NAME countries
GROUP countries #必須
TYPE LINE
STATUS ON
DATA "data/freegis_worlddata-0.1_simpl/countries_simpl.shp"
METADATA #ここを追加
"queryable" "true" #ここを追加
fields "name:Name" #ここを追加
END ここを追加
CLASS
NAME "Country Boundaries"
STYLE
COLOR 200 100 100
END
END
TEMPLATE global_template.html
END
---

Webブラウザを再読み込みしてください。
グループ(レイヤ)名左側の青丸のアイコンの赤い禁止マークが消えています。
iアイコンをクリックして地図の陸地をクリックすると左側にクエリの結果が表示されます。
(地図が変わらないときは一時保存フォルダの画像を削除してみてください。
/home/user#rm -r ka-map/htdocs/tmp/kacache/weather
また、Webブラウザのキャッシュも消去してみてください。
FireFoxの場合 ツール->プライバシー情報の消去->キャッシュだけチェック->今すぐ消去)