Konflasikan (gabungkan) data shapefile pribadi dengan data OSM


11

Latar Belakang

Mengunduh data OSM Alberta dari Geofabrik dan menjalankannya di server Linux pribadi menggunakan PostgreSQL 9.1, PostGIS 2.0, Mapnik 2.1.0, osm2pgsql, Apache 2, mod_tile, renderd, dan OpenLayers:

Data diimpor menggunakan osm2pgsqlsebagai berikut:

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

Masalah

Data OSM untuk Alberta tidak lengkap. Saya diberi satu set shapefile yang meningkatkan data OSM:

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

Ditambah shapefile tambahan untuk desa, daerah perkotaan, batas kabupaten kota, dan sebagainya. Saya telah berhasil mengimpor shapefile ke PostgreSQL menggunakan plugin pgAdmin . The City.prjberkas menjelaskan proyeksi sebagai berikut:

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]]

Data shapefile dan data OpenStreetMap (OSM) masing-masing memiliki database sendiri, tetapi saya yakin saya ingin mengimpor data shapefile ke dalam database OSM. (Ini adalah server pribadi dan salinan lokal dari data OSM; data shapefile tidak dapat dibagikan secara legal.)

Perbarui # 1

Agar lebih jelas, shapefile tidak mengandung jalan: hanya batas kota (yang jelas bukan bagian dari data OSM), kota (beberapa di antaranya merupakan bagian dari data OSM), dan batas kota untuk kota-kota besar (beberapa di antaranya mungkin konflik dengan data OSM).

Pertanyaan

Bagaimana cara menggabungkan data shapefile dengan data OSM sehingga kota-kota baru muncul di peta?

Catatan: Perhatian utama saya adalah menyelesaikan data duplikat (misalnya, Edmonton terdaftar di OSM dan shapefile yang dibeli).

tautan yang berhubungan

Terima kasih!


Muatkan shapefile Anda ke postgis menggunakan tag osm - wiki.openstreetmap.org/wiki/Canadian_tagging_guidelines#Naming lalu segarkan server ubin Anda harus memuat semua fitur baru dalam data bergaya osm.
Mapperz

Jawaban:


5

pengantar

Ini akan membutuhkan sejumlah besar pekerjaan manual untuk mendeteksi dan menghapus data yang digandakan. Saat Anda mendeteksi dan menyelesaikan data duplikat; Anda ingin kedua sumber berada dalam format geo yang sama: shapefile, DB PostGIS, atau sebagai data OSM.

Alur kerja

Alur kerja berikut ini didasarkan pada memiliki kedua sumber data sebagai OSM sebelum menggabungkan dan menyelesaikan data duplikat.

Ada beberapa opsi untuk mengubah data menjadi OSM:

SEBUAH]

  1. Konversikan data shapefile menjadi OSM sesuai keinginan Anda. Versi ogr2ogr dirilis pada 2013 atau lebih baru (versi 1.10 atau lebih baru, IIRC) juga dapat mengonversi SHP ke OSM. Ada juga ogr2osmseperti yang telah Anda catat: ada beberapa versi ogr2osm yang berbeda, tidak peduli yang mana yang Anda gunakan - Saya lebih suka pnorman's , ini adalah yang paling mutakhir. Apa pun yang terjadi, pastikan file terjemahannya kompatibel dengan versi ogr2osm yang Anda gunakan (demi kesederhanaan, yang saya tautkan harus kompatibel dengan versi ogr2osm). Lihat di sini sebagai contoh untuk file terjemahan yang kompatibel dengan ogr2osm pnorman.

Pastikan file terjemahan lengkap dengan semua informasi yang Anda inginkan di shapefile Anda. File terjemahan akan mengonversi Jenis dan atribut shapefile Anda ke dalam apa yang disebut OSM Tag , yang terdiri dari Tombol dan Nilai.

1a. jalankan ogr2osm.

  1. Buka josm , unduh plugin conflation

  2. Data pemerintah Anda sekarang menjadi file osm. Buka josm, File> buka Data Anda ada di sana sebagai layer.

  3. Jika Anda sudah memiliki data OSM yang disimpan secara lokal di komputer Anda, buka di josm, itu juga akan terbuka sebagai layer baru.

  4. Menggabungkan kedua sumber data ini bersama-sama dan menyelesaikan data duplikat dikenal sebagai penggabungan . Jalankan plugin conflation dan selesaikan semua konflik.

Jika JOSM kehabisan memori (misalnya, ketika menggunakan file besar), pisahkan jenis atribut dan selesaikan alur kerja ini beberapa kali, masing-masing dengan jenis data yang berbeda (misalnya batas dan penggunaan lahan; jalan raya; bangunan), dan akhirnya bergabung file osm bersama-sama menggunakan osmium atau alat lain.

B. JOSM juga dapat membaca shapefile walaupun dukungan SHP tidak sempurna dan metode ini mengasumsikan shapefile dapat dimuat seluruhnya ke dalam memori ...

  1. Mulai JOSM.
  2. Buka shapefile (mis., filename.shp).
  3. Pilih Semua.
  4. Di JOSM, Edit atribut dan properti yang diimpor dari SHP, dan ubah masing-masing atribut yang sesuai dengan tag OSM.
  5. Simpan sebagai format OSM.
  6. Lanjutkan dari A4 dan konfigurasikan

Impor sebagai OSM

Impor data OpenStreetMap ke dalam sistem sebagai berikut:

  1. Ubah ke direktori yang berisi file OpenStreetMap (OSM) yang dikonversi menggunakan JOSM.
  2. Jalankan perintah berikut dalam database:
    BUAT EXTENSION hstore;
    osm2pgsql -j -W \
              -d osm filename.osm

The -jpilihan adalah kunci karena petunjuk osm2pgsql untuk mengimpor tag ke dalam hstorekolom, ini melestarikan struktur data yang mendasari dan akan mengimpor semua tag ke dalam database.

Buat Mapnik Layer

Agar data muncul di peta, tambahkan layer dan gaya untuk layer itu. Ini bisa sesederhana berikut ini:

  1. Edit mapnik-stylesheets/osm.xml.
  2. Masukkan kode XML berikut sebelum </Map>tag penutup ...

...

<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>

Buat Gaya Mapnik

Melanjutkan dari bagian sebelumnya:

  1. Temukan </Style>tag terakhir (sekitar baris 3350).
  2. Masukkan kode XML berikut sebelum &layer-shapefiles;arahan:

...

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

Roadmatcher

roadmatcher adalah alat lain yang mungkin bisa membantu


OpenJUMP 1.5.1 tidak kompatibel dengan RoadMatcher 1.4. OpenJUMP 1.3.1, yang dapat menggunakan RoadMatcher 1.4, tidak kompatibel dengan PostGIS 2.0 (karena OpenJUMP find_extentlebih memilih panggilan daripada st_find_extent). Basis data telah menginstal PostGIS 2.0.
Dave Jarvis

Plugin JOSM's OpenData membaca shapefile: wiki.openstreetmap.org/wiki/JOSM/Plugins/OpenData
Dave Jarvis
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.