THAO TÁC VỚI CÁC BẢNG DỮ LIỆU THUỘC TÍNH

Một phần của tài liệu Hướng dẫn sử dụng Mapinfo Professional-Phần cơ bản ppt (Trang 45 - 57)

4.3.1. Xoá Table bằng công cụ của MapInfo

- Chọn Table > Maintenance > Delete Table.

- Xuất hiện hộp thoại Delete Table.

- Bấm phím Delete để xoá Table được chọn.

4.3.2. Thay tên Table bằng công cụ của MapInfo

MapInfo cung cấp công cụ để thay tên một Table như sau: - Chọn Table > Maintenance > Rename Table.

- Xuất hiện hộp thoại Rename Table.

- Bấm phím Rename để đổi tên Table được chọn.

4.3.3. Nén Table bằng công cụ của MapInfo

MapInfo cung cấp công cụ để nén một Table nhằm tối ưu hoá dữ liệu. - Chọn Table >Maintenance > Pack Table

- Xuất hiện hộp thoại Pack Table

4.4. LIÊN KẾT VỚI DỮ LIỆU CÓ SẴN

Cơ sở dữ liệu có sẵn có thể có phần mở rộng .dbf (dbase), wks (Lotus), .xls (Excel), .txt (ASCII). MapInfo sử dụng các cơ sở dữ liệu này như là những lớp dữ liệu riêng sau khi hoàn tất thủ tục khai báo.

Vào File> Open Table, chọn tập tin cơ sở dữ liệu theo các dạng trên bằng cách chọn kiểu tương thích trong List File of Types trong cửa sổ Open Table.

Ví dụ: Cơ sở dữ liệu dạng .xls (Excel)

Thông thường dữ liệu trong Excel lấy hàng trên cùng làm tên cột (Field), vì vậy trong cửa sổ Excel Information chúng ta khai báo như sau:

+ Trong khung Name Range chọn Other sẽ xuất hiện khung ghi giới hạn của dữ liệu. MapInfo sẽ cho thấy toàn vùng dữ liệu từ hàng cột nào đến hàng cột nào. Chúng ta sẽ thay đổi là tăng thêm một hàng đối với vị trí đầu tiên của vùng dữ liệu. Ví dụ thay vì A1:G10 thì đổi lại là A2:P18, click OK.

+ Đánh dấu vào mục Use Row Above Selected Range for Column Tittle (chúng ta xác định hàng đầu tiên là tên các cột), rồi click OK.

Xuất hiện hộp thoại Set Field Properties: Ta có thể thiết lập lại cấu trúc của các tường dữ liệu thuộc tính của các cột trong file Excel đã được mở ra. Click OK. Cửa sổ Browser xuất hiện với dữ liệu theo dạng hàng và cột của tập tin .xls mới được đưa vào. MapInfo đã tạo ra tập tin dạng .tab cùng tên với tập tin .xls (một lớp dữ liệu của MapInfo).

Mở bảng dữ liệu thuộc tính cần liên kết, lưu ý để liên kết được 2 bảng dữ liệu thuộc tính thì cấu trúc dữ liệu thuộc tính của các trường cần update phải giống nhau và trong 2 bảng đó phải có ít nhất một trường dữ liệu thuộc tính chung để làm cột tham chiếu.

Vào Table>Update column, xuất hiện hộp thoại, chọn bảng cần update (ví dụ Hanh_chinh_huyen), trường cần update là Dien_tich, lấy giá trị từ Bảng dữ liệu từ Excel đã mở ra (Liên_ket_TTHue). Cách thức tính toán là lấy giá trị (Value) của trường Dien_tich trong bảng dữ liệu Excel.

Để liên kết được dữ liệu ta phải chọn trường dữ liệu tham chiếu, bấm chọn nút Join. Chọn trường chung của hai bảng dữ liệu thuộc tính, click OK và sau đó OK kết thúc sẽ cập nhật được diện tích cho lớp Hanh_chinh_vung.

Bài tập ứng dụng

Bài tập 6. Liên kết dữ liệu thuộc tính

Giả sử ta đã có file dữ liệu thuộc tính về lớp hành chính vùng ở phần mềm Microsoft Excel (Lien ket TTHue.xls), tiến hành liên kết các thông tin có sẵn đó qua phần mềm MapInfo.

4.5. CẬP NHẬT VÀ BỔ SUNG DỮ LIỆU 4.5.1. Bổ sung số liệu thống kê 4.5.1. Bổ sung số liệu thống kê

Mỗi tính chất của các đối tượng được bổ sung vào một vùng mới và tuỳ theo kiểu số liệu để khai báo thích hợp trong kiểu trường dữ liệu (field). Có thể nhập số liệu trực tiếp trong MapInfo. Vào Windows > New Browser Window, chọn lớp dữ liệu muốn bổ sung thêm sẽ xuất hiện một cửa sổ dữ liệu Browser liệt kê dữ liệu theo hàng và cột, nhập số liệu vào các ô thích hợp.

Để có thể sử dụng các phần mềm khác như Excel hay Foxpro để nhập các số liệu này, ta phải lưu lớp dữ liệu dưới dạng dBase DBF với một tên khác. Vào File >Save Copy As, chọn lớp dữ liệu cần lưu, trong cửa sổ Save Copy of Table As chọn Save File As TypedBase DBF, ta sẽ có một tập tin của lớp dữ liệu tương ứng có phần mở rộng là .dbf. vào Excel hay

Foxpro và mở tập tin này để cập nhật, lưu ý là không được thay đổi vị trí của các hàng, vì MapInfo đã lưu thông tin về các đối tượng địa lý đồ hoạ theo thứ tự các hàng.

4.5.2. Bổ sung số liệu do MapInfo tính toán được

a. Các toán tử, các hàm và từ khoá trong biểu thức trong MapInfo

Trong MapInfo với các hàm và các phép toán chúng ta có thể xác lập các biểu thức tính toán tự động trên từng đối tượng (các hàng trong bảng), có nghĩa ta có thể bổ sung tự động các số liệu trên MapInfo.

Biểu thức trong MapInfo bao gồm tên vùng của lớp dữ liệu được mở, trong đó obj là một tên vùng đặc biệt chỉ đến đối tượng địa lý của các hàng trong bảng dữ liệu - các toán tử và các hàm.

* Các toán tử:

- Các Toán tử So sánh: = bằng, <> khác, > lớn hơn, < nhỏ hơn, >= lớn hơn hay bằng,

=< nhỏ hơn hay bằng, _ tương tự (tượng trưng cho một ký tự bất kỳ), %tương tự (tượng trưng cho nhiều ký tự bất kỳ)

- Các ký hiệu ý nghĩa: + cộng, - trừ, (- ) âm, * nhân, / chia, ^ luỹ thừa, () dấu ngoặc.

- Các toán tử toán tử luân lý: “and” (và), “or” (hoặc) và “not” (không). Trong đó: + and được coi là đúng (“true”) khi (và chỉ khi) tất cả tham số của nó (tức là các biểu thức mà nó nối lại) đều đúng. Một bản ghi phải thoả mãn tất cả các điều kiện trong biểu thức thì mới được chọn.

+ or được coi là đúng khi một, vài hay tất cả các tham số (tức là các biểu thức mà từ khoá này liên kết) đúng. Một bản ghi thoả mãn một trong những điều kiện của biểu thức thì sẽ được chọn. Nó cũng được chọn khi hai hay tất cả điều kiện đều được thoả mãn.

+ not là đúng khi tham số của nó (biểu thức mà nó được sử dụng trong đó) là sai (“false’). Một bản ghi sẽ được chọn khi nó không thoả mãn điều kiện đưa ra.

- Các toán tử địa lý. Chúng được sử dụng để chọn các đối tượng dựa trên mối quan hệ không gian đối với (các) đối tượng khác. MapInfo có một từ khoá đặc biệt để sử dụng trong các toán tử địa lý là “obj” hay “object” (đối tượng). Từ khoá này (được coi như một tên trường) cho MapInfo biết rằng nó phải chọn giá trị dựa trên các đối tượng đồ hoạ trong bản đồ chứ không dựa vào bảng dữ liệu. Các toán tử địa lý được đặt nằm giữa các đối tượng đang được xem xét. Dưới đây là những toán tử địa lý:

+ Contains (Chứa): Đối tượng A chứa đối tượng B nếu trọng tâm của đối tượng B nằm trong ranh giới của đối tượng A.

+ Contains Entire (Chứa hoàn toàn): Đối tượng A chứa hoàn toàn đối tượng B nếu ranh giới của B nằm hoàn toàn trong ranh giới của A.

+ Within (Nằm trong): Đối tượng A nằm trong đối tượng B nếu trọng tâm của nó nằm trong ranh giới của B.

+ Entirely Within (Hoàn toàn nằm trong): Đối tượng A hoàn toàn nằm trong đối tượng B nếu ranh giới của nó hoàn toàn nằm trong đối tượng B.

+ Intersects (Giao, Cắt): Đối tượng A giao (cắt) đối tượng B nếu chúng có ít nhất một điểm chung.

* Các hàm của MapInfo:

- Các Hàm Toán học.Trong MapInfo có những hàm toán học sau: + Abs(num): Trả về giá trị tuyệt đối của một số.

+ Int(num): Trả về phần số nguyên của một số num. + Maximum(num1, num2): Trả về số lớn hơn trong hai số. + Minimum(num1, num2): Trả về số nhỏ hơn trong hai số.

+ Round(num1, num2): Trả về giá trị được làm tròn của số num1, đến giá trị gần nhất với số num2 (ví dụ như nếu num2 là 10 thì num1 được làm tròn đến giá trị gần với 10 nhất).

+ Sin(num): Trả về sin của một số; num tính bằng radian.

+ Tan(num): Trả về tang của một số; num được tính bằng radian.

- Các Hàm tổng hợp số liệu(Aggregate Functions)

+ Count(*): Đếm số lượng bản ghi (hàng) trong một nhóm. Hàm này lấy dấu hoa thị (*) làm đối số vì nó áp dụng cho bản ghi một cách tổng quát và không áp dụng cho một trường đặc biệt nào của bản ghi.

+ Sum(<expression>): Tính tổng của các giá trị trong biểu thức <expression> cho tất cả các bản ghi trong một nhóm (trường).

+ Avg(<expression>): Tính giá trị trung bình của các giá trị trong biểu thức <expression> trong tất cả các bản ghi của một nhóm.

+ Max(<expression>): Tìm giá trị lớn nhất trong <expression> trong tất cả các bản ghi của một nhóm.

+ Min(<expression>): Tìm giá trị thấp nhất trong <expression> trong tất cả các bản ghi trong một nhóm.

- Các Hàm có kết quả là đối tượng địa lý

+ Buffer(obj, num_res, num_width, str): Trả về một vùng đệm. Thông số num_res chỉ định độ phân giải, tính theo số nốt trên một vòng tròn; num_width là bán kính của vùng đệm;

str là tên của đơn vị tính khoảng cách sử dụng trong num_width.

+ Centroid(obj): Trả về một điểm có toạ độ tại trọng tâm của đối tượng obj (nếu đối tượng là vùng, kết quả là trung điểm nếu là đường).

+ CreateCircle(num_x, num_y, num_radius): Trả về một đường tròn; num_x, num_y

tương ứng là kinh độ và vĩ độ của tâm đường tròn, num_radius là bán kính đường tròn tính theo dặm.

+ CreateLine(num_x, num_y, num_x2, num_y2): Trả về một đường thẳng với toạ độ điểm đầu và điểm cuối tương ứng là (num_x, num_y) và (num_x2, num_y2).

+ CreatePoint(num_x, num_y): Trả về một điểm có toạ độ là (num_x, num_y).

Mỗi hàm số trên trả về một đối tượng đồ hoạ. Nếu gõ lệnh Update trong cửa sổ MapBasic thì ta có thể sử dụng những hàm số này để tạo ra các đối tượng cho mỗi hàng trong bảng.

- Các Hàm số trả về kết quả các tính toán địa lý

+ Area(obj, str): Trả về diện tích của đối tượng. Thông số str chỉ định tên đơn vị tính diện tích, ví dụ “sq mi” (dặm vuông) hay “sq km” (km2).

+ CentroidX(obj): Trả về kinh độ X của trọng tâm của một đối tượng vùng (trung điểm đối với đường) .

+ CentroidY(obj): Trả về vĩ độ Y của trọng tâm của một đối tượng vùng (trung điểm đối với đường).

+ Distance(num_x, num_y, num_x2, num_y2, str): Trả về khoảng cách giữa hai vị trí. Hai thông số đầu tiên xác định toạ độ của điểm đầu; hai thông số tiếp theo xác định toạ độ điểm cuối; str là đơn vị đo khoảng cách, ví dụ như “mi” hay “km”.

+ ObjectLen(obj, str): Trả về chiều dài của đối tượng. Giá trị str là đơn vị khoảng cách ví dụ như “mi” hay “km”. Chỉ có các đối tượng là đường thẳng, đường (gấp khúc) và cung là có chiều dài khác không.

+ Perimeter(obj, str): Trả về chu vi của đối tượng. Giá trị str là đơn vị đo khoảng cách. Chỉ có các đối tượng kiểu vùng, ellipse và hình chữ nhật là có chu vi khác không.

- Các hàm ngày tháng

+ CurDate( ): Trả về ngày tháng năm hiện hành.

+ Day(date): Trả về phần ngày trong tháng (1 - 31) của ngày. + Month(date): Trả về phần tháng (1 - 12) của ngày.

+ Weekday(date): Trả về phần ngày trong tuần (1 - 7) của ngày, 1 = Chủ Nhật. + Year(date): Trả về phần năm của ngày.

- Các hàm về chuỗi ký tự

+ Chr$(num): Trả về một ký tự tương ứng với mã ký tự là num (ví dụ chr$(65) sẽ trả về chuỗi “A”).

+ DeformatNumber$(str): Đảo ngược tác động của hàm FormatNumber$, trả về một chuỗi không có các dấu phân cách hàng ngàn.

- Format$(num, str): Trả về một chuỗi biểu thị một số được định dạng. Ví dụ

Format$(12345.678,”$,#.##”) trả về giá trị “$12,345.68”.

+ FormatNumber$(num): Trả về một chuỗi biểu thị một con số được định dạng. Hàm số này đơn giản hơn hàm Format$, nhưng cho ta ít quyền kiểm soát trong việc định dạng hơn (ví dụ như số định dạng luôn có dấu phân cách hàng ngàn).

+ InStr(num, str1, str2): Tìm kiếm chuỗi str2 bắt đầu từ vị trí ký tự thứ num, và tìm sự hiện diện của phần đó trong chuỗi str1. Hàm này trả về vị trí khi tìm thấy kết quả trong str1, hoặc trả về 0 nếu không tìm thấy. Để yêu cầu MapInfo tìm kiếm chuỗi từ đầu, nạp giá trị num

là một (1).

+ LCase$(str): Trả về định dạng chữ viết thường của chuỗi str. + Left$(str, num): Trả về num số ký tự đầu tiên của chuỗi str. + Len(str): Trả về số ký tự trong chuỗi str.

+ LTrim$(str): Cắt bỏ bất kỳ khoảng trắng nào ở đầu chuỗi str và trả về kết quả.

+ Mid$(str, num1, num2 ): Trả về một phần của chuỗi str bắt đầu từ ký tự thứ num1 và dài num2 số ký tự.

+ Proper$(str): Trả về một chuỗi với cách viết hoa đúng kiểu (chữ đầu tiên viết hoa). + Right$(str, num): trả về num số ký tự cuối cùng của chuỗi str.

+ RTrim$(str): Cắt bỏ khoảng trắng nào ở phần cuối của chuỗi str và trả về kết quả. + Str$(expr): trả về một chuỗi tương ứng với giá trị của biểu thức expr.

+ UCase$(str): Trả về dạng chữ viết hoa (toàn bộ) của chuỗi str.

+ Val(str): Trả về giá trị số của một chuỗi; ví dụ Val(“18”) trả về số 18.

MapInfo cho phép sử dụng các từ khoá sau:“any” (bất kỳ), “all” (tất cả), “in” (trong) và “between” (trong khoảng). Những từ khoá này phải được gõ vào biểu thức (không có sẵn). Ví dụ: - field_x = any (“TP.HCM”, “ĐN”, “KG”)

- field_x in (“TP.HCM”, “ĐN”, “KG”)

=> tất cả các đối tượng mà cột field_x có giá trị là “TPHCM” hay “ĐN” hay ”Kg” Trước khi thực hiện các bước tính toán tự động ta cần phải điều chỉnh các thiết lập của MapInfo (đơn vị).

- Đơn vị tính diện tích: mi (miles), in (inches), ft (feet), yd (yard), km, m, cm, mm... - Đơn vị tính diện tích: sq mi (square miles), sq in (square inches), sq km (km2), sq m (m2), sq cm (cm2), sq mm (mm2), hectare...

b. Cập nhật các số liệu (Update Column)

Chúng ta có thể cập nhật hay bổ sung từng cột dữ liệu một

- Vào Table> Update Coulmn, cửa sổ Update Column xuất hiện với các mục sau: - Table to Update: Chọn lớp dữ liệu muốn cập nhật trong số các lớp dữ liệu đã mở - Get Value from Table: Lấy giá trị từ lớp dữ liệu nào. Có 2 trường hợp:

* Từ lớp dữ liệu muốn cập nhật:

- Column to Update: Chọn trường DL muốn cập nhật

- Value: Nhập một biểu thức hợp lệ. Thường sử dụng khung Assist để xây dựng biểu thức. Ví dụ như tính diện tích, chiều dài, tính giá trị toạ độ...

* Từ một lớp dữ liệu khác:

- Click khung Joint để xác định trường (field) tham chiếu liên kết giữa 2 lớp dữ liệu.

- Column to Update: Một trường có sẵn hay một trường DL mới (Add New Temporary Column)

- Calculate: Cách tính toán có thể là: Value hay các biểu thức tổng hợp như: Average, Count, Minimum, Sum, Weighted Average (trung bình gia trọng), Proportion Sum (tổng số theo tỷ lệ), Proportion Average (trung bình theo tỷ lệ) và Proportion WeightedAverage (trung bình gia trọng theo tỷ lệ).

Lưu ý: Các biểu thức Average, Count, Minimum, Sum, Weighted Average có tham số là các giá trị của dữ liệu, các biểu thức tỷ lệ Proportion thì xử lý các đối tượng địa lý.

- of: thường là một cột hay một biểu thức hợp lệ - Sau cùng click OK để tiến hành cập nhật

c. Các ví dụ

* Tính toán toạ độ của các điểm

Toạ độ của một điểm được xác định bằng hai giá trị: kinh độ và vĩ độ, ta tạo thêm hai trường mới cho lớp muốn nạp toạ độ.

- Chọn Table > Maintenance > Table Structure. Hộp thoại Modify Table Structure mở ra. - Chọn Add Field tạo thêm 2 trường mới là kinh_do và vi_do, kiểu là Float.

- Chọn OK.

Lần lượt nạp toạ độ cho cột kinh_do và vi_do như sau:

- Chọn tên lớp cần nạp điểm trong ô Table to Update; trong ô Column to Update ta chọn kinh_do.

- Nhấn chuột chọn nút Assist, hộp thoại Expression mở ra.

- Nhấn chuột vào nút thả xuống ở ô Functions (hàm số) và chọn hàm CentroidX; xong chọn OK.

- Quay trở lại hộp thoại Update Column, ta thấy biểu thức trong ô Value là “CentroidX(obj)

- Tắt chọn trong ô Browse Results đi rồi chọn OK. Trong trường kinh_do tất cả các hàng đều được nạp kinh độ vào. Toạ độ ở đây được tính bằng độ thập phân

Đối với cột vi_do cách làm tương tự và hàm số sử dụng là CentroidY.

* Tính toán chiều dài của các đường

Để tính chiều dài của các đối tượng đường (con sông hay đường giao thông) trước hết ta cũng phải tạo một trường để chứa chiều dài với các thông số Name: chieu_dai, Type: Float. Tiến hành nạp chiều dài vào trường mới này như sau:

- Chọn Table > Update Column. Hộp thoại Update Column mở ra.

- Trong Table to Update chọn lớp cần tính; trong Column to Update chọn trường

Một phần của tài liệu Hướng dẫn sử dụng Mapinfo Professional-Phần cơ bản ppt (Trang 45 - 57)