Xây dựng hệ thống GIS trên Internet

Mục lục Mở đầu Trong quá trình phát triển xã hội, con người đã phải vượt qua biết bao những khó khăn, thử thách. Một trong những khó khăn nhất đó là sự rộng lớn bao la của không gian, vũ trụ mà con người thì quá nhỏ bé. Nhưng những thách thức đó cũng không ngăn nổi ý chí tìm tòi, khám phá, những ước muốn vươn tới những chân trời xa xôi đầy bí ẩn. Họ đã tìm ra những cách khác nhau để vượt qua những rào cản về khoảng cách địa lý. Đó là những chiếc la bàn để định hướng đi trên mặt đất cũng như tr

doc110 trang | Chia sẻ: huyen82 | Lượt xem: 1956 | Lượt tải: 5download
Tóm tắt tài liệu Xây dựng hệ thống GIS trên Internet, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ên đại dương mênh mông, những bản vẽ mô tả những địa thế đáng ghi nhớ, những nơi đã đi qua. Mặc dù rất đơn giản nhưng đó cũng là những công cụ hỗ trợ cho con người hình dung một cách trực quan về thế giới bên ngoài. Dần dần, khi kỹ thuật ngày một nâng cao, con người đã xây dựng nên cả một nghệ thuật mới, đó là nghệ thuật tạo lập bản đồ. Những bản đồ giấy có chất lượng cao đã đem lại những đóng góp rất thiết thực vào nhiều lĩnh vực khác nhau từ quân sự, hàng hải, kinh tế cho đến các lĩnh vực khí tượng, thủy văn, khai thác tài nguyên thiên nhiên, đất đai,… Đặc biệt, khi có sự phát triển của công nghệ hiện đại mà điển hình là sự xuất hiện của máy tính, người ta đã nghĩ đến việc số hoá bản đồ đưa vào trong máy tính. Các bản đồ số với độ chính xác cao kèm theo nó là rất nhiều các thông tin trợ giúp khác. Tất cả đã tạo nên một hướng nghiên cứu mới được gọi là GIS. GIS là một khái niệm về một hệ thống không chỉ cung cấp những thông tin địa lý mà còn là một phương tiện tìm kiếm, phân tích, trợ giúp quyết định rất hữu hiệu cho con người. Với sự ra đời của mạng Internet cho phép nối kết hàng triệu người trên hành tinh này chỉ trên một chiếc máy tính. Vậy thì tại sao chúng ta lại không đưa GIS vào Internet. Điều này sẽ là một thành công rất lớn góp phần đưa GIS đến tận tay người sử dụng. Đề tài “Xây dựng hệ thống GIS trên Internet” là một đề tài thực sự lớn và không đơn giản. Vì vậy trong giới hạn của đồ án tốt nghiệp, tôi chỉ lựa chọn một phần rất nhỏ nhưng đây cũng là một tiền đề quan trọng trong quá trình phát triển về sau. Đó là phần “Xây dựng hệ thống phần mềm thao tác, hiển thị thông tin địa lý trên môi trường mạng Internet” . Do khả năng kiến thức, trình độ còn hạn chế, việc thực hiện đồ án chắc chắn không tránh khỏi các sai sót. Tôi rất mong nhận được sự chỉ bảo, góp ý của thầy cô, bạn bè và của tất cả mọi người có quan tâm đến vấn đề này. Đó sẽ là sự động viên, giúp đỡ rất quý báu không chỉ trong việc hoàn thiện đề tài mà trong cả các công việc khác trong tương lai. PHầN I - Giới thiệu nội dung đề tài Nội dung : I. Giới thiệu nội dung đề tài II. Phạm vi và mục đích của đề tài III. Tổng quan về hệ thống Internet - GIS I. Giới thiệu đề tài Phát triển từ những năm 1960 nhưng đến nay GIS đã khẳng định được vai trò quan trọng của mình trong nhiều lĩnh vực khác nhau, cùng với những ứng dụng thực tiễn có chất lượng cao và hiệu quả. Hiện nay, ở nhiều nước trên thế giới người ta đã chú trọng đến việc xây dựng những hệ thống GIS có quy mô lớn. Đã có nhiều công ty cùng với các sản phẩm nổi tiếng về GIS như công ty MapInfo (với sản phẩm MapInfo), công ty ESRI (với sản phẩm ArcInfo/ ArcView), công ty Berteley (với sản phầm MicroStation), hãng Intergraph (với nhiều sản phẩm kể cả Web)… Đây là các sản phẩm phần mềm mạnh được tích hợp nhiều chức năng khác nhau từ số hoá, lưu trữ bản đồ cho tới việc hiển thị, vẽ, … và các chức năng khác của GIS. ở ViệtNam GIS vẫn còn khá mới mẻ nhưng cũng đã bắt đầu thu hút được sự quan tâm, chú ý của nhiều người, tổ chức khác nhau. Từ khi mạng Internet ra đời đã đánh dấu một bước phát triển vượt bậc của công nghệ thông tin. Các thông tin được chia sẻ trên mạng giờ đây có thể đến được tới tất cả mọi người, không còn phân biệt về khoảng cách địa lý trên trái đất. Internet đã trở thành một trường học lớn và cũng là một thị trường rộng lớn. Việc đưa GIS lên Internet có thể đem lại một lợi ích lớn cho người sử dụng và hứa hẹn nhiều tiềm năng. Đây cũng là xu hướng phát triển mang tính cạnh tranh của các nhà phát triển GIS. Nhiều công ty cung cấp các sản phẩm IMS (Internet Map Server) chuyên dụng và mang tính thương mại cao. Các sản phẩm này được thực hiện bởi những công ty có uy tín và có nhiều thâm niên trong lĩnh vực này nên chất lượng sản phẩm rất cao. Tuy nhiên, đa số các sản phẩm về WEB GIS đều có giá thành khá đắt, nhất là trong điều kiện nước ta hiện này thì để mua được một sản phẩm như vậy cũng là một khó khăn không nhỏ. Hơn nữa, với từng lĩnh vực chuyên môn lại có những bài toán GIS riêng và việc đáp ứng được tất cả các bài toán này cũng không phải dễ dàng. Vì vậy, cũng cho thấy một nhu cầu sử dụng GIS trên mạng Internet là rất lớn và việc xây dựng một hệ thống Internet-GIS cho phù hợp với hoàn cảnh nước ta hiện nay cũng rất cần thiết. Trong phạm vi của một đồ án tốt nghiệp chỉ thực hiện một phần của đề tài này đó là “Xây dựng hệ thống thao tác, hiển thị thông tin địa lý trên môi trường mạng Internet”. Tuy nhiên việc thực hiện đề tài trong giai đoạn đầu tiên chỉ có thể mang tính thử nghiệm và tìm kiếm giải pháp tối ưu. Việc hoàn thành toàn bộ đề tài cần mất nhiều thời gian và công sức cùng với sự tham gia xây dựng của nhiều người, đồng thời cũng phải có một sự hiểu biết sâu sắc về GIS và các lĩnh vực khác có liên quan như mạng máy tính, CSDL, … Trong khuôn khổ thời gian làm đồ án tốt nghiệp, đề tài chỉ thực hiện 2 phần chính là: Thực hiện giao tiếp với hệ quản trị CSDL Oracle qua OCI để query dữ liệu đồ hoạ đã được lưu trong CSDL Oracle. Thực hiện các chức năng cơ bản về bản đồ như hiển thị, xem và soản thảo các thông tin thuộc tính về bản đồ. Các chức năng khác như tạo mới, vẽ,… sẽ được xem như các chức năng mở rộng và định hướng phát triển về sau. Nội dung đồ án sẽ gồm các phần sau : Phần I : Giới thiệu nội dung đề tài Phần này giới thiệu một cách khái quát về toàn bộ nội dung thực hiện. Cung cấp cho người đọc một khái niệm ban đầu về toàn hệ thống cùng với mục đích và phạm vi thực hiện trong đồ án. Phần II : Cơ sở lý thuyết Trình bày về các lý thuyết chung làm cơ sở cho việc thực hiện đồ án. Trong đó người đọc có thể hiểu về các lĩnh vực và công nghệ có liên quan đến đồ án. Phần III : Phân tích và thiết kế hệ thống Phần này sẽ đi sâu vào việc phân tích hệ thống, xác định các giải pháp thực hiện sau đó sẽ là phần thiết kế tổng thể và thiết kế chi tiết. Phần IV : Cài đặt và thử nghiệm Xác định phương pháp cài đặt, các chỉ tiêu về phần cứng, phần mềm cho hệ thống. Sau đó là phần thử nghiệm hệ thống, chạy thử trên môi trường mạng. Phần V : Kết luận Thực hiện đánh giá về hệ thống, các kết quả đã thu được và những hạn chế cần phải khắc phục. Đồng thời cũng là phần tổng kết về quá trình thực hiện đồ án. II. Phạm vi và mục đích của đề tài Việc đưa GIS lên mạng Internet có nhiều khó khăn và phức tạp. Trước hết đó là thời gian truyền dữ liệu trên mạng có thể rất chậm khi lượng dữ liệu lớn. Điều này ảnh hưởng lớn tới tâm lý của người sử dụng. Thông thường một hệ thống thông tin địa lý thường phải xử lý một lượng lớn dữ liệu. Đó có thể là dữ liệu không gian hay dữ liệu thuộc tính vì vậy việc đảm bảo tốc độ xử lý nhanh là một vấn đề khó. Nếu dữ liệu truyền trên mạng là dữ liệu vector thì có ưu điểm là hệ thống hiển thị sẽ làm thao tác trực tiếp trên loại dữ liệu này một cách nhanh nhất và đây cũng là loại dữ liệu chứa đựng một lượng thông tin lớn. Nhưng nhược điểm của loại dữ liệu này đó là khối lượng dữ liệu có thể quá lớn. Lúc này việc truyền toàn bộ dữ liệu trên mạng sẽ trở thành một giải pháp không thực tế. Thêm vào đó kích thước của chương trình máy khách cũng tăng lên do phải viết thêm các modul thao tác với loại dữ liệu này. Thứ hai, hệ thống phải đảm bảo thực hiện với nhiều Client cùng một lúc. Điều này có thể dẫn đến tình trạng quá tải, tranh chấp tài nguyên,… Vì vậy, trước mắt để giải quyết các khó khăn này, dữ liệu truyền trên mạng sẽ là dữ liệu ảnh Raster. Nói chung đây là loại dữ liệu không có cấu trúc và nghèo thông tin nhưng có ưu điểm là kích thước có thể chấp nhận được và khá ổn định. Đồng thời tốc độ xử lý của server phải đủ nhanh và có khả năng đồng bộ hoá các tiến trình song song cho phép nhiều tiến trình thực hiện một cách tương tranh với nhau. Do có nhiều khó khăn như vậy nên phạm vi của đề tài chỉ thực hiện ở những phần sau : Xây dựng các modul chương trình thực hiện giao tiếp với CSDL Oracle. Dữ liệu GIS được chứa trong CSDL Oracle thông qua sản phẩm Oracle Spatial. Xây dựng một hệ thống hoạt động tin cậy và ổn định cho phép thực hiện các thao tác cơ bản về bản đồ như hiển thị bản đồ, các thao tác xem bản đồ như phóng to (zoom in), thu nhỏ (zoom out), dịch chuyển (pan), … và các chức năng hiển thị và cập nhật các dữ liệu thuộc tính của bản đồ. Xây dựng một giao diện Web mà có thể chạy đuợc trên các trình duyệt (Browser) thông dụng. Giao diện này có thể tuỳ biến được nhằm hỗ trợ cho những người thiết kế trang Web biến đổi cho phù hợp với các mục đích khác nhau như các chỉ tiêu về mỹ thuật, sở thích, … Xây dựng một cơ chế giao tiếp giữa Client và Server một cách hiệu quả dựa trên hạ tầng mạng sẵn có là Internet. Như vậy các mục đích chính của đề tài là : Cho phép người sử dụng có thể khai thác các thông tin địa lý trên môi trường Internet thông qua các trình duyệt Web thông mà không cần cài bất kỳ một phần mềm GIS chuyên dụng nào. Đáp ứng nhu cầu sử dụng GIS của nhiều người sử dụng và có thể chia sẻ dữ liệu GIS trên mạng. Có thể mở rộng cho phù hợp với điều kiện trong nước và đáp ứng được với từng bài toán chuyên môn cụ thể. III. Tổng quan về hệ thống Internet - GIS Internet - GIS là một hệ thống tập trung GIS tại một nhà cung cấp dịch vụ GIS, hướng tới các khác hàng là người sử dụng trên mạng Internet. Khách hàng có thể là những người am hiểu hoặc không am hiểu về GIS nhưng họ cần các thông tin địa lý để phục vụ cho các mục đích riêng. Để sử dụng được dịch vụ GIS trên Internet, người sử dụng chỉ cần một chiếc máy tính nối với Internet và một trình duyệt Web kết nối tới trang Web của nhà cung cấp. Ngoài ra, trên máy của người sử dụng cũng không cần bất cứ một chương trình GIS chuyên dụng nào, cùng với các yêu cầu về phần cứng cũng không cần phải quá mạnh. Tất cả các yêu cầu này sẽ được tập trung tại một máy chủ của nhà cung cấp. Khi truy nhập vào trang Web có chứa dịch vụ GIS, một chương trình tích hợp dưới dạng Client sẽ được nạp về và chạy trên máy của người sử dụng. Chương trình này sẽ tự động kết nối với một Gis-Server của nhà cung cấp. Chương trình có thể yêu cầu người sử dụng vào các thông tin kiểm tra quyền sử dụng của họ. Nếu tất cả đều hợp lệ, hệ thống sẽ sẵn sàng thực hiện các chức năng GIS mà người sử dụng yêu cầu. Hệ thống Internet-GIS thực hiện trong đồ án tốt nghiệp này gồm những phần sau : Một hoặc nhiều Oracle-Server sẽ quản lý các dữ liệu địa lý. Hệ quản trị CSDL Oracle cho phép tích hợp một số lượng rất lớn dữ liệu phục vụ những nhu cầu rất đa dạng của người sử dụng. IGIS-Server là một chương trình ứng dụng được viết bằng ngôn ngữ Visual C++ sẽ kết nối với các Oracle-Server và thực hiện các chức năng GIS. Chương trình này có khả năng kiểm tra quyền sử dụng, phân quyền truy nhập dịch vụ của các khách hàng vào CSDL địa lý. IGIS-Client là một chương trình Java Applet được tích hợp vào trong trang Web. Chương trình này sẽ được tải về máy của người sử dụng , chạy và tự động giao tiếp với IGIS-Server để thực hiện các chức năng của hệ thống. Phần II - Cơ sở lý thuyết Nội dung : Chương I – Hệ thống thông tin địa lý (GIS) Chương II – Hệ quản trị CSDL Oracle Chương III – Truyền thông mạng máy tính Chương IV – Kiến trúc Client/Server Chương V – Lập trình Socket và Multithreading Chương VI – Ngôn ngữ lập trình và các công nghệ trên Web Chương I – hệ thống thông tin địa lý (GIS) I. Khái niệm về GIS (Geographic Information Systems) GIS được xem như là một hệ thống cho phép khai thác, biểu diễn dữ liệu địa lý chuyển đổi thành các thông tin trợ giúp con người trong quá trình tạo lập quyết định. Trong suốt quá trình phát triển cũng đã có rất nhiều định nghĩa về GIS. Sau đây sẽ là một định nghĩa khá chính xác và đầy đủ : “GIS là một hệ thống bao gồm các thiết bị phần cứng, phần mềm ứng dụng, dữ liệu và đội ngũ nhân sự chuyên nghiệp, được thiết kế để thực hiện các thao tác thu thập, lưu trữ, cập nhật, biến đổi, phân tích và hiển thị các dữ liệu quy chiếu không gian từ thế giới thực một cách hiệu quả, phục vụ cho một mục đích xác định”. II. Các thành phần cơ bản của GIS Như vậy một hệ thống GIS được tạo nên từ nhiều thành phần khác nhau và việc xây dựng một hệ thống GIS sẽ đem lại rất nhiều lợi ích thiết thực. Đây là một công cụ phân tích hữu hiệu, trợ giúp người sử dụng trong quá trình lên kế hoạch và tạo lập quyết định. Sau đây chúng ta sẽ xem xét cụ thể với từng thành phần của hệ thống GIS. II.1 Các thiết bị phần cứng Phần cứng của hệ thống GIS có thể bao gồm rất nhiều thiết bị khác nhau như các thiết bị nhập dữ liệu (Bàn số hoá, máy quét, …), máy vẽ, thiết bị hiển thị (màn hình máy tính,…), các thiết bị lưu trữ và bộ xử lý trung tâm. II.2 Phần mềm ứng dụng Phần mềm GIS được sử dụng với nhiều chức năng khác nhau và có thể phục vụ cho nhiều yêu cầu khác nhau như : Hiển thị dữ liệu (bản đồ, đồ thị, biểu đồ, các bảng,…). Quản lý cơ sở dữ liệu địa lý. Tương tác với người sử dụng. Phân tích dữ liệu. … II.3 Dữ liệu GIS Dữ liệu của hệ thống GIS là một trong những thành phần nền tảng của hệ thống và bao gồm hai thành phần dữ liệu chính là dữ liệu không gian và dữ liệu thuộc tính. Việc xây dựng và tổ chức quản lý dữ liệu được xem là một trong những bước cơ sở và tốn kém rất nhiều công sức. II.4 Đội ngũ nhân sự Đội ngũ nhân sự chính là nguồn gốc sức mạnh của một hệ thống GIS. Đây là đội ngũ có trình độ chuyên môn cao đặc biệt là về lĩnh vực GIS. Cũng cần có một kế hoạch thường xuyên đào tạo nâng cao trình độ và sự hiểu biết về GIS. III. Các kiểu dữ liệu và các mô hình dữ liệu GIS III.1 Các kiểu dữ liệu cơ bản của GIS Dữ liệu GIS bao gồm 3 loại dữ liệu cơ bản là dữ liệu không gian (Spatial Data), dữ liệu thuộc tính hay dữ liệu dạng bảng (Tabular Data) và dữ liệu ảnh (Image Data). Sau đây sẽ đề cập chi tiết về 3 loại dữ liệu này. III.1.1 Dữ liệu không gian Dữ liệu không gian có thể xem như là một loại dữ liệu mô tả về các đối tượng trong thế giới thực xét trên quan điểm hình học hoặc vị trí địa lý. Một ví dụ đơn giản của loại dữ liệu này là bản đồ. Trong đó có những đối tượng hai chiều như điểm (point), đường (lines), đa giác (polygon),… mô tả các thực thể như thành phố, đường xá hay các đường ranh giới giữa các vùng hay quốc gia, lãnh thổ,... Xét trong không gian địa lý các thực thể này có một ví trí địa lý nhất định và sau khi đã được chiếu lên mặt phẳng trở thành các đối tượng hai chiều. Như vậy, dữ liệu không gian là loại dữ liệu về vị trí của các đối tượng không gian được đặt trong hệ thống toạ độ nhất định như toạ độ trái đất (kinh tuyến,vĩ tuyến hoặc chiều cao,chiều sâu) hay các hệ toạ độ khác. Dữ liệu không gian là một trong những thành phần quan trọng nhất của GIS, có thể ví như ‘trái tim’ của hệ GIS. Việc lưu trữ, tạo lập loại dữ liệu này cũng đòi hỏi nhiều chi phí và tốn kém. III.1.2 Dữ liệu thuộc tính Dữ liệu thuộc tính dùng để mô tả tính chất hay đặc điểm của các đối tượng không gian tương ứng.Ví dụ như một đường phố trong bản đồ có thể có các thuộc tính như: Tên đường Độ dài Độ rộng lớn nhất Độ rộng nhỏ nhất Độ rộng trung bình Nút bắt đầu Nút kết thúc … Dữ liệu này có thể biểu diễn dưới dạng bảng và được liến kết chặt chẽ với dữ liệu không gian. III.1.3 Dữ liệu ảnh Dữ liệu ảnh thường được sử dụng làm ảnh nền trong quá trình xây dựng bản đồ. Các ảnh này có thể là ảnh chụp từ vệ tinh, máy bay hay ảnh từ máy quét. III.2 Mô hình dữ liệu GIS Có hai mô hình dữ liệu chính được sử dụng trong GIS là mô hình dữ liệu raster và mô hình dữ liệu vector. III.2.1 Mô hình dữ liệu raster Mô hình dữ liệu raster biểu diễn các đặc trưng của vùng nghiên cứu dưới dạng lưới tế bào trong một không gian liên tục. Mỗi giá trị trong vùng nghiên cứu tương ứng với một tế bào. Mỗi lớp (layer) biểu diễn một thuộc tính mặc dù các thuộc tính khác nhau có thể gắn với một tế bào. Đa số các phép phân tích thường kết hợp các lớp lại và tạo ra một lớp mới với các giá trị tế bào mới. Ưu điểm chính của mô hình này là đơn giản. Dữ liệu đầu vào có thể lấy ngay từ các ảnh vệ tinh hay các ảnh hàng không. Mô hình dữ liệu raster cho phép thực hiện các phép phân tích dữ liệu một cách dễ dàng hơn và đặc biệt thuận lợi cho các hệ GIS nhằm chủ yếu vào việc phân tích các biến đổi liên tục trên bề mặt trái đất để quản lý tài nguyên thiên nhiên và môi trường. Nhưng nhược điểm của mô hình này là phụ thuộc rất nhiều vào kích thước của các tế bào. Khi kích thước của các tế bào là lớn thì sẽ ảnh hưởng đến kết quả phân tích và độ chính xác của bản đồ. Nếu kích thước này quá nhỏ thì đòi hỏi một không gian lưu trữ lớn. Mặt khác với mô hình này, việc thiết lập các mạng lưới của các đặc trưng của bản đồ như đường xá, hệ thống thuỷ lợi, … sẽ gặp rất nhiều khó khăn. Ví dụ: mô hình dữ liệu raster Qua nghiên cứu thì mô hình dữ liệu raster định hướng chủ yếu vào phân tích (analysis), không định hướng cho cơ sở dữ liệu. III.2.2 Mô hình dữ liệu Vector Mô hình dữ liệu Vector dựa trên cơ sở các vector hay toạ độ của một điểm trong một hệ toạ độ nhất định. Điểm là một đơn vị cơ bản của dữ liệu Vector. Các điểm được nối với nhau bởi các đoạn thẳng hay các đường cong để tạo nên các đối tượng khác nhau như đối tượng đường(lines) hay vùng (area). Các đường thẳng biểu diễn các thực thể như đường phố, hệ thống thuỷ lợi,… được tạo thành bởi dẫy các cặp toạ độ. Các vùng biểu diễn các biên giới của các quốc gia, lãnh thổ hay giữa các quận huyện,… được xây dựng bởi các đa giác khép kín. Như vậy mô hình dữ liệu Vector sử dụng các thành phần điểm hay đoạn thẳng để nhận biết vị trí của thế giới thực. Cũng chính vì cách biểu diễn dữ liệu như vậy, nên mô hình dữ liệu Vector cho phép thực hiện được nhiều thao tác hơn so với mô hình dữ liệu raster. Trong đó có thể thực hiện việc đo diện tích, tính chu vi, đo khoảng cách thông qua các phép tính hình học trên toạ độ của các đối tượng một cách chính xác thay vì việc đếm các tế bào của mô hình raster. Có thể thực hiện các thao tác lựa chọn, thay đổi hay cập nhật lại một đối tượng địa lý bất kỳ một cách dễ dàng hơn. Thêm vào đó việc thực hiện một số thao tác khác như tìm đường đi ngắn nhất trong mạng lưới giao thông, hệ thống thuỷ lợi,… sẽ nhanh hơn rất nhiều. Tuy nhiên các thao tác khác như quá trình nạp chồng các lớp sẽ có phần chậm hơn. Một đặc trưng quan trọng của mô hình dữ liệu Vector là định hướng tới hệ thống quản trị cơ sở dữ liệu. Dữ liệu Vector là loại dữ liệu có cấu trúc và có thể được lưu trữ rất tốt vào trong cơ sở dữ liệu (CSDL) dưới dạng bảng. Nhờ đó các ứng dụng có thể truy xuất dễ dàng và thực hiện các thao tác tìm kiếm , cập nhật, thêm bớt một cách hiệu quả nhờ vào các công cụ của hệ quản trị CSDL. Ngoài ra có thể thực hiện liên kết trực tiếp các thành phần dữ liệu đồ hoạ với các thuộc tính của chúng. Trong CSDL không gian, các thực thể của thế giới thực được biểu diễn dưới dạng số bằng một kiểu đối tượng không gian tương ứng. Dựa trên kích thước không gian của đối tượng mà US National Standard for Digital Cartographic Databases (DCDSTF, 1998) đã chuẩn hoá các loại đối tượng như sau : 0-D : Đối tượng có vị trí nhưng không có độ dài (Đối tượng điểm) 1-D : Đối tượng có độ dài (đường), được tạo từ hai hay nhiều đối tượng 0-D 2-D : Đối tượng có độ dài và độ rộng (vùng) , được bao quanh bởi ít nhất 3 đối tượng đoạn thẳng 3-D : Đối tượng có độ dài, độ rộng, chiều cao hay độ sâu (hình khối) được tạo nên từ ít nhất hai đối tượng 2-D Các đối tượng trong CSDL không gian là biểu diễn của các thực thể trong thế giới thực cùng với các thuộc tính của chúng. Một trong những sức mạnh của một hệ thống GIS là ở chỗ chúng trợ giúp việc tìm kiếm các thực thể trong một ngữ cảnh địa lý và khảo sát các quan hệ giữa chúng. Việc xây dựng các thực thể từ các đối tượng điểm hay đường thì phải thiết lập một cấu trúc topology tương ứng. Đó là quá trình xây dựng mối quan hệ giữa các điểm, các đoạn thẳng và các vùng đối tượng tạo ra các thực thể. Thực chất là xây dựng mối quan hệ không gian giữa các mối liên kết của các đối tượng trong một lớp. Topology trợ giúp một cách thuận tiện cho các thao tác phân tích và tìm đường trong mạng lưới của các dữ liệu trong CSDL. IV. Các hệ toạ độ và hệ quy chiếu trong GIS IV.1 Hệ toạ độ Hệ toạ độ được được sử dụng để định vị và đo các đối tượng địa lý. Được chia làm hai loại : hệ toạ độ phẳng và hệ toạ độ cầu. IV.1.1 Hệ toạ độ phẳng – Cartesian : Đây là hệ toạ độ được xây dựng trên một mặt phẳng bao gồm : Gốc toạ độ Hai trục qua gốc x, y Toạ độ là cặp (x,y) Đơn vị đo cơ sở là mét (m) và các giá trị x,y thường là các số dương. Đo khoảng cách : Khoảng cách Euclid : Là khoảng cách được xác định theo đường thẳng từ điểm (x1,y1) tới điểm (x2,y2) : D2 = (x2-x1)2 + (y2-y1)2 Manhattan Metric : Là khoảng cách được đo theo các đoạn song song theo trục x và y Khoảng cách có barrier : Lúc này khoảng cách được xác định theo một cách riêng phụ thuộc vào các đối tượng ngăn cách. Ví dụ : IV.1.2 Hệ toạ độ cầu (trái đất) Đây là hệ thống toạ độ cầu của trái đất, gốc toạ độ là tâm của quả đất. Kinh tuyến (Meridian) : là một đường cong giao giữa mặt phẳng đi qua hai trục bắc, nam với trái đất. Vĩ tuyến (Parallel of latitude): là một đường cong giao giữa mặt phẳng song song với mặt phẳng xích đạo với trái đất. Toạ độ được xác định bởi kinh độ và vĩ độ, đơn vị đo cơ sở là độ. Có hai phương pháp đo là : DMS (Degree-Minute-Second) hay độ-phút-giây hoặc DD(Decimal Degree) hay độ thập phân. Ví dụ : 10030’00’’ tương đương với 10,50 Kinh độ (longitude) : Bắt đầu từ kinh tuyến gốc Greenwich , tăng dần từ 00 đến 1800 về phía đông (từ Anh qua châu Âu, châu Phi và châu á), giảm dần từ 00 đến –1800 về phía tây (từ Anh qua Mỹ). Vĩ độ (latitude) : Bắt đầu từ đường xích đạo, tăng dần từ 00 đến 900 lên bán cầu Bắc và giảm dần từ 00 đến –900 xuống bán cầu Nam. Đo khoảng cách : Khoảng cách giữa hai điểm theo hệ toạ độ kinh độ(l), vĩ độ (j) được tính như sau : D= R arccos(sin(j1)*sin(j2) + cos(j1)*cos(j2)*cos(l1 - l2)) IV.2 Các hệ quy chiếu Phép chiếu được dùng để biểu diễn các đối tượng địa lý trong không gian 3 chiều (hệ toạ độ cầu) thành không gian 2 chiều tức là mặt phẳng. Quá trình chuyển đổi này sẽ gây nên một số sai lệch gọi là sai số. Và người ta lựa chọn các phép chiếu sao cho sai số này là nhỏ nhất. Các loại phép chiếu được phân lớp theo tính chất và phương pháp xây dựng chúng. Có 3 phương pháp chính để xây dựng phép chiếu là : mặt chiếu là hình trụ, hình nón và mặt phẳng. Sau đây là một số phép chiếu hay được sử dụng nhất ( được tổng kết bởi U.S Geological Survey Map 1-1096) : Mặt chiếu là mặt phẳng (Planes – Azimuthal) : Azimuthal Equidistant, Lambert Azimuthal Equal-Area, Orthorgraphie, Stereographic. Mặt chiếu là hình trụ (Cylinders) : Mecator, Oblique Mecator, Transverse Mecator, Modified Transvers Mecator. Mặt chiếu là hình nón (Cones) : Equidistant Conic, Lambert Conformal Conic, Albers Conic Equal-Area, American Polyconic, Bipolar Oblique Conic Conformal. Mặt chiếu giả hình trụ (Pseudo-Cylinders) : Sinusoidal, Eckert No.5. Mỗi phép chiếu có một đặc điểm riêng và không phải tất cả đều hoàn hảo. Sau đây là một phương pháp lựa chọn các phép chiếu : Đối với các vùng vĩ độ thấp : Chọn phép chiếu hình trụ (Cylindric) Đối với vùng vĩ độ trung bình : Chọn phép chiếu hình nón (Conic) Đối với các vùng cực : Chọn phép chiếu mặt phẳng (Plane-Azimuthal). V. Giới thiệu về bản đồ Bản đồ được xem như là một trong những sản phẩm của GIS. Dựa vào các công cụ của GIS có thể tạo ra rất nhiều loại bản đồ có các tỷ lệ khác nhau với độ chính xác cao. Bản đồ là một tập hợp các dữ liệu địa lý gồm hình ảnh và các thông tin khác liên quan. Bản đồ cho phép biểu diễn thông tin GIS một cách trực quan và dễ hiểu nhất. Các đối tượng địa lý được mô tả không chỉ bởi vị trí trong không gian mà còn bởi các thông tin về thuộc tính của chúng. Bản đồ trong GIS thường là sự kết hợp hay xếp chồng của nhiều lớp (layer) lại với nhau theo một hệ toạ độ chung. Mỗi lớp đặc trưng cho một tập các đối tượng địa lý có chung một số tính chất nào đó. Ví dụ một bản đồ thành phố gồm có 3 lớp : lớp thứ nhất mô tả ranh giới giữa các quận, các vùng khác nhau, lớp thứ hai mô tả hệ thống giao thông, và lớp thứ ba là tập các công trình xây dựng, hay trường học, bệnh viện … Ví dụ sau minh hoạ một bản đồ các quốc gia bao gồm 5 lớp : Sự phân lớp của bản đồ tạo ra một sự đa dạng trong cách biểu diễn và tạo điều kiện quản lý dễ dàng hơn. Người sử dụng có thể xem và chỉnh sửa trên một lớp của bản đồ mà không làm ảnh hưởng đến các lớp khác. Thông tin lưu trữ trên bản đồ là rất phong phú dễ xem, dễ hiểu và dễ tìm kiếm. VI. Các phép phân tích dữ liệu trong GIS Phân tích dữ liệu trong GIS là một trong những chức năng rất mạnh của hệ thống GIS. Hệ thống GIS không tạo lập quyết định cho người sử dụng nhưng nhờ có những công cụ phân tích hiệu quả sẽ trợ giúp đắc lực trong quá trình ra quyết định của họ. Đối với dữ liệu GIS có 3 hình thức phân tích cơ bản đó là truy vấn dữ liệu thuộc tính, truy vấn không gian và các truy vấn kết hợp. Ngoài ra còn có các hình thái phân tích chuyên dụng khác như phân tích mạng, mô hình địa thế số, mô hình ô lưới,… VI.1 Truy vấn dữ liệu thuộc tính GIS có thể cung cấp nhiều phương pháp truy vấn dữ liệu thuộc tính khác nhau. Các phương pháp này có thể từ đơn giản cho tới rất tinh vi và phức tạp. Trong phương pháp tổ chức lưu trữ dữ liệu thuộc tính có thể lưu trữ tách rời với dữ liệu không gian (trong các tệp khác nhau) hoặc cũng có thể gắn liền với dữ liệu không gian. Một nhà cung cấp GIS tiêu biểu cho phép lưu trữ dữ liệu thuộc tính ở nhiều định dạng khác nhau tương ứng với nhiều hệ quản trị cơ sở dữ liệu (DBMS) khác nhau. Ví dụ như dữ liệu thuộc tính có thể lưu dưới dạng *.mdb của CSDL Access hay dưới dạng DB2,… Nhờ đó các DBMS có thể tự quản lý và phân tích loại dữ liệu này. Một phương pháp phân tích dữ liêu đơn giản của GIS như yêu cầu tìm kiếm và hiển thị dữ liệu không gian dựa trên cơ sở thuộc tính và ngược lại. Ví dụ, người sử dụng có thể chỉ vào một điểm trên bản đồ và yêu cầu GIS xác định các thuộc tính của chúng. Ngược lại, người sử dụng có thể định vị một bản ghi trong CSDL thuộc tính và yêu cầu GIS chỉ ra vùng tương ứng trên bản đồ. Ngoài ra, GIS còn có thể hỗ trợ nhiều truy vấn tinh vi và phức tạp hơn. Đó là việc xây dựng các câu hỏi truy vấn dựa trên các toán tử truy vấn. Các toán tử này có thể là ‘+,-,=,not,>,<,=,Between,is null, …’ Ví dụ như trong một bản đồ thành phố, người sử dụng có thể yêu cầu ‘tìm kiếm các trường học cách trung tâm thành phố không quá 5 km và có số học sinh tốt nghiệp trong năm hiện tại lớn hơn 90%’. Để thực hiện được các câu hỏi như vậy, đầu tiên GIS sẽ gửi tới DBMS câu hỏi tương ứng mà nó có thể tìm kiếm dữ liệu thuộc tính thoả mãn yêu cầu đã đặt ra. Sau đó GIS sẽ tìm kiếm trên dữ liệu không gian để xác định các đối tượng không gian có những thuộc tính này và đánh dấu chúng trên màn hình hiển thị. Ngược lại, người sử dụng có thể mô tả một khu vực trên bản đồ vùng và yêu cầu GIS xác định tất cả các bản ghi thuộc tính của tất cả những vùng bên trong khu vực. Khu vực này có thể là một vòng tròn, một hình chữ nhật, một đa giác hay một hình không tuân theo quy luật nào cả. Các toán tử logic được sử dụng để hạn chế sự tìm kiếm hoặc dùng để mô tả những thuộc tính cần phải thoả mãn. Kết quả có thể được sử dụng để tạo ra các báo cáo, các đồ thị hay biên tập hồ sơ bản đồ mới. VI.2 Truy vấn không gian Đây là phương pháp truy vấn dựa trên các quan hệ không gian của các đặc điểm của bản đồ. Để có thể thực hiện được điều này cần xây dựng các toán tử không gian. Các toán tử này sẽ xác định mối quan hệ đã tồn tại giữa các đặc tính của bản đồ. Sau đây sẽ minh hoạ các chức năng của một toán tử không gian. Các toán tử truy vấn không gian : Overlap Đè lên Entirely_contains Chứa chọn Entirely_contained_by Chứa trọn bởi Contains Chứa Contains_by Chứa bởi Terminates_in Tận cùng Terminus_of Chứa điểm tận cùng Passes_through Vượt qua Passes_through_by Vượt qua bởi On_boundary_of Trên đường biên Has_on_boundary Touches Chạm Meets Gặp Spatially_equal Giống nhau Các toán tử khoảng cách : Between Giữa Within Bên trong Beyond Bên ngoài Entirely_within Trọn vẹn bên trong Entirely_between Trọn vẹn ở giữa Entirely_beyond Trọn vẹn bên ngoài VI.3 Truy vấn kết hợp Sau khi đã thực hiện các phép truy vấn và được kết quả là một tập truy vấn. GIS có thể kết hợp các tập truy vấn này theo các phương pháp logic khác nhau nhằm đạt được một mục đích mong muốn nào đó. Các truy vấn như thế liên quan đến ít nhất là hai tập truy vấn và có thể nhiều hơn nữa được gọi là truy vấn tập. Sau đây sẽ là các toán tử truy vấn điển hình. UNION (Phép Hợp) Sự kết hợp duy nhất của hai toán hạng INTERSECT (Phép Giao) Giữ lại những mục có trong cả hai toán hạng MINUS ( Phép Trừ) Giữ lại các mục chỉ có trong toán hạng thứ nhất mà không có trong toán hạng thứ hai Ví dụ, trong quy hoạch đô thị cần phát triển vùng đô thị theo hướng có nhiều thuận lợi nhất. Lúc này cần xây dựng các tập truy vấn có các điểm thuận lợi khác nhau như tập các vùng có diện tích đất đai rộng, tập các vùng nằm trên trục đường giao thông chính, tập các vùng có địa hình tương đối bằng phẳng,… Và giao của các tập này hay thực hiện phép INTERSECT sẽ chỉ ra các vùng thuộc các hướng có nhiều đặc điểm thuận lợi nhất. Trong GIS những vùng có cùng thuộc tính mà có thể kết hợp thành một vùng rộng hơn thường được gọi là vùng “hoà tan”. VI.4 Một số kiểu phân tích khác của GIS Ngoài các kiểu truy vấn mang tính chất cốt lõi, điển hình ở trên. GIS còn có một số chức năng phân tích bổ sung. Các chức năng này thường được tách thành các modul riêng mà người sử dụng có thể mua chúng nếu họ cần. Chúng bao gồm các phép phân tích mạng, các phép phân tích và mô hình địa lý số, các phép phân tích và biểu đồ cột (ô) vành đai. VI.4.1 Phép phân tích mạng Phép phân tích mạng được thực hiện dựa trên một mô hình mạng đã được xây dựng. Đây có thể xem là một giải pháp rất hữu ích cho các tổ chức quản lý liên quan đến mạng như hệ thống vận tải, truyền thông,… Các doanh nghiệp sử dụng chúng để lập kế hoạch phân phối hàng hoá hay dự trù các vị trí sắp đặt cửa hàng, dịch vụ hay các chi nhánh công ty. Có 3 kiểu chính của phép phân tích mạng là : Sơ đồ mạng, đường dẫn mạng và phân bố mạng. Đường dẫn mạng cho phép ._.xác định một đường dẫn đặc thù xuyên xuốt mạng hay đường dẫn tối ưu trong một mạng tuyến tính. Đường dẫn được chọn có thể dựa trên một vài tiêu chuẩn đã được cung cấp hay các tiêu chuẩn như “khoảng cách ngắn nhất”, “chi phí nhỏ nhất”,…Phép phân tích đường dẫn sẽ kiểm tra xác định những hạn chế của đường dẫn và ảnh hưởng của nó nhằm tránh các xung đột có thể xẩy ra. Phân bố mạng chỉ định những phần mạng theo những “trung tâm cung cấp” hoặc “các điểm cuối”. Ví dụ với các trường học với một số lượng học sinh đã định sẵn thì GIS có thể xác định được một khu vực dân cư mà trường học có thể phục vụ bằng phép thống kê về dân số đang trong độ tuổi đến trường và cơ chế phân khu (block by block). Hoặc với mạng lưới xe buýt mà điểm đến là các bến xe điện ngầm thì phép phân bố mạng sẽ cho phép xác định được tất cả các điểm trên mạng đường phố nội thành cách bến xe không quá 5 phút đi bộ. VI.4.2 Phân tích và lập kiểu điạ hình kỹ thuật số DTM (Digital Terrain Modeling and Analysis) Kiểu địa hình kỹ thuật số DTM thường sử dụng để thể hiện bề mặt trái đất. Có hai dạng cơ bản của số liệu DTM : mạng bất thường thể lưới tam giác không đều TIN (Triangulated Irregular Network) và kiểu số liệu dạng ô lưới. Các điểm số liệu DTM bao gồm toạ độ X,Y và cũng có thể cả cao độ của nó là Z. Nó cũng có thể được tạo ra từ các đường ba chiều hoặc hai chiều cùng với giá trị độ cao của chúng. Modul DTM của GIS cho phép người dùng soạn thảo và thao tác trên các kiểu số liệu. Việc này bao gồm cả việc soạn thảo các giá trị Z trong TIN hoặc kiểu mắt lưới hay bổ sung, xoá, dịch chuyển các điểm số liệu trong TIN. Chương trình có thể áp dụng các thao tác logic và thuật toán cho các mắt lưới DTM (so sánh, vi phân, cộng, trừ, nhân, chia) nhằm sửa chữa hay tạo mới. Kiểu DTM được tích hợp GIS hạt nhân sẽ cho phép tích hợp số liệu địa hình 3 chiều với số lượng GIS 2 chiều. Ví dụ các đặc điểm bản đồ 2 chiều có thể được mô tả trên bề mặt DTM 3 chiều. DTM được sử dụng trong rất nhiều ứng dụng khác nhau bao gồm cả lập bản đồ điạ hình, quy hoạch địa chính, xây dựng dân dụng và quản lý nguồn tài nguyên, môi trường. Chương II – Hệ quản trị CSDL Oracle Trong bất kỳ ứng dụng nào khi cần truy xuất hay xây dựng cơ sở dữ liệu thì đều cần đến một hệ quản trị CSDL (DBMS – Database Management System). DBMS cho phép thực hiện một cách linh hoạt và hiệu quả các ngôn ngữ của CSDL như DML (Data Manipulation language) hay DDL (Data Definition language). DBMS đóng một vai trò quan trọng trong việc quản lý một số lượng lớn dữ liệu và đáp ứng những đòi hỏi khác nhau về tính hiệu quả, an toàn, bảo mật, phân tán,… Một ứng dụng đơn lẻ có thể tự xây dựng một DBMS và tất nhiên điều này có ưu điểm là ứng dụng sẽ có tính độc lập cao, và đáp ứng được những mục đích riêng. Tuy nhiên cũng cần phải mất thời gian trong việc đầu tư xây dựng một DBMS và cũng cần phải có một đội ngũ chuyên nghiệp thực hiện công việc này. Đồng thời nó cũng nảy sinh nhược điểm là tính mở của ứng dụng sẽ bị hạn chế, khả năng phối hợp, chia sẻ dữ liệu giữa các hệ thống khác nhau gặp nhiều khó khăn. Cũng chính vì vậy, yêu cầu về sử dụng một sản phẩm phần mềm DBMS chuyên dụng có thể giải quyết được những khó khăn này. Và hiện nay, trên thị trường cũng xuất hiện nhiều phần mềm DBMS khác nhau như Access, Foxpro, SQL Server của hãng Microsoft, Oracle, DB2, Sysbase, Informix,… đáp ứng nhu cầu đa dạng của người sử dụng. Tất cả các DBMS này đều có quy mô và phạm vi ứng dụng riêng nhưng nói chung đều đáp ứng được những yêu cầu đặc thù về CSDL. Tùy theo mục đích và nhu cầu của mỗi ứng dụng mà có thể chọn những DBMS khác nhau. Trong phần này sẽ trình bày về một hệ DBMS rất nổi tiếng, đó là hệ quản trị CSDL Oracle. Oracle là một trong những hệ DBMS rất mạnh và được phát triển trên nhiều nền phần cứng cũng như nhiều hệ điều hành khác nhau. Khả năng hỗ trợ trên mạng cũng như một cơ chế hoạt động tin cậy, hiệu quả cùng nhiều chức năng khác của Oracle đã làm cho sản phẩm này đạt được một thành công rực rỡ và được sử dụng rất rộng rãi. Chương này không thể nói hết về Oracle nhưng sẽ cung cấp những khái niệm cơ bản cũng như kiến trúc và sự quản lý dữ liệu của Oracle đặc biệt là sản phẩm Oracle Spatial. Các ứng dụng GIS có thể sử dụng Oracle Spatial để xây dựng CSDL không gian, tích hợp cùng với các thành phần dữ liệu khác. Điều này mang lại rất nhiều ý nghĩa trong việc tổ chức quản lý dữ liệu cũng như trao đổi dữ liệu trong một môi trường xử lý phân tán và hướng tới những ứng dụng Web. I. Giới thiệu về Oracle Oracle là một bộ các công cụ phần mềm được cung cấp bởi công ty Oracle. Các công cụ này bao gồm các sản phẩm phần mềm cùng với các chương trình ứng dụng được dành cho người sử dụng cuối. Oracle không chỉ cung cấp một hệ quản trị CSDL mềm dẻo mà còn bao gồm rất nhiều các phương tiện khác. Đó là : Cơ sở dữ liệu : Oracle Server, RDB, Express OLAP Công cụ CASE: Môi trường thiết kế CSDL (Designer 2000), CASE Công cụ phát triển : Developer 2000 (Developer Form , Report,…) Sản phẩm WWW: Web Server, PowerBrowser Các ứng dụng: Oracle Financial, Oracle Manufacturing. Hệ quản trị CSDL Oracle có tính an toàn, bảo mật cao, tính nhất quán và toàn vẹn dữ liệu, cho phép các user truy nhập tới CSDL phân tán như một khối thống nhất, hỗ trợ xử lý song song,... Vì vậy nó được đánh giá là một trong những sản phẩm ưu việt nhất hiện nay . II. Kiến trúc và quản lý dữ liệu của hệ quản trị CSDL Oracle Để có thể thiết kế và xây dựng CSDL được tốt trước hết chúng ta cần phải hiểu được kiến trúc cơ bản cũng như sự quản lý CSDL của Oracle. II.1 Cấu trúc CSDL Oracle Một CSDL Oracle bao gồm hai phần là cấu trúc logic và cấu trúc vật lý. Sự phân chia này đảm bảo sự lưu trữ vật lý của dữ liệu không làm ảnh hưởng đến các truy nhập trên cấu trúc logic của dữ liệu. II.1.1 Cấu trúc CSDL vật lý Cấu trúc vật lý được xác định bởi các tệp (file) xây dựng nên CSDL, chúng bao gồm 3 loại file là : một hoặc nhiều file dữ liệu (datafiles), hai hoặc nhiều file nhật ký (redo log files), một hoặc nhiều file điều khiển (control files). Các file dữ liệu (datafiles) chứa toàn bộ dữ liệu của CSDL. Khi có yêu cầu về dữ liệu thì dữ liệu sẽ được đọc từ datafile tương ứng và được đặt trong bộ nhớ Cache của Oracle. Thao tác ghi dữ liệu có thể không được ghi lên datafile ngay lập tức mà sẽ được ghi tại một thời điểm thích hợp và được thực hiện bởi tiến trình nền DBW của Oracle. Các file nhật ký (redo log files) có chức năng ghi lại tất cả các thay đổi đã thực hiện trên dữ liệu. Các file này được sử dụng để khôi phục lại CSDL khi có sự cố về hệ thống hoặc bởi các tác động bên ngoài trong lúc dữ liệu đang được ghi từ bộ nhớ tới các datafile. Các file điều khiển (control files) ghi lại cấu trúc vật lý của CSDL như tên CSDL, nhãn thời gian mà CSDL được tạo ra, tên và nơi đặt các file dữ liệu và các file nhật ký,… II.1.2 Cấu trúc CSDL logic Cấu trúc logic của CSDL Oracle được xác định bởi các thành phần : Một hoặc nhiều các Tablespaces Các đối tượng lược đồ CSDL (Database’s schema objects). Data blocks, Extents và Segment Tablespace là đơn vị lưu trữ logic của CSDL, với mục đích phân chia cấu trúc logic thành các nhóm có liên quan với nhau. Như vậy : Mỗi CSDL được chia nhỏ thành một hoặc nhiều tablespace Các file dữ liệu đặt trong một tablespace sẽ lưu trữ (về mặt vật lý) dữ liệu của cấu trúc logic trong một tablespace đó. Sau Tablespace là các đơn vị Data blocks, Extents và Segment. Các Tablespace có thể được đặt là trực tuyến (online)/ngoại tuyến (offline) (ngoại trừ tablespace SYSTEM) hoặc trong chế độ READ ONLY/READ WRITE. Trong trạng thái offline thì dữ liệu thuộc tablespacelà không sẵn sàng với user nhưng có thể phục vụ cho quá trình backup tablespace. Đối tượng lược đồ (Schema Object) lược đồ là một tập các đối tượng (Object). Các đối tượng của lược đồ bao gồm các cấu trúc như các bảng (tables), khung nhìn (views), các dẫy (sequences), hay các thủ tục đã lưu trữ (stored procedures), synonyms, chỉ số (indexes), clusters, và các liên kết CSDL (database links) Data blocks, Extents và Segment là các cấu trúc lưu trữ logic của Oracle Sơ đồ quan hệ giữa Datablocks, Extents và Segment 1. Data block : tương ứng với một số bytes xác định trong không gian lưu trữ vật lý trên đĩa. Kích thước của các khối được xác định khi tạo CSDL và không thể thay đổi lại được trừ phi tạo lại CSDL. Kích cỡ thường 2 -> 4 KB được xác định bởi biến DB_BLOCK_SIZE. Khuôn dạng của một datablock bao gồm 5 phần : Header (Common and Variable) : chứa những thông tin chung về khối như địa chỉ của khối, kiểu segment,ẳ Table directory : bao gồm các thông tin về các bảng (table) có các hàng (row) trong khối. Row directory : chứa thông tin về các hàng hiện tại trong khối. Row data : chứa dữ liệu bảng hoặc dữ liệu chỉ số (Table or index data), các hàng có thể trải dài trên các khối. Free space : là tập các byte trong khối dành cho việc chèn các hàng mới hay cập nhật lại các hàng có đòi hỏi thêm không gian lưu trữ (ví dụ sự chuyển đổi từ giá trị null sang giá trị non-null). Việc điều khiển Free Space thông qua hai tham số là PCTFREE và PCTUSED. Đây là hai tham số được xác định khi tạo hay hiệu chỉnh bảng (table), chỉ số (index) hoặc cluster (tập các segment). + PCTFREE : là tham số xác định tỷ lệ phần trăm nhỏ nhất của khối để cập nhật các hàng đã tồn tại trong khối. Dữ liệu sẽ chỉ được phép thêm vào khối chừng nào tỷ lệ không gian trống của khối còn lớn hơn PCTFREE.Ví dụ PCTFREE=20 (minum free space = 20% block). + PCTUSED : xác định tỷ lệ phần trăm nhỏ nhất của khối mà có thể chứa dữ liệu hàng (row data) trước khi thêm các hàng mới tới khối. Khối được xem là sẵn sàng nhận các hàng mới nếu tỷ lệ phần trăm dữ liệu hiên tại đã sử dụng là nhỏ hơn PCTUSED. Giá trị ngầm định của PCTUSED = 40. Trong trường hợp dữ liệu hàng(row) được chèn (insert) lần đầu tiên vào một đối tượng lược đồ là quá lớn so với một datablock. Thì hàng này sẽ được lưu trữ trên một chuỗi các datablock (được gọi là Row chaining). Hoặc khi một hàng đã tồn tại trong một block nhưng được cập nhật lại (update) và kích thước mới không đủ chứa trong block hiện tại thì Oracle sẽ thực hiện ‘di trú’ toàn bộ dữ liệu của hàng này tới một block mới khác (gọi là quá trình Migrating). 2. Extent : là một đơn vị logic được cấp phát không gian lưu trữ CSDL trên một số datablock. Một hoặc nhiều các Extent tạo thành một Segment. Khi không gian lưu trữ cho một Segment đã được sử dụng hoàn toàn thì Oracle sẽ cấp một Extent mới cho Segment đó. Mỗi segment cần có ít nhất là 1 extent, riêng các Segment khôi phục (Rollback Segments) cần có ít nhất là 2 extent. Có hai loại extent là : Initial Extent : Khi một đối tượng (table,index,…) được tạo ra thì Oracle sẽ cấp cho nó một Extent khởi đầu gồm một số xác định các datablock và được gọi là Initial Extent. Incremental Extent : Khi Initial Extent của một Segment đã đầy và nhiều không gian lưu trữ được đòi hỏi cho việc lưu trữ dữ liệu mới thì Oracle sẽ tự động cấp phát cho Segment đó thêm một Extent mới gọi là Incremental Extent. Kích thước của extent thêm có thể có kích thước bằng hoặc lớn hơn kích thước của extent trước đó. Vì vậy, trong khối header của Segment chứa một thư mục (directory) của các extents thuộc về Segment đó. Xác định số lượng và kích thước của các extent : Việc điều chỉnh các extent cho mỗi Segment được thực hiện thông qua các tham số lưu trữ (Storage parameters NEXT, PCTINCREASE, MINEXTENTS, MAXEXTENTS, và DEFAULT STORAGE). Ví dụ có thể xác định các tham số này bằng mệnh đề STORAGE khi thực hiện lệnh CREATE TABLE, nếu không thì các tham số ngầm định của Tablespace sẽ được sử dụng. Tablespace có thể quản lý các extent theo hai cách cục bộ (locally) hoặc thông qua từ điển dữ liệu (data dictionary). Extent được quản lý một cách cục bộ : Theo cách này kích thước của các extent có thể đồng nhất (uniform) hoặc biến đổi (variable). Khi tạo tablespace lựa chọn UNIFORM hoặc AUTOALLOCATE(được quản lý bởi hệ thống) sẽ xác định kiểu cấp phát. +Với các extent UNIFORM : ta có thể xác định kích thước của mỗi extent hoặc sử dụng kích thước ngầm định (là 1 MB). +Với các extent được quản lý bởi hệ thống, ta có thể xác định kích thước của Initial extent và kích thước tối ưu của các extent thêm vào cùng với kích thước extent nhỏ nhất (ngầm định là 64 KB). Extent được quản lý bởi từ điển dữ liệu : Lúc này tablespace sẽ sử dụng từ điển dữ liệu để quản lý các extent của nó và kích thước của các extent tăng thêm. Khi tạo ra một đối tượng lược đồ trong một tablespace có thể sử dụng các tham số lưu trữ để xác định kích thước và số lượng của các extent: + INITIAL : xác định kích cỡ của extent đầu tiên được định vị cho segment ngầm định là 5 data block. + NEXT : xác định kích cỡ của các extent tiếp theo ngầm định là 5 blocks + MAXEXTENTS : tổng số lớn nhất các extent cấp cho segment (ngầm định là 99) + MINEXTENTS : tổng số extent được cấp cho segment khi segment được tạo (ngầm định là 1). + PCTINCREASE : tỷ lệ % mà mỗi extent tiếp theo được phát triển có thể vượt quá extent cuối cùng (ngầm định là 50%). + OPTIMAL : kích cỡ tối ưu cho 1 đoạn khôi phục (ngầm định là null). + FREE LIST: số danh sách của các khối rỗi cho insert vào bảng (ngầm định là 1) 3. Segment : là một tập các extent chứa tất cả dữ liệu cho một cấu trúc lưu trữ logic xác định trong một tablespace. Ví dụ, với mỗi table Oracle sẽ cấp một hoặc nhiều extent tạo thành một segment dữ liệu của table đó. CSDL Oracle sử dụng các kiểu segment sau : Data segment : tập tất cả cá extent mà chúng cất giữ tất cả dữ liệu cho một bảng hoặc 1 cluster Index segment : chứa tất cả các dữ liệu chỉ số cho việc tìm kiếm được tối ưu, nhanh chóng. Temporary Segment : khi xử lý các câu hỏi SQL, nếu cần thiết thì Oracle sẽ tự động cấp phát một không gian đĩa được gọi là Temporary Segment. Thường là khi xử lý các câu lệnh có yêu cầu sắp xếp như (SELECT … ORDER BY, SELECT … GROUP BY,…) Roll back segment : tập các extent mà chúng cất giữ các dữ liệu cho quá trình khôi phục lại. Bootstrap segment : là 1 extent chứa các định nghĩa về từ điển cho các bảng từ điển và được nạp vào khi CSDL được mở II.2 Oracle Instance Sơ đồ minh hoạ một Oracle Instance (Multiple-process Oracle Instance) Khái niệm : Mỗi khi được khởi tạo, Oracle sẽ cấp phát một vùng bộ nhớ gọi là SGA (System Global Area) và khởi tạo một hoặc nhiều các tiến trình nền (Background Processes). SGA là một vùng bộ nhớ chứa thông tin CSDL được chia sẻ bởi các User. Sự kết hợp giữa SGA và các tiến trình Oracle được gọi là một Oracle Instance. Một Oracle Instance có 2 kiểu tiến trình : User Processes và Oracle Processes User Process : thực hiện mã của một chương trình ứng dụng (như ứng dụng Oracle Forms) hoặc Oracle Tool (ví dụ Oracle Enterprise Manager). Oracle Processes : là các tiến trình server (Server Process) thực hiện công việc được yêu cầu bởi User Process, các tiến trình nền (Background Proces) sẽ thực hiện công việc duy trì Oracle Server. Nếu các User Process và Server Process nằm trên những máy tính khác nhau của một mạng hoặc cùng chia sẻ thông qua các tiến trình Dispatcher thì giao thức Net8 sẽ được sử dụng để truyền thông giữa hai loại tiến trình này. Dispatchers là các tiến trình nền lựa chọn chỉ có trong cấu hình server multi-threaded. Net8 là giao diện của Oracle với các giao thức truyền thông chuẩn thực hiện trao đổi dữ liệu giữa các máy tính. II.2.1 Cấu trúc bộ nhớ Oracle Sơ đồ cấu trúc bộ nhớ và các tiến trình Oracle Oracle tạo và sử dụng cấu trúc bộ nhớ để thực hiện các công việc khác nhau (như chứa mã chương trình sẽ được thực hiện hay dữ liệu chia sẻ cho các user). Cấu trúc bộ nhớ cơ sở bao gồm SGA(database buffer, redo log buffer, shared pool) và PGA (Program Golobal Area). Vùng bộ nhớ SGA : Database Buffer Cache : lưu trữ các khối dữ liệu được sử dụng gần đây nhất. Redo Log Buffer : lưu trữ các khoản mục đã thay đổi trên CSDL. Các mục lưu trữ trong Redo Log Buffer sẽ được ghi tới các tệp redo log trực tuyến. Shared Pool : vùng nhớ SGA xây dựng nên vùng SQL dùng chung (Shared SQL Areas). Shared SQL Area cần thiết cho việc xử lý mỗi lệnh SQL đã được đệ trình (Submitted) tới CSDL. Đây là vùng chứa các thông tin như cây phân tích, sơ đồ thực hiện lệnh. Một vùng Shared SQL Area đơn lẻ có thể được sử dụng bởi nhiều ứng dụng mà yêu cầu cùng một lệnh. Larger Pool : vùng tuỳ chọn trong SGA cung cấp các sự cấp phát bộ nhớ rộng cho Oracle backup, các thao tác khôi phục, các Server Process vào/ra và bộ nhớ phiên cho multi-threaded server và Oracle XA. Program Global Area (PGA) : là vùng nhớ đệm chứa dữ liệu và thông tin điều khiển cho một Server Process. Nó được tạo ra khi một Server Process được khởi tạo. Thông tin trong một PGA phụ thuộc vào cấu hình của Oracle. II.2.2 Kiến trúc tiến trình Oracle Các tiến trình Oracle được gọi bởi các tiến trình khác nhau và bao gồm 2 loại tiến trình là Server Process và Background Process. 1. Các tiến trình phục vụ (Server Processes) : Điểu khiển các yêu cầu đến từ một User Process kết nối tới. Một Server Process đảm nhiệm truyền thông với User Process và giao tiếp với Oracle để thực hiện yêu cầu từ User Process. Trong một Dedicated Server Configuration, một Server Process điều khiển cho một User Process đơn. Một Multi-threaded Server Configuration cho phép nhiều User Process chia sẻ một số lượng nhỏ các Server Process. 2. Các tiến trình nền (Background Processes) : Oracle tạo ra một tập các tiến trình nền cho mỗi Instance. Các tiến trình nền không đồng bộ thực hiện vào/ra và giám sát các tiến trình Oracle nhằm mục đích gia tăng sự song song và đạt được một hiệu năng và độ tin cậy tốt hơn. Các tiến trình này là DBWn, LGWR, CKPT, SMON, PMON, ARCn, RECO, Dnnn, LCK0, SNPn, và QMNn. Database Writer (DBWn) : ghi các khối đã biến đổi từ Database Buffer Cache tới các Datafiles. Tham số DB_WRITER_PROCESSES xác định số các tiến trình DBWn được sử dụng. Log Writer (LGWR) : ghi các mục trong Redo Log Buffer tới các tệp Redo Log trực tuyến. Nếu CSDL là Multiplexed Redo Log thì LGWR sẽ ghi tới một nhóm các tệp Redo Log trực tuyến. Checkpoint (CKPT) : báo hiệu cho DBWn tại các điểm kiểm tra (checkpoint) cập nhật tất cả các datafiles và control files của CSDL. System Monitor (SMON) : thực hiện khôi phục Instance khi một Instance khác bị thất bại. Nó sẽ làm sạch Temporaray Segment không còn sử dụng, khôi phục các giao dịch chết, hợp nhất các extent rỗi trong một không gian liên tục tạo điều kiện dễ dàng trong cấp phát. Process Monitor (PMON) : thực hiện khôi phuc tiến trình khi một User process bị thất bại (làm sạch bộ nhớ cache, giải phóng tài nguyên,…) Archiver (ARCn) : sao chép các tệp Redo Log trực tuyến tới thiết bị lưu trữ khi chúng đã đầy hoặc khi có sự chuyển đổi nhật ký được sinh ra. Số các tiến trình này có thể xác định bởi tham số khởi tạo LOG_ARCHIVE_MAX_PROCESSES (lớn nhất là bằng 10). ARCn được kích hoạt chỉ khi CSDL trong chế độ ARCHIVELOG. Recover (RECO) : giải quyết các giao dịch phân tán trên mạng mà bị treo hoặc lỗi hệ thống trong CSDL phân tán, nó sẽ kết nối tới các CSDL ở xa và tự động thực hiện commit hoặc rollback. Dispatcher (Dnn) : chỉ có trong cấu hình multi-threaded server, có trách nhiệm định đường cho các request từ các User Process tới các Shared Server Process và gửi trả kết quả trở về tới các User Process thích hợp. Lock (LCK0) : sử dụng cho việc khoá Inter-Instance trong Oracle Parallel Server. Job Queue (SNPn) : trong cấu hình CSDL phân tán có 36 tiến trình (SNP0,…, SNP9,SNPA,…,SNPZ) có thể tự động làm mới các bản chụp table (table snapshots). Queue Monitor (QMNn) : là các tiến trình nền lựa chọn mà giám sát các hàng đợi thông điệp (Message Queues) cho Oracle Advanced Queuing (Oracle AQ). III. Tích hợp dữ liệu GIS với hệ quản trị CSDL Oracle (Oracle Spatial) Oracle Spatial là một sản phẩm của Oracle cho phép lưu trữ dữ liệu không gian theo cả hai mô hinh quan hệ (Relational Model) và mô hình quan hệ - đối tượng (Object – Relational Model). Dữ liệu không gian được lưu trữ dưới dạng bảng và có thể đi kèm với các trường thuộc tính khác. III.1 Các phần tử dữ liệu Phần tử (element) : là thành phần cơ bản xây dựng nên các đối tượng hình học (geometries) bao gồm các kiểu khác nhau như điểm (point), xâu đường (line strings) và đa giác (polygon). Dữ liệu điểm gồm một thành phần toạ độ, dữ liệu đường gồm hai thành phần toạ độ (đường thẳng) hoặc 3 thành phần toạ độ (đường cong), xâu đường gồm nhiều phần tử đường, và dữ liệu đa giác gồm nhiều thành phần toạ độ theo chiều kim đồng hồ hoặc ngược chiều kim đồng hồ. Hình học (geometry) : Đối tượng hình học được biểu diễn bằng một tập có thứ tự các phần tử nguyên thủy. Nó có thể gồm chỉ một phần tử hoặc một tập đồng nhất hoặc không đồng nhất của các phần tử. Tập đồng nhất là tập các phần tử cùng kiểu (ví dụ đều là điểm hoặc đều là đa giác) còn tập không đồng nhất thì ngược lại các phần tử có thể khác kiểu nhau. Lớp (layer) : Lớp là một tập có thể không đồng nhất của các đối tượng hình học có cùng một tập thuộc tính. Trong GIS có thể biểu diễn các lớp về địa hình, lớp mạng lưới đường xá, cầu … III.2 Mô hình truy vấn Mô hình truy vấn được thực hiện theo mô hình hai lớp nhằm giải quyết các câu hỏi và phép kết nối không gian. Đây là mô hình thực hiện thông qua hai thao tác lọc khác nhau có thứ tự . Sơ đồ biểu diễn như sau : Màng lọc thứ nhất Màng lọc thứ hai Tập kết quả Tập lớn dữ liệu vào Tập ứng cử viên nhỏ hơn Màng lọc thứ nhất cho phép chọn ra một tập các bản ghi ứng cử viên thông qua phép so sánh xấp xỉ hình học và chuyển cho màng lọc thứ hai. Mục đích của màng lọc này là rút gọn độ phức tạp tính toán cho màng lọc sau và do có chi phí tính toán thấp nên thực hiện rất nhanh. Màng lọc thứ nhất sử dụng chỉ số không gian dựa trên cây tứ phân . Màng lọc thứ hai sẽ thực hiện các phép tính chính xác lên các đối tượng hình học và trả về tập kết quả cho câu hỏi. Màng lọc này có chi phí tính toán cao nhưng được thực hiện trên một tập dữ liệu từ màng lọc thứ nhất chứ không phải là toàn bộ tập dữ liệu. Còn màng lọc thứ hai sử dụng hàm SDO_GEOM.RELATE() để đánh giá các quan hệ hình học. Đôi khi không cần thực hiện đầy đủ cả hai màng lọc này, vì một số thao tác không cần một tập kết quả chính xác nhưng cần có tốc độ nhanh như phép Zoom trong ứng dụng bản đồ. III.3 Các phương pháp đánh chỉ số không gian Đây là phương pháp đánh chỉ số không gian dựa trên cây tứ phân, nhằm mục đích xấp xỉ các đối tượng hình học bằng các ô có kích thước xác định (cố định hoặc biến đổi). Dựa trên kích thước của ô, có hai phương pháp đánh chỉ số là chỉ số xác định (Fixed Index) và chỉ số hỗn hợp (Hybrid Index). Sơ đồ minh hoạ các phương pháp chỉ số (SDO_LEVEL=2): Fixed Indexing : đầu vào là tham số n=SDO_LEVEL cho biết số ô trên mỗi chiều là 2n ô. Đầu tiên toàn bộ không gian toạ độ (giới hạn bởi các cận) được chia đôi theo mỗi chiều tạo thành 4 ô con. Tiếp theo mỗi ô trong 4 ô con này lại tiếp tục được chia thành 4 ô con khác. Quá trình phân hoạch dừng khi số lần phân chia đạt tới SDO_LEVEL. Mỗi ô đã được phân chia sẽ được gán cho một giá trị chỉ số duy nhất. Hybrid Indexing : đầu vào ngoài SDO_LEVEL còn có SDO_MAXLEVEL và SDO_NUMTILES. Đầu tiên Fixed Indexing sẽ được thực hiện. Sau đó nếu ô nào tiếp xúc với 2 geometry trở lên hoặc khi số ô bao phủ toàn bộ geometry đó còn nhỏ hơn tham số SDO_NUMTILES thì sẽ tiếp tục được chia 4. Và quá trình đó cứ tiếp tục cho tới khi hoặc số lần phân chia đã lớn hơn SDO_MAXLEVEL hoặc khi toàn bộ geometry đã được bao phủ bởi các ô mà số ô là lớn hơn SDO_NUMTILES. Tuy rằng mỗi phương pháp đều có ưu và nhược điểm riêng. Nhưng phương pháp chỉ số xác định thường được sử dụng cho mô hình quan hệ còn phương pháp chỉ số hỗn hợp thực hiện tốt cho mô hình quan hệ - đối tượng. Hai mô hình này sẽ được đề cập ở các mục sau. III.4 Các quan hệ không gian Các phương pháp màng lọc sử dụng các quan hệ không gian giữa các thực thể trong CSDL. Các quan hệ này được dựa trên topology và khoảng cách. Khoảng cách giữa hai đối tượng không gian là khoảng cách nhỏ nhất giữa hai điểm bất kỳ giữa chúng. Các quan hệ về topology có thể được định danh bằng các tên sau : DISJOINT – Tách rời nhau. TOUCH – Chỉ giao nhau phần biên. OVERLAPBDYDISJOINT – Bên trong của một đối tượng giao với đường biên và bên trong của một đối tượng khác nhưng hai đường biên không giao nhau. Ví dụ : OVERLAPBDYINTERSECT – Biên và bên trong của hai đối tượng là giao nhau. EQUAL – Hai đối tượng có cùng đường biên và phía trong . CONTAINS – Đường biên và bên trong của một đối tượng là nằm hoàn toàn bên trong một đối tượng khác. COVERS – Bên trong của một đối tượng là nằm hoàn toàn bên trong của một đối tượng khác nhưng đường biên của chúng giao nhau. Ví dụ: INSIDE – Ngược lại với CONTAINS. COVEREDBY – Ngược với COVERS. ANYINTERACT – Các đối tượng là không tách rời nhau. III.5 Các mô hình dữ liệu Oracle Spatial hỗ trợ 2 mô hình dữ liệu là mô hình quan hệ và mô hình quan hệ - đối tượng. III.5.1 Mô hình quan hệ - đối tượng (Object – Relational Model) a. Cấu trúc dữ liệu hình học Dữ liệu hình học được lưu trữ trong một cột của bảng (table) như các dữ liệu khác nhưng có kiểu là SDO_GEOMETRY. Tên bảng có thể tự đặt nhưng phải có khoá chính cho bảng đó. Kiểu SDO_GEOMETRY đã được định nghĩa sẵn như sau : CREATE TYPE SDO_GEOMETRY AS OBJECT ( SDO_GTYPE NUMBER, SDO_SRID NUMBER, SDO_POINT SDO_POINT_TYPE, SDO_ELEM_INFO MDSYS.SDO_ELEM_INFO_ARRAY, SDO_ORDINATES MDSYS.SDO_ORDINATE_ARRAY); SDO_GEOMETRY cho phép lưu trữ dữ liệu hình học như đối tượng điểm, đối tượng xâu đường, đa giác, tập điểm, tập xâu đường, tập đa giác và cả tập không đồng nhất của các phần tử. SDO_GTYPE dùng để nhận biết kiểu Geomery, SDO_SRID để dành sử dụng trong tương lai, SDO_POINT sử dụng khi đối tượng là một điểm . Còn hai kiểu SDO_ELEM_INFO và SDO_ORDINATE_ARRAY cho phép xác định từng phần tử trong Geometry. b. Cấu trúc siêu dữ liệu hình học (Geometry Metadata) Mỗi bảng (table) chứa dữ liệu có kiểu Geometry được xem như là một Layer. Và để xác định kiểu toạ độ, các cận của layer này thì cần phải có một cấu trúc mô tả nó được gọi là Geometry Metadata. Tập các Metadata được đặt trong một table riêng có tên là SDO_GEOM_METADATA. Oracle Spatial không tạo sẵn cho ta bảng này mà người sử dụng phải tự tạo và thêm dữ liệu vào bảng này. Create Table SDO_GEOM_METADATA ( TABLE_NAME VARCHAR2(30), COLUMN_NAME VARCHAR2(30), DIMINFO MDSYS.SDO_DIM_ARRAY); MDSYS.SDO_DIM_ARRAY đã được định nghĩa sẵn như sau : Create Type SDO_DIM_ARRAY as VARRAY(4) of SDO_DIM_ELEMENT; Create Type SDO_DIM_ELEMENT as OBJECT ( SDO_DIMNAME VARCHAR2(64), SDO_LB NUMBER NOT NULL, SDO_UB NUMBER NOT NULL, SDO_TOLERANCE NUMBER NOT NULL); c. Nạp dữ liệu (Loading Process) Để tạo dữ liệu không gian cần phải nạp dữ liệu vào các table có chứa kiểu SDO_GEOMETRY tương ứng. Có 2 cách nạp dữ liệu : Bulk loading of data : Tiến trình này thường sử dụng cho nạp một số lượng lớn dữ liệu vào trong CSDL thông qua trình tiện ích SQL* Loader. Transactional inserts : Tiến trình này sử dụng để chèn một lượng nhỏ dữ liệu vào trong CSDL thông qua lệnh SQL ‘INSERT’. d. Đánh chỉ số không gian Để đánh chỉ số không gian cần thực hiện lệnh CREATE INDEX và việc tạo chỉ số xác định hay chỉ số hỗn hợp được thực hiện thông qua 2 tham số vào là SDO_LEVEL và SDO_NUMTILES. Chỉ số sẽ được tự động duy trì thông qua các thủ tục INSERT hoặc UPDATE. ý nghĩa các tham số : SDO_LEVEL SDO_NUMTILES Thực hiện Không xác định Không xác định Lỗi >=1 Không xác định Chỉ số xác định (fixed-size tiles) >=1 >=1 Chỉ số hỗn hợp (hybrid indexing) Không xác định >=1 Không hỗ trợ Ngoài ra còn một số tham số khác như SDO_MAXLEVEL, physical storage params,… e. Một số ví dụ : 1.Tạo một table chứa dữ liệu không gian : CREATE TABLE Parks (Name varchar2(32),Shape MDSYS.SDO_GEOMETRY) 2.Xây dựng bảng siêu dữ liệu hình học : CREATE TABLE SDO_GEOM_METADATA ( TABLE_NAME VARCHAR2(30), COLUMN_NAME VARCHAR2(30), DIMINFO MDSYS.SDO_DIM_ARRAY) INSERT INTO SDO_GEOM_METADATA VALUES( 'Parks','Shape', MDSYS.SDO_DIM_ARRAY( MDSYS.SDO_DIM_ELEMENT('X',0,100,0.005), MDSYS.SDO_DIM_ELEMENT('Y',0,100,0.005) )) 3. Tạo dữ liệu bằng lênh INSERT : INSERT INTO PARKS VALUES( 1,MDSYS.SDO_GEOMETRY(3,NULL,NULL, MDSYS.SDO_ELEM_INFO_ARRAY(1,3,1,19,3,3), MDSYS.SDO_ORDINATE_ARRAY(6,15, 10,10, 20,10, 25,15, 25,35, 19,40, 11,40, 6,25, 6,15, 12,15, 15,24) )) 4.Tạo chỉ số (index) CREATE INDEX PARKS_FIXED ON PARKS(SHAPE) INDEXTYPE IS MDSYS.SPATIAL_INDEX PARAMETERS('SDO_LEVEL = 8') III.5.2 Mô hình quan hệ (Relational Model) a. Cấu trúc dữ liệu Mô hình quan hệ lưu trữ dữ liệu không gian của mỗi lớp (layer) trong 4 bảng. Cấu trúc của mỗi bảng là như sau : Bảng 1: _SDOLAYER : Tên cột Kiểu dữ liệu ý nghĩa SDO_ORDCNT NUMBER Tổng số toạ độ trên mỗi hàng trong bảng _SDOGEOM SDO_LEVEL NUMBER Số mức được phân hoạch SDO_NUMTILES NUMBER Số ô trên mỗi đối tượng hình học SDO_MAXLEVEL NUMBER Mức lớn nhất có thể phân hoạch SDO_COORDSYS VARCHAR Tên hệ thống toạ độ (POSC , OGIS) Bảng 2 : _SDODIM (Table hoặc View) : Tên cột Kiểu dữ liệu ý nghĩa SDO_DIMNUM NUMBER Chiều mà hàng này tham chiếu (1,2..) SDO_LB NUMBER Cận dưới của chiều này (-90 với vĩ độ) SDO_UB NUMBER Cận trên của chiều này(90 với vĩ độ) SDO_TOLERANCE NUMBER Dung sai và phải lớn hơn 0 SDO_DIMNAME VARCHAR Tên chiều (ví dụ x,y hoặc vĩ độ,kinh độ) Bảng 3 : _SDOGEOM (Table hoặc View) : Tên cột Kiểu dữ liệu ý nghĩa SDO_GID NUMBER Định danh duy nhất cho mỗi Geomtry SDO_ESEQ NUMBER Đếm mỗi phần tử trong Geometry (Element SEQence) SDO_ETYPE NUMBER Kiểu phần tử nguyên thuỷ (1 : kiểu điểm 2 : xâu đường, 3 : đa giác, 4 và 5 : không hỗ trợ). SDO_SEQ NUMBER Số thứ tự bản ghi tạo nên phần tử SDO_X1 NUMBER Giá trị toạ độ X thứ nhất SDO_Y1 NUMBER Giá trị toạ Y thứ nhất … NUMBER … SDO_Xn NUMBER Giá trị toạ độ X thứ n SDO_Yn NUMBER Giá trị toạ độ Y thứ n Số cột lớn nhất trong bảng này là 1000 cột. Bảng 4 : _SDOINDEX (Table) : Tên cột Kiểu dữ liệu ý nghĩa SDO_GID NUMBER Định danh số cho mỗi Geometry SDO_CODE RAW ID của._.- Success Ví dụ lệnh Set Parameters: IGIS-Client : Set Parameters?ViewSize=439+258&ViewBkgnd=225+225+240&MapBkgnd=255+255+255&MapBorder=NO IGIS-Server : 000 Get Services (Public/ Private Transaction State) Public: Các dịch vụ chung (Public Transaction State Only) Private : Các dịch vụ riêng (Private Transaction State) All : Cả 2 dịch vụ (Private Transactinon State Only) 1xx [Msg] CRLF :- Error 000 [Msg] CRLF Service List :- Success (Service List : mô tả ở cuối bảng) Ví dụ lệnh Get Services: IGIS-Client : Get Services?public IGIS-Server : 000 1 Public Services SName=Dich vu thong tin ban do SID=3 HANOI : GEOMETRY Authen (Public/Private Transaction State) UserName/Password 1xx [Msg] CRLF :- Invalid 000 [Msg] CRLF :- Success NewMap (Public/Private Transaction State) SID=i&Index=j&… (SID : ID của Service Index : chỉ số layer trong Service) 1xx [Msg] CRLF :- Error 000 RightURL CRLF Map Desc :- Update 001 [Msg] CRLF :- No Modified (RightURL,Map Desc mô tả ở cuối bảng) Ví dụ lệnh New Map : IGIS-Client : NewMap?SID=2&Index=3 IGIS-Server : 000 /IOGisServer/MapImages/Map1093_1.000000.jpg MoveLimit=(115,208,70,232) LogRatio=0.0000604976/0.0000604976 LogOffset=-227517.51480/-5565962.31826 LogUnit=0.50000/0.50000 AddLayer (Public/Private Transaction State) SID=i&Index=j&… (SID và Index xác định được layer cần nạp chồng vào bản đồ với quy tắc sau tương ứng với mỗi State : Public Trans State : SID chỉ thuộc Public Service Private Trans State : SID có thể là Public/Private Service.) Như trên Zoom (Public/Private Transaction State) X=valueX&Y=valueY&Coef=c (X,Y : toạ độ điểm zoom theo đơn vị Device, coef là hệ số zoom. Coef=2 : phóng to gấp đôi tỷ lệ cũ) Như trên PanMap (Public/Private Transaction State) Dx=valueDx&Dy=valueDy (Dx, Dy là khoảng dịch chuyển theo chiều x,y theo đơn vị Device) Như trên Goto Origin (Public/Private Transaction State) Không có tham số Như trên Ví dụ lệnh Goto Origin : IGIS-Client : GOTO ORIGIN IGIS-Server : 000 /IOGisServer/MapImages/Map1123_11.000000.jpg MoveLimit=(115,220,70,219) ViewEntireLayer (Public/Private Transaction State) SID=i&Index=j&MaxBounding=Y/N (Xem toàn cảnh một lớp) All&MaxBounding=Y/N (Xem toàn cảnh toàn bộ bản đồ) (MaxBounding =Y toàn bộ lớp bao gồm cả đường biên) Như trên Ví dụ lệnh ViewEntireLayer IGIS-Client : ViewEntireLayer?SID=2&Index=3&MAXBOUNDING=N IGIS-Server : 000 /IOGisServer/MapImages/Map1123_12.000000.jpg MoveLimit=(-69,35,-67,46) EntireMapPos=(69,-35,372,304) LogRatio=0.0000294517/0.0000294517 LogOffset=179953.89109/-5565962.31826 LogUnit=0.50000/0.50000 RemoveLayer (Public/Private Transaction State) SID=i&Index=j (i,j xác định layer cần gở bỏ khỏi bản đồ hiện tại) 1xx [MSG] CRLF :- Error 002 [MSG] CRLF :- Empty Map 000 RightURL CRLF Map Desc :- Update Ví dụ lệnh RemoveLayer : IGIS-Client : RemoveLayer?SID=0&Index=3 IGIS-Server : 002 GetInfo (Public/Private Transaction State) X=valueX&Y=valueY (X,Y là các vị trí trên trục x,y theo đơn vị Device) 1xx [MSG] CRLF :- error 000 [MSG] CRLF ObjectInfos (ObjectInfos được định nghĩa ở cuối bảng) Ví dụ lệnh GetInfo : IGIS-Client : GetInfo?X=100&Y=200 IGIS-Server : 000 1,0,1 ColName1|ColName2|ColName3 1,abc|def|1,mnp 1,3,1 ColName1|ColName2 1,sdflkdf|0, ExecSQL (Public/Private Transaction State) SID=m&Index=i&NSQL=n&SQLLen=len1&strCmd1SQLLen=len2&strCmd2... Trải trên nhiều dòng, mỗi dòng là kết quả thực hiện cho một lệnh SQL Giải thích một số khái niệm : ServiceList : Là danh sách các dịch vụ mà IGIS-Server cung cấp cho IGIS-Client. Danh sách này được trải trên nhiều dòng. Bắt đầu mỗi dịch vụ bằng từ khoá SName. SName= Tên của dịch vụ thứ nhất SID= ID của dịch vụ thứ nhất Tên của layer thứ nhất Tên của layer thứ hai … SName= Tên của dịch vụ thứ hai SID= ID của dịch vụ thứ hai Tên của layer thứ nhất Tên của layer thứ hai … MapDesc : là cấu trúc mô tả các thông tin về bản đồ. Cấu trúc này cũng trải trên nhiều dòng. MoveLimit=(LeftDx,TopDy,RightDx,BottomDy) EntireMapPos=(x1,y1,x2,y2) LogRatio=logRatioX/logRatioY LogOffset=logOffsetX/logOffsetY LogUnit=logUnitX/logUnitY ObjectInfos : là cấu trúc cho biết các thông tin thuộc tính về một hoặc nhiều thực thể trên bản đồ. Cấu trúc này gồm nhiều dòng. SID_1 , Index_1,RowCount_1 ColName1| ColName2| ColName3 Ind, Item1.1 | Ind, Item2.1| Ind, Item3.1 Ind, Item1.2| Ind, Item2.2| Ind, Item3.2 SID_2,Index_2,RowCount_2 ColName1| ColName2 Ind, Item1 | Ind, Item2 Trong đó Ind (Indicator) chỉ dẫn cho giá trị của trường : Ind=1 : giá trị khác NULL Ind=0 : giá trị bằng NULL (Lúc này không quan tâm tới vế sau). RightURL : là phần ngọn của một địa chỉ URL. Để có thể tạo thành một địa chỉ URL hoàn chỉnh cần thêm địa chỉ của WebServer nơi chạy IGIS-Server. Ví dụ : RightURL=/IOGisServer/MapImages/Map1123_12.000000.jpg URL= Chú ý : trong các quy ước ở trên có những ký tự đặc biệt được sử dụng làm dấu ngăn cách. Nếu trong trường hợp mà giá trị có phần trùng với các dấu ngăn cách này và có thể gây nhập nhằng thì khi gửi các dấu đó sẽ được tự động nhân đôi và bên nhận phải tự động loại bỏ. II.2 Giao thức tầng truyền thông (IGIS-CP) Giao thức tầng ứng dụng thường làm việc dựa trên luồng các ký tự, hoặc dựa trên các từ khoá được định nghĩa trước. Giao thức IGIS-CP thì không cần quan tâm tới điều này, nó chỉ làm việc dựa trên luồng byte với các tiêu chuẩn sau : Đơn vị truyền nhận là các packet (Cấu trúc của packet sẽ mô tả sau) Đảm bảo truyền/nhận một cách chính xác (gửi đi các request và nhận đúng các response tương ứng với request đó) Có thể tách hoặc hợp trên các packet nếu cần. Có khả năng mã hoá/giải mã hoặc nén/giải nén dữ liệu khi có yêu cầu Các packet sử dụng trong tầng truyền thông này ta gọi là IGIS-Packet để khỏi lầm với các packet trong các giao thức ở tầng dưới. II.2.1 Giao thức IGIS-CP Khi tầng trên của bên gửi có yêu cầu truyền dữ liệu nó sẽ gửi dữ liệu cần truyền xuống tầng truyền thông. Nếu có yêu cầu mã hoá/nén dữ liệu thì nó sẽ thực hiện các thao tác này trên dữ liệu đầu vào. Sau đó nó đóng gói chúng thành một hoặc nhiều IGIS-Packet và gửi sang bên nhận. Khi nhận được một IGIS-Packet, tầng truyền thông của bên nhận có nhiệm vụ tách phần dữ liệu ra. Nếu dữ liệu nằm trong nhiều IGIS-Packet thì nó đợi cho tới khi nhận đủ các IGIS-Packet và tập hợp lại thành dữ liệu hoàn chỉnh. Nếu dữ liệu đã được mã hoá hay nén thì nó sẽ thực hiện tiếp thao tác giải mã hoặc giải nén. Sau đó dữ liệu sẽ được gửi lên tầng trên (tức là tầng ứng dụng). II.2.2 Cấu trúc tổng quát của một IGIS-Packet Cấu trúc của một IGIS-Packet gồm 3 phần là kiểu packet (Packet Type), độ dài phần dữ liệu (Data Length) và dữ liệu (Data). Phần Packet Type và Data Length được xem như phần Header của gói IGIS-Packet. N+4 0 … Type Data Length=N Data 4 Bytes 1 Byte 5 Bytes Header II.2.3 Các kiểu IGIS-Packet Các kiểu IGIS-Packet được xác định bằng trường Type trong phần Header Type là một số 8 bit mỗi bit tương ứng với một chức năng riêng. Có thể có nhiều kiểu IGIS-Packet khác nhau, thực hiện bằng phép OR các bit. Packet Types Bit 0 0 : Normal (không mã hoá) 1 : Encrypted (Đã mã hoá) Bit 1 0 : NoZip (Không nén) 1 : Zip (Đã nén) Bit 2 0 : End Sequence Packet 1 : Sequence Packet Bit 3..7 Reserved II.2.4 Cách lưu trữ giá trị độ dài dữ liệu trong trường DataLength Trường DataLength xác định độ dài dữ liệu trong trường Data. Kích thước của trường DataLength là 4 bytes (32 bits). Đây là một số kiểu Integer được lưu trữ theo thứ tự byte cao trước, byte thấp sau. Ví dụ: DataLength=20 (cơ số mười) hay DataLength=10100 (nhị phân) Giá trị lưu trữ trong trường DataLength là như sau : Byte 1 Byte 2 Byte 3 Byte 0 0000 0000 0000 0000 0000 0000 0001 0100 III. Mô hình thiết kế CSDL địa lý III.1 Mô hình dữ liệu Dữ liệu địa lý được lưu trữ trên CSDL Oracle có thể được thực hiện theo 2 mô hình Mô hình quan hệ đối tượng (Object-Relational Model) hoặc Mô hình quan hệ (Relational Model) Mô hình quan hệ-đối tượng có nhiều thuận lợi hơn so với mô hình quan hệ bởi các lý do sau : Cấu trúc lưu trữ dữ liệu không gian tốt hơn. Bởi các đối tượng hình học được lưu trữ trong một hàng đơn, cột đơn chứ không phải trong nhiều hàng nhiều cột như của mô hình quan hệ. Hỗ trợ lưu trữ nhiều kiểu đối tượng hình học hơn so với mô hình quan hệ. Ngoài các kiểu cơ bản (Point, Line String, Polygon) còn thêm cả các kiểu (Arc Line Strings, Arc Polygons,…) Có nhiều hiệu năng trong việc đánh chỉ số và truy vấn dữ liệu không gian. Vì vậy mô hình CSDL địa lý sẽ được thực hiện theo mô hình quan hệ - đối tượng. III.2 Xây dựng CSDL cung cấp dịch vụ thông tin địa lý Trong phần trên đã đề cập về các khái niệm Public Service và Private Service Mỗi dịch vụ này sẽ tương ứng với một CSDL trên Oracle. Việc phân loại dịch vụ Public và dịch vu Private sẽ được thông qua người quản trị IGIS-Server. Trong mỗi CSDL có nhiều table (bảng) chứa dữ liệu địa lý. Mỗi table này sẽ tương ứng với một Layer trong bản đồ. Cấu trúc của một table chứa dữ liệu địa lý tuân theo mô hình quan hệ-đối tượng như đã trình bày trong phần Cơ sở lý thuyết. Tuy nhiên để các table này sẵn sàng cung cấp cho người sử dụng cuối thì tên của table phải có trong bảng sdo_geom_metadata . IV. Phương pháp trao đổi dữ liệu giữa IGIS-Server và Oracle Oracle cung cấp một giao diện lập trình ứng dụng chuẩn API là OCI (Oracle Cal Interface) cho phép các chương trình ứng dụng được viết bằng ngôn ngữ C có thể giao tiếp được với một hoặc nhiều Oracle Server. Đây là các thư viện được viết dưới dạng DLL sẽ được kết nối với chương trình khi chạy. Mặc dù ODBC là một chuẩn của Microsoft thường được sử dụng để truy nhập CSDL. Cách tiếp cận ODBC đạt được tính khả chuyển cao nhưng có một số hạn chế. Nếu CSDL địa lý được thiết kế theo mô hình quan hệ thì việc sử dụng ODBC là một phương pháp tốt. Nhưng nếu CSDL được thiết kế theo mô hình quan hệ - đối tượng nghĩa là không tuân theo mô hình quan hệ thuần tuý. Hay trong mô hình này việc lưu trữ các dữ liệu không gian được tổ chức theo từng đối tượng (object). Lúc này rất khó có thể sử dụng ODBC để thao tác được trên các đối tượng này. Giao diện OCI cho phép thực hiện đầy đủ các thao tác với CSDL trên Oracle Server. Các thao tác này không chỉ là thực hiện các lệnh SQL mà còn cả trên các đối tượng. Tuy nhiên nếu CSDL Oracle và IGIS-Server nằm trên các máy khác nhau, thì cần cài đặt Net8 Client trên máy IGIS-Server và Net8 Server trên máy đặt CSDL Oracle. Net8 là giao thức truyền thông của Oracle (phiên bản Oracle 8i) để truy nhập CSDL từ xa. Vì vậy, IGIS-Server sẽ giao tiếp với Oracle bằng OCI thông qua giao thức Net8 . V. Thiết kế chương trình ứng dụng IGIS-Client IGIS-Client là chương trình Java Applet sẽ được tải về (download) và chạy trên Browser nằm trên máy của người sử dụng. Vì vậy cần đáp ứng được các tiêu chuẩn sau : Giao diện chương trình có thể tuỳ biến được nhằm mục đích hỗ trợ cho người thiết kế trang Web có thể biến đổi theo ý muốn. Kích thước chương trình không quá lớn đảm bảo tốc độ nạp về là đủ nhanh. Giao diện thuận tiện với người sử dụng trong việc lựa chọn thực hiện các chức năng của hệ thống Chương trình Java được tổ chức dưới dạng các class. Mỗi class là một đối tượng chứa các thuộc tính và các phương thức thực hiện các chức năng khác nhau. V.1 Giao diện chương trình Giao diện của chương trình Java chạy trên các trình duyệt Web được thể hiện dưới dạng các Applet. Mỗi Applet được nhúng vào trong trang Web bầng trường cùng với một vài tham số nếu có. Giao diện chương trình IGIS-Client gồm 2 Applet. Một applet là cửa sổ chính của chương trình và một applet khác sẽ đóng vai trò như một thanh công cụ. Việc phân chia này cho phép người thiết kế trang Web có thể đặt chúng tại các vị trí thích hợp. MA I N TOOL BAR TITLE BAR TOOL BAR VIEW STATUSBAR V.2 Sơ đồ các class chính trong chương trình GisApp.class (extends Applet) ViewMap GisToolBar LoginDlg LayerChoice (extends Frame) MessageDialog (extends Dialog) OpenMapWnd (extends Frame) ObjectInfoWnd (extends Frame) ClientSocket (extends GisMap) Communication Socket (Java API) GisMap MainToolbar (extends Applet) Layer ServiceDef GisToolbar Lớp applet sẽ đặt trong trang Web Lớp chứa các lớp khác Lớp được đặt trong một lớp khác V.3 Chức năng của các class GisApp : kế thừa từ lớp Applet của Java. Làm cửa sổ chính là giao diện của chương trình chứa các thanh toolbar, statusbar, title bar và kiểm soát các sự kiện bàn phím, chuột. Chứa các class khác thực hiện các chức năng của chương trình hoặc hiển thị các thông điệp cho người sử dụng Nhận các tham số đầu vào : BackgroundColor : Mầu nền của cửa sổ ForeColor : Mỗu chữ FontName : Tên font hiển thị FontStyle : Kiểu font FontSize : Kích thước font Title : Tên của tiêu đề TitleBkgndColor : Mỗu nền vùng TitleBar TitleColor : Mỗu chữ trên TitleBar TitleFont : Kiểu font trên TitleBar MapBackgroundColor : Mỗu nền của bản đồ MapBorderColor : Mỗu biên của bản đồ ToolbarBkgndColor : Mỗu nền của Toolbar StatusbarBkgndColor : Mỗu nền thanh Statusbar Logo1,logo2,log3 : Tên các file ảnh logo Port : cổng của IGIS-Server Nếu không xác định các tham số này thì sẽ sử dụng giá trị ngầm định. MainToolbar : được kế thừa từ lớp Applet. Lớp này cung cấp một giao diện lựa chọn các công cụ trên bản đồ. ClientSocket : thực hiện giao tiếp với IGIS-Server, lấy các Service trên IGIS-Server, quản lý các layer trong bản đồ hiện tại. Tạo các request và xử lý các response từ IGIS-Server. ViewMap : hiển thị bản đồ và các thông tin có liên quan như tỷ lệ bản đồ, vị trí thực (thông qua vị trí chuột) trên bản đồ. GisMap : chứa các Service hiện có và các layer trong một Service ServiceDef, Layer : lưu các thông tin về một Service và một layer Communication : thực hiện chức năng của tầng truyền thông IGIS-Client GisToolbar : là thanh công cụ trên GIS Applet. Quản lý các việc lựa chọn các chức năng của hệ thống LoginDlg : hộp thoại yêu cầu người sử dụng vào các thông tin đăng nhập như UserName và Password. MessageDlg : hộp thoại hiển thị các thông điệp như báo lỗi, thông báo,… OpenMapWnd, LayerChoice : là các cửa sổ cho phép người sử dụng lựa chọn mở một bản đồ, thêm hay gỡ bỏ hay một layer. ObjectInfoWnd : cửa sổ hiện các thông tin thuộc tính của các thực thể trên bản đồ khi người sử dụng chọn công cụ xem thông tin tại một vị trí trên bản đồ. VI. Thiết kế chương trình ứng dụng IGIS-Server Chương trình IGIS-Server thực hiện các nhiệm vụ chính sau : Giao tiếp với các ứng dụng IGIS-Client Giao tiếp với DBMS Oracle Thực hiện các chức năng GIS và cung cấp cho các ứng dụng IGIS-Client Hỗ trợ cho người quản trị có thể cấu hình được IGIS-Server (thông số port, giới hạn số kết nối, thư mục gốc của WebServer, các thông tin cho logging và một số thông số cần thiết khác). Hỗ trợ quản lý các dịch vụ GIS, phân chia thành các public service và private service, phân quyền truy nhập vào CSDL GIS tại nhiều mức khác nhau (Mức dịch vụ, mức layer) và quyền truy nhập cho từng End User riêng. VI.1 Sơ đồ mô tả hoạt động của IGIS-Server (trang sau) Start Init Database and Data Create the master socket Listen Accept ? - + Create the slave socket Create the IGIS-Client thread Finish Sơ đồ mô tả hoạt động của IGIS-Server VI.2 Sơ đồ mồ tả hoạt động của IGIS-Client thread () Begin Init Datas Wait for the requests - Quit ? - + + Process Requests Request ? End Sơ đồ mô tả hoạt động của IGIS-Client Thread VI.3 Xây dựng tập các modul chương trình giao tiếp với Oracle và thực hiện các chức năng GIS Đây là một tập các modul chạy trên IGIS-Server thực hiện riêng các chức năng về GIS và cả việc truy nhập tới các Oracle Server. Các modul này phải đảm bảo các yêu cầu sau: Có vai trò như một thư viện các hàm và thủ tục chuyên thực hiện các thao tác về GIS . Các modul này là sẵn sàng cung cấp cho các chương trình bên ngoài. Đảm nhiệm chức năng quản lý CSDL địa lý và giao tiếp với CSDL Oracle. Điều này có nghĩa là chương trình cũng phải có khả năng đồng bộ hoá các thread khi có yêu cầu truy nhập vào cùng một dữ liệu GIS do chương trình quản lý. Thư viện này sẽ được gọi bởi các IGIS-Client thread khi có yêu cầu thực hiện một chức năng GIS. Việc thực hiện các chức năng này sẽ được đưa vào từng class riêng. Mỗi class đảm nhiệm một nhóm các chức năng có liên quan với nhau (ví dụ có chung phần dữ liệu). VI.3.1 Phân loại các lớp theo từng chức năng CSDBManager : sẽ quản lý toàn bộ các CSDL Oracle mà chương trình truy nhập đến. CSDBManager sẽ chứa một danh sách các class CSDatabase sử dụng trong chương trình. CSDatabase : có chức năng giao tiếp với một CSDL Oracle. Lớp này chứa các thông tin và các dữ liệu về CSDL. Ví dụ bảng Sdo_Geom_MetaData, thông tin đăng nhập vào CSDL (UserName,Password, Database), tập các table đã được nạp,… CMapLayer : Đây là lớp lưu trữ dữ liệu của một layer hay một table. Mỗi layer do lớp này quản lý sẽ được chia sẻ cho nhiều IGIS-Client thread. Trong CMapLayer lại gồm có nhiều đối tương CMapGeometry. CMapLayerEx : Lớp CMapLayer không có khả năng vẽ mà thao tác này phải được tách riêng trong một class đó là CMapLayerEx. CMapGeometry : chứa dữ liệu của một đối tượng Sdo_Geometry trong layer. Lớp này chia đối tượng Sdo_Geometry thành nhiều phần tử có kiểu khác nhau như kiểu đường tròn (CCircleElem), kiểu đa giác (CPolyElem), kiểu chữ nhật (CRectElem),… CGisMap : Đây là lớp thực hiện tất cả các chức năng của GIS như tạo một bản đồ, phóng to, thu nhỏ bản đồ, lấy thông tin về các thực thể trên bản đồ,… VI.3.2 Xuất dữ liệu vector thành file ảnh raster Cấu trúc lưu trữ dữ liệu trên Oracle là cấu trúc dữ liệu Vector, để chuyển đổi thành file ảnh raster, chương trình phải thực hiện việc vẽ và lưu thành file ảnh tương ứng. Về các format của file ảnh có nhiều loại khác nhau (gif,jpg,bmp,…) và việc lựa chọn các khuôn dạng này cần thoả mãn các yêu cầu sau : Chất lượng ảnh tốt. Kích thước file ảnh nhỏ để dễ dàng truyền trên mạng. Như vậy, file ảnh ở dạng nén là thuận tiện nhất. Hiện nay có 2 loại file ảnh thường được sử dụng trên Web là file ảnh theo chuẩn GIF (Graphical Interchange Format) và chuẩn JPG (Joint Photographic Expert Group). File ảnh JPG thường có kích thước nhỏ gọn hơn GIF nên ta sẽ chọn chuẩn ảnh này. Cũng cần chú ý rằng quá trình chuyển đổi thành file JPG thường chậm hơn so với file GIF và chất lượng ảnh có thể bị sai lệch khi chọn một tỷ lệ nén lớn (chấp nhận mất một phần thông tin). Việc lưu dữ liệu thành file ảnh bitmap không khó nhưng thuật toán chuyển đổi từ bitmap thành file JPG là khá phức tạp và cần phải hiểu được một số thuật toán nén. Do giới hạn về thời gian, việc thực hiện đồ án sẽ không đi sâu vào vấn đề này mà sẽ sử dụng một thư viện xử lý ảnh có sẵn trên Internet thực hiện chuyển đổi từ dạng bitmap do chương trình tạo ra thành dạng JPG. VI.3.3 Sơ đồ minh hoạ quan hệ giữa các lớp CSDBManager CSDatabase CSDatabase CSDatabase … CMapLayer … CMapLayer CMapLayer … CMapGeometry CMapGeometry CMapGeometry … CRectElem CCircleElem CPolyElem CMapLayerEx CGisMap Phần IV - Cài đặt chương trình và thử nghiệm Nội dung : I. Cài đặt hệ thống II. Thử nghiệm I. Cài đặt hệ thống I.1 Cài đặt Oracle Server Việc cài đặt Oracle thường được hướng dẫn rất chi tiết và đầy đủ trong các tài liệu đi kèm. Tuy nhiên để hệ thống có thể hoạt động được, khi cài đặt cũng cần phải chú ý xác định đúng các thành phần cần phải có trong hệ thống. Sau đây sẽ giới thiệu mang tính chất giới thiệu chung và các chỉ tiêu cần thiết cho việc cài đặt các sản phẩm của Oracle. Cài đặt Oracle8i (bản Oracle8i Enterprise Edition for Windows NT) : Yêu cầu phần cứng : Phần cứng Yêu cầu CPU Pentium 133,166 hoặc lớn hơn (nên từ Pentium 200) RAM Tối thiểu là 64 MB (cho Minimal và Custom) Còn với Typical : 96 MB (khuyến nghị 128 MB) Hard Disk 720 MB (Typical), 587 MB (Minimal) Yêu cầu phần mềm : hệ điều hành Windows NT Yêu cầu các thành phần sau cần có khi cài đặt : Oracle8i Server Net8 Server : hỗ trợ kết nối từ xa Net8 Client : nếu cần thực hiện kết nối tới CSDL Oracle trên máy khác Oracle Spatial : quản lý và lưu trữ dữ liệu GIS. I.2 Cài đặt Web Server Tại máy chủ cung cấp dịch vụ GIS sẽ được cài đặt một phần mềm Web Server. Với hệ thống hiện tại thì có thể sử dụng bất kỳ một phần mềm Web Server nào đều được. Sau đây là một số phần mềm chính : Phần mềm Web Server của Microsoft : Internet Information Server (trên Windows NT), Microsoft Peer Web Services (Windows NT Workstation) hay Personal Web Server (Windows 95/98). Phần mềm Web Server của Oracle. Phần mềm Web Server của Netscape. I.3 Cài đặt chương trình IGIS-Client Chương trình IGIS-Client là một chương trình Java Applet gồm các phần sau : Tập các file *.class : đây là mã byte code đã được biên dịch từ chương trình nguồn. Tập các file ảnh : các file này được sử dụng trong việc hiển thị giao diện chương trình Tập các file biểu tượng : các biểu tượng cần sử dụng khi hiển thị cửa sổ. Các file này sẽ được đặt trong một thư mục riêng trên máy chủ Web Server Để sử dụng được chương trình cần soạn thảo trang Web và thiết lập trường để thiết lập lời gọi tới chương trình IGIS-Client khi trang Web này được tải xuống máy của người sử dụng. Ví dụ : I.4 Cài đặt chương trình IGIS-Server Vì lý do an toàn, một chương trình Java Applet chỉ được phép thực hiện các kết nối tới máy mà chúng được tải xuống nên chương trình IGIS-Server phải được cài đặt trên máy Web Server. Chương trình IGIS-Server thực hiện kết nối tới các Oracle Server. Vì vậy trước hết cũng cần phải cài đặt phần mềm Oracle trên máy này. Trên cùng một máy có thể cài đặt cả Oracle Server và Oracle Client. Các thành phần không thể thiếu khi cài đặt Oracle cho IGIS-Server là : Oracle8i Server/Client Net8 Client : nếu thực hiện kết nối tới các Oracle Server trên máy khác Oracle Call Interface Cấu hình phần cứng : cho IGIS-Server và cho cả Oracle Client. Phần cứng Yêu cầu CPU Tối thiểu Intel 80486 RAM 32 MB hoặc lớn hơn Hard Disk Đủ cho phần mềm Oracle Client, và không gian bộ nhớ ảo khi chạy IGIS-Server (Phụ thuộc vào khối lượng dữ liệu GIS) Phần mềm : hệ điều hành Windows9x, 2000, Windows NT. II. Thử nghiệm Do chưa có điều kiện thử nghiệm trên mạng Internet, nên trước mắt sẽ thực hiện trên mạng LAN tại phòng NCKH Mạng Viễn Thông thuộc Viện Khoa Học Kỹ Thuật Bưu Điện. Bao gồm tất cả 6 máy : 1 máy chủ và cũng là máy khách kết hợp với 5 máy khác. Cấu hình máy chủ là : Pentium 2 450 MHz, RAM 128 MB, Virtual Memory 1GB, hệ điều hành Windows NT 4.0, Web Server là Internet Information Server, cài đặt Oracle8i. Các máy client khác : đều sử dụng hệ điều hành Windows, Intel CPU. II.1 Chương trình thử nghiệm Việc thử nghiệm hệ thống gồm các công việc sau : Kiểm tra hoạt động của hệ thống với các trình duyệt Web khác nhau. Cụ thể là với Internet Explorer của Microsoft và Netscape Navigator của Netscape. Kiểm tra trên nhiều máy khác nhau và đánh giá khả năng phục vụ đồng thời nhiều người sử dụng Kiểm tra tốc độ xử lý của hệ thống khi xử lý nhiều chức năng cùng một lúc Kiểm tra khả năng đồng bộ hoá, xử lý tương tranh giữa các tiến trình khác nhau. II.2 Một vài hình ảnh trong quá trình thử nghiệm Màn hình hiển thị chương trình IGIS-Server Màn hình hiển thị chương trình Java Applet Màn hình hiển thị một bản đồ trong trạng thái xem toàn bộ II.3 Kết quả thử nghiệm Sau khi thử nghiệm hệ thống cho các kết quả là : Hệ thống hoạt động tốt với cả 2 trình duyệt Web là IE và Netscape Khi có nhiều yêu cầu đến cùng một lúc hệ thống bên Server vẫn làm việc tốt, các chức năng yêu cầu được thực hiện một cách song song và cho kết quả khá đều nhau. Tốc độ xử lý với các bản đồ kích thước nhỏ (vài MB) là khá nhanh nhưng với các bản đồ có kích thước lớn (vài chục MB) vẫn còn chậm. Hệ thống có khả năng đồng bộ hoá các tiến trình khi truy nhập vào cùng một tài nguyên. Ví dụ : khi có 2 yêu cầu mở cùng một bản đồ đến tại một thời điểm, và dữ liệu cho bản đồ này là chưa được nạp. Lúc này chúng sẽ được đồng bộ theo trình tự một tiến trình nạp dữ liệu và một tiến trình kia sẽ phải chờ đợi. Sau khi đã đủ dữ liệu cả 2 tiến trình này đều được phép chạy song song với nhau (cùng đọc dữ liệu và trả kết quả). Phần V- kết luận Nội dung : I. Đánh giá chung II. Phương hướng phát triển III. Kết luận I. Đánh giá chung Sau một quá trình thực hiện, đồ án đã đạt được một số kết quả nhất định : Xây dựng được hệ thống cung cấp các thông tin bản đồ thông qua môi trường mạng, bao gồm các chức năng sau : Xem mới một bản đồ, thêm và gỡ bỏ các Layer trên bản đồ. Tích hợp một số công cụ xem bản đồ là : phóng to , thu nhỏ bản đồ, di chuyển vị trí xem bản đồ (pan), nhìn toàn bộ bản đồ. Xem và soạn thảo các thông tin thuộc tính của các đối tượng trên bản đồ. Hoàn thành bước phân tích, thiết kế và viết các modul thực hiện các chức năng của hệ thống và các chức năng trao đổi dữ liệu giữa các tầng (IGisClient với IGisServer, giữa IGisSever và Oracle Server). Các chức năng này đều hoạt động tốt. Phân chia giữa các dịch vụ GIS và kiểm tra quyền sử dụng dịch vụ đối với các end user. Đáp ứng nhu cầu sử dụng cho nhiều Client, có khả năng đồng bộ hoá xử lý tương tranh. Có thể truy nhập tới dữ liệu GIS trên nhiều Oracle Server khác nhau. Tuy nhiên hệ thống vấn còn có mang nhiều điểm hạn chế : Thời gian thực hiện các chức năng GIS trên các bản đồ lớn vẫn còn chậm Hệ thống chưa được tối ưu hoá về kích thước chương trình (đặc biệt là với chương trình Java Applet) cũng như chế độ sử dụng tiết kiệm bộ nhớ, tối ưu hoá các thuật toán truy vấn, vẽ, tìm kiếm trên bản đồ,… Chưa đánh giá được chính xác có thể phục vụ được tối đa là bao nhiêu Client với một cấu hình phần cứng xác định. Chưa thực hiện được chức năng phân quyền truy nhập tới CSDL tại nhiều mức khác nhau. Chưa tích hợp modul quản lý các end user. Chưa xây dựng các modul Security đảm bảo tính an toàn và bảo mật cho hệ thống. Chưa xác định được là hệ thống có hoạt động tốt trên môi trường mạng Internet hay không. II. Phương hướng phát triển Trong giai đoạn tới, phương hướng tiếp tục phát triển đề tài là khắc phục được các điểm hạn chế trên. Nếu sử dụng được trên thực tế thì vấn đề triển khai các chế độ về an toàn, bảo mật là rất cần thiết. Bởi lẽ môi trường mạng Internet là thực sự phức tạp, có nhiều mối đe doạ từ nhiều phía có thể tấn công vào hệ thống đặc biệt là vấn đề bảo vệ các CSDL GIS hay vấn đề giữ kín các thông tin bí mật như User Name, Password,… Các ứng dụng GIS là rất nhiều, đa dạng và với mỗi lĩnh vực chuyên môn khác nhau lại có nhiều bài toán khác nhau. Hướng phát triển mới bao gồm một số các công việc sau : Tích hợp thêm nhiều chức năng khác trên bản đồ như các chức năng soạn thảo bản đồ : tạo các bản đồ mới, vẽ lên bản đồ, cập nhật lại các đối tượng không gian trên bản đồ,… Mở rộng sang các bài toán có tính chuyên môn khi áp dụng trong các lĩnh vực cụ thể. Ví dụ trong quản lý mạng cáp là các bài toán phát triển thuê bao, dẫn độ thuê bao, tìm kiếm số điện thoại,… Một bài toán rất thông dụng trên bản đồ và có thể được áp dụng trong nhiều lĩnh vực khác nhau đó là bài toán tìm đường đi ngắn nhất. Ví dụ các nhà kinh doanh muốn xác định con đường đi tối ưu nhất để vận chuyển hàng hoá giữa các chi nhánh, cơ sở khác nhau. Hay trong lĩnh vực Bưu điện khi cần lắp mới một tuyến cáp xuống các địa điểm khác nhau trên những trục cáp chính thì việc tìm kiếm đường đi ngắn nhất cũng có thể tiết kiệm được rất nhiều cho chi phí, tiến độ lắp đặt. Vì vậy, đây là một bài toán có nhiều ứng dụng rất thiết thực và việc nghiên cứu thực hiện bài toán này cũng rất quan trọng. III. Kết luận Sau một thời gian thực hiện đồ án, tuy đó không phải là một thời gian dài nhưng cũng đã đem lại một số kết quả tốt và chứng tỏ được tính khả thi của đề tài. Các chức năng GIS chỉ là các thao tác cơ bản trên bản đồ. Mặc dù đây thực sự chỉ là một phần nhỏ trong một phạm vi ứng dụng rộng lớn của GIS. Nhưng đó cũng là bước đi đầu tiên nếu thành công thì sẽ đem lại nhiều thuận lợi trong các bước phát triển tiếp theo. Điều này giống như trong dân gian đã từng nói “Vạn sự khởi đầu nan”. Nhìn ra trước mắt thì khó khăn cũng còn nhiều và con đường tìm kiếm giải pháp tối ưu nhất vẫn còn bỏ ngỏ. Trên thế giới, đề tài này đã được tập trung phát triển bởi nhiều công ty GIS có tầm cỡ. Đã có những sản phẩm rất thành công trong lĩnh vực này. Tuy nhiên, chi phí bỏ ra để mua chúng là khá đắt. Đặc biệt là đối với Việt Nam, khi nhu cầu sử dụng GIS ngày một tăng, nhưng để bỏ ra một số tiền như vậy cũng là một khó khăn không nhỏ. Vì vậy, làm thế nào để đáp ứng được các yêu cầu này trong hoàn cảnh của nước ta hiện nay cũng là một vấn đề cần thiết. Tài liệu tham khảo Tài liệu tham khảo tiếng Việt [1] Nguyễn Thúc Hải, Mạng máy tính và các hệ thống mở, Nhà xuất bản giáo dục, 1999. [2] Nguyễn Hồng Sơn, Trần Trọng Tuệ, Nghiên cứu tích hợp hệ thống đồ hoạ theo mô hình Client/Server với hệ quản trị cơ sở dữ liệu Oracle áp dụng quản lý mạng ngoại vi cho bưu điện tỉnh, 3/2000. [3] Trần Tiến Dũng, Giáo trình lý thuyết và bài tập JAVA, Nhà xuất bản giáo dục, 1999. Tài liệu tham khảo tiếng Anh [4] David J.Kruglink, Inside Visual C++, Microsoft Press, 1997. [5] George Coulouris, Jean Dollimore, Tim Kindberg, Distributed Systems Concepts and Design, Addison-Wesley Publishers Ltd, 1994. [6] Information Systems Management, The article The Critical Choice of Client Server Architecture: A Comparison of Two and Three Tier Systems , 1995. [7] Ivor Horton, Beginning Java, Wrox Press Ltd. [8] Joseph O. Nattey , The Article Types Of Client/server Architecture, 1996. [9] KC. Hopson, Stephen E.Ingram, Developing Professional Java Applets, Sams.net Publishing, 1996. [10] Len Fertuck, Systems Analysis and Design with CASE Tools, Wm C. Brown Publishers, 1992. [11] Microsoft, MSDN January 2000 . [12] Oracle Documentation Library, Oracle8i Concepts Release 8.1.5, Oracle Call Interface Programmer’s Guide Release 8.1.5, Oracle8i Spatial User's Guide and Reference Release 8.1.5. Địa chỉ Internet [13] [14] [15] [16] ._.

Các file đính kèm theo tài liệu này:

  • docDAN335.doc