Saya mencari solusi pelabelan yang lebih baik untuk proyek saya. Tampaknya sulit - tetapi mungkin saya hanya buta?
Proyek-proyek saya: Saya membuat buku kenaikan sepeda yang sudah dicetak. Skala utama adalah 1: 75k dan ada skala kota 10k dan skala ikhtisar 200k. Karena saya suka memiliki kualitas penempatan label "kartografi", saya menyentuh setiap label dan memindahkannya ke posisi terbaiknya. Saya harus melakukan ini untuk setiap skala tunggal sehingga kolom pelabelan saya untuk 3 skala terlihat seperti ini ('skala 1' berarti 10k 'skala 2' untuk 75k dan 'skala 3' untuk 200k):
Tetapi sebelum saya mencoba menjelaskan secara rinci, saya membangun Proyek-Contoh sederhana ini di mana Anda dapat melihat dan menguji solusi pelabelan (lama) saya untuk 3 skala: http://www.map-site.de/tmp/LabelingExample.zip
Yah, itu berfungsi tetapi:
- Anda perlu memberi label pada kolom untuk setiap skala
- Anda membutuhkan layer untuk setiap skala
Saya mencari solusi yang lebih baik tanpa duplikat layer dan banyak kolom. Saya mengandalkan pikiran kreatif Anda!
EDIT: Saya menambahkan dua peta yang sangat padat ini sebagai contoh:
Hanya ada satu posisi yang mungkin untuk "St. Paulus Dom" dan itu bukan kuadran:
Setiap label harus dipindahkan secara manual. Beberapa label tidak ada dalam kuadran.
Jawaban:
Saya harus mengatakan bahwa apa yang Anda minta agak rumit karena Anda ingin pelabelan terlihat jelas dalam skala kecil maupun skala besar (paling pas). Jadi, idenya di sini adalah bagaimana menempatkan titik yang dapat terlihat pada skala yang berbeda.
Setelah beberapa pengujian, saya menemukan bahwa alih-alih membuat beberapa kolom untuk setiap rentang skala dan meletakkan koordinat untuk x dan y pada titik tetap, Anda dapat membuat hanya satu kolom untuk posisi prioritas untuk setiap titik untuk lokasi terbaik, seperti yang Anda lihat di bawah ini (I ikuti lokasi di file Anda):
Lalu, Anda pergi ke
Layer propoerties -> Labels -> Placement -> Offset from point
atauAround point
, keduanya OK, tapi saya memilihOffset from point
.Di
Quadrant
PilihData defined override -> Edit
, dan masukkan formula berikut:Di sini,
"Priority"
adalah lokasi titik yang ditentukan dalam nama bidangPriority
Anda perlu menggunakan offset untuk menggeser poin untuk visibilitas yang lebih baik, dan saya menggunakan rumus berikut:
Berikut adalah output pada skala yang berbeda:
Untuk melihat apa yang direpresentasikan oleh setiap angka [0-8] di lokasi mana, silakan lihat gambar berikut:
Anda dapat mengontrol posisi label dengan menambahkan nilai yang sesuai dengan masing-masing posisi. Namun sayangnya, Anda tidak dapat melakukannya dengan pendekatan 'klik-dan-pindah'. Anda perlu melakukannya di tabel atribut.
Memperbarui:
Berdasarkan kebutuhan Anda bahwa 9 posisi kuadran tidak cukup, saya menemukan jika Anda memilih
Cartography
alih-alihOffset from point
, dan memilih prioritas, seperti pada gambar di bawah ini, Anda akan memiliki 12 posisi prioritas alih-alih 9. Anda perlu membuat bidangText
jenis, lalu hanya menempatkan singkatan yang Anda inginkan untuk posisi terbaik 'TL', 'TSL', 'T' ... dll. Anda juga dapat memasukkan jarak untuk menghindari label menutupi titik.sumber
Anda dapat menyingkirkan banyak lapisan dengan menggunakan ekspresi.
Dari apa yang saya lihat dalam contoh Anda, perbedaan utama antara lapisan adalah
Data defined Coordinate X Y
definisi yang menunjuk pada skala x, nilai y yang berbeda.Anda dapat melakukannya dalam satu lapisan dengan memilih dropdown di sebelah X dan Y dan memilih edit ... yang akan memunculkan pembuat string ekspresi.
Untuk X Anda dapat menggunakan sesuatu seperti
Dan untuk Y Anda dapat menggunakan sesuatu seperti
Ini harus menggunakan nilai scale1 x, y jika skala peta kurang dari atau sama dengan 1: 10.000 dan skala 2 x, y jika skala peta kurang dari atau sama dengan 1: 75.000 dan skala 3 x, y untuk apa pun di atas itu .
Jika Anda harus memposisikan secara manual untuk setiap skala, saya tidak melihat bagaimana Anda dapat melepaskan diri dari skala # -x dan skala # -y kolom untuk setiap level yang telah Anda tetapkan.
sumber