Hướng Dẫn Thao Tác Bản Đồ trong ArcGIS Pro SDK bằng VB.NET

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.)

Thẻ: ArcGIS Pro SDK VB.NET Bản đồ GIS GIS Development

Đăng vào ngày 26 tháng 9 lúc 13:31