Dengan QGIS 2.12.2, bagaimana saya bisa mengatur pelabelan lapisan untuk menghindari menempatkan label di mana fitur dari lapisan lain sudah ada?
Misalnya, jika saya memiliki layer polyline stream / sungai yang berisi "centerlines" danau, dan saya menempatkan layer poligon "danau" di atasnya dalam urutan gambar, saya tidak ingin layer sungai untuk menempatkan label di dalam danau . Sebaliknya, saya lebih suka memiliki sungai berlabel di luar danau (sesuai kebutuhan). Dengan begitu, saya dapat menempatkan label dari lapisan danau dan saya tidak mengalami tabrakan label.
Berikut ini adalah contoh, di mana (saya sengaja meletakkan garis di atas untuk tujuan visual) yang saya harapkan untuk dicapai adalah tidak ada label garis tengah sungai yang ditampilkan di dalam poligon danau:
Jawaban:
Pelabelan otomatis adalah masalah yang sangat sulit, tetapi geometri fitur tidak terlalu buruk.
Bahkan jika Anda bisa mendapatkan penempatan untuk bekerja secara memadai sebagian besar waktu, ada kemungkinan ada pengecualian. Beberapa di antaranya akan Anda perhatikan dan mungkin bisa diatasi. Orang lain yang tidak akan Anda perhatikan ketika membuat peta besar atau tileset karena Anda tidak bisa menuangkan setiap inci peta Anda di berbagai skala. Hampir selalu Anda akan memiliki keinginan untuk memindahkan beberapa label yang ditempatkan secara otomatis secara manual, dari perspektif kartografi.
Seperti yang saya sarankan dalam komentar saya, saya akan membuat masalah lebih mudah untuk mesin pelabelan. Dalam hal ini, saya akan melakukan ini dengan mendefinisikan sungai saya sebagai tampilan tabel *, dengan geometri sungai terpotong untuk menghormati batas danau. Dengan begitu, tidak ada fitur sungai di dalam danau untuk diberi label, dan tidak ada tabrakan label.
* Saya berasumsi penggunaan RDBMS di sini, seperti PostgreSQL / PostGIS, untuk kenyamanan dan kemampuan untuk hanya memperbarui sumber data Anda yang berwibawa dan memiliki tampilan bekerja sendiri tanpa campur tangan Anda. Tetapi Anda juga dapat melakukan beberapa pekerjaan di muka dengan file statis untuk klip dan menghapus fitur, tetapi saya tidak merekomendasikan ini jika Anda pernah berencana untuk mengunjungi kembali peta.
Contoh:
Dimulai dengan dua shapefile (bisa berupa tabel basis data) sungai dan danau, dengan sungai memotong danau dan menyebabkan masalah pelabelan yang sulit diselesaikan sepenuhnya dan dengan percaya diri:
Bawa ini ke Postgres jika Anda perlu dengan shp2pgsql :
shp2pgsql -s 4326 /data/lake public.lakes | psql -d mydb
shp2pgsql -s 4326 /data/river public.rivers | psql -d mydb
Kemudian tentukan tampilan dengan ST_Difference :
Tambahkan tampilan ke tata letak Anda:
Meskipun masalah dalam contoh saya sengaja dibuat, gaya di dua lapisan sungai (asli dan tampilan) adalah sama, dan mereka ditempatkan di atas danau dalam urutan gambar. Saat Anda memperbarui geometri danau atau sungai, Anda tidak perlu melakukan lebih dari sekadar menyegarkan rendering.
sumber
Dalam QGIS> = 2.12 Anda dapat mengatur lapisan poligon "danau" sebagai penghalang label. Ini dilakukan melalui properti layer dari layer "lake", di bawah bagian 'Labels'. Ubah kotak kombo di bagian atas dari " Tanpa label " menjadi " Mencegah label lain dari fitur penutup di lapisan ini ".
sumber
Saya menemukan pelabelan secara umum cukup sulit, setidaknya untuk menghasilkan label yang menyenangkan hati pembuat peta saya. Sementara fitur pelabelan otomatis berfungsi dengan baik 80% dari waktu, ada kasus-kasus seperti masalah pelabelan sungai / danau Anda di mana ia tidak menghasilkan pelabelan yang bagus. Pelabelan otomatis sering dikaitkan dengan geometri fitur, misalnya berapa banyak bagian dalam satu garis sehingga pada awalnya semua bagian diberi label. Tentu saja QGIS memiliki cara untuk mencegah pelabelan berulang, yang juga tergantung pada skala tampilan peta saat ini.
Yah, tip saya bukan solusi cepat. Saya sering membuat layer khusus hanya untuk pelabelan, sehingga label saya lebih mudah dikontrol. Dan seringkali fitur geometri untuk representasi kartografi dapat bertabrakan dengan geometri yang baik untuk pelabelan. Jadi saya akan mengusulkan untuk membuat layer baru di mana aliran tidak melintasi danau, sehingga Anda dapat menghindari masalah sama sekali. Memiliki lapisan pelabelan ekstra juga dapat membantu untuk mencegah masalah di mana arah pelabelan tidak dalam yang dimaksudkan karena itu terkait dengan bagaimana geometri itu dibuat.
Yah, saya khawatir tip saya bukan yang Anda harapkan, tapi saya harap alternatif saya mendekati saya, entah bagaimana, membantu Anda.
sumber
ada plugin yang disebut " Mask " yang dapat digunakan untuk menyaring label berdasarkan poligon.
Namun, seperti yang disebutkan dalam komentar saya sebelumnya, akan jauh lebih mudah jika Anda dapat membagi garis di persimpangan dengan danau (lihat metode yang berbeda di sini ). Kemudian Anda dapat menentukan label berukuran nol untuk segmen yang ada di dalam danau ("Lapisan"> "Pelabelan"> "Pengaturan Data Defined"> "Ukuran" lalu pilih kolom tempat Anda menyimpan ukuran label). Pemisahan menjaga sebagian besar properti jaringan sungai Anda dan dapat dibalik dengan larut, sehingga Anda dapat terus bekerja dengan satu lapisan (simpan total panjang dalam tabel atribut tertentu jika diperlukan).
sumber