Thiết kế phần CSDL

Một phần của tài liệu Nghiên cứu xây dựng bản đồ số hóa công nghiệp Việt Nam (Trang 26 - 31)

2 PHƯƠNG PHÁP TIẾN HÀNH NGHIấN CỨU

2.6.3Thiết kế phần CSDL

CSDL chia thành 2 mảng: mảng để vẽ (cỏc geometry) và mảng chứa thụng tin.

Hỡnh 7: Mối quan hệ giữa 2 mảng thụng tin chớnh

Một phần tử trong mảng thụng tin cú thể tham chiếu đến n phần tử trong mảng geometry. Mảng thụng tin sẽ gồm nhiều lớp, tồn tại một cỏch tương đối độc lập với nhaụ Phần mảng thụng tin sẽ được phỏt triển dần dần, hết lớp này đến lớp khỏc.

Phần được quan tõm chớnh ở đõy là phần geometry.

2.6.3.1 Mụ hỡnh dữ liệu

Như đó xỏc định từ đầu, chỳng ta sẽ theo mụ hỡnh dữ liệu của OpenGiS (http://www.opengis.org). Tham khảo thờm 2 tài liệu:

99-049_OpenGIS_Simple_Features_Specification_For_SQL_Rev_1.1.pdf và chương “Spatial Extensions in MySQL” của tài liệu MySQL 5.0.

Chỳ ý: Ta chỉ theo về mụ hỡnh, chỳng ta KHễNG sử dụng loại dữ liệu geometry của MySQL.

do: cỏc hosting trờn Internet hiện nay chưa hỗ trợ geometrỵ

Một tài liệu khỏc cần được tham khảo là cấu trỳc của file .MIF và .MID của Mapinfo (MIDMIFfileformat.pdf). Mụ hỡnh OpenGis: • Geometry (non-instantiable) - Point (instantiable) - Curve (non-instantiable) o LineString (instantiable) Mảng thụng tin Geometry

Đ Line Đ LinearRing - Surface (non-instantiable) o Polygon (instantiable) - GeometryCollection (instantiable) o MultiPoint (instantiable) o MultiCurve (non-instantiable) Đ MultiLineString (instantiable) o MultiSurface (non-instantiable) Đ MultiPolygon (instantiable) Mụ hỡnh MapInfo: 1. point 2. line 3. polyline 4. region 5. arc 6. text 7. rectangle 8. rounded rectangle 9. ellipse 10. multipoint 11. collection

Chỳng ta sẽ chọn mụ hỡnh sao cho sỏt với OpenGis nhưng đồng thời cũng phải cú tớnh thực tế caọ Chỳ ý rằng mụ hỡnh MapInfo khỏ gần với cỏc khỏi niệm về đối tượng đồ họa trong Java (gúi javạawt.geom).

Arc2D Ellipse2D QuadCurve2D Area GeneralPath Rectangle2D CubicCurve2D Line2D RectangularShape Dimension2D Point2D RoundRectangle2D

Geometry của bản đồ = n đối tượng. Mỗi đối tượng phải là một trong cỏc loại sau:

1. point 2. line 3. polyline 4. region 5. arc 6. text 7. rectangle 8. rounded rectangle 9. ellipse 10. multipoint 11. collection

- Mỗi đối tượng cú tọa độ là cỏc cặp số (x,y). Tất cả cỏc giỏ trị tọa độ của đối tượng đều là độ.

- Mỗi đối tượng cú MBR (Minimum Bounding Rectangle) – hỡnh chữ nhật bộ nhất chứa đối tượng: ((MINX MINY, MAXX MINY, MAXX MAXY, MINX MAXY, MINX MINY)) - Ngoài ra, mỗi đối tượng cũn cú cỏc thuộc tớnh sau:

- Simple hoặc Non-simple

- Closed hoặc Not closed

Để tạo thuận lợi cho quỏ trỡnh vẽ trờn màn hỡnh, ta thờm cỏc thuộc tớnh của MapInfo:

- Pen Style: (width, pattern, color) dựng để vẽ cỏc đường

- Brush Style: (pattern, forecolor [, backcolor ]) dựng để vẽ họa tiết nền

- Symbole Style: (shape, color, size) dựng để vẽ ký hiệu cho 1 điểm. Ta sẽ cú 1 bảng danh mục ký hiệu biểu trưng cho cỏc ngành cụng nghiệp khỏc nhaụ

- Font Style: (”fontname”, style, size, forecolor [, backcolor]) dựng cho cỏc đối tượng văn bản (text)

2.6.3.2 Thiết kế cỏc bảng lưu thụng tin địa lý

Cấu trỳc của bảng geom:

No Name Type Null? Description

1 geom_srid int(10) NO PRI auto_increment

2 geom_parent_id int(10) NO Trỏ đến geom_srid mẹ (nếu tồn tại) 3 geom_type tinyint(1) NO Loại geometry: 0-11 (xem ở trờn) 4 geom_coords mediumtext NO Tọa độ (kinh tuyến, vĩ tuyến) 5 geom_mbr varchar(250)NO Minimum Bounding Rectangle

6 geom_centroid varchar(100) Yes Tọa độ (kinh tuyến, vĩ tuyến) của điểm trọng tõm 7 geom_simple tinyint(1) NO

8 geom_closed tinyint(1) NO (adsbygoogle = window.adsbygoogle || []).push({});

9 pen_style varchar(100)YES width, pattern, color

10 brush_style varchar(100)YES pattern, forecolor [, backcolor ]

11 symbol_style varchar(100)YES shape, color, size

12 font_style varchar(100)YES ”fontname”, style, size, forecolor [, backcolor] 13 mbr_min_x double No Giỏ trị tỏch ra từ geom_mbr

14 mbr_min_y double No Giỏ trị tỏch ra từ geom_mbr 15 mbr_max_x double No Giỏ trị tỏch ra từ geom_mbr 16 mbr_max_y double No Giỏ trị tỏch ra từ geom_mbr

- Trường geom_parent_id: chỉ đến đối tượng mức trờn mà đối tượng này thuộc vào, = 0 nếu đối tượng này ở mức trờn cựng.

Cấu trỳc bảng imap_symbol:

No Name Type Null? Description

1 symbol_id int(2) NO PRI auto_increment

2 symbol_descvarchar(250)NO Mụ tả ký hiệu/ngành cụng nghiệp 3 symbol_pic mediumblob YES Ảnh của ký hiệu

4 pic_type varchar(100)NO 5 pic_width int(2) NO 6 pic_height int(2) NO

Bảng geom chỉ phục vụ việc lưu thụng tin theo tọa độ là kinh độ và vĩ độ. Ta khụng dựng cỏc số liệu dạng này để vẽ trực tiếp lờn màn hỡnh được mà phải biến đổi chỳng về tọa độ màn hỡnh. Để vẽ, ta phải căn cứ vào cỏc yếu tố sau: mức zoom, cỏc chiều rộng, cao của cửa sổ dựng để vẽ và cửa sổ đú ứng với vựng kinh độ, vĩ độ nàọ

Hỡnh 8: Cỏc mức zoom khi nhỡn xuống bản đồ thế giới

Như đó được đề cập ở trờn, ta sử dụng cỏc mức zoom số, đỏnh số từ 1 đến 12, 1 ứng với mức zoom nhỏ nhất (5400) và 12 ứng với mức zoom cao nhất. Sau này, khi cú nhiều dữ liệu hơn, ta sẽ tăng mức zoom lờn 13, 14, ... Tuy trờn thực tế hiện nay ta chia 12 mức, phần lập trỡnh khụng được dựa vào con số 12 mà phải lập trỡnh tổng quỏt cú n mức. Sau này, khi n tăng lờn, chương trỡnh sẽ khụng cần phải sửa đổị

2.6.3.3 Thiết kế cỏc bảng liờn kết GIS với cỏc lớp thụng tin

Với cỏc bảng lưu thụng tin địa lý ta cú thể vẽ bản đồ về mặt hỡnh học. Nhưng cỏc hỡnh này chưa cú thụng tin gỡ khỏc ngoài việc chỳng là cỏc đa giỏc, cỏc hỡnh chữ nhật, ... Muốn biết được chỳng là gỡ ta cần tỡm cỏch ghộp chỳng với cỏc bảng khỏc cho biết đú là tỉnh nào, huyện nào, ngành cụng nhiệp gỡ, ...

Cụng việc tiếp theo là phải xõy dựng cỏc giao tiếp cho phộp cỏc geometry đú liờn kết với cỏc lớp thụng tin.

Về cơ bản, ta cú thể thiết kế theo quan hệ m-n như trong hỡnh vẽ sau:

Hỡnh 9: Liờn kết Lớp thụng tin - geometry

Cú một điểm khỏc biệt cơ bản so với mụ hỡnh thụng thường là: chỳng ta khụng biết trước được tờn bảng và cấu trỳc bảng nằm trong cỏc lớp thụng tin. Vỡ vậy, phần mềm imap phải cú khả năng “quản trị” được cỏc bảng.

Cấu trỳc bảng quản trị cỏc bảng lớp thụng tin table_info:

No Name Type Null?Description

1 table_id int(2) NO PRI auto_increment

2 table_title varchar(250) NO Nhan đề của bảng (tỉnh, huyện, xó, ...) 3 table_name varchar(250) NO Tờn bảng

4 id_field varchar(250) NO Tờn trường làm khúa 5 title_text varchar(250) NO Văn bản cho trường tiờu đề 6 title_field varchar(250) NO Tờn trường làm tiờu đề liệt kờ 7 disp_fields varchar(250) NO

Danh mục cỏc trưởng hiển thị theo cấu trỳc:

Tờn trường | Văn bản tiờu đề Tờn trường | Văn bản tiờu đề ...

8 search_fields text NO Danh sỏch cỏc trường sử dụng trong tỡm kiếm (liệt kờ cỏch nhau bởi dấu phảy) 9 min_view tinyint(1) NO Mức view tối thiểu

10 max_view tinyint(1) NO Mức view tối đa 11 info_layer int(2) NO Thuộc lớp thụng tin 12 min_disp tinyint(1) YES Mức min hiển thị tờn 13 max_disp tinyint(1) YES Mức max hiển thị tờn 14 font_name varchar(50) YES Tờn font

15 font_size decimal(5,1) YES Cỡ font (adsbygoogle = window.adsbygoogle || []).push({});

16 fill_color varchar(10) YES Màu nền (polygon) 17 border_color varchar(10) YES Màu đường viền 18 font_color varchar(10) YES Màu font chữ 19 border_size tinyint(1) YES Cỡ đường viền

20 text_shift varchar(50) YES Trượt văn bản (trượt x, trượt y) 21 table_order double NO Thứ tự trong danh mục bảng

table_title: Tiờu đề bảng (bảng này chứa thụng tin gỡ). Cỏc trường khỏc phục vụ mục đớch tỡm kiếm và hiển thị kết quả. Bảng để liờn kết lớp thụng tin với geometry itf: (viết tắt của interface)

geometry Cỏc lớp thụng tin Liờn kết

No Name Type Null? Description

1 itf_id int(10) NO PRI auto_increment

2 geom_srid int(10) NO Giỏ trị khúa của geom

3 info_id int(10) NO Giỏ trị khúa bản ghi trong bảng table_id

4 table_id int(2) NO Trỏ đến table_info

5 key_words text YES Cỏc từ khúa để xỏc định geom từ văn bản, ngữ nghĩa

key_word: chứa cỏc từ khúa liờn quan đến geom_srid. Trường này hỗ trợ việc tỡm kiếm thụng tin theo ngữ nghĩa sau nàỵ

Tỡm kiếm theo ngữ nghĩa đũi hỏi phải ứng dụng cơ sở dữ liệu tri thức và chuyển cỏc cõu hỏi thành cỏc cụm văn bản cú thể tỡm kiếm được trờn cỏc geometrỵ Về mặt nguyờn tắc, ta phải tỡm trong cỏc lớp thụng tin, sau đú nối với geometry thụng qua itf. Nhưng cỏc bảng chứa cỏc lớp thụng tin biến động theo thời gian. Nghĩa là phần tỡm kiếm cũng sẽ khụng biết trước được cấu trỳc của cỏc bảng đú mà phải dũ theo bảng itf, lỳc đú mới biết tỡm thụng tin trong cỏc trường nào (nhờ vào bảng table_info). Tỡm xong mới bắt đầu xỏc định geometrỵ

Để tăng tốc độ tỡm kiếm, ta thờm trường key_words. Khi tỡm kiếm nhanh, chỉ cần kớch hoạt tỡm kiếm trờn bảng itf và tỡm cỏc cụm từ trong trường key_words.

Một phần của tài liệu Nghiên cứu xây dựng bản đồ số hóa công nghiệp Việt Nam (Trang 26 - 31)