バックグラウンド
Windows デスクトップ用に取り組んでいるコンパクトなオフライン マップ ソリューション用に、世界用に縮小サイズのベクター mbtiles ファイルを作成しようとしています。そうするために、OsmAnd の縮小サイズのWorld_basemap_2.obfがまさに必要なものであることがわかりましたが、mbtiles OSM 形式であるため、mbtiles を生成できます。obfは、シェープ ファイルから生成された次の OSM ファイルを使用して作成されました。これらはhttp://builder.osmand.net/basemap/で入手できます。
私が抱えている問題は、mbtiles を作成するには、それらを 1 つの OSM ファイルに結合する必要があることです。osm2vectortiles
ここにある mbtiles を生成するためのガイドhttp://osm2vectortiles.org/docs/own-vector-tiles/。
まず、osm ファイルを処理するためにそれらを抽出します。
問題
とフラグを使用osmconvert
してファイルを結合すると、多くの関係とウェイが削除され、ファイルサイズが大幅に異なります。--complete-ways
--complex-ways
例:
osmconvert proc_line_tertiary_out.osm --complete-ways --complex-ways -o=tertiary.o5m
ファイルのサイズは 133,691 kb になります
osmconvert tertiary.o5m --complete-ways --complex-ways -o=tertiary.csv
合計13131405個のノード、ウェイ、およびリレーションを含む CSV が生成されます
osmconvert tertiary.o5m proc_line_ferry_out.osm.o5m --complete-ways --complex-nodes -o=combined.o5m
tertiary.o5mをproc_line_ferr_out.osm.o5m (上記と同じように生成) とマージし、CSV に変換します。
合計1195239のノード、ウェイ、およびリレーションを含む CSV が生成されます...これは大幅に少なく、非常に懸念されます。2 つのファイルを結合しても、元のファイルよりも少ないノード、ウェイ、およびリレーションを作成するべきではありません。
質問
私は何を間違っていますか?
osm ファイルを結合する別の方法はありますか?
osmosis
(負のノードを処理できないと読んだことがあります。)おそらく複数のosmファイルからmbtilesを生成する別の方法はありますか?
結合しようとしているファイル
- points.osm.bz2
- polygon_aeroway_military_tourism.osm.bz2
- polygon_lake_water.osm.bz2
- polygon_natural_landuse.osm.bz2
- proc_line_admin_level_out.osm.bz2
- proc_line_ferry_out.osm.bz2
- proc_line_motorway_out.osm.bz2
- proc_line_primary_out.osm.bz2
- proc_line_railway_out.osm.bz2
- proc_line_secondary_out.osm.bz2
- proc_line_tertiary_out.osm.bz2
- proc_line_trunk_out.osm.bz2
- citys.osm.bz2
- coastline.osm.bz2
OSMConvert
osmconvert
と説明する
2 つ以上の地域の統合
特定の条件下では、OSM データ ファイルをマージできます。同じ を持つオブジェクト (ノード、ウェイ、リレーション) を保持している場合
id
、それらは同じ内容を持っている必要があります。例: ウェイが 2 つの地域ファイル間の地理的境界を越える場合、ウェイ データセットには、関連するファイルの境界内にないノードへの参照であっても、すべてのノード参照が含まれている必要があります。つまり、そのような領域は、オプションを使用して切り取られていてはなりません--drop-brokenrefs
。
それは、私がやろうとしていることができないということですか?ファイルに共通点がなくても、すべてのノード、ウェイ、リレーションを保持したい。
試み
osmconvert polygon_aeroway_military_tourism.osm polygon_natural_landuse.osm -o=result.osm
結果
<?xml version='1.0' encoding='UTF-8'?>
<osm version="0.6" generator="osmconvert 0.7T">
<node id="-10000000000001" lat="-1.0015443" lon="-80.5349586"/>
<way id="-100000001" version="1">
<nd ref="-10000000000001"/>
<nd ref="-10000000000002"/>
<nd ref="-10000000000003"/>
<nd ref="-10000000000004"/>
<nd ref="-10000000000005"/>
<nd ref="-10000000000006"/>
<nd ref="-10000000000007"/>
<nd ref="-10000000000008"/>
<nd ref="-10000000000009"/>
<nd ref="-10000000000010"/>
<nd ref="-10000000000011"/>
<nd ref="-10000000000012"/>
<nd ref="-10000000000013"/>
<nd ref="-10000000000014"/>
<nd ref="-10000000000015"/>
<nd ref="-10000000000016"/>
<nd ref="-10000000000017"/>
<nd ref="-10000000000018"/>
<nd ref="-10000000000019"/>
<nd ref="-10000000000020"/>
<nd ref="-10000000000021"/>
<nd ref="-10000000000022"/>
<nd ref="-10000000000023"/>
<nd ref="-10000000000024"/>
<nd ref="-10000000000025"/>
<nd ref="-10000000000026"/>
<nd ref="-10000000000027"/>
<nd ref="-10000000000028"/>
<nd ref="-10000000000029"/>
<nd ref="-10000000000030"/>
<nd ref="-10000000000031"/>
<nd ref="-10000000000032"/>
<nd ref="-10000000000033"/>
<nd ref="-10000000000034"/>
<nd ref="-10000000000035"/>
<nd ref="-10000000000036"/>
<nd ref="-10000000000037"/>
<nd ref="-10000000000038"/>
<nd ref="-10000000000039"/>
<nd ref="-10000000000040"/>
<nd ref="-10000000000041"/>
<nd ref="-10000000000042"/>
<nd ref="-10000000000043"/>
<nd ref="-10000000000044"/>
<nd ref="-10000000000045"/>
<nd ref="-10000000000046"/>
<nd ref="-10000000000047"/>
<nd ref="-10000000000048"/>
<nd ref="-10000000000049"/>
<nd ref="-10000000000050"/>
<nd ref="-10000000000051"/>
<nd ref="-10000000000001"/>
</way>
</osm>