Catalog và Tables:

Một phần của tài liệu Đồ án tốt nghiệp đại học “nghiên cứu, cài đặt thuật toán giải bài toán lập hành trình người đưa thư và ứng dụng” (Trang 27 - 37)

Catalog là một trình quản lý của mẫu truy cập dữ liệu MapXtreme 2005. Tables là khối cơ sở của MapXtreme 2005. Các bảng nắm giữ dữ liệu khi bạn muốn hiện thị và phân tích trong ứng dụng của bạn. Còn Catalog như một trình quản lý, nắm giữ một danh sách các bảng hiện thời được mở trong một phiên, các bảng cũng có thể được mở, tạo và đóng từ Catalog.

Gần như tất cả các hệ thống truy cập dữ liệu của MapXtreme đều bao hàm Catalog và Tables.

a) Table:

Lớp Table là đơn vị cơ sở của việc truy cập dữ liệu. Table, Column và tất cả thông tin siêu dữ liệu (file TAB) đều có thể vẽ thành bản đồ hoặc không thể vẽ thành bản đồ. Các bảng cũng có thể mở và truy cập không cần hiện thị trên một bản đồ.

b) Table Alias:

Khi các bảng được mở, chúng có thể được gán cho một tên hoặc bí danh(Alias). Bí danh được dùng trong khi bảng đó được mở để tham chiếu đến. Ví dụ, một bảng có thể tham chiếu bởi alias của nó trong khối câu lệnh truy vấn SQL. Một bảng được mở từ file TAB sẽ được gán bởi bí danh mặc định, bí danh dựa trên tên của file TAB. Thuộc tính này là tuỳ chọn và có thể được đặt là null. Tuy nhiên để dễ dàng cho quá trình lập trình nên gán một alias.

c) Columns:

Một đối tượng Column nhận biết các thuộc tính của một cột trong một bảng.

Các kiểu dữ liệu hỗ trợ bao gồm:

Kiểu Dữ Liệu Mô tả

Int Cung cấp một kiể sổ nguyên dạng 32

bit. Cái này sẽ liên kết(ánh xạ) tới .NET Framework datatype Int32.

Smallint Cung cấp một kiểu số nguyên 16 bit.

Cái này sẽ liên kết(ánh xạ) tới >NET Framework datatype Int16.

Double Một số chấm động trong khoảng -1.79

E+308 đến 1.79 E+308. Kiểu này sẽ liên kết tới Double

dBaseDecimal Cung cấp một số chấm động cái mà bên trong coi giống như kiểu Double. Đây là một kiểu dữ liệu kế thừa, nó đã được chuyển hoá và có độ chính xác cố định. Tên của nó được đưa ra xuất

phát từ đỉnh. Tên của nó được đưa ra xuất phát từ định dạng file dBase. Nó ánh xạ đến kiểu Double.

Boolean Cung cấp một giá trị logic. Nó ánh xạ đến kiểu Boolean.

Strinh Cung cấp một giá trị dạng chuỗi kí tự UNICODE giới hạn null và có chiều dài tuỳ biến.

Date Cung cấp một giá trị kiể ngày tháng,

mô hình đối tượng này hiện thời không hỗ trợ thêm giờ. Mặc dù các trường của kiểu MIDbType.Date trả về và chấp nhận các giá trị kiểu DatêTim, tuy nhiên các giá trị giờ sẽ bị bỏ qua. Nó sẽ ánh xạ tới kiểu DateTime, tuy nhiên các giá trị giờ sẽ bị bỏ qua. Nó sẽ ánh xạ tới kiểu DateTime trong .NET Framework. FeatureGeometry Cung cấp một đối tượng

FeatureGeometry

Binary Cung cấp một mảng của dữ liệu nhị

phân. Nó ánh xạ tới các giá trị mảng của Byte.

Key Cung cấp một khóa từ một bảng. Đây

là một kiểu dữ liệu của cột giả khoá trên một bảng.

CoarSys Cung cấp một hệ toạ độ, kiểu này chỉ tồn tại cho mục đích nối kết một đố

tượng hệ toạ độ tới đối tượng MICommand yêu cầu xác định rõ một hệ toạ độ.

Style Cung cấp một đối tượng của lớp Style. Hãy xem MapInfo.Style. đây là kiểu dữ liệu của đối tượng Style lưu trữ trong một cột Style(MI_Style) trên một bảng.

Raster Cung cấp một RasterInfo từ cột raster (adsbygoogle = window.adsbygoogle || []).push({});

của bảng. Đây là kiểu dữ liệu của đối tượng RasterInfo lưu trong cột raster trên bảng.

Grid Một GridInfo từ cột grid của bảng. Đây là kiểu dữ liệu của đối tượng GridInfo lưu trong cột grid trên một bảng.

Wms Cung cấp một WmsClient từ cột Wms

của bảng. Đây là kiểu dữ liệu của đối tượng WmsClient lưu trong cột Wms trên một bảng

• MI_Key: tất cả các bảng đều có một cột ẩn tên là MI_Key, cột này sẽ trả lại giá trị key của đối tượng.cột này không phải là kiểu số, có thể chuyển đổi thành một chuỗi ký tự.

• MI_Geometry: xác định rõ các thuộc tính như: hệ toạ độ của cột và toàn bộ các đường bao của tất cả cá đối tượng hình học mà nó chứa đựng.

• MI_Style: Cột MI_Style được tạo ra một cách tự động khi bạn đang mở một bảng trong MapInfo với định dạng là(.TAB), còn với các bảng kiểu khác bạn phải tạo cột một cách rõ ràng nếu bạn dùng.

MapInfo.Data.ColumnFactory.CreatStyleColumn, nó sẽ tạo ra một cột với tên của “MI_Style” và một dữ liệu của MIDbType.Style. Khi bạn dùng MISQL để thêm các hàng vào bảng, chắc chắn bạn phải thêm cả giá trị cho cột MI_Style trong khối lệnh Insert.

d) Catalog:

Catalog là trình quản lý cần thiết của mô hình truy cập dữ liệu. Nó nắm một danh sách các bảng hiện thời đang mở trong một phiên của MapXtreme. Các bảng cũng được mở, tạo và đóng từ Catolog. Catalog cũng được xem như một cơ sở dữ liệu đơn nắm giữ tất cả các bảng được mở trong nó.

Catalog khi khởi tạo không chứa một bảng nào. Khi một bảng được mở, một bí danh sẽ gán cho bảng đó, bí danh đó được dùng để xác định trong các câu truy vấn hoặc trong các hệ thống khác.

Catolog cung cấp tính năng cho việc tạo bảng mới, định nghĩa và liệt kê các bảng hiện thời được mở. Và nó cũng chứa đựng các phương thức cho việc tìm kiếm, truy cập dữ liệu của các bảng đang mở. Catalog có một phương tiện SQL cho phép bạn có thể select, insert, update và delete bảng và các dữ liệu trong bảng. Phương tiện SQL còn cho phép bạn nối bất kỳ một bảng nào được định nghĩa trong catalog. Catalog điều khiển các điều khiển hợp nhất dữ liệu từ các nguồn khác nhay vì vậy bạn không phải làm điều đó. Đây là một công cụ rất mạnh khi tổ chứ dữ liệu từ các nguồn khác nhau.

MapInfo.TAB fomat

Đây là định dạng sẵn có trong MapInfo. Nó là một file Table cơ sở, có thể có một file.MAP liên kết chứa đựng FeatureGeometry và thông tin về kiểu(Style). Dữ liệu phi không gian sẽ được lưu trữ trong một file định dạng .DAT. dBase Dữ liệu được lưu trong file dBase. Bảng có thể có một liên

kết đến một file.MAP chứa đựng đối tượng FeatureGeometry và các thông tin về Style. Dữ liệu phi không gian được lưu trong một file định dạng.DBF

ASCII Dữ liệu được lưu trong một file text ASCII. Chiều dài tối đa của chuỗi là 255 kí tự. Bảng ASCII chỉ được Insert

MSAccess Bảng của cơ sở dữ liệu Microsoft Access đây là file bảng cơ sở được đặt trong một Microsoft Access, cơ sở dữ liệu MDB có thể có một liên kết tới file.MAP chứa đối tượng FeatureGeometry và thông tin về kiểu, dữ liệu không gian được lưu trong một file Access

Shapefile Một bảng Shapefile ESRI. Những bảng này chỉ đọc. Dữ liệu thuộc tính phi không gian được lưu trong một file định dạng.DBF. Các giá trị của thuộc tính hình học FeatureGeometry được lưu trong file định dạng .SHP. MapXtreme không thể truy cập các chỉ số của không gian. MemTable Lưu trữ các dữ liệu phi không gian trong bộ nhớ. Dữ liệu

hình học FeatureGeometry và các chỉ số được lưu trong ổ đĩa. Đây là các bảng tam, tất cả các dữ liệu sẽ mất khi bảng đó đóng.

RDBMSServer Một bảng không gian được lưu trong một hệ thống quản lý cơ sở dữ liệu từ xa(như: SQL Server hoặc Oracle). Bảng này được định nghĩa trong khối câu lệnh sẵn có trong SQL. MapXtreme thực hiện các cây truy vấn có chỉnh sửa và phân tích.

ADO.NET Một bảng của dữ liệu thuộc tính phi không gian dựa trên một bảng dữ liệu ADO.NET hoặc IdbCommand. Kiểu bảng này hỗ trợ nhiều cung cấp dữ liệu khác nhau với sự thực thi của một trình cung cấp dữ liệu cụ thể. ADO.NET là một sự lựa chọn cần thiết khi không có một trình cung cấp dữ liệu của MapXtreme. ADO.NET được thiết kế để hỗ trợ cả mô hình ADO kết nối(IDBTable) và không kết nối(DataTable). IDBTable là đối tượng chỉ đọc.

Raster Một bảng chứa một raster. Kiểu này cung cấp một bản đồ cơ sở riêng biệt cho các kiểu bảng không gian khác. Các bảng này có duy nhất một bảng ghi đơn và các giản đồ cột cố định(RasterInfo, MI_Geometry, MI_Style). Các bảng này cũng có thể được nối với các bảng dạng vecto dựa vào các thuộc tính không gian. Xem thêm phần “Làm việc với Raster và Grids”

Grid Một bảng chứa các ảnh dạng Grid. Bảng này cung cấp một bản đồ cơ sở cho các bảng không gian khác. Các bảng này cũng chỉ có một bản ghi đơn và một giản đồ các cột cố định(RasterInfo, MI_Geometry, MI_Style). Các bảng này có thể nối với các bảng dạng vectơ sử dụng các thuộc tính không gian. Lớp GridReal cung cấp truy cập giá trị ô lưới

WMS0 Một bảng chứa đựng một ảnh từ một dịch vụ bản đồ Web. Loại bảng này cung cấp một bản đồ cơ sở cho các kiểu bảng không gian khác. Các bảng chỉ có một bản ghi đơn và các giản đồ các cột cố định(GridInfo, MI_Geometry, MI_Style). Các bảng này có thể được nối với các bảng dữ liệu dạng vectơ dùng các thuộc tính không gian. Bảng WMS được truy cập như dạng raster động thông qua một WMSClient

Seamless Một bảng mà có thể nối 2 hoặc nhiều hơn các bảng cơ sở. Nó hiện thị như một lớp bản đồ đơn. Các bảng dạng Seamless được thay đổi một cách rõ ràng cho các truy vấn không gian như vẽ một bản đồ, chúng là các bảng chỉ đọc, các bảng thành phần phía dưới không thể chỉnh sửa một cách trực tiếp.

View Một cái nhìn trực quan dựa trên khối lệnh Select của SQL(không phải là SQL sẵn có, được hỗ trợ từ các bảng ở trên Server).

ResultSet Một bảng chứa đựng các kết quả của một thao tác tìm kiếm nào đó.

Xác định các bảng hiện thời đang mở:

Để xác định các bảng hiện thời bạn phải liệt kê danh mục catalog. Điều này được thực hiện bằng cách dùng phương thức sau:

• Catalog.GetTable: Phương thức này sẽ trả lại các đối tượng bảng tham chiếu bởi tham biến TableAlias. Đây phải là một bản đã được mở, nếu không có bảng nào như vậy được tìm thấy thì phương thức sẽ trả lại giá trị null. (adsbygoogle = window.adsbygoogle || []).push({});

• Catalog.Intem(indexer): thuộc tính này có thể được dùng như một chỉ số cho việc xác định vị trí bảng bằng bí danh của nó. Về mặt tính năng thì Catalog.Item tương đương như dùng phương thức Catalog.GetTable nhưng các mã code sinh ra sẽ dễ dàng cho việc đọc. Bí danh Alias phải xác định rõ bảng vừa mới được mở.

• Tablennumerators: có thể được chứa đựng nhiều các phương thức EnumerateTable nạp chồng khác nhau. Một trình liệt kê bảng có thể được tạo ra với một bộ lọc. Bộ lọc này sẽ định nghĩa bảng nào thực sự được gộp trong sự liệt kê này.

Đóng một bảng:

• Có ba phương thức sẵn có để thực hiện đóng các bảng, Catalog.CloseAll là phương thức sẽ đóng tất cả các bảng được mở trong khi Catalog.CloseTable sẽ đóng một bảng đơn đang mở. Trong lớp Table cũng có phương thức Close.

Packing một bảng:

• Phương thức MapInfo.Data.Table.Pack sẽ loại bỏ các bản ghi được đánh dấu xoá từ bảng đã được Packed thì sự kiện TablePacked của bảng được đưa lên. Các đối số của sự kiện này chỉ ra các khoá của bảng có thay đổi hay không. Các key chỉ thay đổi nếu như PackType bao gồm: RemoveDeleteRecords và thực sự có các bản ghi ở giữa bị xoá. Còn nếu chỉ có bản chi ở cuối bảng được xoá thì sẽ không có khoá nào bị thay đổi. Và sự kiện này sẽ không chỉ ra các khoá nào thay đổi.

Chú ý: Từ khi các đối tượng bảng ResultSet nắm giữ tập hợp các khoá thì thật

tượng ResultSet sẽ không còn hợp lệ nữa nếu các khoá đã thay đổi. PackType Enumeration cung cấp cho bạn những tuỳ chọn sau:

+ PackGeometry: xác định đối tượng geometry bị packed.Packing các đối tượng có ý nghĩa là loại bỏ tối đa đến mức có thể các không gian không dùng đến. Để cân xứng giữa không gian đĩa trống và tốc độ xử lý thì việc packing các đối tượng geometry phải liên tiếp bỏ đi một vại không gian trống không cần thiết trong Rtree.

+ RebuiltGeometry: xây dựng lại các đối tượng geometry sẽ loại bỏ không gian trống không cần thiết cái mà là kết quả của mọt chuỗi các hoạt động insert, update, delete. Không giống như việc packing đối tượng geometry, tuỳ chọn này cố tình loại bỏ các không gian không cần thiết trong chỉ số Rtree để cải tiến sự thực thi của các hoạt động insert, update trong tương lai.

+ PackIndex: các chỉ số phi không gian được lưu giữ như các cây nhị phân, thường không đầy đủ các nút lá.

+ RemovedeleteRecord: một vài dữ liệu nguồn bao gồm cả nguồn dữ liệu nguồn của MapInfo và dBase. Về mặt vật lý thì các bản ghi sẽ không bị loại bỏ khi chúng bị xoá. Và để xoá hẳn các bản ghi đó(xoá hẳn trên file .TAB lưu trong ổ đĩa máy tính) thì bảng phải được pack với sự xác định lựa chọn này, việc loại bỏ các bản ghi được xoá từ một bảng có thể gây ra các khoa key sẽ trở nên không hợp lệ từ khi chúng thay đổi khi kết quả việc pack hoàn thành. + All: đây là một sự kiện chọn thuận tiện và nó tương đương với PackGeometry, PackIndex, RemoveDeleteRecord

Lắng nghe các sự kiện của Table và Catalog

• Table:

+ RowInsertEvent: xảy ra khi một hàng mới được thêm vào bảng.

+ RowDeleteEvent: xảy ra khi một hàng mới bị xáo khỏi bảng. + TablePackedEvent: xảy ra khi một bảng bị Packed.

+ TableCloseRequestEvent: xảy ra khi một bảng được yêu cầu đóng + TableCloseEvent: xảy ra khi một bảng bị đóng

• Catalog:

+ TableOpenEvent: xảy ra khi một bảng được mở.

+ TableCreatedEvent: xảy ra khi có một bảng được tạo mới. + TableCloseingEvent: xảy ra khi có một bảng đang đóng.

Một phần của tài liệu Đồ án tốt nghiệp đại học “nghiên cứu, cài đặt thuật toán giải bài toán lập hành trình người đưa thư và ứng dụng” (Trang 27 - 37)