Di QGIS 1.8 saya menggunakan plugin openstreetmap untuk meminta data dari server, atau membuka file .osm XML, yang menghasilkan 3 layer (poligon, polyline, dan titik) di QGIS.
Ini luar biasa (memberi atau mengambil bug 64bit yang sangat memengaruhi area yang baru dipetakan yang saya kerjakan), tetapi bagaimana saya melakukannya di QGIS 2.x?
Saya tidak dapat menemukan dokumentasi yang diperbarui tentang hal itu.
Di menu vektor, saya sudah mencoba mengimpor dari server osm, saya mendapatkan file .osm, tapi kemudian saya macet. Ada pilihan menu untuk memuat file XML, tetapi menghasilkan spatialite db, yang tampaknya hanya memiliki tabel non-geometri ketika saya mencoba menambahkannya sebagai lapisan spatialite. Jika saya membuka tabel atribut, saya bisa melihat id node, cara dan sebagainya, tapi saya tidak tahu bagaimana cara memanfaatkannya.
Saya juga mencoba menambahkan layer vektor dari file XML .osm. Saya mendapatkan jendela gpsbabel yang tidak menunjukkan apa-apa, akhirnya pesan sumber data tidak valid di QGIS.
sumber
Jawaban:
Pembaruan untuk QGIS 3.x : Pengimpor OSM lama dari QGIS 2 dijatuhkan di QGIS 3 karena banyak bug yang tidak terselesaikan. Plugin QuickOSM juga memungkinkan untuk membaca file mentah osm. Anda dapat menggunakan Layer pengguna - Tambahkan Layer - Tambahkan Layer Vektor sebagai gantinya. Dalam hal ini, data OSM dibuka dengan GDAL sebagaimana didokumentasikan oleh http://gdal.org/drv_osm.html
Di QGIS 2.x , Ada 3 langkah yang terlibat
Lapisan akan ditambahkan ke peta, jika Anda ingin semua node, cara Anda dapat mengulangi langkah 3 dengan opsi lain.
http://wiki.openstreetmap.org/wiki/QGIS#QGIS2_OpenStreetMap_Vectors
sumber
Saya menemukan mengunduh data OSM menggunakan plugin dan melalui gerakan impor dan ekspor sangat membosankan. Itu sebabnya saya menulis solusi yang berbeda: http://anitagraser.com/2014/05/31/a-guide-to-googlemaps-like-maps-with-osm-in-qgis/
Ringkasan:
File OSM mentah bisa sangat besar. Itu sebabnya pasti lebih baik untuk mengunduh format .pbf biner terkompresi daripada format XML .osm. Sebagai sumber unduhan, saya akan merekomendasikan Geofabrik .
Untuk langkah preprocessing pertama: mengekstraksi bidang yang diminati, kita dapat menggunakan Osmosis:
C:\Users\anita_000\Geodata\OSM_Noirmoutier>..\bin\osmosis.bat --read-pbf pays-de-la-loire-latest.osm.pbf --bounding-box left=-2.59 bottom=46.58 right=-1.44 top=47.07 --write-xml noirmoutier.osm
Sementara QGIS juga dapat memuat file .osm, saya menemukan bahwa kinerja dan akses ke atribut jauh lebih baik jika file .osm dikonversi ke spasial.
C:\Users\anita_000\Geodata\OSM_Noirmoutier>ogr2ogr -f "SQLite" -dsco SPATIALITE=YES noirmoutier.db noirmoutier.osm
Di QGIS, kita bisa memuat poin, garis, dan multipoligon menggunakan Add SpatiaLite Layer. Saat kami memuat tabel spatialite, ada beberapa masalah:
Membuat poligon sungai yang hilang bukanlah masalah besar:
Membuat poligon darat (atau poligon laut jika Anda lebih suka itu karena alasan tertentu) sedikit lebih terlibat karena sebagian besar waktu garis pantai tidak akan ditutup karena alasan sederhana bahwa kita sering memotong sebidang tanah dari benua utama . Karena itu, sebelum kita dapat menggunakan alat Polygonize, kita harus menutup area tersebut. Untuk melakukan itu, saya sarankan untuk terlebih dahulu memilih garis pantai menggunakan "other_tags" LIKE '% "natural" => "garis pantai"%' dan buat layer baru dari pilihan ini (simpan pilihan sebagai ...) dan edit (jangan lupa) untuk mengaktifkan gertakan!) untuk menambahkan garis untuk menutup area. Lalu poligonkan.
sumber
--config OGR_SQLITE_SYNCHRONOUS OFF
.Jika Anda tidak menyukai plugin, ambil data OSM yang Anda butuhkan dengan Overpass API, dan tambahkan hasilnya ke QGIS dengan
Add Vector Layer
(enabelingAll files
filter).QGIS 2.0 menggunakan importir ogr2ogr OSM GDAL 1.10 yang melakukan pekerjaan dengan baik.
Dukungan relasi tampaknya lebih baik daripada plugin saat ini.
Pastikan Anda mengunduh cara dan relasi sepenuhnya , itu semua simpul cara, dan semua anggota relasi, dengan semua simpul mereka.
sumber
Anda tahu, Anda tidak perlu memasukkan data ke SpatialLite. Anda bisa saja:
sumber