JA:Osmarender/Howto

From OpenStreetMap Wiki
Jump to navigation Jump to search

ここでは、webからのosmデータの入手方法と、それをOsmarenderでSVGに変換する方法について説明します。

osmarender の中心となる作業は、XSLT 変換です。:

osm-map-features.xml ==xslt==> svg

XSLスタイルシートの中で、"data.osm" ファイルが参照されています。

osmarenderの手順


必要なもの

基本的に次のものが必要です:

  1. openstreetmap.org のアカウント
  2. 変換手順について書かれているいくつかのファイル。
  3. 少なくとも一つの、下で指示している実際に変換作業をするツール。
  4. 描画したい地域のOSMデータ
  5. SVGを表示させるアプリケーション。例えばFirefox 1.5・Sodipodi・Inkscapeなど。(and feel the warm glow of satisfaction that you deserve :)


ソフトウェアをダウンロード

Osmarender は、ダウンロードを行い易くするのためのアプリケーションではなく、XSL変換をさせるために必要なファイルのセットです。全ての必要なファイルはhttp://svn.openstreetmap.org/applications/rendering/osmarender/ からアクセスし、Subversionリポジトリーの中に見つけることが出来ます。

(注意:osmarender6と書かれているディレクトリーの中は古いバージョンです。
これは、 OpenStreetMap API version 0.6のデータフォーマットと互換性がありません。)

Osmarender ファイルを入手するには subversion プログラムを使うか(詳細はGetting The Sourceを参照)、必要なファイルを個別にダウンロードします。:

それぞれのファイルで右クリックし、全て同じディレクトリー、例えばc:\osm\などに保存します。 少なくても、次のファイルが必要になります。

  1. ルールファイル: osm-map-features-z17.xml
  2. スタイルシートファイル: osmarender.xsl


あなたがLinux か Unixを使っている場合、次のファイルが必要になるかもしれません。

  1. osmarender
  2. xsltrans シェルスクリプトです。

データをダウンロード

次に、あなたが描画したいOSMデータをダウンロードして、上記で指定したファイルと同じディレクトリーに保存します。このとき、データファイルの名前は"data.osm"でなければなりません。データを入手する方法はいくつかあります:

  • 好きなウェブブラウザーを使って、データをダウンロードする方法は、あなたのダウンロードしようとしている領域のサイズや要素の数によっては、最良の手段です。
  1. ブラウザーで、あなたが欲しい領域の座標をbboxで指定して、次の例のようにURLを入力する。:
    http://www.openstreetmap.org/api/0.5/map?bbox=-0.5,51.3,-0.4,51.4
    このbboxは、(西の経度), (南の緯度), (東の経度), (北の緯度)の順です。南緯と西経は負の数で指定する。ダウンロードする領域を決めるには、OSM 地図のメインページの'view'タブを押したときのURLか、このURLをJOSMのダウンロードダイアログにでるものをペーストするなど。これらのURLは、閲覧領域の中心座標とズームレベルを含みます。
  2. ダウンロードには時間がかかるので、気長に待ちましょう。完了したら、ブラウザーで右クリックして、「ソースを見る」を選択。
  3. メニューの「ファイル」から、「名前を付けて保存」を選択してdata.osmの名前で、他のファイルがあるディレクトリーに保存する。前節から続く例なら、c:\osm\data.osmです。
  • 編集になれているなら、JOSMを使って、データを保存することもできます。
  1. 単に、あなたがダウンロードしたデータを data.osm として、他の全ファイルが入っているディレクトリーに保存。
  2. 他のファイル名で保存することも出来るが、その場合はルールファイルの上の方にある data="ファイル名" の行を書き換える必要がある。または、UNIXベースのオペレーティングシステム (Linux, BSD, UNIX, Mac OS X)なら、 "ln -s <existing filename> data.osm" コマンドで、シンボリックリンクを使う。

データを描画する(.osm → .svg)

全てのファイルがダウンロードできたら、以下にあげるいずれかの方法でosmデータをSVGイメージ(説明のためmap.svgと呼びます。)に変換する。

Xalan

Xalan はJavaのコマンドラインアプリケーションで、JDKまたはJREがインストールされている必要がある。次の手順で変換できる:

  1. xalan を http://xml.apache.org/xalan-j/downloads.html からダウンロードしてインストールする。
  2. 次にターミナルを開く(Windowsなら、MS-DOS プロンプトなど)。
  3. ダウンロードしたファイルが含まれるディレクトリーに cd コマンドで移動。
  4. 次のコマンドを実行する:
    c:\osm\>java -cp c:\path\to\xalan.jar org.apache.xalan.xslt.Process -in osm-map-features-z17.xml -out map.svg

Saxon

Saxon はもう一つの XSLT プロセッサーで、Java のほかに .NET フレームワークの実装があります。 Saxon は、 Xalan-J より実効速度が速く、 XSLT 2.0, XQuery 1.0 と XPath 2.0 をサポートします。Saxon には、2バージョンあります。シェアウエアバージョン (Saxon-SA) とオープンソースバージョン (Saxon-B) です。オープンソースバージョンで十分に osmarender.xsl を処理できる機能があります。

  1. http://www.saxonica.com/documentation/index/intro.html からSaxon-B (オープンソースバージョン)をダウンロードしてインストール。
  2. ターミナルを開く。
  3. ダウンロードしたファイルが含まれるディレクトリーに cd コマンドで移動。
  4. 次のコマンドを実行する。(Java 実装の場合):
    java -jar c:\path\to\saxon9.jar -t -xsl:osmarender.xsl -s:osm-map-features-z17.xml -o:map.svg

XML starlet

  • Debian GNU/Linux / Ubuntuでは:
  1. インストールされていなければ、 XMLstarlet をインストール。
    1. Debian GNU/Linuxでは、rootユーザーで、次のコマンドを実行:
      apt-get install xmlstarlet
    2. Ubuntu では次のコマンド:
      sudo aptitude install xmlstarlet
  2. ダウンロードしたファイルがあるディレクトリーに cd コマンドで移動。
  3. SVGを描かせる。 (別の形で出力させたい場合は、ルールファイル osm-map-features-z17.xml をカスタマイズしたものと入れ替える)
    1. osm-map-features-z17.xml をルールファイルに使用する場合は、次のコマンドを実行:
      xmlstarlet tr osmarender.xsl osm-map-features-z17.xml > map.svg
  • Windowsでは:
  1. win32-zip 形式のファイルを ここからダウンロード。
  2. zipの中身を(例) c:\xml などに解凍。
  3. Osmarender をインストールしたディレクトリーから、次のコマンドを実行:
    c:\xml\xml tr osmarender.xsl osm-map-features-z17.xml > map.svg
  4. map.svg が c:\xml に作られます。
  • Mac OS Xでは、:
  1. 次のコマンドなどで、 XMLStarlet をインストール:
    fink install xmlstarlet
  2. 次のコマンドでSVGを描きます。:
    xml tr osmarender.xsl osm-map-features-z17.xml > map.svg
    注意:コマンドは他の場合の'xmlstarlet'とは違い、'xml'です。

MSXML

(注意: これは OSMARENDER 4では動きませんでしたが、Osmarender 5以降では動きます。) Windows ユーザーには、 Microsoft が、MSXMLという名の XML パーサー / XSLT プロセッサーを提供しています。(下の NXSLT2 もWindowsユーザー向けです。)使うにはこうします。:

  1. MSXML 6.0を ここからダウンロードして、インストールする。
  2. つぎに、コマンドライン変換ユーティリティ(msxsl.exe)をWindows/System32ディレクトリーに置く必要があります。ここからダウンロードする。
  3. DOS / コマンドラインプロンプトを立ち上げ、 cdで全ファイルがあるティレクトリーに移動。
  4. 次のコマンドです。:
    msxsl osm-map-features-z17.xml -pi -o map.svg
  5. 外部スタイルシートを使うための、-pi オプションをつけるのを忘れずに、ないとコマンドラインからそれを探そうとします。

NXSLT2

これを使用するにはMicrosoft NET2 Framework がインストールされている必要がある。

その後、NXSLT2 を、箱の右下にあるリンクからダウンロードしてインストール。

インストールしたら、次のコマンド

nxslt2 osm-map-features-z17.xml -pi -o map.svg 

で、SVG ファイル(data.osmファイルを変換したmap.svg)ができる。

Osmarender4 を使った最初のテストでは、これで正しいSVGファイルを生成ていたようです。

xsltproc

  1. Linux とMac OS X 10.4 (Tiger)では、 xsltproc は通常インストールされているとおもいますが、なければ、ディストリビューションシステムにしたがって、インストールする。xsltprocは、Libxsltの一部で、GNOME XML parserの一部でもあります。
  2. ターミナルを開く。
  3. cdで、全てのダウンロードされたファイルがあるディレクトリーに行き。
  4. 次のコマンドを実行:
    xsltproc osmarender.xsl osm-map-features-z17.xml > map.svg
    または
    xsltproc -o map.svg osmarender.xsl osm-map-features-z17.xml
    もし、 xsltproc を SVN checkout したosmarender4でつかうなら、次のコマンドです:
    xsltproc --path . --path ./symbols rules/standard.xml > map.svg

Windowsで、Cygwin(一つのUnixに似せた 互換性レイヤー)を使ってインストールした xsltproc を使うこともできます。 Cygwin インストーラーの libxslt という名のパッケージを選んでインストールします。

Altova XMLSpy

  1. osm-map-features-z17.xml を開く。
  2. F10を押す。
  3. 待つ
  4. 何とか.svgを保存する前に、出力されたエラーメッセージを直す。(私の鉄道駅は、r-attributesを二つ持っています。)

SVG イメージを見る

ここまでやったら、後は map.svg イメージファイルを開いて見るだけです。

Firefox

Firefox は、地図を綺麗に表示してくれます。 map.svg を直接 Firefox で開いてみてください。バージョン 2.0 以前では、道路の名前は表示されません。

Microsoft Windows IE に Adobe SVG ビューアー

これも地図を綺麗に表示してくれます。リンク絵を作るには、ズームや移動を使い、SHIFT + PrintScreen ボタンで、スクリーンショットをキャプチャーして、好きな画像編集アプリケーションにペーストする。

Inkscape

Inkscape 0.42 以降は、地図をとってもきれいに表示してくれます。小さい地図では、手動でロゴを小さくしないと、ロゴが地図を潰してしまいます。

png にエクスポートする (File -> Export Bitmap)時には、必要なサイズと解像度のイメージを得るために、DPIの設定を変える必要があります。

inkscape をコマンドラインで走らせて、pngを出力させることもできます:

inkscape -D -e output.png map.svg

Batik

Batikの rastaraizer は、レンダリングはうまいのですが、幅やDPIなどをすべてを正しく設定するのが非常に面倒です。

librsvg2

librsvg2 の rsvg (いくつかのプラットホームでは, librsvg2-bin) は、いい PNG を作ってくれます。

Adobe イラストレーター

Illustrator CS には、 SVG インポートがあり、 Osmarender で作ったファイルを表示できます。しかし、 CS3 では、道路の名前は変にレンダリングされ (全ての文字が道に添っているというより、垂直です。)、residential の道路の回りには、ずれた影ができています。

ImageMagick

ImageMagick は、写真データを変換するコマンドラインツールです。SVGを他の(ラスタ)フォーマットにレンダリングするには、 "convert"コマンドを使います。パラメター"-density" は、出力画像の解像度をDPIで指定します。パラメーター "-scale" は、出力画像のサイズをピクセルで定義します。もし、500px の幅と 600DPI の画質にしたいなら、

convert -density 600 -scale 500 map.svg map.png

とします。しかし、ImageMagick は、道路の名前をレンダリングしないようです。

つぎは?

みんなに見てもらうために、スクリーンショットやレンダリングしたSVGなどをwikiに、アップロードするのもよいでしょう。 Osmarender の出力を調整したい場合などには、Osmarender/Tipsのページが参考に。

全般的な問題

いくつかの途中過程のメッセージを除けば data.osm の加工が完全に終わるまで、いっさいの出力がありません。実際に行うにあたって、地図を大きくしすぎないこと、複雑にしすぎないことを勧めます。さもなければ、かなりの時間が必要になるかもしれません。Tiles@home はレンダリングするエリアをタイル毎にダウンロードすることで、これを回避しようとします。 (エリアの全てのパスを含める場合 Rendering large areas を参照。)

参考

  • Osmabrowser: Osmarender 用のユーザー設定フロントエンドを提供する目的で開発されました。
  • OSM@home: UK のそれぞれの市で osmarender を走らせるプロジェクト。このウェブサイトで結果が表示されています。