Dường như ArcMap giữ một bộ đệm cho mọi lớp chứa dữ liệu tính năng và mỗi lần muốn làm mới lớp hoặc áp dụng thay đổi, hãy sử dụng bộ đệm này. Như tôi đã tìm thấy, khi ArcMap muốn vẽ một lớp từ đầu, hãy gửi truy vấn này đến geodatabase:
chọn ObjectId, Shape từ "FeatureClassName" [trong đó "biểu thức truy vấn định nghĩa lớp"]
Trong chế độ chỉnh sửa, khi sử dụng chụp nhanh, có vẻ như dữ liệu tính năng trong bộ đệm này được sử dụng để xác định trạng thái chụp trong khi di chuyển chuột. Tôi không biết làm thế nào ArcMap lưu trữ dữ liệu không gian trong bộ đệm này, ở định dạng hình dạng ESRI hoặc dưới dạng WKB, nhưng tôi cần phải lấy lại các dữ liệu tính năng này.
Có cách nào để truy xuất lại dữ liệu tính năng của một lớp bằng cách sử dụng bộ đệm (bộ đệm của lớp) thay vì sử dụng IFeatureClass::get_Feature
phương thức không? ..... Có thể ý tưởng của tôi không đúng và một lớp không có bất kỳ bộ đệm nào (ý tôi không phải là bộ đệm là tùy chọn cho các lớp và tăng tốc độ vẽ lớp), nhưng tôi gần như chắc chắn dữ liệu không gian của các lớp (bản đồ) được lưu trữ trong bộ nhớ ArcMap ở đâu đó và ArcMap sử dụng nó cho hoạt động của nó như chụp nhanh trong quá trình chỉnh sửa. Có cách nào để truy cập phần dữ liệu ArcMap này (nếu thực sự tồn tại)?
Tôi không muốn thiết lập bộ đệm, tôi muốn lấy dữ liệu từ ArcMap cache.ISpatialCacheManager
không cung cấp bất kỳ phương pháp nào để lấy dữ liệu cụ thể từ nó. Hãy để tôi thảo luận về những gì tôi có nghĩa là chi tiết hơn.
Khi tôi đặt mã này vào chương trình của mình
//C#
IFeature ipF=ipMyFeatureClassObject.GetFeature(10);
ArcMap ban hành lệnh chọn cho cơ sở dữ liệu địa lý, giả sử:
select * from MyFeatureClassTableName Where ObjectId=10
và trả lại một bản ghi dữ liệu.
Trong chế độ chỉnh sửa, ArcMap không thể sử dụng phương pháp này để lấy dữ liệu không gian và tính toán trạng thái chụp cho các tính năng trên bản đồ vì tốn thời gian phương pháp này và tính toán chụp nhanh cần lấy dữ liệu tốc độ cao, vì chuột có thể di chuyển mọi nơi trên bản đồ và chụp nhanh được bật cho bất kỳ thu phóng nào, tất cả các nhân chứng này cho thấy dữ liệu không gian phải có sẵn ở đâu đó trong bộ nhớ và tôi đang tìm kiếm một phương pháp để truy cập nó.
Nếu tất cả các giả định này không thành hiện thực, thì phải có một phương pháp hoàn hảo mà ArcMap sử dụng để truy xuất dữ liệu không gian từ cơ sở dữ liệu địa lý khi đang di chuyển (ví dụ: lập chỉ mục không gian cấp 4 hoặc 6 dựa trên phạm vi bản đồ và chỉ sử dụng vị trí chuột để lấy một phần dữ liệu không gian trong khi chuột di chuyển rất nhanh, theo cách này chỉ có quyền truy cập vào cơ sở dữ liệu địa lý khi khu vực lập chỉ mục nhỏ nhất của chuột thay đổi).
Tôi đang xử lý việc phát triển một công cụ như "Công cụ phác thảo và" Công cụ chỉnh sửa "cho nguồn dữ liệu không phải là nguồn dữ liệu ArcObject và tôi không muốn thiết lập bộ đệm song song với ArcMap. Nếu có thể tôi muốn sử dụng cùng một dữ liệu ArcMap. lưu trữ trong bộ nhớ cho nguồn dữ liệu này.
Bây giờ, các bạn có nghĩ đây là những giả định thực sự không và nếu có thì có cách nào để truy cập dữ liệu không gian ArcMap trong bộ nhớ của nó không?