プライベートシェープファイルデータをOSMデータと統合(マージ)する


11

バックグラウンド

GeofabrikからアルバータOSMデータをダウンロードし、PostgreSQL 9.1、PostGIS 2.0、Mapnik 2.1.0、osm2pgsql、Apache 2、mod_tile、rendered、およびOpenLayersを使用してプライベートLinuxサーバーで実行します。

データはosm2pgsql次のようにインポートされました。

osm2pgsql -W -K -S /usr/local/share/osm2pgsql/default.style -d osm alberta.osm.bz2

問題

アルバータ州のOSMデータは不完全です。OSMデータを改善する一連のシェープファイルが提供されました。

City.dbf, City.prj, City.sbn, City.sbx, City.shp, City.shp.xml, City.shx

さらに、村、都市部、市区町村の境界などの追加のシェープファイル。pgAdmin プラグインを使用して、シェープファイルをPostgreSQLに正常にインポートしました。このCity.prjファイルには、その投影法が次のように記述されています。

GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]]

シェープファイルデータとOpenStreetMap(OSM)データにはそれぞれ独自のデータベースがありますが、シェープファイルデータをOSMデータベースにインポートしたいと考えています。(これはプライベートサーバーであり、OSMデータのローカルコピーです。シェープファイルデータは合法的に共有できません。)

アップデート#1

明確にするために、シェープファイルには道路が含まれていません。自治体の境界(OSMデータの一部ではないこと)、都市(OSMデータの一部である)、および大都市の都市境界(一部である可能性がある) OSMデータと競合しています)。

質問

新しい都市がマップに表示されるように、シェープファイルデータをOSMデータとマージするにはどうすればよいですか?

注:私の主な関心事は、重複データの解決です(たとえば、エドモントンはOSMと調達されたシェープファイルの両方にリストされています)。

関連リンク

ありがとうございました!


osmタグを使用してシェープファイルをpostgisにロードします-wiki.openstreetmap.org/wiki/Canadian_tagging_guidelines#Namingその後、タイルサーバーを更新すると、osmスタイルのデータとしてすべての新しい機能がロードされます。
マッパーズ

回答:


5

前書き

重複したデータを検出して削除するには、かなりの量の手動作業が必要になる可能性があります。重複データを検出して解決するとき; シェープファイル、PostGIS DB、またはOSMデータとして、両方のソースを同じジオ形式にする必要があります。

ワークフロー

次のワークフローは、重複データをマージおよび解決する前に、両方のデータソースをOSMとして使用することに基づいています。

データをOSMに変換するには、いくつかのオプションがあります。

A]

  1. 必要に応じて、シェープファイルデータをOSMに変換します。2013年以降にリリースされたogr2ogrのバージョン(バージョン1.10以降、IIRC)もSHPをOSMに変換できます。ありますogr2osm、あなたが指摘したとおりogr2osmのカップル異なるバージョンがあります、1は、使用に関係なく-私が好むpnormanのは、それが最新です。何があっても、翻訳ファイルが使用しているogr2osmのバージョンと互換性があることを確認してください(簡単にするために、リンクしたものはogr2osmのバージョンと互換性がある必要があります)。pnormanのogr2osmと互換性のある翻訳ファイルの例として、ここを参照してください。

変換ファイルに、シェープファイルに必要なすべての情報が含まれていることを確認してください。翻訳ファイルは、シェープファイルのタイプと属性をOSMがタグと呼ぶものに変換します。これはキーと値で構成されます。

1a。ogr2osmを実行します。

  1. オープンJOSM混同のプラグインをダウンロード

  2. これで、govデータはosmファイルになりました。josmを開き、[ファイル]> [データをレイヤーとして開きます。

  3. OSMデータがコンピューターにローカルに保存されている場合は、josmで開くと、新しいレイヤーとしても開きます。

  4. これら2つのデータソースをマージし、重複するデータを解決することを「融合」と呼びます。conflationプラグインを実行して、すべての競合を解決します。

JOSMがメモリ不足になった場合(大きなファイルを使用する場合など)、属性のタイプを分離し、それぞれ異なる種類のデータ(境界や土地利用、高速道路、建物など)でこのワークフローを複数回完了し、最後にマージしますオスミウムまたは別のツールを使用して、osmファイルをまとめます。

B. JOSMはシェイプファイルも読み取ることができますが、SHPサポートは完全ではなく、この方法はシェイプファイルを完全にメモリにロードできることを前提としています...

  1. JOSMを起動します。
  2. シェープファイルを開きます(例:)filename.shp
  3. すべて選択。
  4. JOSMで、SHPからインポートされた属性とプロパティを編集し、各属性がOSMタグに対応するように変更します。
  5. OSM形式で保存します。
  6. A4から続行して統合する

OSMとしてインポート

次のように、OpenStreetMapデータをシステムにインポートします。

  1. JOSMを使用して変換されたOpenStreetMap(OSM)ファイルを含むディレクトリに移動します。
  2. データベースで次のコマンドを実行します。
    CREATE EXTENSION hstore;
    osm2pgsql -j -W \
              -d osm filename.osm

この-jオプションは、osm2pgsqlがタグをhstore列にインポートするよう指示するため重要です。これにより、基礎となるデータ構造が保持され、すべてのタグがデータベースにインポートされます。

Mapnikレイヤーを作成する

データをマップに表示するには、レイヤーとそのレイヤーのスタイルを追加します。これは次のように簡単にできます。

  1. 編集mapnik-stylesheets/osm.xml
  2. 終了</Map>タグの前に次のXMLコードを挿入します...

...

<Layer name="prefix_zone" status="on" srs="&osm2pgsql_projection;">
  <StyleName>zones</StyleName>
  <Datasource>
    <Parameter name="table">
    (select way from prefix_line order by tags desc, z_order) as zones
    </Parameter>
    &datasource-settings;
  </Datasource>
</Layer>

Mapnikスタイルを作成する

前のセクションの続き:

  1. 最後の</Style>タグ(3350行目付近)を見つけます。
  2. &layer-shapefiles;ディレクティブの前に次のXMLコードを挿入します。

...

<Style name="zones">
  <Rule>
    &maxscale_zoom1;
    &minscale_zoom19;
    <LineSymbolizer stroke="#0065BD" stroke-width="2.5" />
  </Rule>
</Style>

ロードマッチャー

ロードマッチャーは役に立つかもしれない別のツールです


OpenJUMP 1.5.1はRoadMatcher 1.4と互換性がありません。RoadMatcher 1.4を使用できるOpenJUMP 1.3.1は、PostGIS 2.0と互換性がありません(OpenJUMP find_extentではなくOpenJUMPが呼び出されるためst_find_extent)。データベースにPostGIS 2.0がインストールされています。
デイブジャービス

JOSMのOpenDataプラグインはシェープファイルを読み取ります:wiki.openstreetmap.org/wiki/JOSM/Plugins/OpenData
Dave Jarvis
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.