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

0 件のコメント: