1. Khởi tạo một bản đồ mới
Đoạn mã sau minh họa cách tạo một bản đồ rỗng mới trong dự án ArcGIS Pro hiện tại. Bản đồ sẽ được tạo với tên và nền bản đồ được chỉ định.
Dim tenBanDoMoi As String = "Bản Đồ Mới"
Await QueuedTask.Run(Sub()
' Tạo một bản đồ mới sử dụng nền bản đồ mặc định của dự án
Dim banDo As Map = MapFactory.Instance.CreateMap(tenBanDoMoi, MapType.Map, MapViewingMode.Map, Basemap.ProjectDefault)
End Sub)
2. Xóa một bản đồ theo tên
Để xóa một bản đồ cụ thể khỏi dự án, bạn cần tìm nó trong danh sách các mục bản đồ và sau đó xóa nó. Ví dụ này sẽ xóa bản đồ có tên "Bản Đồ Kỹ Thuật".
Dim doiTuongCanXoa As MapProjectItem = Project.Current.GetItems(Of MapProjectItem)().
FirstOrDefault(Function(item) item.Name.Equals("Bản Đồ Kỹ Thuật"))
If doiTuongCanXoa IsNot Nothing Then
Await QueuedTask.Run(Sub()
Project.Current.RemoveItem(doiTuongCanXoa)
End Sub)
End If
3. Truy cập bản đồ đang hoạt động
Lấy đối tượng bản đồ đang được hiển thị trong chế độ xem bản đồ hiện tại. Đây là một thao tác cơ bản và thường xuyên được sử dụng.
Dim banDoHienTai As Map = MapView.Active.Map
4. Tìm và mở một bản đồ trong dự án
Bạn có thể tìm kiếm một bản đồ trong dự án bằng tên và sau đó mở nó trong một chế độ xem mới.
Dim tenBanDoCanTim As String = "Bản Đồ Mới"
Await QueuedTask.Run(Sub()
Dim mucBanDo As MapProjectItem = Project.Current.GetItems(Of MapProjectItem)().
FirstOrDefault(Function(m) String.Equals(m.Name, tenBanDoCanTim, StringComparison.OrdinalIgnoreCase))
If mucBanDo IsNot Nothing Then
Dim banDo As Map = mucBanDo.GetMap()
' Tạo một cửa sổ bản đồ mới để hiển thị bản đồ đã tìm thấy
ProApp.Panes.CreateMapPaneAsync(banDo)
End If
End Sub)
3. Đổi tên bản đồ hiện hành
Thay đổi tên của bản đồ đang được kích hoạt trong chế độ xem. Tên mới sẽ được cập nhật trong cửa sổ nội dung (Contents).
Await QueuedTask.Run(Sub()
MapView.Active.Map.SetName("Bản Đồ Cập Nhật")
End Sub)
6. Tìm một lớp (Layer) theo tên
Lấy một lớp tính năng (Feature Layer) cụ thể từ bản đồ hiện tại bằng cách sử dụng tên của nó. Hàm `FirstOrDefault` sẽ trả về `Nothing` nếu không tìm thấy.
Dim tenLop As String = "DuongDayDien"
Dim lopTinh As FeatureLayer = MapView.Active.Map.FindLayers(tenLop).FirstOrDefault()
7. Lấy lớp đang được chọn
Đoạn mã này lấy lớp đầu tiên trong danh sách các lớp được người dùng chọn trong cửa sổ nội dung hoặc trên bản đồ.
Dim lopDuocChon As FeatureLayer = MapView.Active.GetSelectedLayers().FirstOrDefault()
8. Thay thế đường dẫn nguồn dữ liệu của lớp
Để cập nhật tất cả các lớp trong bản đồ để trỏ đến một cơ sở dữ liệu hoặc thư mục mới, bạn có thể sử dụng phương thức `FindAndReplaceWorkspacePath`.
Dim banDoHienTai As Map = MapView.Active.Map
Dim duongDanCu As String = "C:\DuLieuCu\GDB.gdb"
Dim duongDanMoi As String = "D:\DuLieuMoi\GDB.gdb"
' Thay thế đường dẫn cũ bằng đường dẫn mới cho tất cả các lớp liên quan
banDoHienTai.FindAndReplaceWorkspacePath(duongDanCu, duongDanMoi)
9. Lấy hệ tọa độ của bản đồ
Truy xuất thông tin hệ tham chiếu không gian (Spatial Reference) được bản đồ hiện tại sử dụng.
Dim heToaDo As SpatialReference = MapView.Active.Map.SpatialReference
10. Xóa tất cả các lớp khỏi bản đồ
Để xóa toàn bộ các lớp đang tồn tại trong bản đồ, bạn có thể lấy danh sách tất cả các lớp (bao gồm cả các lớp trong nhóm) và sau đó xóa chúng.
Dim banDo As Map = MapView.Active.Map
Dim tatCaLop = banDo.GetLayersAsFlattenedList().ToList()
If tatCaLop.Any() Then
Await QueuedTask.Run(Sub()
banDo.RemoveLayers(tatCaLop)
End Sub)
End If
Phân cấp lớp MapMember
Sơ đồ dưới đây mô tả cấu trúc phân cấp của các lớp đối tượng chính liên quan đến các thành viên trong bản đồ (MapMember) trong ArcGIS Pro SDK.
MapMember
|--------------------|-----------------|
| |
Layer StandaloneTable
|
|-------------------------|-----------------------------------------|
| | |
BasicFeatureLayer BasicRasterLayer CompositeLayer
| | |
|---------|---------| |----|----------| |------------|---------|
| | | | | | |
AnnotationLayer FeatureLayer RasterLayer ImageServiceLayer GroupLayer MosaicLayer (etc.)