Sử dụng các lớp Nhãn so với các truy vấn Định nghĩa - cái nào thực hiện tốt nhất?


11

Cái nào sẽ cung cấp hiệu suất tốt nhất để làm việc trong ArcMap với các bộ dữ liệu rất lớn được lưu trữ trong cơ sở dữ liệu địa lý ArcSDE? Nhiều lớp nhãn sử dụng các truy vấn SQL phức tạp để gắn nhãn các tính năng cụ thể hoặc nhiều bản sao của cùng một lớp sử dụng cùng một truy vấn SQL phức tạp được đặt làm truy vấn định nghĩa cho mỗi lớp?


2
Tôi nghĩ rằng "nhiều bản sao của cùng một lớp với truy vấn định nghĩa riêng và ghi nhãn dựa trên trường đơn giản" sẽ được yêu thích nhưng tôi không có số liệu nào để sao lưu cảm giác đó nên tôi nghĩ đây là một câu hỏi hay. Một lớp tính năng cơ sở dữ liệu địa lý tập tin với một triệu đa giác đủ điều kiện là một bộ dữ liệu rất lớn theo cách nói của bạn?
PolyGeo

Câu trả lời:


5

Giả sử các truy vấn SQL trên các lớp nhãn giống như các truy vấn trên các lớp tách ra, cách tiếp cận lớp đơn với nhiều lớp nhãn sẽ nhanh hơn. Tại sao?:

Dán nhãn trong ArcMap sẽ thực hiện một truy vấn cho bản vẽ lớp và sau đó một truy vấn cho mỗi lớp nhãn. Vì vậy, một lớp có 4 lớp nhãn sẽ truy vấn một lần (1 truy vấn) cho tất cả các tính năng được rút ra và sau đó tổng cộng 4 lần (một cho mỗi lớp nhãn hoặc thêm 4 truy vấn) = 5 tổng số truy vấn

Nếu bạn tách các lớp ra, bạn sẽ có 1 truy vấn được lọc (truy vấn định nghĩa) cho mỗi lớp (4 truy vấn) cộng với truy vấn đó cho mỗi lớp nhãn (thêm 4 truy vấn) = 8 tổng truy vấn

Trong hầu hết các trường hợp, 5 truy vấn sẽ nhanh hơn 8 truy vấn do chỉ là chi phí truy vấn đơn giản mặc dù nó phụ thuộc vào nguồn dữ liệu.

Lưu ý, trong ArcGIS Server, bộ đệm được sử dụng để ghi nhãn tính năng và 1 lớp với 4 lớp nhãn rất có thể sẽ được xử lý thông qua một truy vấn khi các lớp nhãn sử dụng SQL khá chuẩn mà không có chức năng cụ thể của nhà cung cấp.


2
Nhưng, với kịch bản truy vấn định nghĩa, tôi sẽ không tạo các lớp nhãn. Chúng sẽ chỉ được dán nhãn dựa trên một giá trị trường duy nhất. Hay tôi đang đọc đoạn thứ ba không chính xác?
ianbroad

Các lớp nhãn được sử dụng để gắn nhãn một tập hợp con các tính năng được xác định bởi mệnh đề SQL (chính xác giống như truy vấn định nghĩa) và có ký hiệu văn bản, biểu thức nhãn và quy tắc vị trí riêng. Tôi không rõ từ mô tả của bạn về cách di chuyển từ các lớp sang truy vấn định nghĩa cho phép bạn gắn nhãn chỉ trên một trường duy nhất. Bạn đang đề cập đến các biểu thức nhãn phức tạp không phải là các truy vấn SQL phức tạp?
Craig Williams

1
Không, tôi chỉ có nghĩa là cho cả hai kịch bản, không sử dụng biểu thức nhãn. Cả hai đều được dán nhãn bằng một trường duy nhất.
ianbroad

4
Tôi làm việc trong nhóm dán nhãn tại Esri. Tôi rất quen thuộc với cách thức hoạt động của nó. Vị trí gọi của truy vấn sẽ không ảnh hưởng đến hiệu suất, nhưng bạn sẽ muốn giảm tổng số truy vấn.
Craig Williams

1
Tôi nghĩ rằng tôi đã hiểu câu trả lời của bạn bây giờ Craig, nhưng tôi tự hỏi liệu có cách nào để điều chỉnh lại nó để dễ hiểu hơn không. Tôi đã phải đọc nó một vài lần để nhận ra toán học của bạn thực sự có lẽ không sai như tôi và những người khác nghĩ đầu tiên.
jmpreiks

2

Tôi đã thực hiện một vài thử nghiệm rất đơn giản bằng cách sử dụng một số dữ liệu NHD đến từ kết nối SDE và thấy rất ít sự khác biệt giữa hai phương pháp.

  1. 7 Lớp nhãn trong một lớp, cũng có 7 ký hiệu riêng biệt: 36 giây
  2. 7 lớp riêng biệt với các truy vấn định nghĩa, mỗi lớp nhãn không có truy vấn: 37 giây

Một vài cảnh báo:

  1. Bài kiểm tra của tôi rất đơn giản với các nhãn đơn giản và các truy vấn đơn giản, các truy vấn phức tạp nên được kiểm tra vì đó là một phần của câu hỏi.
  2. Khoảng một phần ba tổng thời gian là để vẽ ký hiệu.
  3. Thời gian của tôi là với một chiếc đồng hồ bấm giờ nên biên độ lỗi là khá lớn.

+1 cho các bài kiểm tra của bạn. Tôi tự hỏi nếu nó làm cho một sự khác biệt liệu xung đột nhãn xảy ra hay không? Có lẽ bạn có thể phóng to kích thước phông chữ để rất nhiều lables sẽ chồng lên nhau. Sau đó vô hiệu hóa tùy chọn nhãn chồng lên nhau. Có một sự khác biệt bây giờ?
Jens

1
Trên thực tế, có rất nhiều xung đột nhãn trong các thử nghiệm của tôi vì tôi phải thể hiện ở mức độ lớn để có được thời gian xử lý thực sự dài mà tôi có thể dễ dàng đo lường được.
jmpreiks

1
Không có thứ gọi là "không có lớp nhãn" như luôn có một.
Craig Williams

Đúng Craig, tôi đã chỉnh sửa câu trả lời của mình để làm rõ.
jmpreiks

1

Tôi nghĩ rằng truy vấn định nghĩa sẽ nhanh hơn bởi vì nó ở cấp đối tượng chứ không phải ở cấp dữ liệu thuộc tính.

Bạn vẫn sẽ phải kiểm tra. Tuy nhiên tôi sẽ sử dụng các truy vấn định nghĩa và không phải các lớp nhãn.


1
Có, vui lòng kiểm tra (và báo cáo lại nếu bạn có thể). Tôi cũng nghiêng về các truy vấn định nghĩa, nhưng vì lý do hiệu suất khả dụng. Các hộp thoại biểu thức nhãn rất chậm chạp và nhiều lớp nhấp chuột sâu hơn các lớp truy vấn def. Họ cũng dễ dàng hơn để có được trong python.
matt wilkie

Tôi không nghĩ rằng điều này đủ điều kiện như một câu trả lời mà không có một số loại cơ sở kỹ thuật hoặc kiểm tra định lượng. Nó có thể đánh lừa một số người. Sẽ là tốt hơn như là một nhận xét cho câu hỏi ban đầu.
jmpreiks

Tôi sẽ làm điều đó nếu tôi có khả năng bình luận. Cảm ơn đã bỏ phiếu. Chỉ cố gắng để giúp đỡ.
geogeek
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.