User:Tatata/Mapnik-Win32
このページはTatataが自分のPC (Windows XP) にMapnikのwin32 binariesをインストールした時に気が付いたことなどをメモしたものです。
外部向けのサーバーによるサービスのために必要と思われるセキュリティ上の配慮は行っていませんので、外部向けのサーバーにインストールする場合にはアカウント名、パスワード、DB接続設定(password-less connections)、DB名などに注意して下さい。
Perl
Perlの導入を行う。
- http://www.activestate.com/store/activeperl/ からActivePerlの無料版をダウンロード。
Python
Pythonの導入を行う。
- http://www.activestate.com/store/activepython/ からActivePythonの無料版をダウンロード。
PostgreSQL
PostgreSQLの導入を行う。
- http://www.postgresql.jp/PostgreSQL からWindows版インストーラをダウンロード。
- 参考資料
- その他
- サービスアカウント名と管理者アカウント名はDefault (postgres) のまま、パスワードは別のものを設定。
PostGIS
PostGISの導入を行う。
- PostgreSQLのアプリケーションスタックビルダというプログラムを使ってインストールする。
- その他
- DB名は postgis (たぶんDefaultだったと思う。)
- 公式サイト http://www.postgis.org/
- その他
osm2pgsql
osm2pgsql.exe(osmのデータをPostgreSQLのデータベースにロードするプログラム)の導入を行う。
- http://artem.dev.openstreetmap.org/files/ からosm2pgsql.exeかosm2pgsql_latest.exe.zipのどちらか新しいものをダウンロード。
- データのロードの実行方法は下の囲みを参照。データをロードする際のコマンド(の引数)についてはMapnik#Loading Dataも参照。
- 実行時のエラーとその対応
- "Connection to database failed: fe_sendauth: no password supplied"
- → enable password-less connections from localhost (TRUST option in pg_hba.conf ) [1]
- 権限エラー。(Windowsにログオンしてるアカウント名に対してROLEが無い旨のメッセージ。)
- → postgisデータベース内の2つのテーブルについてALLをPUBLICに対して許可し、2つのテーブルのオーナーをALTER TABLEでWindowsにログオンしているアカウント名に変更する。変更はpgAdminIIIの画面から行うか、コマンド・プロンプトからDBに接続してSQL文を実行する。(これをやらないとmapnik (generate_image.pyなど)の実行時にデータベースから情報を取得できす、coastlinesやworld_boundariesしか表示されないということになる。)
- 丸の内のデータではSJISが含まれているというエラーで処理が完了できない (COPY_ENDが完了できなかった旨のメッセージ)。
- → UKや日本のplanet.osm extractについて「--bbox」でロンドンや東京の範囲を指定すると正常終了したことから、メモリ不足に起因するエラーと思われる。(メモリが多くないPCの場合はWindows再起動後に、他のアプリを立ち上げずに実行したほうが良い。)
- "Connection to database failed: fe_sendauth: no password supplied"
{{../../Infobox|width=100%|border-style=dashed|border-color=#2f6fab|※your mapnik directoryはプログラム(osm2pgsql.exe)とデータ(map.osm)を置いたディレクトリ。
C:\your mapnik directory>osm2pgsql -m -d postgis map.osm
osm2pgsql win32
Using projection SRS 900913 (Spherical Mercator)
Setting up table: planet_osm_point
Setting up table: planet_osm_line
Setting up table: planet_osm_polygon
Setting up table: planet_osm_roads
Reading in file: map.osm
Processing: Node(16k) Way(1k) Relation(0k)
Writing rel(0k)
Writing way(0k)
Node stats: total(16952), max(262487770)
Way stats: total(1459), max(24243409)
Relation stats: total(0), max(0)
C:\your mapnik directory>
}}
OSM data
OSMのデータの取得方法は数種類ある。
- Planet.osm — OSM全体(世界全体)のファイル
- Planet.osmの部分抽出ファイル
- http://roland-ramthun.de/osm/extracts/ ← 日本部分を抽出したファイル有り。但し、更新は毎月7日。
- JOSMでダウンロードしたデータを保存したファイル
- OSM.orgサイトで特定地区を表示して、Exportタブからダウンロードしたファイル
name:ja
道路や駅などの名称を日本語のみの表示にしたい場合は、これらの値を取得するキーを name から name:ja に変更する必要があるため、データベースへロードする前にデータファイル内のタグ(キー)を書き換えておく。
エディタを使用して変更する場合の手順
- エディタでデータファイルを開く。
- k="name" を適当な名前(k="name:x"など)で置換する。
- k="name:ja" を k="name" で置換する。
- データファイルを保存する。
Mapnik
Mapnikの導入を行う。
- http://mapnik.org からwin32 binariesをダウンロード。
- pathの設定(解凍してできたフォルダをc:\直下に置いた場合。コントロールパネル → システム → 詳細設定 → 環境変数)
- Pathに追加 C:\mapnik-0_5_1
- PYTHONPATHを新規作成 C:\mapnik-0_5_1\site-packages
- 設定後の確認方法
- Python Interactive Shellで from mapnik import * を実行し、「Python "ImportError"」というエラーメッセージが表示されなければOK。 — sys.path (module search) [2] [3]
- pathの設定(解凍してできたフォルダをc:\直下に置いた場合。コントロールパネル → システム → 詳細設定 → 環境変数)
World Boundaries, Coastlines
国境データと海岸線データをダウンロードする。
- 国境データ http://tile.openstreetmap.org/world_boundaries-spherical.tgz
- 海岸線データ http://hypercube.telascience.org/~kleptog/processed_p.zip
2つのデータを解凍したらcoastlinesフォルダの中身をworld_boundariesフォルダの中に移動する。
Subversion
OSMのmapnik用ファイルをダウンロードするため、Subversion(サブバージョン)のクライアントの導入を行う。
- http://tortoisesvn.net/downloads からTortoiseSVNのInstallerをダウンロードするか、wikipedia:ja:Subversion#クライアントを参照して別のクライアントを導入する。
OSM files
Subversionのクライアントを使って、http://svn.openstreetmap.org/applications/rendering/mapnik からOSMのmapnik用ファイルをダウンロード(チェックアウト)する。
TortoiseSVNの場合の手順
- ダウンロード用のフォルダを作成する。(エクスプローラで作成先のフォルダを開き、メニューの「ファイル」→「新規作成」→「フォルダ」をクリックして名前を付ける。)
- 作成したダウンロード用のフォルダを右クリックして、「SVN Checkout」をクリックする。
- Checkoutウィンドウ開くので、「URL of repository」に http://svn.openstreetmap.org/applications/rendering/mapnik を入力して「OK」をクリックする。
コマンドラインツールのクライアントの場合は次のようなコマンドを実行する。(クライアントによって若干異なると思われます。)
{{../../Infobox|width=100%|border-style=dashed|border-color=#2f6fab|svn checkout http://svn.openstreetmap.org/applications/rendering/mapnik}}
ダウンロードしたOSMのmapnik用ファイルについての作業
- set-mapnik-envはexportをsetに書き換え、環境変数を自分の環境に合わせて変更してから、バッチファイル(.bat)にして実行する。
- osm-template.xml中に書かれているシンボル(画像ファイル)へのパスをwindowsの書き方に変更(/ ⇒ \)してからcustomize-mapnik-map.plを実行する。
- 日本語を表示させる方法
- 1. 日本語のフォントファイル(.ttf)をMapnikのfontsフォルダ(C:\mapnik-0_5_1\lib\mapnik\fonts)に置く。
- 2. osm-template.xml内のTextSymbolizerのface_name=に使用したいフォントの名前を指定する。(指定できるフォント名は今のところ1か所につき1個のみ。)
- システムが認識できるフォント名で指定しないと「UserWarning: Unable to find specified font face 'IPA UIゴシック'」のようなエラーメッセージが表示される。
- 例えば、"IPA UIゴシック"を使用したい場合はフォント名として"IPAUIGothic Regular"を指定する。
- フォント名の確認方法 [4]
- (C:\mapnik-0_5_1\lib\mapnik\fonts に.ttfファイルを置いてから →)Python Interactive Shellで下の囲みに太字で書かれた操作を行うと、osm.xml (osm-template.xml) 内のTextSymbolizerのface_name=に指定できるフォント名が表示される。
- システムが認識できるフォント名で指定しないと「UserWarning: Unable to find specified font face 'IPA UIゴシック'」のようなエラーメッセージが表示される。
- 3. customize-mapnik-map.plを実行してosm.xmlに変更を反映させる。
- 日本語を表示させる方法
{{../../Infobox|width=100%|border-style=dashed|border-color=#2f6fab|
Python 2.5.2 (r252:60911, Mar 27 2008, 17:57:18) [MSC v.1310 32 bit (Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from mapnik import *
>>> for fname in FontEngine.face_names():
... print fname
...
DejaVu Sans Bold
DejaVu Sans Bold Oblique
DejaVu Sans Book
DejaVu Sans Condensed
DejaVu Sans Condensed Bold
DejaVu Sans Condensed Bold Oblique
DejaVu Sans Condensed Oblique
DejaVu Sans ExtraLight
DejaVu Sans Mono Bold
DejaVu Sans Mono Bold Oblique
DejaVu Sans Mono Book
DejaVu Sans Mono Oblique
DejaVu Sans Oblique
DejaVu Serif Bold
DejaVu Serif Bold Oblique
DejaVu Serif Book
DejaVu Serif Condensed
DejaVu Serif Condensed Bold
DejaVu Serif Condensed Bold Oblique
DejaVu Serif Condensed Oblique
DejaVu Serif Oblique
IPAUIGothic Regular
>>>
}}
rendering
- エディタでgenerate_tiles.py(タイル生成用スクリプト)又はgenerate_image.py(画像ファイル生成用スクリプト)を開き、生成したいエリアのbounding boxesとzoom levelsを設定する。
- generate_tiles.pyの場合はファイルの終わりの方に世界全体の設定と数箇所の都市の設定が書かれているので、使用しないものは全てコメントにする。
- generate_image.pyの場合は下の例を参照。
- generate_tiles.py又はgenerate_image.pyを実行し、地図を作成(レンダリング)する。
Disk space
名称 | 説明 | ファイル/フォルダ | 容量(MB) |
---|---|---|---|
Perl | インストーラー | ActivePerl-5.10.0.1002-MSWin32-x86-283697.msi | 14.90 |
Perl | 導入先フォルダ | C:\Perl | 73.80 |
Python | インストーラー | ActivePython-2.5.2.2-win32-x86.msi | 21.70 |
Python | 導入先フォルダ | C:\Python25 | 47.80 |
PostgreSQL/PostGIS | インストーラー(zipファイル 20.0MB + 解凍済みフォルダ 21.6MB) | postgresql-8.3.0-1.zip, postgresql-8.3.0-1 | 41.60 |
PostgreSQL/PostGIS | 導入先フォルダ(データベース用フォルダを含む) | C:\Program Files\PostgreSQL | 130.00 |
osm2pgsql | zipファイル | osm2pgsql_latest.exe.zip | 0.50 |
osm2pgsql | exeファイル | osm2pgsql.exe | 1.04 |
Mapnik win32 binaries | zipファイル | mapnik_win32_py25-0.5.1.zip | 7.21 |
Mapnik win32 binaries | 解凍済みフォルダ | C:\mapnik-0_5_1 | 16.10 |
World Boundaries | tgzファイル | world_boundaries-spherical.tgz | 50.40 |
World Boundaries | 解凍済みフォルダ | world_boundaries | 74.40 |
Coastlines | zipファイル | processed_p.zip | 214.00 |
Coastlines | 解凍済みフォルダ | coastlines | 344.00 |
TortoiseSVN | インストーラー | TortoiseSVN-1.4.8.12137-win32-svn-1.4.6.msi | 8.91 |
TortoiseSVN | 導入先フォルダ | C:\Program Files\TortoiseSVN | 15.70 |
OSM files | ダウンロードフォルダ | site | 2.12 |
IPAフォント | zipファイル | IPAfont00203.zip | 15.30 |
IPAフォント | 解凍済みフォルダ | IPAfont00203 | 25.30 |
合計 | 1,104.78 |