Dữ liệu được xác định vị trí nhãn cho nhiều hơn một tỷ lệ trong một lớp


9

Tôi đang tìm kiếm một giải pháp ghi nhãn tốt hơn cho các dự án của tôi. Điều này có vẻ khó khăn - nhưng có lẽ tôi chỉ bị mù?

Dự án của tôi: Tôi xây dựng sách in xe đạp đi bộ. Tỷ lệ chính là 1: 75k và có quy mô thành phố là 10k và quy mô tổng quan là 200k. Vì tôi muốn có chất lượng "bản đồ" của các vị trí nhãn, tôi chạm vào từng nhãn và di chuyển nó đến vị trí tốt nhất. Tôi phải làm điều này cho mỗi thang đo duy nhất để các cột ghi nhãn của tôi cho 3 thang đo trông như thế này ('scale 1' là 10k 'scale 2' cho 75k và 'scale 3' cho 200k):

nhập mô tả hình ảnh ở đây

Nhưng trước khi tôi cố gắng giải thích chi tiết, tôi xây dựng Dự án ví dụ đơn giản này, nơi bạn có thể xem và kiểm tra giải pháp ghi nhãn (cũ) của tôi cho 3 thang đo: http://www.map-site.de/tmp/LabelingExample.zip

Vâng, nó đang hoạt động nhưng:

  • Bạn cần cột ghi nhãn cho mọi quy mô
  • Bạn cần một lớp cho mọi quy mô

Tôi đang tìm kiếm một giải pháp tốt hơn nhiều mà không cần các lớp trùng lặp và hàng tấn cột. Tôi tin vào đầu óc sáng tạo của bạn!

EDIT: Tôi đã thêm hai bản đồ rất dày đặc này làm ví dụ:

nhập mô tả hình ảnh ở đây

Chỉ có một vị trí khả dĩ duy nhất cho "St. Paulus Dom" và đó không phải là bất kỳ góc phần tư nào: nhập mô tả hình ảnh ở đây

Mỗi nhãn phải được di chuyển bằng tay. Một số nhãn không nằm trong góc phần tư.


Các nhãn cần phải thực hiện một số tiêu chí cụ thể? Tôi không hiểu ý của bạn với "vị trí tốt nhất".
mgri

1
Với "vị trí tốt nhất" tôi có nghĩa là một vị trí theo yêu cầu bản đồ. Nó chủ quan hơn.
MAP

2
Tôi thấy rằng ví dụ của bạn sử dụng phông chữ, 'Noto Sans', mà tôi không có, và tôi đoán đó cũng là trường hợp của những người khác. Bạn có thể tải xuống phông chữ tại đây google.com/get/noto Sau khi cài đặt các phông chữ bạn phải khởi động lại QGIS.
TJ Rockefeller

Cảm ơn bạn đã thêm liên kết đó - đó là phông chữ chuẩn của bản cài đặt Mint của tôi.
MAP

Câu trả lời:


6

Tôi phải nói rằng những gì bạn đang yêu cầu hơi phức tạp một chút vì bạn muốn ghi nhãn rõ ràng ở quy mô nhỏ cũng như ở quy mô lớn (phù hợp nhất). Vì vậy, ý tưởng ở đây là làm thế nào để đặt điểm có thể nhìn thấy ở các tỷ lệ khác nhau.

Sau nhiều lần thử nghiệm, tôi thấy rằng thay vì tạo một số cột cho từng phạm vi tỷ lệ và đặt tọa độ cho x và y tại các điểm cố định, bạn chỉ có thể tạo một cột cho các vị trí ưu tiên cho mỗi điểm cho vị trí tốt nhất, như bạn có thể thấy bên dưới (I theo các vị trí trong tệp của bạn):

nhập mô tả hình ảnh ở đây

Sau đó, bạn đi đến Layer propoerties -> Labels -> Placement -> Offset from pointhoặc Around point, cả hai đều ổn, nhưng tôi đã chọn Offset from point.

  1. Tại QuadrantChọn Data defined override -> Editvà nhập công thức sau:

    nhập mô tả hình ảnh ở đây

    CASE 
    WHEN  $scale >= 200000 THEN  "priority"  
    WHEN  $scale < 200000 and $scale >= 75000 THEN  "priority"   
    WHEN  $scale < 75000 and $scale >=10000 THEN  5
    WHEN  $scale < 10000 THEN 2 
    END
    

    Đây "Priority"là vị trí của các điểm được xác định trong tên trườngPriority

  2. Bạn cần sử dụng offset để dịch chuyển các điểm để nhìn rõ hơn và tôi đã sử dụng công thức sau:

    CASE
    WHEN  $scale >= 200000 THEN '0.001,0'
    WHEN  $scale < 200000 and $scale >= 75000 THEN '0.001,0'
    WHEN  $scale < 75000 and $scale >=10000 THEN '0.0005,0'
    WHEN  $scale < 10000 THEN '0.0001,0'
    END
    

Đây là đầu ra ở các quy mô khác nhau:

nhập mô tả hình ảnh ở đây

nhập mô tả hình ảnh ở đây

nhập mô tả hình ảnh ở đây

nhập mô tả hình ảnh ở đây

Để xem mỗi số [0-8] thể hiện ở vị trí nào, vui lòng xem hình ảnh sau:

nhập mô tả hình ảnh ở đây

Bạn có thể kiểm soát vị trí của các nhãn bằng cách thêm giá trị tương ứng với từng vị trí. Nhưng thật không may, bạn không thể làm điều đó bằng cách tiếp cận 'nhấp và di chuyển'. Bạn cần phải làm điều đó trong bảng thuộc tính.

Cập nhật:

Dựa trên yêu cầu của bạn rằng 9 vị trí góc phần tư là không đủ, tôi đã tìm thấy nếu bạn chọn Cartographythay vì Offset from pointvà chọn mức độ ưu tiên, như trong hình ảnh bên dưới, bạn sẽ có 12 vị trí ưu tiên thay vì 9. Bạn cần tạo một trường Textloại, sau đó chỉ đặt tên viết tắt mà bạn muốn cho vị trí tốt nhất 'TL', 'TSL', 'T' ... vv. Ngoài ra, bạn có thể nhập một khoảng cách để tránh nhãn bao phủ điểm.

nhập mô tả hình ảnh ở đây


Đó là một cách tiếp cận tôi đã không thử cho đến bây giờ. Bạn có thấy cách nào không, để đặt nhãn vào góc phần tư bằng cách 'nhấp và di chuyển'?
MAP

Thật không may, bạn không thể làm điều đó bằng cách tiếp cận 'nhấp và di chuyển'. Bạn cần phải làm điều đó trong bảng thuộc tính. Nhưng thêm 1 cột thì tốt hơn 6 cột cho mỗi mức tỷ lệ x, y. Tôi cập nhật câu trả lời của tôi.
ahmadhanb

1
Trong những ngày cuối cùng, tôi cũng đã cố gắng đưa ra một giải pháp nhưng tôi đã từ bỏ vì tôi nghĩ rằng vấn đề này quá chủ quan để đưa ra một giải pháp tổng quát hơn. Thay vào đó, giải pháp của @ahmadhanb dường như đủ sáng tạo để thực hiện (tuy nhiên tôi đã không thử nghiệm nó). +1 cho tôi.
mgri

Tôi đồng ý với bạn. Tính chủ quan ở đây cao. Chủ yếu là ý kiến ​​cá nhân về cách bạn có thể đánh giá vị trí của nhãn nếu chúng phù hợp hay không.
ahmadhanb

1
Không sử dụng công cụ xác định để chỉnh sửa các vị trí ưu tiên, tốt hơn là sử dụng công cụ chọn. Mở bảng thuộc tính và chỉ chọn để hiển thị các điểm đã chọn. Bắt đầu phiên chỉnh sửa và cập nhật vị trí và lưu các chỉnh sửa. Vị trí ưu tiên sẽ được cập nhật trực tiếp, nếu bạn đã thêm biểu thức trong phần ghi đè được xác định dữ liệu.
ahmadhanb

2

Bạn có thể thoát khỏi nhiều lớp bằng cách sử dụng biểu thức.

Từ những gì tôi có thể thấy trong ví dụ của bạn, sự khác biệt chính giữa các lớp là các Data defined Coordinate X Yđịnh nghĩa chỉ đến các giá trị x, y khác nhau.

Bạn có thể thực hiện điều này trong một lớp bằng cách chọn các menu thả xuống bên cạnh X và Y và chọn chỉnh sửa ... sẽ đưa ra trình tạo chuỗi biểu thức.

Đối với X, bạn có thể sử dụng một cái gì đó như

if(@map_scale <=10000, "scale1-x", if(@map_scale <=75000, "scale2-x", "scale3-x"))

Và đối với Y, bạn có thể sử dụng một cái gì đó như

if(@map_scale <=10000,  "scale1-y" , if(@map_scale <=75000, "scale2-y", "scale3-y"))

Điều này nên sử dụng các giá trị scale1 x, y nếu tỷ lệ bản đồ nhỏ hơn hoặc bằng 1: 10.000 và tỷ lệ 2 x, y nếu tỷ lệ bản đồ nhỏ hơn hoặc bằng 1: 75.000 và tỷ lệ 3 x, y cho bất cứ điều gì ở trên .

Nếu bạn phải định vị thủ công cho từng thang đo, tôi không thấy cách bạn có thể thoát khỏi các cột tỷ lệ # -x và tỷ lệ # -y cho mỗi cấp độ bạn đã xác định.


Tôi có số phận cao của các nhãn với trọng lượng khác nhau. Tôi phải đặt chúng bằng tay vì không có chủ nghĩa tự động nào có thể làm điều đó theo cách bản đồ 'thực'. Và các bản đồ sẽ được in và cập nhật hàng năm nên việc dán nhãn phải có phần tĩnh. vi.wikipedia.org/wiki/Cartographic_labeling#Plocation
MAP

@MAP OK, vì vậy bạn biết bạn phải định vị thủ công các mục, bạn chỉ muốn ít lớp và cột hơn.
TJ Rockefeller

Điều này giúp hiển thị nhãn của 3 tỷ lệ chỉ với một lớp. Nhưng QGIS không thể "ghi lại" tọa độ thông qua biểu thức. Vì vậy, nếu tôi sử dụng biểu thức tỷ lệ như bạn đã đề cập, tôi không thể di chuyển nhãn nữa.
MAP
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.