home > p.mapper のインストールと地図表示 > 数値地図2500の表示 > 日本語仕様の変更 > PostGISとの連携
|
p.mapper v1.2.0 で数値地図2500を表示する |
update:2006/07/26 |
▼ ここでは、
p.mapper アプリケーションを使用して、数値地図2500(Shapefileに変換したもの)を表示させる方法を解説します。
- p.mapperについて※2006/6/18現在の最新バージョンは1.2.0です。
- メインサイト : p.mapper
- p.mapperのインストールは、p.mapper のインストールと地図表示を参照してください。
- ここでは、既に ms4w 上で p.mapper が作動しているものとして解説します。
- ここでの p.mapper のディレクトリは、c:/ms4w/Apache/htdocs/pmapper にあるものとします。
- なお、v1.0.8を使用する場合は「p.mapper v1.0.8 で数値地図2500と任意ポイントの表示」を参照ください。
- ここで使用するソフト
- ms4w v1.5.4
- p.mapper v1.2.0
- gen2shp、txt2dbf
- メニュー
- p.mapperその他のページ
- 日本語仕様への変更
- PostGISとの連携 ※このページはバージョン1.0.8での説明です
■ 数値地図2500(空間データ基盤)をshapefileに変換 数値地図2500をダウンロードし、sdf3gen、gen2shp txt2dbfを使用して、シェープファイルに変換できますが、ここでは手っ取り早く説明するために、サンプルで作成した大阪市北区の一部分の genファイルを使用して構築させる方法を説明します。なお、他の地域の数値地図2500からシェープファイルを作成する方法は「数値地図2500(空間データ基盤)をShapefileに変換する方法sdf2gen」のページを参照して下さい
- sdf2gen(サンプル)のページで、数値地図2500をgen/attファイルにフォーマット変換します
- sdf2gen(サンプル)のページを開きます。
- 任意のレイヤー名を設定し「GENファイル出力」をクリックします。
- 作成したファイル名( xxx.gen & xxx.att )をクリックし、両方のファイルを任意のフォルダにダウンロードします。
※ここでは、すべてのレイヤー(三角点以外)を、c:/mapdataフォルダ にダウンロードしたものとして、説明します。
ダウンロードした9つのファイルは次のとおりです。
- 市・町 → si_tyo.gen、si_tyo.att
- 丁目 → tyome.gen、tyome.att
- 街区 → gaiku.gen、gaiku.att
- 水面 → mizu.gen、mizu.att
- 場地 → zyouti.gen、zyouti.att
- 建物 → tatemono.gen、tatemono.att
- 鉄道(ライン) → tetudou.gen、tetudou.att
- 道路(ライン) → road.gen、road.att
- 駅(ポイント) → eki.gen、eki.att
- コマンドツール gen2shp、txt2dbf を使用して、gen・attファイルをシェープファイルに変換します。
- コマンドツール gen2shp、txt2dbf のダウンロード・セッティングは「テキストファイルをShapefileに変換する方法 gen2shp & txt2dbf」のページを参照して下さい。
※ダウンロード・セッティング時の注意事項
- ここでの説明は、gen2shp は v0.3.1 txt2dbf はv1.0.2 のバージョンでの説明となります。※2006/6/24現在の最新バージョン
- エクセルがあれば、shapelibは不要です
- セッティングが終われば、環境変数でC:/Program Files/gen2shp-0.3.1までのパスを通してください。
- コマンドプロンプトを起動し、カレントフォルダを先程作成したgenファイルを置いているフォルダに移動します
cd c:\mapdata
- gen2shpで、先程作成した9つの genファイルを全てシェープファイルに変換します
※市・町などのポリゴンファイルは、次のとおり polygons を指定し、ラインの場合は lines を、ポイントの場合は points を指定します
c:\mapdata>gen2shp si_tyo polygons < si_tyo.gen
※gen2shp シェープファイル名 ファイル種類 < genファイル名
- 9つの attファイル をテキストエディタで開け、次のように1行目の id を各 dbfファイルの id名に変更します
エクセルでdbfファイルを開き、1行目に表示されている xxx-id をコピーし、同じプレフィックス名の attファイル の id をそれに変更します。
例)si_tyo.dbf ファイルは、si_tyo-id となっているので、si_tyo.attファイルの1行目に記載されている id を si_tyo-id に変更します。
※tatemono.dbfの場合は、長さが足りずに itatemono-i となって d が欠落していると思います。それ以外は "プレフィックス名-id" となっているはずです。
※エクセルで開いたdbfファイルは保管せずに閉じてください。上書き保管した場合は、小文字が大文字に自動変換されます。
- txt2dbfを使用して、作成したシェープファイルの属性ファイルdbf に attファイルの属性データ をコピーします
c:\mapdata>txt2dbf -v -I11 -C10 -C10 -C40 -C40 -C40 -C40 -C40 -C40 -d , si_tyo.att si_tyo.dbf
※txt2dbfの使用方法は「gen2shp txt2dbf でgen/attファイルをShapefileに変換する」のページを参照して下さい。なお、上記の記述はポリゴンの場合の例ですが、ポイントファイルとラインファイルは異なります。
※問題なくコピーされているかどうかは、 dbfファイル をエクセルで開くと確認できます
- 以上で、c:/mapdataフォルダに 9つのシェープファイルが作成されています
c:/mapdata/
- road.shx 、road.dbf 、 road.shp ......
■ mapfileの作成
- mapfileを作成します。
- mapfileのソース。このソ−スをコピーして、ファイル名を pmapper_sdf.map とし、p.mapperの config フォルダに格納します。
(もしくは、ここからmapfileをダウンロードしてください)
必要に応じて、以下の箇所を修正します。ms4w の場合は変更ありません。
- 画像フォルダのパス
※ここでは、ms4wを使用するパスで指定してます。他のサーバーの場合は、エイリアスを設定します。
WEB
IMAGEPATH "c:/ms4w/tmp/ms_tmp/"
IMAGEURL "/ms_tmp/"
QUERYFORMAT text/html
MAXSCALE 140000
END
- インターレース
p.mapperでは、PHPのFPDF拡張ソフトを使用したPDFファイル生成を行っているため、インターレース機能がサポートされていません。このために、mapfileでの INTERLACE指定をOFF にする必要があります。
■ pmapperの各種セッティング
ここでは、自分のサーバーに、pmapperが既に作動しているものとして解説します。(pmapperのインストールはこちらを参照)
- pmapper/configフォルダにあるconfig.iniをテキストエディタで開け、地図表示のレイヤー名を変更します。
- 文字コードを変更します。
defCharset = Shift-JIS
※UTF-8を、Shift-JISに変更します。
- map2unicode =
※1を削除します。
- MapScriptのバージョンを変更します。
msVersion = 48
※46を、自分のバージョンに変更します。
- Mapfileのパスを指定します( "\" ではなく "/" を使用します)
mapFile = C:/ms4w/Apache/htdocs/pmapper/config/pmapper_sdf.map
※上記のとおり、mapfileの場所を絶対パスで指定します。
- 地図レイヤー名を変更します。
allGroups = si_tyo, tyome, zyouti, gaiku, eki, mizu, tatemono, road, tetudou
※allGroups = countries, cities, dem, rivers, jpl_wms_global_mosaic の箇所を 上のとおり変更します。
- デフォルトで表示されるレイヤーを指定します。
defGroups = si_tyo, tyome
- mutualDisableList =
※mutualDisableList = dem, jpl_wms_global_mosaic の箇所を削除します。
- スライド Zoomの最小サイズを指定します。
sliderMin = 1000
※sliderMax = max の数値はMapfileで指定してますので、ここでは変更しません。
- レイヤーカテゴリーを指定します。
- C:\ms4w\Apache\htdocs\pmapper\incphp\custom.phpをテキストエディタで開け、次の箇所を修正します。
/**
* DEFINITION OF THEMATIC CATEGORIES
* assigning groups/layers to them
*/
$categories['cat_admin'] = array("si_tyo", "tyome","gaiku","eki");
$categories['cat_nature'] = array("mizu", "tatemono","zyouti");
$categories['cat_raster'] = array("tetudou", "road");
※Mapfileのレイヤー名に修正する
$mutualDisableList = array("", "", "");
※"dem", "jpl_wms_global_mosaic", "corine"を削除する
- 検索レイヤー名を変更します
- C:\ms4w\Apache\htdocs\pmapper\incphp\js_custom.phpをテキストエディタで開け、次の箇所を修正します。
var searchList = new Object;
searchList['tyome'] = new Array('<?php echo _p("丁目") ?>', '#NAME3', '<?php echo _p("丁目") ?>','');
searchList['gaiku'] = new Array('<?php echo _p("街区") ?>', '#NAME3', '<?php echo _p("街区") ?>','');
searchList['eki'] = new Array('<?php echo _p("駅") ?>', '#NAME1', '<?php echo _p("駅") ?>','');
searchList['tatemono'] = new Array('<?php echo _p("建物")?>', '#NAME2', '<?php echo _p("建物") ?>','');
※検索のレイヤー名とフィールド名を任意の数だけ記述する
searchList['レイヤー名'] = new Array('<?php echo _p("丁目") ?>', '#フィールド名(大文字)', '<?php echo _p("丁目") ?>','');
- iconv関数で、文字コードをUTF-8へ変換しない設定にし、また検索で渡されるパラメータをアンクォートさせます
- incphp/query/query.php (570行目あたり) をテキストエディタで開け、次の箇所を修正します。
// !!!! ENCODE ALL STRING IN UTF-8 !!!!
if ($this->layerEncoding) {
if ($this->layerEncoding != "Shift-JIS") { //UTF-8をShift-JISに変更します。
$fldValue = iconv($this->layerEncoding, "Shift-JIS", $fldValue); //UTF-8をShift-JISに変更します。
}
} else {
$fldValue = $fldValue;//utf8_encode($fldValue); //utf8_encode関数を削除します。
}
- incphp/query/query.php (671行目あたり)
$val = stripslashes($_GET["$var"]); //stripslashes関数を加える
- レイヤー名の文字化けを修正します。
- pmapper/incphp/initgroups.php(270行目あたり)をテキストエディタで開け、次の箇所を修正します。
return trim($descriptionTag);
//return preg_replace(array("/\\\/", "/\|/"), array("", ""), trim($descriptionTag)); // ESCAPE APOSTROPHES (SINGLE QUOTES) IN NAME WITH BACKSLASH となっているものを return trim($descriptionTag);に変更する
- ヘッダーの不具合を修正します。
- pmapper/x_toc.php(31行目あたり) をテキストエディタで開け、次の箇所を修正します。
header("Content-Type: text/plain; charset=$defCharset");
//header("Content-Type: text/plain");に ; charset=$defCharset を追記する
- 地図上に表示される文字とアイコンの準備
- p.mapper1.2.0_etc.zip をダウンロード・解凍し、c:/mapdataフォルダに移動 、etcにリネイムします。
etcファイルの階層
- c:/mapdata/etc
- winfonts.txt
- symbols.sym
- etcファイルの説明
- 日本語フォントファイル
- C:\WINDOWS\Fonts(※WinXPの場合)フォルダ に含まれる日本語用 True Typeフォントファイルを使用する設定になっています。※ここでは、msgothic.ttc のフォントファイルを使用します。
- 他のフォントファイルを使用したい場合は、winfonts.txtをテキストエディタで開き、使用したいTrue Typeフォント ファイル名を次の行に追記します
例えば、msgothic c:/WINDOWS/Fonts/msgothic.ttc を入力し、上書き保管する
- symbol ファイル
- symbols.sym ファイル は、地図に表示されるポリゴンやラインやポイントのデザインを指定するファイルです。
※symbol についての詳細は、MapServerサイトの Symbol で地図を装飾する のページを参照してください。
- 参照地図の修正
- imagesフォルダへ参照地図用の画像を投入します。
※ここでは、参照地図画像の詳しい作成方法は説明しません。
- 一度、pmapper で表示させたメインマップ画像をダウンロードし、縦横を同比率で縮小させ、pmapper/images フォルダに reference_sample.png という名前で保存します。
- config/pmapper_sdf.mapファイルをテキストエディタで開き、次の箇所を修正します。
REFERENCE
IMAGE "../images/reference_sample.png"#作成した画像ファイル名に変更する
EXTENT -48261.0000 -142153.2000 -46261.0000 -140653.2000
STATUS ON
MARKER 0
MARKERSIZE 0
MINBOXSIZE 3
MAXBOXSIZE 0
COLOR -1 -1 -1
OUTLINECOLOR 255 0 0
SIZE 116 100 #作成した画像ファイルのサイズ(横、縦)に変更する
END
- フォルダ構成の確認
これまでに、修正・作成したフォルダとファイルは以下のとおりとなります。
- c:/ms4w/Apache/htdocs/pmapper
- config
- config.ini ←修正したファイル
- pmapper_sdf.map ←ダウンロードしたmapfile
- doc
- documentation.html
- txtファイル
- images
- reference_sample.png ←作成した参照地図の画像
- incphp
- db
- locale
- phpファイル 文字コードの設定ファイル
- phpファイル 印刷設定ファイル
- query
- query.php ←UTF-8からShift-JISへ修正。utf8_encodeの削除
- squery.php
- common.php
- custom.php ←レイヤーカテゴリーの修正
- js_custom.php ←検索レイヤーの修正
- initgroups.php ←レイヤー 名の文字化け修正
- その他いくつかのphpファイル
- javascript
- いくつかのjavascript js ファイル
- templates
- いくつかのスタイルシート css ファイル
- util
- avpmapper.ini
- その他
- x_toc.php ←修正したファイル
- その他、いくつかの htmlファイルと phtmlファイル
- c:/mapdata
- doro.shx 、doro.dbf 、doro.shp... ←作成したshapefile
- etc ←↓作成したフォルダとファイル(シンボルとフォント)
- symbols.sym
- fonts.txt
■ 地図表示と操作性の確認
自分のブラウザに、http://127.0.0.1/pmapper/start.html をリクエストすると、pmapperのスタート画面が表示されます。
p.mapper スタート画面
Small, layer flat view, English をクリックすると、次のような pmapper の地図が表示されます。p.mapperスクリーンショット
- pmapperの操作性を確認します
※以下の説明はバージョン1.0.8での解説ですが、右上にある画面サイズの切り替え以外は基本的に操作の変更ありません。また表示されている地図は大阪市北区全域の地図です
- 凡例と情報表示
画面右の Legend でそれぞれのレイヤーにチェックを入れると、地図上に対象のレイヤーが表示されます。
地図右のメニューから [ i ] ボタンをクリックし、地図上の任意の箇所をクリックすると、地図情報がポップアップウィンドウに表示されます。
- 地図検索
表示された情報をクリックすると、情報に関する地図の範囲が色塗りされて中央に表示されます。
- 名称検索
画面左下の Search for プルダウンで 駅 を選択し、駅名を入力し Search ボタンをクリックすると、検索された駅ポイントが地図上に赤く表示され、またポイント情報も同時に表示されます。
- その他の機能
- 範囲と情報検索
範囲を指定して、情報をまとめて表示させることもできます。
- 距離測定
距離を測定することができます。
- 画像のダウンロード
画面上に表示された地図を解像度に合わせてダウンロードすることもできます。画面メニューのDLをクリックすると、Map Resolution Download のポップアップウィンドウが表示され、解像度を選択しOKをクリックすると、その解像度の地図がHTMLファイルで表示されます。
また、PDFファイルで表示させることも可能ですが、若干のセッティングが必要です。これについては、「日本語仕様への変更/PDF印刷の設定」のページを参照してください。
■ その他 その他の操作については
任意ポイントの作成 > p.mapper v1.0.8 で数値地図2500と任意ポイントの表示 を参照下さい。
Copyright ©2006 Yaskey. All Rights Reserved.