これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、MAC OS オンライン エミュレーターなど、複数の無料オンライン ワークステーションのいずれかを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド mkgmap-splitter です。
プログラム:
NAME
mkgmap-splitter - mkgmap のタイルスプリッター
SYNOPSIS
mkgmap-スプリッター [オプション] ファイル.osm > スプリッター.log
DESCRIPTION
mkgmap-スプリッター 適切にマッピングされた大きな領域を含む .osm ファイルをいくつかに分割します
Garmin マップ形式で使用される最大サイズに収まるように、より小さなタイルを使用します。 そこには
少なくとも XNUMX 段階の処理が必要です。 最初の段階は、面積を計算することです
ノードの分布に基づいて、各タイルがカバーする必要があります。 第二段階は書き出す
ノード、ウェイ、リレーションを元の .osm ファイルから別の小さな .osm に
ファイルは、ステージ XNUMX で計算された領域ごとに XNUMX つです。 オプション付
--keep-complete=true、壊れたウェイとポリゴンを回避するために、XNUMX つの追加ステージが使用されます。
最も重要な機能は次の XNUMX つです。
· 多数の小さなファイルを防ぐための可変サイズのタイル。
· タイルは重なりや隙間なく正確に接合されます。
大きな領域を分割する場合は、コンピューターに大量のメモリが必要になります。 いくつか
オプションを使用すると、必要なメモリ量を構成できます。 デフォルトのパラメータでは、必要です
ノードとウェイごとに約 4 ~ 5 バイト。 これはあまり聞こえませんが、約1700あります
惑星ファイル全体に XNUMX 万個のノードがあるため、惑星全体を XNUMX つのファイルで処理することはできません
最大 Java ヒープ領域は 32G であるため、このユーティリティを使用して 2 ビット マシンでファイルを渡します。 それ
64ビットJavaと約7GBのヒープ、または複数のパスで可能です。
Cloudmade または Geofabrik からのヨーロッパ抽出は、次の場合に 2G 制限内で処理できます。
十分なメモリがあります。 デフォルトのオプションでは、ヨーロッパは約 750 のタイルに分割されます。
ヨーロッパの抜粋は、完全な惑星ファイルの約半分のサイズです。
一方、ドイツやイギリスのようによく地図化された国であっても、
ネットブックでさえ、中程度のマシンで可能です。
USAGE
スプリッターには Java 1.6 以降が必要です。 基本的な使い方は以下の通りです。
mkgmap-スプリッター ファイル.osm > スプリッター.log
コンピュータのメモリが 2 GB 未満の場合は、 -Xmx オプションによる
JAVA_OPTS 環境変数を設定します。
JAVA_OPTS="-xmx512m" mkgmap-スプリッター ファイル.osm > スプリッター.log
これにより、読み取り可能な多数の .osm.pbf ファイルが生成されます。 mkgmap(1)。 がある
他のファイルも生成されます:
この テンプレート.args file は、 -c のオプション mkgmap それは
すべてのファイルをコンパイルします。 そのまま使用することも、コピーして編集して含めることもできます
あなた自身のオプション。 たとえば、各説明が「OSM マップ」ではなく、「NW」のようになります。
スコットランド」など適宜。
この エリアリスト ファイルは、計算された境界ボックスのリストです。 あなたが欲しいなら
を使用して、スプリッターの後続の呼び出しでこれを使用できます。 --分割ファイル 使用するオプション
前回と全く同じエリア。 これは、定期的にマップを作成する場合に役立ちます
タイル領域を毎月同じに保ちたいと考えています。 避けるのも有効
毎回ファイルを再生成するのにかかる時間 (現在、全体の約 XNUMX 分の XNUMX)
分割の実行にかかった時間)。 もちろん、マップが十分に大きくなった場合、タイルの XNUMX つが
オーバーフローがある場合は、面積を再計算する必要があります。
この エリア.ポリ ファイルには、計算された領域の境界ポリゴンが含まれています。 オプションを見る
--ポリゴンファイル これはどのように使用できますか。
この 密度アウト.txt ファイルは分割ファイルが指定されていない場合に書き込まれ、デバッグが含まれています
情報のみ。
gzip または bz2 で圧縮された .osm ファイルを入力ファイルとして使用することもできます。 ご了承ください
これにより、スプリッターの速度が大幅に低下する可能性があります (特に bz2 の場合)。
.osm ファイルの解凍には、かなりの CPU パワーが必要です。 あなたがそうなる可能性がある場合
ファイルを数回処理する場合は、おそらくファイルを次のいずれかに変換する方がよいでしょう
バイナリ形式の pbf または o5m。 o5m 形式は読み取りが高速ですが、より多くのスペースが必要です
ディスク上。
OPTIONS
微調整するためのオプションがいくつかあります。
--境界タグ=string
リレーションのタグ値のコンマ区切りリスト。 マルチポリゴンのフィルタリングに使用
問題リスト処理のための境界関係。 オプションも参照
--指名手配の管理者レベル. デフォルト: use-exclude-list
--キャッシュ=string
非推奨、現在は何もしません
--説明=string
に書き込む説明を設定します。 テンプレート.args ファイルにソフトウェアを指定する必要があります。
-- geonames-file=string
タイル名を決定するために使用する GeoNames ファイルの名前。 通常
都市15000.zip ジオネームから ⟨http://download.geonames.org/export/dump⟩ 。
--keep-complete=boolean
--keep-complete=false 間の XNUMX つの追加プログラム フェーズを無効にする
分割と最終配布フェーズ (非推奨)。 と呼ばれる最初のフェーズ
gen-problem-list は、境界を越えているすべてのウェイと関係を検出します
XNUMX つ以上の出力ファイル。 handle-problem-list と呼ばれる XNUMX 番目のフェーズでは、
これらのウェイとリレーションの座標を計算し、すべての出力ファイルを計算します。
交差または囲まれています。 情報は最後の dist-phase に渡されます。
XNUMX つの一時ファイル。 これにより、壊れたポリゴンが回避されますが、必要になることに注意してください
入力ファイルを少なくとも XNUMX 回追加で読み取ります。
で指定しないでください。 --オーバーラップ 正当な理由がない限り。
デフォルト: true
--mapid=int型
分割ファイルのファイル名を設定します。 この例では、最初のファイルが呼び出されます
63240001.osm.pbf そして次は 63240002.osm.pbf などがあります。
デフォルト:63240001
--最大面積=int型
処理中に XNUMX 回のパスで処理できる領域の最大数。
処理の第 1 段階。 これは 4096 から XNUMX までの数値でなければなりません。
ソースファイルのパスが少なくなるため、全体的な処理が速くなりますが、
また、より多くのメモリが必要です。 メモリが不足していることがわかったが、したくない場合
あなたを増やすために --最大ノード数 代わりにこれを減らしてみてください。 これを変更すると、
分割の結果には影響しません。純粋にメモリをトレードオフできるようにするためです
パフォーマンスのために。 処理の最初の段階には固定メモリがあることに注意してください
これが何に設定されているかに関係なくオーバーヘッドが発生するため、メモリが不足している場合
前 エリアリスト ファイルが生成されたら、 -Xmx
値を変更するか、分割しようとしている入力ファイルのサイズを小さくしてください。
デフォルト:512
--最大ノード=int型
結果ファイルのいずれかに含めることができるノードの最大数。 デフォルト
かなり保守的です。マップを取得する前に、かなり大きくすることができます
大きすぎます」というメッセージ。 実験はあまり行われていません。 これも大きいほど
値を大きくすると、分割段階で必要なメモリが少なくなります。
デフォルト:1600000
--最大スレッド数=値
によって使用されるスレッドの最大数 mkgmap-スプリッター.
デフォルト: 4 (自動)
--混合=boolean
入力 osm ファイルにノード、ウェイ、リレーションが混在している場合、または
ID は厳密にソートされていません。 パフォーマンスを向上させるには、 浸透 sort
機能。
デフォルト:false
--トリムなし=boolean
タイルの端から空きスペースを切り取らないでください。 次の場合、このオプションは無視されます。
--ポリゴンファイル 使用されている。
デフォルト:false
--タイル数=値string
分割ファイルが指定されていない場合に使用されるターゲット値。 分割は次のように行われます。
指定された数のタイルが生成されます。 の --最大ノード数 この場合、値は無視されます
オプションが与えられます。
--output =string
出力ファイルが書き込まれる形式。 可能な値は、xml、pbf、
o5m、シミュレートします。 デフォルトは pbf で、最小のファイル サイズを生成します。
o5m 形式は書き込みが高速ですが、約 40% 大きいファイルが作成されます。 の
Simulate オプションはデバッグ用です。
--output-dir =path
スプリッターが出力ファイルを書き込むディレクトリ。 指定された場合
ディレクトリへのパスが存在しません。 mkgmap-スプリッター それを作成しようとします。 デフォルトは
現在の作業ディレクトリ。
--オーバーラップ=string
r279 以降は推奨されていません。 と --keep-complete=false, mkgmap-スプリッター 含めるべき
境界ボックスの外側のノード。 mkgmap 正確に正確に切り取ることができます
国境。 このパラメーターは、そのオーバーラップのサイズを制御します。 それはマップ単位であり、
デフォルトの 2000 が使用されます。これは、緯度または経度の約 0.04 度を意味します。
If --keep-complete=true アクティブであり、 --オーバーラップ が与えられると、警告が表示されます
この組み合わせはめったに意味がないからです。
--polygon-desc-file=path
osm ファイル (.o5m、.pbf、.osm) と境界ポリゴンを記述する名前付きの方法
タグ name と mapid を持つ OSM ウェイ。
--ポリゴンファイル=path
浸透ポリゴン ファイル形式のバウンディング ポリゴンを含むファイルの名前
. mkgmap-スプリッター は、面積を計算するときにこのファイルを使用します。 最初に計算します
指定されたを使用するグリッド - 解像度. 入力ファイルが読み込まれ、ノードごとに
関連するグリッド領域のカウンタが増加します。 入力ファイルに
境界ボックス、これはグリッドに適用されるため、境界ボックスの外側のノード
は無視されます。 次に、指定されている場合、境界ポリゴンを使用してそれらのグリッドをゼロにします
境界ポリゴン領域の外側の要素。 ポリゴン領域が説明する場合
頂点が 40 以下の直線領域、 mkgmap-スプリッター しようとします
領域に正確に収まる出力ファイルを作成します。それ以外の場合は概算になります
長方形のポリゴン領域。
--precomp-sea=path
コンパイル済みの海のタイルを含むディレクトリの名前。 与えられた場合、 mkgmap-
スプリッタ と同じ方法で、プリコンパイルされた海のタイルを使用します。 mkgmap します。 使用
これは、ポリゴン ファイルを使用する場合、または --トリムなし=true および mkgmap 空の作成
* .img ファイルと「XNUMX つのファイルに十分なスペースがありません」で始まるメッセージが結合されている
すべての入力データのガーミン マップ".
--問題ファイル=path
問題を引き起こすことが知られているウェイとリレーションを含むファイルの名前
分割プロセス中。 次の場合にこのオプションを使用します。 --keep-complete 時間がかかりすぎたり、
メモリと --オーバーラップ あなたの問題を解決しません。
問題ファイルの構文:
道: # コメント...
関係: # コメント...
例:
way:2784765 # フェリー ガーンジー - ジャージー
--問題報告=path
で作成された生成された問題リストを書き込むファイルの名前
--keep-complete. 次の場合、パラメーターは無視されます。 --keep-complete=false. 再利用できます
このファイルと --問題ファイル パラメータを使用しますが、これは同じパラメータを使用する場合にのみ行ってください
の値 --最大ノード数 および - 解像度.
--解像度=int型
最初のフェーズで作成された密度マップの解像度。 間の値
1 と 24。デフォルトは 13 です。値を 14 に増やすと、XNUMX 倍の値が必要になります。
分割段階でのメモリ。 次の場合、値は無視されます。 --分割ファイル 与えられます。
--検索制限=int型
分割アルゴリズムの検索制限。 値が大きいほど、より良い分割が見つかる可能性がありますが、時間がかかります
より長いです。
デフォルト:200000
--分割ファイル=path
最初から計算するのではなく、以前に計算されたタイル面積を使用します。
ファイルは .list または .kml 形式にすることができます。
--ステータス頻度=int型
JVM によって使用されるメモリの量を表示します -- ステータス頻度 秒。 =0 に設定
無効にします。
デフォルト:120
--停止後=string
デバッグ: 特定のプログラム フェーズの後に停止します。 split、gen-problem-list、または
ハンドル問題リスト。 デフォルトは dist で、これはすべてのフェーズを実行することを意味します。
--wanted-admin-level=string
保持する必要がある境界関係の最小の admin_level 値を指定します
完了。 問題リスト処理の境界関係をフィルタリングするために使用されます。 の
デフォルト値 5 は、
admin_level は 5 以上 (5..11) です。 次の場合、パラメーターは無視されます。
--keep-complete=false. デフォルト: 5
--write-kml=path
エリアを書き出す kml ファイルの名前。 これに加えて
エリアリスト (これは常に書き出されます)。
特別オプション
- バージョン
パラメータの場合 - バージョン オプションのどこかにあり、 mkgmap-スプリッター 意志
バージョン情報を出力して終了するだけです。 バージョン情報は次のようになります。
splitter 279 compiled 2013-01-12T01:45:02+0000
- 助けて パラメータの場合 - 助けて オプションのどこかにあり、 mkgmap-スプリッター 意志
既知のすべての通常オプションのリストを簡単なヘルプとともに出力して終了します。
TUNING
最高のパフォーマンスのためのチューニング
使っている人へのちょっとしたヒント mkgmap-スプリッター 大きなファイルを分割する。
・より高速な処理のために --keep-complete=true、入力ファイルを o5m 形式に変換します
を使用して:
osmconvert -ドロップバージョン ファイル.osm -o =ファイル.o5m
・ オプション -ドロップバージョン オプションです。ファイルを必要なデータに減らします
by mkgmap-スプリッター および mkgmap.
· それでもパフォーマンスが低下する場合は、次のことを確認してください。 スプリッター.log. 単語を検索する
配布中。 次の行に次のようなものがあります。
1502回のパスで3エリア、一度に501エリアを処理
これは、スプリッターが入力ファイル入力を XNUMX 回読み取る必要があることを意味します。 --最大面積
パラメータは、領域の数よりもはるかに小さかった。 十分なヒープがある場合は、設定します
--最大面積 値を領域の数よりも大きい値に変更します。たとえば、
--最大面積=2048。 実行する mkgmap-スプリッター もう一度、あなたは見つけるべきです
1502 回のパスで XNUMX エリアを処理
· より多くの領域がより多くのメモリを必要とします。 ことを確認してください mkgmap-スプリッター 十分なヒープがある
(増加 -Xmx パラメータ) ガベージで多くの時間を無駄にしないように
コレクタ (GC) を使用しますが、システム I/O キャッシュ用にできるだけ多くのメモリを保持します。
· 可能な場合は、入力ファイルと出力ディレクトリに XNUMX つの異なるディスクを使用します。 あなたがいつ
入力と出力には o5m 形式を使用します。
・ご利用の場合 mkgmap r2415 以降でディスク容量は問題ありません。使用を検討してください。
--output=o5m 処理を高速化します。
低メモリ要件のチューニング
マシンの空きメモリが 1 GB 未満の場合 (ネットブックなど)、引き続き使用できます。 mkgmap-
スプリッタ、ただし、パラメーターを使用する場合は、忍耐が必要になる場合があります --keep-complete および
のようにファイルを分割したい ドイツ.osm.pbf またはより大きなもの。 必要に応じて、数を減らします
50までの並列処理領域の --最大面積 パラメータ。 使用する必要があります
--keep-complete=false ヨーロッパのように地域を分割するとき。
注意事項
・出力できるエリア数の上限がなくなりました(従来は
255でした)。 エリアが増えるということは、.osm でより多くのパスが必要になる可能性があるということです。
ファイルであるため、スプリッターの実行に時間がかかります。
· ウェイまたはリレーションが属することができる領域の数に制限がなくなりました (以前は
4)でした。
onworks.net サービスを使用してオンラインで mkgmap-splitter を使用する