Luận văn tốt nghiệp - Đề tài: “Tìm hiểu về dịch vụ web cho ứng dụng GIS và xây dựng ứng dụng minh họa khai thác dịch vụ” - Trường Đại học Khoa học Tự nhiên TP. Hồ Chí Minh - Nguyễn Trung Kiên, Nguyễn Nguyên Bảo

pdf 183 trang phuongnguyen 5580
Bạn đang xem 20 trang mẫu của tài liệu "Luận văn tốt nghiệp - Đề tài: “Tìm hiểu về dịch vụ web cho ứng dụng GIS và xây dựng ứng dụng minh họa khai thác dịch vụ” - Trường Đại học Khoa học Tự nhiên TP. Hồ Chí Minh - Nguyễn Trung Kiên, Nguyễn Nguyên Bảo", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfluan_van_tot_nghiep_de_tai_tim_hieu_ve_dich_vu_web_cho_ung_d.pdf

Nội dung text: Luận văn tốt nghiệp - Đề tài: “Tìm hiểu về dịch vụ web cho ứng dụng GIS và xây dựng ứng dụng minh họa khai thác dịch vụ” - Trường Đại học Khoa học Tự nhiên TP. Hồ Chí Minh - Nguyễn Trung Kiên, Nguyễn Nguyên Bảo

  1. LỜI CẢM ƠN Chúng em xin chân thành cám ơn Khoa Công Nghệ Thông Tin, trường Đại Học Khoa Học Tự Nhiên TpHCM đã tạo điều kiện tốt cho chúng em thực hiện đề tài luận văn tốt nghiệp này. Chúng em xin chân thành cám ơn Thầy Lê Thụy Anh đã tận tình hướng dẫn, chỉ bảo chúng em trong suốt thời gian thực hiện đề tài. Chúng em xin chân thành cám ơn quý Thầy Cô trong Khoa đã tận tình giảng dạy, trang bị cho chúng em những kiến thức quý báu trong những năm học vừa qua. Chúng con xin nói lên lòng biết ơn sâu sắc đối với Ông Bà, Cha Mẹ đã chăm sóc, nuôi dạy chúng con thành người. Xin chân thành cám ơn các anh chị và bạn bè đã ủng hộ, giúp đỡ và động viên chúng em trong thời gian học tập và nghiên cứu. Mặc dù chúng em đã cố gắng hoàn thành luận văn trong phạm vi và khả năng cho phép nhưng chắc chắn sẽ không tránh khỏi những thiếu sót. Chúng em kính mong nhận được sự cảm thông và tận tình chỉ bảo của quý Thầy Cô và các bạn. Nhóm sinh viên thực hiện Nguyễn Trung Kiên – Nguyễn Nguyên Bảo Tháng 07/ 2005 i
  2. LỜI NÓI ĐẦU Vào thời đại ngày nay, việc phát triển phần mềm không đơn thuần chỉ là ngồi gõ chương trình như thời buổi ban đầu. Ngày nay, nhu cầu phát triển và mở rộng phần mềm ngày càng đòi hỏi cao hơn, nhanh hơn và chuyên nghiệp hơn. Người sử dụng phần mềm không chỉ là những người dùng bình thường mà còn là những nhà xây dựng, phát triển phần mềm khác. Người phát triển phần mềm không còn xây dựng phần mềm của mình từ chỗ không có gì, họ sẽ sử dụng lại cac phần mềm của những nhà phát triển khác. Từ đó, nhu cầu đóng gói, trao đổi và mua bán các gói phần mềm ngày càng tăng cao. Vào thời đại ngày nay, với sự phát triển của Internet cùng với các công nghệ hướng Net khác kèm theo, việc trao đổi, mua bán các gói phần mềm và việc thực thi chúng ngày càng thuận lợi và nhanh chóng hơn. Từ đó, dẫn đến sự ra đời của nhiều giải pháp phát triển phần mềm khác nhau, chẳng hạn như DCOM, RMI, CORBRA, Nhưng trong đó, nổi bật và chiếm nhiều ưu điểm nổi trội phải kể đến giải pháp phát triển phần mềm dựa trên Kiến trúc Hướng Dịch vụ (SOA – Service Oriented Architecture) và triển khai trên cơ chế Web Service. Việc áp dụng giải pháp dịch vụ web cho ứng dụng GIS đang được triển khai ngày càng rộng rãi. Do nó hoàn toàn giải quyết được các yêu cầu đặt ra bởi các ứng dụng GIS. Chính vì thế, việc tiến hành nghiên cứu kỹ thuật lập trình Web Service là một hướng nghiên cứu mang tính chiến lược cho sự phát triển các ứng dụng trong tương lai. Đề tài luận văn của chúng em là “Tìm hiểu về dịch vụ web cho ứng dụng GIS và xây dựng ứng dụng minh họa khai thác dịch vụ” gồm có tất cả 8 chương. Chương 1. Tổng quan: Giới thiệu khái quát về Web Service, GIS, chuẩn OpenGIS và mục tiêu của đề tài. Chương 2. Web Map Service (WMS): Nghiên cứu chuẩn WMS do OpenGIS đưa ra, chuẩn này hỗ trợ việc hiển thị bản đồ thông qua dịch vụ web. ii
  3. Chương 3. Web Feature Service (WFS): Nghiên cứu chuẩn WFS do OpenGIS đưa ra, chuẩn này hỗ trợ cho việc truy vấn thông tin các dữ liệu địa lý qua dịch vụ web. Chương 4. Bộ lọc (Filter): Nghiên cứu sâu hơn về bộ lọc dùng trong dịch vụ WFS. Chương 5. CarbonTool: Nghiên cứu công cụ CarbonTool hỗ trợ cho việc đọc các chuẩn WMS và WFS. Chương 6. Cài đặt chương trình OpenGISServer: Mô tả việc xây dựng chương trình server hỗ trợ hai chuẩn WMS và WFS của OpenGIS. Chương 7. Cài đặt chương trình client: Mô tả việc xây dựng hai ứng dụng khách khai thác hai dịch vụ WMS và WFS. Chương 8. Tổng kết: Tổng kết quá trình nghiên cứu và rút ra hướng phát triển trong tương lai. iii
  4. MỤC LỤC MỤC LỤC iv DANH SÁCH HÌNH ix DANH SÁCH BẢNG x DANH SÁCH BẢNG x MỘT SỐ THUẬT NGỮ xi Chương 1. Tổng quan 1 1.1. Đặt vấn đề và mục tiêu đề tài 1 1.2. Giới thiệu Web Service 3 1.3. Giới thiệu hai chuẩn WMS và WFS 3 Chương 2. Web Map Service (WMS) 5 2.1. Giới thiệu 5 2.2. Các element cơ sở 5 2.2.1. Đánh số và thỏa thuận phiên bản (version) 5 2.2.2. Những quy tắc chung trong HTTP request 7 2.2.3. Những quy tắc chung trong HTTP response 8 2.2.4. Những quy tắc về tham số trong câu request 8 2.2.5. Các tham số thông dụng trong câu request 9 2.2.6. Kết quả dịch vụ 13 2.2.7. Biệt lệ dịch vụ 13 2.3. Các operation của Web Map Service 14 2.3.1. GetCapabilities 14 2.3.2. GetMap 26 2.3.3. GetFeatureInfo 32 iv
  5. Chương 3. Web Feature Service (WFS) 36 3.1. Giới thiệu 36 3.2. Các thành phần dịch vụ cơ sở 38 3.2.1. Mã hóa câu request 38 3.2.2. Không gian tên 38 3.3. Các thành phần chung 38 3.3.1. Định danh của Feature (Feature identifier) 38 3.3.2. Định danh duy nhất toàn cầu 39 3.3.3. Trạng thái của Feature (Feature State) 40 3.3.4. Tên của các thuộc tính 40 3.3.5. Tham chiếu đến thuộc tính 41 3.3.6. Thành phần 47 3.3.7. Filter 48 3.3.8. Thông báo về các biệt lệ (Exception Reporting) 48 3.3.9. Các thuộc tính XML chung 49 3.4. DescribeFeatureType 50 3.4.1. Giới thiệu 50 3.4.2. Request 50 3.4.3. Response 51 3.4.4. Biệt lệ 52 3.5. GetFeature 52 3.5.1. Giới thiệu 52 3.5.2. Request 53 3.5.3. Response 55 3.5.4. Biệt lệ 56 3.6. LockFeature 56 3.6.1. Giới thiệu 56 3.6.2. Request 57 3.6.3. Response 58 v
  6. 3.6.4. Biệt lệ 59 3.7. Transaction 60 3.7.1. Giới thiệu 60 3.7.2. Request 60 3.7.3. Response 69 3.7.4. Biệt lệ 72 3.8. GetCapabilities 72 3.8.1. Giới thiệu 72 3.8.2. Request 72 3.8.3. Response 73 3.8.4. Biệt lệ 73 Chương 4. Bộ lọc (Filter) 74 4.1. Giới thiệu: 74 4.2. Sử dụng Filter: 74 4.3. Đặc tả của Filter: 74 4.4. Các phép toán không gian (Spatial Operators) 75 4.4.1. Mục đích 75 4.4.2. Mô tả 75 4.5. Các phép toán so sánh (Comparison operators) 78 4.5.1. Giới thiệu: 78 4.5.2. Mô tả: 78 4.6. Các phép toán Logic 82 4.6.1. Giới thiệu: 82 4.6.2. Mô tả: 82 4.7. Định danh của Feature (Feature Identifier): 83 4.7.1. Giới thiệu: 83 4.7.2. Mô tả: 84 vi
  7. 4.8. Biểu thức (Expressions): 84 4.8.1. Giới thiệu: 84 4.8.2. Mô tả: 84 4.9. Các phép toán số học: 84 4.9.1. Giới thiệu: 84 4.9.2. Mô tả: 84 4.10. Các hàm (Functions) 85 4.10.1. Giới thiệu: 85 4.10.2. Mô tả: 86 4.11. Các khả năng về Filter: 86 Chương 5. Carbon Tool 91 5.1. Giới thiệu 91 5.2. Một số ví dụ về việc sử dụng bộ thư viện CarbonTools 92 5.2.1. Dùng CarbonTools thực hiện GetCapabilities request 92 5.2.2. Dùng CarbonTools thực hiện GetFeature request 96 5.3. Dùng CarbonTools gởi GetMap request 102 5.3.1. Lớp CarbonTools.Core.WMS.SourceWMS 102 5.3.2. Lớp CarbonTools.Core.Base.DataRaster 103 5.3.3. Lớp CarbonTools.Core.WMS.HandlerWMS 103 5.3.4. Vi dụ thực hiện GetMap request 104 5.4. Dùng CarbonTools gởi DescribeFeatureType request 105 5.5. Dùng CarbonTools gởi request của Transaction và LockFeature 106 Chương 6. Cài đặt chương trình OpenGIS Server 107 6.1. Giới thiệu 107 6.2. Tổ chức và lưu trữ dữ liệu 107 6.3. Giao tiếp với client bằng giao thức HTTP 114 6.3.1. Nhận dữ liệu từ client bằng giao thức HTTP GET: 114 6.3.2. Nhận dữ liệu từ client bằng giao thức HTTP POST 114 vii
  8. 6.3.3. Trả kết quả về cho Client 115 6.4. Đọc dữ liệu từ chuỗi XML 115 6.4.1. Ví dụ đọc 1 tài liệu Xml 115 6.5. Các lớp trong chương trình 118 Chương 7. Cài đặt các chương trình client 126 7.1. Cài đặt chương trình OpenGisClientDemo 126 7.1.1. Giới thiệu 126 7.1.2. Gởi request cho server 135 7.2. Cài đặt chương trình OpenGisClientApplication 144 7.2.1. Tính năng 144 7.2.2. Màn hình giao diện 145 Chương 8. Tổng kết 147 8.1. Kết quả đạt được 147 8.2. Hướng phát triển 147 PHỤ LỤC - MySQL với phần mở rộng hỗ trợ cho OpenGIS 148 TÀI LIỆU THAM KHẢO 171 viii
  9. DANH SÁCH HÌNH Hình 1.1. Kiến trúc các dịch vụ web của OGC 4 Hình 2.1. Hình chữ nhật bao 12 Hình 3.1. Lược đồ giao thức 37 Hình 7.1. Màn hình chính 127 Hình 7.2. Màn hình minh họa thực hiện request WFS – GetCapabilities 128 Hình 7.3. Màn hình minh họa thực hiện request WFS – DescribeFeatureType 129 Hình 7.4. Màn hình minh họa thực hiện request WFS – GetFeature 130 Hình 7.5. Màn hình minh họa thực hiện request WFS – GetFeature 131 Hình 7.6. Màn hình minh họa thực hiện request WFS – Transaction 132 Hình 7.7. Màn hình minh họa thực hiện request WMS – GetCapabilities 133 Hình 7.8. Màn hình minh họa thực hiện request WMS – GetMap 134 Hình 7.9. Màn hình giao diện chương trình OpenGISClientApplication 145 Hình 7.10. Màn hình lấy thông tin một điểm trên bản đồ 146 ix
  10. DANH SÁCH BẢNG Bảng 2.1. Các ký tự quy ước trong câu HTTP GET URL 7 Bảng 2.2. Danh sách các kiểu MIME 10 Bảng 2.3. Các tham số trong GetCapabilities request URL 14 Bảng 2.4. Mối quan hệ giữa giá trị UpdateSequence trong client và server 15 Bảng 2.5. Thuộc tính lớp 23 Bảng 2.6. Qui định kế thừa các thuộc tính lớp 26 Bảng 2.7. Các tham số trong GetMap request 27 Bảng 2.8. Các tham số của request GetFeatureInfo 33 Bảng 5.1. Các thuộc tính của SourceOGCCapabilities 92 Bảng 5.2. Các thuộc tính quan trọng của DataOGCCapabilities 93 Bảng 5.3. Các thuộc tính của HandlerOGCCapabilities 94 Bảng 5.4. Các thuộc tính của CarbonTools.Core.WFS.SourceWFS 97 Bảng 5.5. Các thuộc tính của CarbonTools.Core.Features.DataFeatures 97 Bảng 5.6. Các thuộc tính của CarbonTools.Core.WFS.HandlerWFS 98 Bảng 5.7. Các thuộc tính của CarbonTools.Core.WMS.SourceWMS 103 Bảng 5.8. Các thuộc tính của CarbonTools.Core.Base.DataRaster 103 Bảng 5.9. Các thuộc tính của CarbonTools.Core.WMS.HandlerWMS 104 Bảng 6.1. Các bảng dữ liệu trong CSDL TpHCM 108 Bảng 6.2. Cấu trúc chung của các bảng dữ liệu 109 Bảng 6.3. Bảng “duong” 110 Bảng 6.4. Bảng “quan” 111 Bảng 6.5. Bảng “song” 111 Bảng 6.6. Bảng “tuyensinh” 112 Bảng 6.7. Bảng “ypagesit” 113 Bảng 6.8. Các lớp trong chương trình 125 x
  11. MỘT SỐ THUẬT NGỮ Operation Đặc tả của phép biến đổi hoặc truy vấn trên một đối tượng có thể được gọi thực thi. Client Phần mềm có thể gọi operation từ server Request Lời yêu cầu operation của client cho server. Response Kết quả trả về của operation mà serve gửi cho client. Tài liệu Capabilities XML Tài liệu metadata mô tả các operation mà một dịch vụ hỗ trợ. OGC Tổ chức Open GIS Consortium OWS – OGC Web Service Các dịch vụ web của OGC WMS Dịch vụ Web Map Service WFS Dịch vụ Web Feature Service xi
  12. Chương 1. Tổng quan Chương 1. Tổng quan 1.1. Đặt vấn đề và mục tiêu đề tài Hệ thống thông tin địa lý (GIS) là một công cụ máy tính để lập bản đồ và phân tích các sự vật, hiện tượng thực trên trái đất. GIS lưu giữ thông tin về thế giới thực dưới dạng tập hợp các lớp chuyên đề có thể liên kết với nhau nhờ các đặc điểm địa lý. Điều này đơn giản nhưng vô cùng quan trọng và là một công cụ đa năng đã được chứng minh là rất có giá trị trong việc giải quyết nhiều vấn đề thực tế, từ thiết lập tuyến đường phân phối của các chuyến xe, đến lập báo cáo chi tiết cho các ứng dụng quy hoạch, mô phỏng sự lưu thông khí quyển toàn cầu, cho đến việc xác lập các hệ định vị toàn cầu. Hiện nay, công nghệ GIS được nghiên cứu ứng dụng đa dạng, đa tầng trong nhiều lĩnh vực khác nhau (phân tích các sự kiện, dự đoán tác động và hoạch định chiến lược). Các chuyên gia của mọi lĩnh vực đều nhận thức được những ưu điểm của sự kết hợp công việc của họ và GIS. Chính vì thế, việc tìm hiểu các dịch vụ web cho ứng dụng GIS và xây dựng ứng dụng minh họa khai thác dịch vụ không chỉ là một yêu cầu mang tính khoa học của ngành công nghệ thông tin mà còn là một đòi hỏi của chính thực tiễn đời sống trong bối cảnh toàn cầu hoá. Yêu cầu ứng dụng công nghệ GIS đang phát triển cả về chiều rộng lẫn chiều sâu đang đặt ra nhiều thách thức kỹ thuật trong quá trình thu thập, phân tích và xử lý dữ liệu với khối lượng lớn. Các dữ liệu GIS từ nhiều nguồn và có thể được định dạng theo nhiều chuẩn khác nhau. Do đó, khi khai thác dữ liệu này, người sử dụng dễ vấp phải những trở ngại lớn về vấn đề tính tương thích, cũng như những rắc rối trong việc mua bán phần mềm, làm quen với việc sử dụng phần mềm, chưa kể đến việc phải bỏ ra một lượng tiền lớn để mua toàn bộ các dữ liệu do nhà cung cấp xây dựng, trong khi hầu hết các 1
  13. Chương 1. Tổng quan trường hợp ta chỉ cần một phần thông tin trong đó mà thôi. Các dữ liệu này được đưa về và lưu trữ tập trung ở một nơi, lại phải bỏ ra một khoản tiền không nhỏ khác cho việc lưu trữ, bảo trì và cập nhật chúng. Rõ ràng là tiêu phí công sức, thời gian, và tiền bạc một cách vô ích. Để khắc phục những trở ngại này, việc tiến hành xây dựng các dịch vụ web hỗ trợ GIS là một giải pháp tốt hiện đang được rất nhiều nơi trên thế giới và trong nước triển khai thực hiện. Thay vì dồn các dữ liệu lại một nơi và xử lý tập trung trên đó, giải pháp dịch vụ web lại đi theo con đường xử lý phân tán. Mọi thông tin yêu cầu và đáp ứng đều được gửi và nhận thông qua Internet. Nhờ mang lại được những tiện ích thiết thực, các dịch vụ web hỗ trợ GIS đang ngày càng phát triển nhanh và rộng khắp đến mức làm nảy sinh nhu cầu xây dựng một chuẩn chung áp dụng rộng rãi trên toàn cầu dành riêng cho các dịch vụ web hỗ trợ GIS, nhằm đáp ứng mục tiêu hợp tác, giao tiếp được với các dịch vụ web hỗ trợ GIS trên phạm vi toàn cầu. Nhận thấy yêu cầu đó, tổ chức OGC đã đưa ra các chuẩn chung thống nhất cho các dịch vụ web hỗ trợ GIS. Trong đó, hai chuẩn được xem là cơ sở và sử dụng phổ biến nhất là Web Map Service (WMS) và Web Feature Service (WFS). Hiện nay, trên thế giới và ở nước ta đã có rất nhiều nơi tiến hành nghiên cứu và xây dựng các server cung cấp các dịch vụ WMS và WFS nhằm hỗ trợ cho các bài toán về thông tin địa lý ở những mức độ khác nhau. Tuy nhiên hầu như chỉ có một số giải pháp được tiến hành theo hướng cung cấp các dịch vụ web trên cơ sở hỗ trợ tối đa mọi hàm thuộc hai chuẩn WMS và WFS. Do đó, luận văn này hướng vào mục tiêu nghiên cứu và xây dựng thành công server hỗ trợ đầy đủ các giao tác của hai dịch vụ WMS và WFS, đồng thời xây dựng các ứng dụng client minh họa khả năng của server này. Lý do chọn chuẩn WMS và WFS là do nó đạt tính chuẩn hóa và tính quốc tế cao, được sử dụng phổ biến và được kiểm nghiệm nghiêm ngặt. 2
  14. Chương 1. Tổng quan 1.2. Giới thiệu Web Service Web Service thực chất là sự kết hợp các máy tính cá nhân với các thiết bị khác, là một phương thức tích hợp các cơ sở dữ liệu và các mạng để tạo thành một cơ cấu tính toán ảo mà người sử dụng có thể làm việc thông qua các trình duyệt Web. Bản thân các dịch vụ này hoạt động thông qua các server trên nền Web chứ không phải là các máy tính cá nhân, do vậy có thể chuyển các chức nǎng từ máy tính cá nhân lên Internet. Người sử dụng có thể sử dụng các dịch vụ thông qua bất kỳ loại máy nào có hỗ trợ Web Service và có khả năng truy cập Internet, kể cả các thiết bị cầm tay. Người sử dụng có thể truyền các dữ liệu và các ứng dụng từ máy tính cá nhân tới các server của một nhà cung cấp Web Service. Các server này trở thành nguồn tiềm nǎng cung cấp cho người sử dụng cả về độ an toàn, độ riêng tư và khả nǎng truy nhập. Các server ứng dụng sẽ là một phần quan trọng của các Web Service bởi vì thông thường, các server này thực hiện các ứng dụng phức tạp dựa trên sự chuyển giao giữa người sử dụng và các chương trình kinh doanh hay các cơ sở dữ liệu của một tổ chức nào đó. 1.3. Giới thiệu hai chuẩn WMS và WFS Tổ chức OpenGis (OGC – OpenGis Consortium) đã đưa ra ba chuẩn dịch vụ truy cập thông tin địa lý mang tính chuẩn hóa cao là :Web Map Service (WMS), Web Feature Service (WFS) và Web Coverage Service (WCS). Ngoài ra còn có các chuẩn khác như GeoParser và GeoCoder. Hình sau đây mô ta sơ đồ kiến trúc các dịch vụ Web của tổ chức OGC. 3
  15. Chương 1. Tổng quan Hình 1.1.Kiến trúc các dịch vụ web của OGC Trong đó, hai chuẩn WMS và WFS là hai chuẩn cơ bản được sử dụng rất nhiều nhằm cung cấp các dịch vụ biểu diễn các thông tin địa lý ra ảnh bản đồ và truy vấn các dữ liệu địa lý đó. 4
  16. Chương 2. Web Map Service (WMS) Chương 2. Web Map Service (WMS) 2.1. Giới thiệu Web Map Service (WMS) là một dịch vụ giúp tạo ra các bản đồ dựa trên các dữ liệu địa lý. Bản đồ ở đây được hiểu như một cách thể hiện trực quan của dữ liệu địa lý còn bản thân bản đồ không được xem là dữ liệu. Các bản đồ này được hiển thị dưới các định dạng ảnh như PNG, GIF, JPEG hoặc các định dạng thành phần đồ họa vector như SVG (Scalable Vector Graphics), WebCGM (Web Computer Graphics Metafile). Một WMS sẽ hỗ trợ ba operation, trong đó hai operation đầu là bắt buộc cho mọi WMS. 1) GetCapabilities: cung cấp các thông tin metadata ở mức dịch vụ, đó là đặc tả cho các thông tin của dịch vụ WMS và các tham số cần thiết cho các câu yêu cầu request. 2) GetMap: cung cấp ảnh bản đồ khi nhận được các tham số về chiều và thông tin không gian địa lý hợp lệ. 3) GetFeatureInfo: truy vấn thông tin của các feature trên bản đồ. Trình duyệt web có thể yêu cầu WMS thực hiện các operation này bằng cách gửi các câu request dưới dạng URL. Nội dung của câu URL này phụ thuộc vào việc gọi thực hiện tác vụ nào. 2.2. Các element cơ sở 2.2.1. Đánh số và thỏa thuận phiên bản (version) 2.2.1.1. Cách thức đánh số phiên bản Mỗi phiên bản được biểu diễn bằng một bộ số gồm ba số nguyên dương, cách nhau bởi dấu “.”, nó có dạng như sau “x.y.z”. Trong đó hai số “y” và “z” không vượt quá 99. Mỗi đặc tả OWS được đánh số độc lập. 5
  17. Chương 2. Web Map Service (WMS) 2.2.1.2. Thay đổi phiên bản Mỗi một bộ số phiên bản của một đặc tả sẽ được đánh số lại tương ứng với mỗi lần thay đổi đặc tả đó. Bộ số này sẽ được tăng đều và vẫn không nhiều hơn ba số nguyên. Có thể các lần tăng sẽ không liên tục nhau. Số phiên bản xuất hiện trong ít nhất hai chỗ: một ở trong tài liệu Capabilities XML mô tả dịch vụ, và một trong danh sách tham số của câu request yêu cầu dịch vụ do client gửi. Mỗi dịch vụ có thể hỗ trợ nhiều phiên bản, và mỗi client có thể hiểu được nhiều phiên bản. Khi client gửi một câu request yêu cầu dịch vụ thì số phiên bản trong danh sách tham số của câu request này phải được dịch vụ đó hỗ trợ, nếu không client sẽ tiến hành thỏa thuận với dịch vụ để chọn ra phiên bản đặc tả phù hợp. Nếu không thỏa thuận được thì sẽ ngừng liên lạc. Quá trình thỏa thuận được thực hiện qua operation GetCapabilities và tuân theo qui tắc sau: Tất cả tài liệu Capabilities XML đều có trong đó một con số phiên bản. Khi client gửi một request GetCapabilities dịch vụ sẽ xem phiên bản này có phù hợp với phiên bản trong đặc tả hay không, nếu không sẽ tiến hành thỏa thuận để đạt được phiên bản phù hợp. Nếu trong request không có số phiên bản thì server sẽ đáp ứng lại với phiên bản cao nhất mà nó hiểu. Việc thỏa thuận phiên bản được tiến hành theo trình tự sau: 1)Nếu server hiểu được phiên bản trong câu request thì nó sẽ gửi phiên bản này. 2a)Nếu server không hiểu được phiên bản trong câu request thì nó sẽ gửi lại phiên bản cao nhất nhỏ hơn phiên bản này. 2b)Nếu phiên bản trong câu request nhỏ hơn bất cứ phiên bản nào mà server hỗ trợ thì server sẽ gửi lại phiên bản nhỏ nhất mà nó hỗ trợ. 3a)Nếu client vẫn không hiểu phiên bản mới mà server mới gửi lại, thì nó hoặc là ngừng liên lạc với server hoặc là gửi lại một request mới với phiên bản mà client hiểu song nhỏ hơn phiên bản mà server vừa gửi. (nếu phiên bản server gửi nhỏ hơn phiên bản client đã yêu cầu) 6
  18. Chương 2. Web Map Service (WMS) 3b)Nếu phiên bản server gửi lớn hơn phiên bản client đã yêu cầu và client vẫn không hiểu thì nó sẽ gửi lại một request mới với phiên bản lớn hơn phiên bản server đã gửi. Việc thỏa thuận cứ tiếp diễn cho đến khi cả hai đều hiểu được phiên bản thỏa thuận hoặc đến khi client quyết định ngừng liên lạc với server. Ví dụ 1: Server hiểu các phiên bản 1, 2, 4, 5 và 8. Client hiểu các phiên bản 1, 3, 4, 6 và 7. Client yêu cầu phiên bản 7. Server trả về phiên bản 5. Client gửi lại yêu cầu khác với phiên bản 4. Server trả về phiên bản 4, client đồng ý và kết thúc quá trình thương thảo thành công. Ví dụ 2: Server hiểu các phiên bản 4, 5 và 8. Client hiểu phiên bản 3. Client yêu cầu phiên bản 3. Server trả về phiên bản 4. Client không hiểu phiên bản này và bất cứ phiên bản cao hơn nào khác do đó quá trình thương thảo thất bại. Client ngừng liên lạc với server. 2.2.2. Những quy tắc chung trong HTTP request 2.2.2.1. HTTP GET Các ký tự quy ước trong câu HTTP GET URL Ký tự Ý nghĩa ? Phân cách phần đầu của câu truy vấn. & Phân cách các tham số trong câu truy vấn. = Phân cách tên và giá trị của tham số. / Phân cách kiểu MIME và kiểu con trong giá trị tham số định dạng. : Phân cách giữa Namespace và Identifier trong tham số SRS. , Phân cách giữa các giá trị riêng biệt trong danh sách tham số. Bảng 2.1.Các ký tự quy ước trong câu HTTP GET URL HTTP GET request thực chất là một tiền tố URL được gắn thêm vào các tham số để tạo nên một câu request hợp lệ đến operation. 7
  19. Chương 2. Web Map Service (WMS) Tiền tố URL bao gồm giao thức, tên host, số port, đường dẫn và dấu chấm hỏi “?”. Các tham số là các cặp tên/giá trị và phân cách nhau bởi dấu “&” Một HTTP GET URL sẽ có dạng như sau: [:port]/path?{name[=value]&} 2.2.2.2. HTTP POST Các request cho operation sử dụng HTTP POST chưa được định nghĩa trong WMS. 2.2.3. Những quy tắc chung trong HTTP response Khi nhận được một request hợp lệ, dịch vụ sẽ gửi về một response tương ứng đúng với những gì request yêu cầu ngọai trừ trường hợp xảy ra thỏa thuận phiên bản thì có thể cho kết quả khác. Khi nhận được một request không hợp lệ, dịch vụ sẽ gửi về một ngoại biệt dịch vụ (Service Exception). Các đối tượng trả về trong response phải theo kiểu MIME (Multipurpose Internet Mail Extensions). 2.2.4. Những quy tắc về tham số trong câu request ™ Tên tham số không phân biệt hoa thường. ™ Giá trị của tham số có phân biệt hoa thường. ™ Trật tự các tham số có thể tùy ý. ™ Các tham số có giá trị là một danh sách thì các giá trị được phân cách nhau bởi dấu phẩy “,”, không được dùng khoảng trắng để phân cách. ™ Các tham số có giá trị là một danh sách thì khi có một giá trị nào đó là trống thì để trống giá trị đó (“,,”) 8
  20. Chương 2. Web Map Service (WMS) 2.2.5. Các tham số thông dụng trong câu request 2.2.5.1. VERSION Tham số VERSION đặc tả số phiên bản. Định dạng và quá trình thỏa thuận phiên bản đã được đề cập ở trên. 2.2.5.2. REQUEST Tham số REQUEST chỉ ra operation nào trong dịch vụ cần được thực thi. Giá trị của nó là tên của một trong các operation mà OWS hỗ trợ. 2.2.5.3. FORMAT Tham số FORMAT chỉ ra định dạng trả về của response cho một operation. Một dịch vụ có thể chỉ hỗ trợ một tập con các định dạng được biết của các kiểu trong operation. Server sẽ quảng cáo các định dạng mà nó hỗ trợ trong tài liệu Capabilities XML và chấp nhận đáp ứng tất cả các request yêu cầu các định dạng mà nó hỗ trợ. Nếu như request có một định dạng không được cung cấp bởi server thì server sẽ gửi đi một biệt lệ dịch vụ (với mã “InvalidFormat”). Ngược lại, một client cũng có thể chỉ chấp nhận được một tập con các định dạng được biết của các kiểu trong operation. Nếu client và dịch vụ không cùng đưa ra được một định dạng chung (cùng hỗ trợ) thì hoặc là client ngừng liên lạc với dịch vụ đó, hoặc là tìm một nhà cung cấp dịch vụ trung gian có khả năng chuyển đổi các định dạng, hoặc là dùng phương pháp khác (chẳng hạn như lưu xuống bộ nhớ hoặc chuyển qua ứng dụng giúp đỡ). Các định dạng trong cả tài liệu Capabilities XML và trong request đến operation đều có kiểu MIME. Mỗi operation có một danh sách các định dạng hỗ trợ riêng biệt. 9
  21. Chương 2. Web Map Service (WMS) Kiểu MIME Nội dung tài liệu application/vnd.ogc.wms_xml WMS Capabilities XML application/vnd.ogc.gml Geography Markup Language XML application/vnd.ogc.se_xml Service Exception XML application/vnd.ogc.se_inimage Hình với các thông điệp biệt lệ application/vnd.ogc.se_blank Hình trắng do biệt lệ xảy ra Bảng 2.2.Danh sách các kiểu MIME 2.2.5.4. EXCEPTIONS Tham số EXCEPTIONS chỉ ra định dạng để thông báo lỗi. 2.2.5.5. Hệ quy chiếu không gian (Spatial Reference System (SRS)) SRS là một tham số text dùng để chỉ hệ trục tọa độ nằm ngang. Nó bao gồm một tiền tố namespace, một dấu hai chấm “:”, và một con số. Có hai loại namespace: EPSG và AUTO. Một dịch vụ có thể không hỗ trợ hết tất cả các SRS. Server sẽ quảng cáo các SRS mà nó hỗ trợ trong tài liệu Capabilities XML và chấp nhận đáp ứng tất cả các request yêu cầu các SRS mà nó hỗ trợ. Nếu như request có một SRS không được cung cấp bởi server thì server sẽ gửi đi một biệt lệ dịch vụ (với mã “InvalidSRS”). Ngược lại, một client cũng không cần hỗ trợ hết tất cả các SRS. Nếu client và dịch vụ không cùng đưa ra được một SRS chung (cùng hỗ trợ) thì hoặc là client ngừng liên lạc với dịch vụ đó, hoặc là tìm một nhà cung cấp dịch vụ trung gian có khả năng chuyển đổi hệ trục tọa độ, hoặc là dùng phương pháp khác. 2.2.5.5.1. Không gian tên EPSG Không gian tên EPSG được dựa trên các bảng dữ liệu của Nhóm Khảo sát Dầu hỏa Châu Âu (European Petroleum Survey Group). Nó định nghĩa những con số đặc trưng cho các phép chiếu, hệ trục tọa độ chuẩn, đơn vị đo, kinh tuyến gốc, 10
  22. Chương 2. Web Map Service (WMS) Ví dụ, khi tham số SRS chỉ ra Hệ qui chiếu Tọa độ Địa lý (Geographic Coordinate Reference System) thì sẽ là “EPSG:4326”. 2.2.5.5.2. Không gian tên AUTO Không gian tên AUTO được dùng cho các phép chiếu tự động, đó là tập các phép chiếu với tâm chiếu tùy ý. Một request chứa tham số SRS chỉ ra một phép chiếu tự động sẽ bao gồm tiền tố không gian tên AUTO, một con số định danh cho không gian tên AUTO, một con số định danh cho không gian tên EPSG mà chỉ ra đơn vị cho hình chữ nhật bao trong SRS này, và giá trị của kinh độ và vĩ độ trung tâm. Nó có dạng: AUTO:auto_proj_id,epsg_units_id,lon0,lat0 Ví dụ: một dịch vụ hỗ trợ phép chiếu trực giao tự động (Auto Orthographic projection) sẽ thêm vào element " AUTO:42003 " trong tài liệu Capabilities XML của nó. 2.2.5.5.3. SRS không xác định Server cũng có thể đưa ra thông tin địa lý mà hệ quy chiếu không gian của nó không được xác định một cách chính xác. Chẳng hạn như tập hợp các bản đồ lịch sử vẽ bằng tay được số hóa có thể biểu diễn một vùng trên trái đất nhưng không theo một hệ tọa độ hiện đại nào. Trong trường hợp này, giá trị “NONE” (viết hoa) sẽ được dùng khi muốn chỉ ra SRS của tập hợp các bản đồ này. 2.2.5.6. Hình chữ nhật bao Hình chữ nhật bao là một tập bốn con số nguyên được phân cách bởi dấu phẩy “,”. Nó biểu diễn các giá trị minX, minY, maxX, maxY theo đơn vị của SRS trong request. Trong đó, X biểu diễn cho các trục kinh tuyến, Y biểu diễn cho các trục vĩ tuyến. Mối quan hệ giữa hình chữ nhật bao và ma trận các điểm ảnh được biểu diễn trong hình dưới đây: hình chữ nhật bao sẽ bao chung quanh các điểm ảnh của ảnh chứ không đi qua tâm của các điểm ảnh ngòai rìa. Trong ngữ cảnh này, mỗi một điểm ảnh đều có diện tích. 11
  23. Chương 2. Web Map Service (WMS) Hình 2.1.Hình chữ nhật bao Một hình chữ nhật bao không thể có diện tích bằng 0. Nếu một request đưa ra một hình chữ nhật bao không hợp lệ (ví dụ minX ≥ maxX hay minY ≥ maxY) thì server sẽ đưa ra một biệt lệ. Nếu một request đưa ra một hình chữ nhật bao không hề giao nhau với hình chữ nhật bao được đưa ra trong tài liệu Capabilities XML cho đối tượng thông tin địa lý được yêu cầu, thì server sẽ trả về giá trị rỗng (ví dụ: một bản đồ trắng, ) cho element này. Bất kỳ element nào nằm một phần hoặc toàn bộ trong hình chữ nhật bao sẽ được trả về với định dạng tương ứng. 2.2.5.7. Chiều thời gian Một vài thông tin địa lý có thể có giá trị trong nhiều thời điểm khác nhau, ví dụ như bản đồ thời tiết theo giờ. Dịch vụ cần phải thông báo các giờ có thể trong tài liệu Capabilities XML , và một vài operation cần có thêm tham số để yêu cầu lấy thông tin về thời gian. Tùy theo ngữ cảnh, giá trị thời gian có thể là một giá trị đơn, danh sách các giá trị, khoảng thời gian, 12
  24. Chương 2. Web Map Service (WMS) 2.2.5.8. Chiều cao Một vài thông tin địa lý có thể có giá trị trong nhiều độ cao khác nhau, ví dụ như bản đồ mật độ tầng ozone tại các độ cao khác nhau trong khí quyển. Dịch vụ cần phải thông báo các độ cao có thể trong tài liệu Capabilities XML , và một vài operation cần có thêm tham số để yêu cầu lấy thông tin về độ cao. Một giá trị độ cao đơn là một số nguyên hoặc số thực mà đơn vị của nó được đưa ra trong dữ liệu của EPSG. Tùy theo ngữ cảnh, giá trị độ cao có thể là một giá trị đơn, danh sách các giá trị, khoảng cách, 2.2.5.9. Các chiều khác Một vài thông tin địa lý có thể có thêm nhiều chiều khác, chẳng hạn như ảnh vệ tinh ở các dải bước sóng khác nhau. Các chiều khác ngoài bốn chiều không gian được xem như là các “chiều mẫu”. Dịch vụ cần phải thông báo các chiều mẫu có thể trong tài liệu Capabilities XML , và một vài operation cần có thêm cơ chế để thêm các tham số chiều mẫu. Mỗi một chiều mẫu có môt tên và một hoặc nhiều giá trị hợp lệ. 2.2.6. Kết quả dịch vụ Giá trị trả về của môt request hợp lệ sẽ tương ứng với kiểu được yêu cầu trong tham số FORMAT. Trong môi trường HTTP, header kiểu nội dung của response sẽ chính xác là kiểu MIME được đưa ra trong request. 2.2.7. Biệt lệ dịch vụ Khi nhận được một request không hợp lệ, dịch vụ sẽ đưa ra một biệt lệ dịch vụ. Biệt lệ này sẽ giải thích cho ứng dụng client hoặc người sử dụng biết lý do tại sao request không hợp lệ. 13
  25. Chương 2. Web Map Service (WMS) 2.3. Các operation của Web Map Service 2.3.1. GetCapabilities 2.3.1.1. Chức năng Lấy dữ liệu ở tầng dịch vụ, đó là những mô tả cho máy và cả con người về nội dung thông tin của WMS và các tham số request chấp nhận được. Response của một GetCapabilities request là thông tin chung về bản thân dịch vụ và thông tin riêng biệt của các bản đồ có thể yêu cầu. 2.3.1.2. GetCapabilities request Khi tạo ra loại request này, cần phải chỉ ra rằng client đang có nhu cầu tìm kiếm thông tin về WMS. Do đó, tham số SERVICE trong câu request có giá trị là “WMS”. Bắt buộc/ Tham số request Mô tả Tùy chọn VERSION = version Tùy chọn Phiên bản yêu cầu SERVICE = WMS Bắt buộc Loại dịch vụ REQUEST = GetCapabilities Bắt buộc Tên request UPDATESEQUENCE = string Tùy chọn Dãy số/chuỗi đề điều khiển cache Bảng 2.3.Các tham số trong GetCapabilities request URL 2.3.1.2.1. VERSION Tham số VERSION là một tham số tùy chọn, được sử dụng trong quá trình thỏa thuận phiên bản. 2.3.1.2.2. SERVICE Tham số SERVICE là một tham số bắt buộc, dùng để chỉ kiểu dịch vụ nào cần được thực thi. Khi gọi thực thi GetCapabilities trên một WMS, giá trị của tham số này phải là “WMS”. 14
  26. Chương 2. Web Map Service (WMS) 2.3.1.2.3. REQUEST Tham số REQUEST là một tham số bắt buộc. Để thực thi operation GetCapabilities, giá trị “GetCapabilities” sẽ được sử dụng. 2.3.1.2.4. UPDATESEQUENCE Tham số UPDATESEQUENCE là một tham số tùy chọn nhằm giữ tính ổn định của cache. Giá trị của nó là một số nguyên, một timestamp có định dạng hoặc là một chuỗi. Server có thể có giá trị UpdateSequence trong tài liệu Capabilities XML . Giá trị này sẽ được tăng lên khi có theo đổi trong tài liệu Capabilities XML (ví dụ có bản đồ mới được thêm vào dịch vụ). Client có thể thêm tham số này vào trong request GetCapabilities của nó. Server sẽ trả về một response dựa trên mối quan hệ giữa giá trị UpdateSequence tương ứng trong câu request của client và thông tin trong metadaa của server, mối quan hệ này được biểu diễn thông qua bảng sau: Giá trị Giá trị UpdateSequence UpdateSequence trong trong thông tin metadata Response của server request của client của server Tài liệu Capabilities XML none any mới nhất Tài liệu Capabilities XML any none mới nhất Biệt lệ: equal equal code=CurrentUpdateSequence Tài liệu Capabilities XML lower higher mới nhất Biệt lệ: higher lower code=InvalidUpdateSequence Bảng 2.4.Mối quan hệ giữa giá trị UpdateSequence trong client và server 15
  27. Chương 2. Web Map Service (WMS) 2.3.1.3. GetCapabilities response Mục “Các element cơ sở “ đã chỉ ra các quy tắc chung cho response của GetCapabilities. Cấu trúc tài liệu XML của response sẽ tuân theo chuẩn được đưa ra trong tài liệu DTD. DTD này đặc tả các nội dung bắt buộc và tùy chọn của response và định dạng của các nội dung ấy. 2.3.1.3.1. Name và Title Có nhiều element mà định dạng của nó bao gồm một cặp và . Trong đó, Name có ý nghĩa trong giao tiếp giữa máy với máy, còn Title có ý nghĩa cho người sử dụng. Ví dụ , một dataset có thể có Title như sau “Nhiệt độ khí quyển cực đại” và được yêu cầu với Name là “ATMAX”. 2.3.1.3.2. Thông tin metadata của dịch vụ Phần đầu của tài liệu Capabilities XML là element cung cấp thông tin metadata chung của dịch vụ. Nó bao gồm trong đó các element khác như Name, Title, OnlineResourceURL, Abstract, KeywordList, ContactInformation, Fees và Access Constraints. Ý nghĩa của các element này như sau. Element Name của dịch vụ là “OGC:WMS”. Element Title của dịch vụ là tùy thuộc vào nhà cung cấp, nó là một mô tả ngắn gọn về dịch vụ. Element Abstract cho phép mô tả thêm thông tin về các đối tượng có trong dịch vụ. Element OnlineResourceURL dùng để chỉ ra website của nhà cung cấp dịch vụ. Có các element OnlineResourceURL khác nhau cho tiền tố URL với mỗi operation hỗ trợ. Element KeywordList là danh sách các từ hỗ trợ cho việc phân loại tìm kiếm. Element ContactInformation nên được thêm vào để cho biết thêm thông tin liên lạc cần thiết. 16
  28. Chương 2. Web Map Service (WMS) Giá trị “none” (viết thường) được dùng để chỉ ra rằng không có phí hay ràng buộc truy cập đối với dịch vụ này. Nó được viết như sau: none , none . 2.3.1.3.3. Layer và Style Phần quan trọng nhất trong tài liệu Capabilities XML là phần định nghĩa các lớp và kiểu. Mỗi một bản đồ được đưa ra bởi một element trong tài liệu Capabilities XML. Một lớp cho có thể bao gồm trong đó nhiều lớp con, các lớp này có tính kế thừa. Một số thuộc tính được định nghĩa ở lớp cha được kế thừa lại ở các lớp con của nó. Các thuộc tính kế thừa này có thể được định nghĩa lại hoặc không được định nghĩa lại ở lớp con. Một Map Server có ít nhất một element cho mỗi lớp bản đồ mà nó hỗ trợ. Do không có quy định nào nên hiện tại, việc đặt tên lớp, tên kiểu, tiêu đề và từ khóa là túy ý. 2.3.1.3.4. Các property của layer Element bao gồm các element con trong đó nhằm cung cấp thông tin metadata về lớp này. Giá trị của một số element sẽ được kế thừa lại theo quy tắc được định nghĩa ở mục 3.1.3.7. Dưới đây là ý nghĩa của các element này. 2.3.1.3.4.1. Title Element là bắt buộc đối với mọi lớp, nó là chuỗi có ý nghĩa cho người dùng và để hiển thị trong thực đơn. Title không được kế thừa lại bởi các lớp con. 2.3.1.3.4.2. Name Khi và chỉ khi một lớp có element thì lớp đó mới có thể được yêu cầu bằng cách sử dụng giá trị tên này trong tham số LAYERS của request GetMap. Nếu một lớp có Title nhưng không có Name, thì lớp này chỉ có ý nghĩa phân mục cho các lớp con của nó. Một Map Server có thông báo trong đặc tả của nó một lớp có element thì nó sẽ đồng ý trả về một bản đồ tương ứng khi client gửi một 17
  29. Chương 2. Web Map Service (WMS) request GetMap với đối số LAYERS có giá trị là giá trị của element này. Client sẽ không thể gửi request đến lớp chỉ có Title mà không có Name. Server sẽ gửi một biệt lệ có mã là “LayerNotDefined” nếu client gửi request đến một lớp không hợp lệ. Khi gửi request đến một lớp cha thông qua element của nó thì tất cả các lớp con sẽ cùng được truy xuất. Ví dụ khi gửi request đến lớp cha là lớp “Đường” thì các lớp con là lớp “Đường Phố” và “Đường Quốc Lộ” cũng cho phép gửi request đến từng lớp con hoặc gửi đến cả hai cùng lúc. Thành phần không được kế thừa lại bởi các lớp con. 2.3.1.3.4.3. Abstract và KeywordList Tuy và là hai element tùy chọn nhưng khuyến cáo là nên dùng. Abstract cho mô tả chi tiết về lớp bản đồ. Còn KeywordList có từ 0 đến nhiều từ khóa nhằm hỗ trợ cho việc phân loại tìm kiếm. Hai element Abstract và KeywordList không được kế thừa lại bởi các lớp con. 2.3.1.3.4.4. Style Có thể không có hoặc có nhiều kiểu được mô tả cho một hoặc tập các lớp bằng cách dùng các element . Mỗi một element chứa trong đó một cặp element và . Giá trị Name được sẽ được sử dụng khi client gửi request GetMap, nó nằm trong tham số STYLES. Title là một chuỗi có ý nghĩa cho người sử dụng. Nếu lớp hoặc tập lớp đó chỉ có một kiểu thì kiểu này được xem là kiểu mặc định và không cần được đặc tả tại server. Element có thể chứa trong đó thêm nhiều element khác như là dùng để mô tả chi tiết về kiểu, trong khi cho biết vị trí của ảnh ghi chú của bản đồ tương ứng với kiểu này. Element trong cho biết kiểu MIME của ảnh đó và các thuộc tính chiều rộng, chiều cao của ảnh theo đơn vị pixel. 18
  30. Chương 2. Web Map Service (WMS) Các được kế thừa lại bởi các lớp con. Lớp con không được định nghĩa lại kiểu mà nó kế thừa từ lớp cha, song nó có thể định nghĩa một kiểu mới với một tên mới mà không có trong lớp cha. 2.3.1.3.4.5. SRS Mỗi một lớp có thể được dùng trong một hoặc nhiều hệ quy chiếu không gian. Mỗi một lớp có ít nhất một element được định nghĩa mới hoặc kế thừa lại từ lớp cha. Lớp gốc sẽ chứa tất cả các element có thể được dùng trong các lớp con. Sử dụng một element với nội dung trống nếu như không có SRS nào cả. Khi một lớp có nhiều element thì có hai cách để biểu diễn danh sách các giá trị SRS, cách đầu tiên được dùng trong phiên bản 1.1.1 , cách thứ hai tuy không còn được sử dụng song các dịch vụ vẫn hiểu được do tính tương thích lùi. 1)Danh sách các giá trị SRS được đặt trong các element liên tiếp nhau, và mỗi element chỉ có một giá trị. Ví dụ: EPSG:1234 EPSG:5678 . 2)Danh sách các giá trị SRS được đặt trong cùng một element và được phân cách bởi khoảng trắng. Ví dụ: EPSG:1234 EPSG:5678 . 2.3.1.3.4.6. LatLonBoundingBox Mỗi lớp có duy nhất một element được tạo mới hoặc kế thừa lại từ lớp cha. Nó chỉ ra hình chữ nhật bao nhỏ nhất cho dữ liệu bản đồ trong hệ tọa độ địa lý EPSG:4326. LatLonBoundingBox được hộ trợ bất chấp Map Server hỗ trợ SRS nào đi chăng nữa, tuy nhiên nó chỉ có giá chị xấp sỉ nếu như EPSG:4326 không được hỗ trợ. Mục đích của nó nhằm giúp cho việc tìm kiếm thông tin địa lý được thực hiện một cách dễ dàng mà không cần các bộ máy tìm kiếm phải chuyển hệ tọa độ. Element LatLonBoundingBox và element BoundingBox (được định nghĩa ở mục sau) có một mối quan hệ với tham số BBOX trong câu request GetMap. Thông tin metadata về BoundinhBox trong tài liệu Capabilities XML đặc tả hình chữ nhật 19
  31. Chương 2. Web Map Service (WMS) bao xung quanh lớp bản đồ. Còn tham số BBOX lại đặc tả hình chữ nhật sẽ vẽ trên bản đồ. Hình chữ nhật BBOX có thể giao, chứa hoặc chứa trong hình chữ nhật BoundingBox. 2.3.1.3.4.7. BoundingBox Một lớp có thể không có hoặc có nhiều element được định nghĩa mới hoặc kế thừa từ lớp cha. Mỗi một BoundingBox định nghĩa một hình chữ nhật bao xung quanh dữ liệu bản đồ trong một hệ quy chiếu không gian nhất định, trong đó thuộc tính SRS sẽ chỉ ra hệ quy chiếu không gian nào được áp dụng. Nếu diện tích của vùng dữ liệu bản đồ có hình dạng bất thường thì BoundingBox sẽ chỉ ra hình chữ nhật bao có diện tích nhỏ nhất. Các thuộc tính minx, miny, maxx, maxy chỉ ra tọa độ của các cạnh của hình chữ nhật bao trong hệ quy chiếu. Các thuộc tính tùy chọn resx, resy chỉ ra độ độ phân giải không gian của dữ liệu với đơn vị của hệ quy chiếu trên. Như vậy, là một Bounding Box đặc biệt với thuộc tính SRS=”EPSG:4326”, tuy nhiên LatLonBoundingBox không có thuộc tính resx, resy. Khi đó, nếu có thêm BoundingBox cho EPSG:4326 thì nó nhằm mục đích cung cấp thêm thông tin về độ phân giải. Mỗi một lớp có thể có nhiều element song mỗi element này chỉ cho một SRS riêng biệt mà thôi. Một lớp sẽ kế thừa tất cả các giá trị BoundingBox được định nghĩa ở lớp cha. Song, giá trị BoundingBox này sẽ được thay thế nếu lớp con định nghĩa lại một BoundingBox mới trên cùng một SRS của BoundingBox định nghĩa ở lớp cha. Khi lớp con định nghĩa một BoundingBox cho một SRS mới chưa được định nghĩa ở lớp cha thì BoundingBox này sẽ được thêm vào danh sách các BoundingBox ở lớp con. Một lớp không được định nghĩa nhiều hơn một BoundingBox cho cùng một SRS. Trong một lớp, với cùng một SRS, ta không thể định nghĩa các hình chữ nhật bao rời nhau. Ví dụ, giả sử như có một dataset mô tả hai vùng diện tích cách xa nhau, khi đó, server không thể tách ra thành hai hình chữ nhật bao để diễn tả hai vùng diện tích này trong cùng một SRS và trên cùng một lớp bản đồ. Để giải quyết 20
  32. Chương 2. Web Map Service (WMS) trường hợp này, server sẽ định nghĩa một hình chữ nhật bao duy nhất bao trùm lên cả hai vùng diện tích này, hoặc là định nghĩa hai hình chữ nhật bao trên hai lớp bản đồ khác nhau (có tên lớp và giá trị BoundingBox khác nhau). Nếu server có khả năng chuyển đổi dữ liệu trên các SRS khác nhau thì nó sẽ không chọn giải pháp cung cấp các BoundingBox riêng biệt cho từng SRS được hỗ trợ trên mỗi lớp. Server sẽ chỉ cung cấp thông tin BoundingBox cho ít nhất một SRS cơ bản của mỗi lớp mà thôi. 2.3.1.3.4.8. ScaleHint Mỗi lớp có thể có một element để cung cấp thông tin về tỉ lệ tối thiểu và tỉ lệ tối đa để hiển thị lớp bản đồ này. ScaleHint được kế thừa lại ở các lớp con. Nếu lớp con định nghĩa một ScaleHint mới thì giá trị này sẽ thay thế cho giá trị được kế thừa từ lớp cha. 2.3.1.3.4.9. Dimension và Extent Hai element tùy chọn và chứa thông tin metadata cho dữ liệu đa chiều. Dimension được kế thừa lại ở các lớp con. Nó có thể định nghĩa thêm nhiều mới song không được định nghĩa lại kế thừa từ lớp cha. Extent được kế thừa lại ở các lớp con. Khi lớp con định nghĩa một với thuộc tính Name có cùng giá trị vói thuộc tính Name của mà nó kế thừa lại từ lớp cha, thì giá trị mới sẽ được thay thế cho giá trị cũ. 2.3.1.3.4.10. MetadataURL Một Map Server có thể sử dụng một hoặc nhiều element để cung cấp các thông tin metadata chuẩn và chi tiết bên dưới lớp đó. MetadataURL không được kế thừa lại ở các lớp con. 2.3.1.3.4.11. Attribution Element tùy chọn cung cấp cách để định danh nguồn của dữ liệu bản đồ của một lớp hoặc một tập các lớp. Element chứa trong nó các 21
  33. Chương 2. Web Map Service (WMS) element tùy chọn khác như: cho biết URL của nhà cung cấp dịch vụ, cho biết tên của nhà cung cấp dịch vụ, chuỗi này chỉ có ý nghĩa với người dùng, cho biết URL của ảnh logo. Element trong element cho biết kiểu MIME của ảnh logo, thuộc tính width và heigth cho biết kích thước của ảnh tính theo đơn vị pixel. Attribute có thể được kế thừa ở các lớp con. Bất cứ định nghĩa lại nào ở lớp con sẽ thay thế giá trị cũ được kế thừa. 2.3.1.3.4.12. Identifier và AuthorityURL Một Map Server có thể không có hoặc có nhiều element để liệt kê các số định danh hoặc các nhãn trong element . Thuộc tính authority trong element tương ứng với giá trị của thuộc tính name trong element . Trong có element chỉ ra URL của tài liệu định nghĩa ý nghĩa của các giá trị Identifier. Ví dụ: id_value AuthorityURL đuợc kế thừa bởi các lớp con. Lớp con không được định nghĩa lại các AuthorityURL được kế thừa này. Identifier không được kế thừa lại ở các lớp con. Một lớp không được định nghĩa element nếu chưa định nghĩa hay kế thừa element nào. 2.3.1.3.4.13. FeatureListURL Một Map Server có thể dùng element để chỉ ra danh sách các feature được biểu diễn trong lớp. FeatureListURL không được kế thừa lại ở các lớp con. 22
  34. Chương 2. Web Map Service (WMS) 2.3.1.3.4.14. DataURL Một Map Server có thể dùng element để chỉ ra URL nhằm cung cấp thêm thông tin về dữ liệu biểu diễn trong lớp. DataURL không được kế thừa lại ở các lớp con. 2.3.1.3.5. Các attribute của layer Một có thể không có hoặc có nhiều attribute như: queryable, cascaded, opaque, noSubsets, fixedWidth, fixedHeight. Tất cả các attribute này là tùy chọn và mặc định đều có giá trị là 0. Mỗi attribute này có thể được kế thừa hoặc định nghĩa lại ở các lớp con. Bảng sau mô tả ý nghĩa của các attribute này. Attribute Miền giá trị Ý nghĩa (default=0) queryable 0, 1 0: không truy vấn được. 1: truy vấn được. cascaded 0, nguyên 0: lớp không được yêu cầu bởi Cascading Map Server dương n: lớp được yêu cầu n lần bởi các Cascading Map Server. opaque 0, 1 0: dữ liệu bản đồ biểu diễn các feature dạng vector mà không có miền tô. 1: dữ liệu bản đồ là các miền tô đặc. noSubsets 0, 1 0: WMS có thể vẽ tập con nằm trong bounding box. 1: WMS chỉ có thể vẽ toàn bộ bounding box. fixedWidth 0, nguyên 0: WMS có thể chỉnh lại chiều rộng bản đồ. dương n: bản đồ được cố định chiều rộng và WMS không thể thay đổi. fixedHeight 0, nguyên 0: WMS có thể chỉnh lại chiều cao bản đồ. dương n: bản đồ được cố định chiều cao và WMS không thể thay đổi. Bảng 2.5.Thuộc tính lớp 23
  35. Chương 2. Web Map Service (WMS) 2.3.1.3.5.1. Lớp có thể truy vấn Lớp được gọi là có thể truy vấn nếu như server hỗ trợ operation GetFeatureInfo trên lớp này. Một server có thể hỗ trợ GetFeatureInfo trên một vài lớp của nó chứ không hỗ trợ tất cả. Server sẽ gửi ra biệt lệ có mã là “LayerNotQueryable” nếu như operation GetFeatureInfo được yêu cầu trên lớp không truy vấn được. 2.3.1.3.5.2. Lớp tầng Lớp được gọi là “cascaded” nếu nó được gọi sử dụng bởi một server và được hỗ trợ trong tài liệu Capabilities XML của một server khác. Nếu một WMS hỗ trợ môt lớp do một WMS khác cung cấp thì nó sẽ tăng giá trị của thuộc tính cascaded của lớp đó lên 1. 2.3.1.3.5.3. Lớp đục và lớp trong suốt Nếu attribute tùy chọn opaqued của một lớp không có hoặc có giá trị “0” thì các bản đồ từ lớp này sẽ không có dữ liệu bề mặt, client sẽ hiển thị nó trong suốt. Chỉ hiển thị các feature dạng vector như điểm, đường, đa giác (tuy nhiên nếu hiển thị các feature này liên tục nhau thì xem như nó có miền tô). Nếu có giá trị là “1”, thì lớp này sẽ biểu diễn cả các bề mặt. Attribute opaqued thường được đặt cho lớp ở đáy ngăn xếp các lớp khi hiển thị bản đồ. Attribute này chỉ mô tả nội dung dữ liệu của lớp chứ không mô tả định dạng của ảnh bản đồ 2.3.1.3.5.4. Lớp có tập con và lớp có thể chỉnh kích thước Nếu thông tin metadata của lớp có thêm ba attribute tùy chọn là noSubset, fixedWidth, fixedHeight (tức là giá trị của các attribute này là “1”) thì Map Server này ít chức năng hơn một WMS thông thường do nó không thể xuất ra một ảnh của tập con của dữ liệu địa lý gốc hoặc nó chỉ phục vụ các bản đồ có kích thước cố định và không thể chỉnh lại kích thước. Ví dụ, một WMS chỉ hỗ trợ các ảnh số hóa từ bản đồ lịch sử, hoặc các hình ảnh chụp từ vệ tinh, chúng không thể lấy ra tập con hoặc chỉnh lại kích thước. Tuy nhiên, vẫn thực thi được request GetMap với dữ liệu trả về là toàn bộ bản đồ với kích thước nguyên thủy. 24
  36. Chương 2. Web Map Service (WMS) Khi attribute noSubsets=1 thì server không thể cắt dữ liệu hoặc bản đồ thành một vùng dữ liệu địa lý có diện tích nhỏ hơn hình chữ nhật bao. Khi có giá trị khác “0”, thì hai attribute fixedWidth và fixedHeight chỉ ra rằng server không thể chỉnh lại kích thước bản đồ. 2.3.1.3.6. Sự kế thừa các thuộc tính của lớp Bảng sau đây cho biết cách mà các lớp con kế thừa các thuộc tính từ lớp cha như thế nào. Có thuộc tính không được kế thừa, có thuộc tính được kế thừa, có thuộc tính được cài đặt lại. Trong bảng dưới đây, cột “Số lượng” cho biết số lượng element có thể xuất hiện trong lớp. Trong đó, “1” có nghĩa là chỉ xuất hiện duy nhất một lần trong mỗi lớp, “0/1” có nghĩa là không xuất hiện hoặc xuất hiện một lần, “0+”có nghĩa là không xuất hiện hoặc xuất hiện nhiều lần, “1+” có nghĩa là xuất hiện ít nhất một lần. Cột “Kế thừa” cho biết element có được kế thừa ở lớp con hay không và được kế thừa như thế nào. Trong đó, “không” có nghĩa là không được kế thừa, “thêm” có nghĩa là được kế thừa và các lớp con có thể thêm nhiều element, “thay thế” có nghĩa là được kế thừa và lớp con có thể định nghĩa lại element này. 25
  37. Chương 2. Web Map Service (WMS) Element Số lượng Kế thừa Layer 0+ Không Name 1 Không Title 1 Không Abstract 0/1 Không KeywordList 0/1 Không Style 0+ Thêm SRS 1+ Thêm LatLonBoundingBox 1 Thay thế BoundingBox 0+ Thay thế Dimension 0+ Thêm Extent 0+ Thay thế Attribution 0/1 Thay thế AuthorityURL 0+ Thêm Identifier 0+ Không MetadataURL 0+ Không DataURL 0/1 Không FeatureListURL 0/1 Không ScaleHint 0/1 Thay thế Bảng 2.6.Qui định kế thừa các thuộc tính lớp 2.3.2. GetMap 2.3.2.1. Chức năng Lấy ảnh bản đồ mà các tham số địa lý và chiều đã được định nghĩa hợp lệ. Khi nhận được một request GetMap, Map Server hoặc là sẽ đáp ứng request này, hoặc là sẽ tung ra một biệt lệ dịch vụ. 26
  38. Chương 2. Web Map Service (WMS) 2.3.2.2. GetMap request Bắt buộc/ Tham số request Mô tả Tùy chọn VERSION=version Bắt buộc Phiên bản request . REQUEST=GetMap Bắt buộc Tên request . LAYERS=layer_list Bắt buộc Danh sách các lớp bản đồ được phân cách bởi dấu phẩy. STYLES=style_list Bắt buộc Danh sách kiểu của mỗi lớp trong request . SRS=namespace:identifier Bắt buộc Hệ quy chiếu không gian. BBOX=minx,miny,maxx,maxy Bắt buộc Góc dưới trái và trên phải của hình chữ nhật bao theo đơn vị của SRS. WIDTH=output_width Bắt buộc Chiều rộng của ảnh (pixel). HEIGHT=output_height Bắt buộc Chiều cao của ảnh (pixel). FORMAT=output_format Bắt buộc Định dạng trả về của bản đồ. TRANSPARENT=TRUE|FALSE Tùy chọn Sự trong suốt của nền bản đồ (default=FALSE). BGCOLOR=color_value Tùy chọn Màu nền (default=0xFFFFFF). EXCEPTIONS=exception_format Tùy chọn Định dạng của biệt lệ trả về của WMS (default=SE_XML). TIME=time Tùy chọn Giá trị thời gian của lớp. ELEVATION=elevation Tùy chọn Giá trị độ cao của lớp. Các chiều mẫu khác Tùy chọn Giá trị của các chiều. Bảng 2.7.Các tham số trong GetMap request 27
  39. Chương 2. Web Map Service (WMS) 2.3.2.2.1. VERSION Tham số VERSION là một tham số tùy chọn, được sử dụng trong quá trình thỏa thuận phiên bản. 2.3.2.2.2. REQUEST Tham số REQUEST là một tham số bắt buộc. Để thực thi operation GetMap, giá trị “GetMap” được sử dụng. 2.3.2.2.3. LAYERS Tham số bắt buộc LAYERS liệt kê các lớp cần trả về cho request này. Các giá trị của tham số LAYERS được phân cách bởi dấu phẩy “,”. WMS sẽ vẽ các lớp này tuần tự từ trái sang phải, nghĩa là, lớp ngoài cùng bên trái sẽ được vẽ đầu tiên, do đó lớp này sẽ nằm ở dưới cùng. 2.3.2.2.4. STYLES Tham số bắt buộc STYLES liệt kê kiểu mà lớp đó sẽ vẽ. Các giá trị của tham số STYLES được phân cách bởi dấu phẩy “,”. Có quan hệ tương ứng một-một giữa một giá trị trong tham số LAYERS và một giá trị trong tham số STYLES. Mỗi bản đồ trong sanh sách các lớp của tham số LAYERS sẽ được vẽ theo kiểu tương ứng (cùng vị trí) của nó trong danh sách các kiểu của tham số STYLES. Nói một cách khác, sẽ không có chuyện client yêu cầu vẽ một lớp theo kiểu của một lớp khác. Server sẽ đưa ra biệt lệ có mã “StyleNotDefined” nếu một kiểu không hợp lệ được yêu cầu. Client có thể yêu cầu kiểu mặc định bằng cách để giá trị null (“STYLES=”). Nếu yêu cầu vẽ các lớp trong đó lớp thì được yêu cầu vẽ theo kiểu mặc định, lớp thì yêu cầu vẽ theo kiểu riêng thì tham số STYLES sẽ có giá trị null giữa hai dấu phẩy “,” (“STYLES=style1,,style2,,”). Nếu tất cả các lớp đều được yêu cầu vẽ theo kiểu mặc định thì có tể sử dụng dạng “STYLES=” hoặc dạng “STYLES=,,,,,” đều hợp lệ. 28
  40. Chương 2. Web Map Service (WMS) 2.3.2.2.5. SRS Tham số bắt buộc SRS chỉ ra hệ quy chiếu không gian áp dụng cho các giá trị của tham số BBOX. SRS đã được trình bày chi tiết ở mục “Các element cơ sở”. Giá trị của tham số SRS có thể là một trong các giá trị được định nghĩa ở element trong lớp được yêu cầu. Cùng một SRS sẽ được áp dụng cho tất cả các lớp được yêu cầu trong GetMap. Nếu server có định nghĩa SRS=NONE cho môt lớp nào đó thì lớp này sẽ không có một hệ quy chiếu không gian nên sẽ không được vẽ ra cùng với các lớp khác. Client nên chỉ ra rằng SRS=NONE trong request của GetMap nếu không, server sẽ đưa ra biệt lệ dịch vụ. 2.3.2.2.6. BBOX Tham số bắt buộc BBOX cho phép client yêu cầu một hình chữ nhật bao. Hình chữ nhật bao đã được trình bày chi tiết ở mục “Các element cơ sở”. Giá trị của tham số BBOX là request một dãy các số được phân cách bằng dấu phẩy “,” có dạng sau “minx, miny, maxx, maxy”. Nếu server tuyên bố rằng có một lớp nào đó không thể lấy ra tập con, thì client nên chỉ ra giá trị của tham số BBOX trong request của GetMap đúng bằng giá trị của BoungdingBox trong tài liệu Capabilities XML, nếu không server sẽ đưa ra biệt lệ. 2.3.2.2.7. FORMAT Tham số bắt buộc FORMAT chỉ ra định dạng cần trả về cho một operation. Các giá trị định dạng hợp lệ cho một request GetMap của WMS được liệt kê trong element trong tài liệu Capabilities XML. Toàn bộ chuỗi kiểu MIME trong element được dùng làm giá trị cho tham số FORMAT. Với mỗi WMS, nó sẽ hỗ trợ các định dạng “ảnh” hoặc các định dạng “thành phần đồ họa”. Định dạng ảnh bao gồm các định dạng ảnh thông dụng như GIF (kiểu MIME là “image/gif”), PNG (kiểu MIME là “image/png”), JPEG (kiểu MIME là “image/jpeg”) hầu hết đều có thể hiển thị trên trình duyệt web, tuy nhiên có một số 29
  41. Chương 2. Web Map Service (WMS) lại cần các trình ứng dụng khác để hiển thị. Định dạng thanh phần đồ họa bao gồm các định dạng như SVG, WebCGM. 2.3.2.2.8. WIDTH, HEIGHT Hai tham số bắt buộc WIDTH và HEIGHT chỉ ra kích thước tính theo số nguyên các điểm ảnh của ảnh bản đồ sẽ trả về cho client. Có một ràng buộc là hai tham số WIDTH và HEIGHT phải phù hợp với tham số BBOX, cụ thể là WIDTH ≤ maxx - minx, và HEIGHT ≤ maxy – miny. Ảnh trả về, bất chấp định dạng là gì, nhưng sẽ có đúng kích thước chiều rộng và chiều cao là WIDTH và HEIGHT tính theo pixel. Trong trường hợp tỉ số của BBOX và tỉ số WIDTH / HEIGHT khác nhau thì WMS sẽ căng ảnh trả về ra sao cho đúng tỉ lệ của BBOX. Nếu request yêu cầu trả về định dạng thành phần đồ họa (ví dụ: SVG hoặc WebCGM) thì sẽ không có chiều rộng và chiều cao. Khi đó hai tham số này sẽ không được sử dụng. Nếu server tuyên bố rằng lớp được yêu cầu không thay đổi được kích thước thì client phải truyền vào chính xác giá trị của ảnh cho hai tham số WIDTH và HEIGHT trong request, nếu không server sẽ đưa ra biệt lệ dịch vụ. 2.3.2.2.9. TRANSPARENT Tham số tùy chọn TRANSPARENT chỉ ra nền của bản đồ có được làm trong suốt hay không. Tham số TRANSPARENT có hai giá trị là TRUE hoặc FALSE. Giá trị mặc định là FALSE nếu tham số không được đưa ra trong request. Khả năng vẽ ảnh với những pixel trong suốt cho phép hiển thỉ kết quả với các request GetMap khác nhau, các kết quả này sẽ chồng lên nhau tạo nên một bản đồ tổng hợp. Cũng như vậy, khi request gồm nhiều lớp thì các lớp nằm phía trên cần phải để tham số TRANSPARENT. Định dạng ảnh GIF có khả năng hiển thị trong suốt trên trình duyệt web. Định dạng ảnh PNG cho nhiều lựa chọn trong việc hiển thị ảnh trong suốt nhưng lại hiển thị với chất lượng rất kém. Định dang ảnh JPEG không hỗ trợ ảnh trong suốt. 30
  42. Chương 2. Web Map Service (WMS) Khi tham số TRANSPARENT = TRUE và tham số FORMAT chứa định dạng ảnh (vidụ: image/gif) WMS sẽ trả về kết quả mà trong đó tất cả các điểm ảnh không biểu diễn cho các feature hoặc dữ liệu của lớp sẽ được làm trong suốt. Ví dụ, lớp “Đường” sẽ hiển thị trong suốt ở những chỗ không có đường. Khi tham số TRANSPARENT = FALSE thì những điểm ảnh đó sẽ có giá trị là giá trị của tham số BGCOLOR. Khi một lớp được tuyên bố là “đục” thì mọi phần hoặc thực thể trên bản đồ không thể hiển thị trong suốt được. Khi tham số FORMAT chứa định dạng thành phần đồ họa thì tham số TRANSPARENT có thể đưa vào trong request GetMap nhưng sẽ khong được xét đến ở WMS. 2.3.2.2.10. BGCOLOR Tham số tùy chọn BGCOLOR chỉ ra màu được dùng làm màu nền của bản đồ. Định dạng cho giá trị màu này là theo chuẩn màu RGB là một dãy sáu số hexa, cứ mỗi cặp hai số lần lượt biểu diễn cho giá trị màu Đỏ, Xanh lá, Xanh dương. Dạng của nó như sau OxRRGGBB. Giá trị mặc định là OxFFFFFF nếu tham số này không có trong request . Khi tham số FORMAT là một định dạng ảnh thì WMS sẽ vẽ bản đồ trên màu nền là màu BGCOLOR. Còn nếu tham số FORMAT là một định dạng Thành phần Đồ họa thì WMS sẽ không vẽ màu nền ra. Khi một lớp được tuyên bố là “đục” thì mọi phần, mọi thực thể trên bản đồ sẽ che lấp đi màu nền. 2.3.2.2.11. EXCEPTIONS Tham số tùy chọn EXCEPTIONS chỉ ra cách mà lỗi được báo về cho client. Giá trị mặc định là “application/vnd.ogc.se_xml” nếu không có tham số này trong request. Một WMS hỗ trợ một hoặc nhiều định dạng biệt lệ bằng cách lần lượt liệt kê các định dạng này trong các element bên trong element của tài liệu Capabilities XML của nó. Toàn bộ chuỗi kiểu MIME trong element 31
  43. Chương 2. Web Map Service (WMS) được sử dụng làm giá trị cho tham số EXCEPTIONS. Định dạng đầu tiên trong số các định dạng biệt lệ là bắt buộc đối với mọi WMS, những cái còn lại là tùy chọn. 1) application/vnd.ogc.se_xml (bắt buộc) 2) application/vnd.ogc.se_inimage (tùy chọn) 3) application/vnd.ogc.se_blank (tùy chọn) 2.3.2.3. GetMap response Kết quả trả về của một request hợp lệ sẽ là một bản đồ tương ứng với các lớp thông tin địa lý được yêu cầu, theo kiểu xác định, kèm theo các thông tin về hệ quy chiếu không gian, hình chữ nhật bao, kích thước, định dạng và độ trong suốt. Khi một request không hợp lệ được gởi đến, server sẽ trả về một biệt lệ dịch vụ. 2.3.3. GetFeatureInfo 2.3.3.1. Chức năng Đây là một operation tùy chọn. Nó chỉ hỗ trợ cho các lớp mà attribute queryable=”1”. WMS sẽ gửi về biệt lệ dịch vụ nếu client gửi request GetFeatureInfo đến lớp không hợp lệ. GetFeatureInfo yêu cầu các thông tin của các feature trên bản đồ được trả về ở request GetMap. Chẳng hạn như sau khi nhận được bản đồ, người dùng chọn vào một điểm trên bản đồ để muốn biết thêm thông tin chi tiếp ở điểm đó. Operation này chỉ ra cho client điểm ảnh nào cần truy vấn, và truy vấn trên các lớp bản đồ nào, và định dạng của thông tin trả về là gì. Do giao thức WMS là giao thức không trạng thái nên request GetFeatureInfo chỉ ra cho WMS thấy bản đồ nào mà người dùng đang xem bằng cách thêm vào hầu hết các tham số trong request của GetMap (ngoại trừ hai tham số VERSION và REQUEST). Trong tập các thông tin đó (BBOX, SRS, WIDTH, HEIGTH), cùng với vị trí X, Y mà người dùng chọn, WMS sẽ trả về các thông tin của điểm mà người dùng chọn. 32
  44. Chương 2. Web Map Service (WMS) GetFeatureInfo chỉ được thực hiện trên định dạng ảnh chứ không thực hiện được trên định dạng thành phần đồ họa. Thông tin trả về từ GetFeatureInfo là tùy thuộc vào nhà cung cấp dịch vụ. 2.3.3.2. GetFeatureInfo request Các tham số của request GetFeatureInfo được liệt kê trong bảng sau. Bắt buộc/ Tham số request Mô tả Tùy chọn VERSION=version Bắt buộc Phiên bản request. REQUEST=GetFeatureInfo Bắt buộc Tên request. Phần copy lại các tham số của request Bắt buộc GetMap. Danh sách các lớp cần truy vấn, được QUERY_LAYERS=layer_list Bắt buộc phân cách bởi dấu phẩy. Định dạng thông tin của feature (kiểu INFO_FORMAT=output_format Tùy chọn MIME). Số lượng feature cần lấy thông tin FEATURE_COUNT=number Tùy chọn (default = 1). X=pixel_column Bắt buộc Hoành độ của điểm cần lấy thông tin. Y=pixel_row Bắt buộc Tung độ của điểm cần lấy thông tin. Định dạng của biệt lệ EXCEPTIONS=exception_format Tùy chọn (default=application/vnd.ogc.se_xml) Vendor-specific parameters Tùy chọn Bảng 2.8.Các tham số của request GetFeatureInfo 2.3.3.2.1. Tiền tố Vai trò của tiền tố URL đã được đề cập trong mục “Các element cơ sở”. Tiền tố cho GetCapabilities, GetMap and GetFeatureInfo là khác nhau. 33
  45. Chương 2. Web Map Service (WMS) 2.3.3.2.2. VERSION Ý nghĩa của tham số bắt buộc VERSION đã được đề cập trong mục “Các element cơ sở”. 2.3.3.2.3. REQUEST Ý nghĩa của tham số bắt buộc REQUEST đã được đề cập trong mục “Các element cơ sở”. Đối với GetFeatureInfo, giá trị của tham số REQUEST là “GetFeatureInfo”. 2.3.3.2.4. không phải là môt cặp tên/ giá trị như các tham số khác. Hầu hết các tham số trong request GetMap nay lại bị lặp lại trong GetFeatureInfo. Ngoại trừ hai tham số VERSION và REQUEST thì GetFeatureInfo có giá trị của riêng nó. Những tham số còn lại trong request GetMap sẽ được tiếp tục nhúng vào trong request của GetFeatureInfo. 2.3.3.2.5. QUERY_LAYERS Tham số bắt buộc QUERY_LAYERS chỉ ra các lớp bản đồ chứa các feature cần lấy thông tin. Danh sách các lớp được phân cách bởi dấu phẩy “,”. Tham số này chứa ít nhất tên của một lớp và ít hơn số lớp được yêu cầu trong request GetMap. Nếu bất cứ lớp nào trong danh sách không có trong tài liệu Capabilities XML của WMS thì server sẽ đưa ra biệt lệ dịch vụ. 2.3.3.2.6. INFO_FORMAT Tham số tùy chọn INFO_FORMAT chỉ ra định dạng trả về cho thông tin của feature. Các giá trị định dạng được dùng được liệt kê lần lượt trong elment bên trong element của tài liệu Capabilities XML của WMS. Toàn bộ chuỗi kiểu MIME trong element được dùng làm giá trị của tham số INFO_FORMAT. Ví dụ: INFO_FORMAT=application/vnd.ogc.gml yêu cầu thông tin feature gửi theo định dạng GML. 34
  46. Chương 2. Web Map Service (WMS) 2.3.3.2.7. FEATURE_COUNT Tham số tùy chọn FEATURE_COUNT chỉ ra số feature tối đa được phép lấy thông tin. Đây là một số nguyên lớn hơn 0. Giá trị mặc định là 1 nếu tham số này không có trong request. 2.3.3.2.8. X,Y Tham số bắt buộc X, Y chỉ ra một điểm cần lấy thông tin trên bản đồ. X và Y phải nằm trong phạm vi bao quanh bởi tham số WIDTH và HEIGHT của request GetMap. Tọa độ gốc (0,0) là tâm của điểm ảnh tại góc trên trái, X tăng qua bên phải, Y tăng xuống dưới. 2.3.3.2.9. EXCEPTIONS Tham số tùy chọn EXCEPTIONS chỉ ra cách mà lỗi được báo về cho client. Giá trị mặc định là application/vnd.ogc.se_xml nếu như không có tham số này trong request. Theo đặc tả này (version 1.1.1) thì không còn định dạng nào khác cho biệt lệ của request GetFeatureInfo. 2.3.3.3. GetFeatureInfo response WMS sẽ trả về một response theo tham số INFO_FORMAT trong request nếu request này là hợp lệ, nếu không server sẽ đưa ra một biệt lệ dịch vụ. Response trả về cho client là tùy thuộc vào nhà cung cấp WMS, nhưng nó phải gắn liền với những feature gần điểm (X,Y). 35
  47. Chương 3. Web Feature Service (WFS) Chương 3. Web Feature Service (WFS) 3.1. Giới thiệu WFS cung cấp các giao tác thông thường đến cơ sở dữ liệu GIS như là thêm, xóa, sửa, truy vấn, khám phá các đối tượng thông tin địa lý. Nó sử dụng giao thức HTTP như là một nền tính toán phân phối. Đối tượng địa lý là một tập các thuộc tính, mà mỗi thuộc tính là một bộ ba giá trị sau {tên, kiểu, giá trị}. Tên và kiểu của thuộc tính đối tượng được quy định bởi kiểu đối tượng đó. Các đối tượng địa lý phải có ít nhất một thuộc tính có giá trị mô tả thông tin địa lý. Nó có thể có các thuộc tính không nhằm mô tả thông tin địa lý. Tiến trình yêu cầu dịch vụ WFS được tiến hành lần lượt theo trình tự sau: 1)Ứng dụng client gửi yêu cầu tài liệu mô tả khả năng của dịch vụ WFS. Đó là tài liệu mô tả các giao tác mà WFS này hỗ trợ và liệt kê các kiểu feature mà nó hỗ trợ. 2)Ứng dụng client có thể gửi yêu cầu lấy thông tin mô tả chi tiết của một hay nhiều kiểu feature đến WFS. 3)Dựa trên thông tin mô tả chi tiết của các kiểu feature này, ứng dụng client sẽ tạo ra một câu yêu cầu. 4)Yêu cầu này được gửi đến server. 5)WFS thực thi yêu cầu đó. 6)Sau khi đáp ứng xong yêu cầu,WFS sẽ gửi trả về trạng thái kết quả của việc đáp ứng (thành công một giao tác, hay thất bại). Để hỗ trợ cho các giao tác thêm, xóa, sửa và truy vấn trên dữ liệu, WFS hỗ trợ các giao tác sau: GetCapabilities: WFS bắt buộc phải mô tả khả năng của nó qua giao tác này. Nó chỉ ra các kiểu feature mà nó hỗ trợ và các giao tác được hỗ trợ trên mỗi kiểu feature. 36
  48. Chương 3. Web Feature Service (WFS) DescribeFeatureType: Khi có yêu cầu, WFS phải có khả năng mô tả cấu trúc của bất kỳ kiểu feature nào mà nó hỗ trợ. GetFeature: WFS phải có khả năng đáp ứng các yêu cầu lấy các thể hiện của feature. Hơn nữa client có thể chỉ rõ ra các thuộc tính nào của feature mà nó muốn lấy kèm theo các tạo ràng buộc trên chúng. Transactinon: WFS có khả năng hỗ trợ các yêu cầu thêm, xóa, sửa các feature. LockFeature: WFS có khả năng đáp ứng các yêu cầu khóa các thể hiện thuộc tính trong khoảng thời gian thực hiện giao tác. Tùy theo khả năng hỗ trợ các giao tác ở trên mà người ta phân ra làm hai loại dịch vụ WFS. Một là “WFS cơ bản” (hay còn gọi là dịch vụ WFS chỉ đọc) chỉ hỗ trợ các giao tác GetCapabilities, DescribeFeatureType và GetFeature. Hai là “WFS giao tác” thì hỗ trợ thêm giao tác Transaction, còn giao tác LockFeature là tùy chọn. Client Server request document request document request document Network Hình 3.1. Lược đồ giao thức 37
  49. Chương 3. Web Feature Service (WFS) 3.2. Các thành phần dịch vụ cơ sở Các nội dung về đánh số và thỏa thuận phiên bản, các quy tắc về HTTP request, HTTP response đã được trình bày trong phần các thành phần dịch vụ cơ sở của WMS. 3.2.1. Mã hóa câu request Có hai phương pháp mã hóa câu request của WFS. Phương pháp thứ nhất sử dụng XML làm ngôn ngữ mã hóa. Phương pháp thứ hai sử dụng cặp TừKhóa- GiáTrị để mã hóa các tham số trong câu request. Ví dụ cho phương pháp dùng cặp từ khóa – giá trị: "REQUEST=GetCapabilities" Trong đó “REQUEST” là từ khóa, còn “GetCapabilities” là giá trị. Trong cả hai phương pháp thì kết quả response hoặc biệt lệ trả về là giống nhau. 3.2.2. Không gian tên Không gian tên được dùng để phân biệt các từ vựng XML với nhau. Đối với WFS, có ba không gian tên sau: 1) – các từ vựng về interface của WFS 2) – các từ vựng GML 3) – các từ vựng cho OGC Filter 3.3. Các thành phần chung 3.3.1. Định danh của Feature (Feature identifier) Mỗi Feature sẽ được định danh một cách duy nhất. Nghĩa là khi một server WFS thông báo cho client biết định danh của một Feature thì định danh này sẽ được sử dụng luôn cho Feature đó trong các lần tham chiếu đến nó (cho đến khi Feature đó bị xóa). Đoạn lược đồ XML dùng để mô tả định danh này như sau: 38
  50. Chương 3. Web Feature Service (WFS) Mục đích của định danh này chính là để cho các tác vụ truy vấn cơ sở dữ liệu trên server có thể thực hiện được. 3.3.2. Định danh duy nhất toàn cầu Đối với riêng một Web Feature Service thì định danh cục bộ đã là đủ. Tuy nhiên, đối với tất cả các Web Feature Service theo tổ chức OGC thì cần phải có một định danh duy nhất cho mỗi đối tượng thuộc bất kì loại đối tượng nào. Theo cách tiếp cận trước đây thì một đối tượng được tham chiếu đến dựa trên 2 thành phần là phạm vi (scope) và định danh (FeatureId), phạm vi chính là URL của server chứa loại Feature và FeatureId chính là định danh cục bộ của Feature bên trong server đó. Cách tiếp cận này rất bất tiện khi vận chuyển và bất tiện trong một số trường hợp khác nữa. Mục đích của phần này là để chỉ ra rằng việc sử dụng một chuỗi định danh duy nhất cho Feature sẽ thuận tiện hơn trong nhiều trường hợp. Chuỗi định danh duy nhất này có thể được tạo ra bằng cách kết hợp giữa URL của Web Feature Service với định danh cục bộ của Feature. Chuỗi định danh này chỉ thật sự có ích khi mà nó là một chuỗi URL hoặc một chuỗi URN mà có thể được dùng để truy xuất trực tiếp đến Feature mà nó chỉ đến. Cấu trúc của chuỗi URL và URN này có thể được các Web Feature Service mô tả một cách riêng biệt. Một điều cần lưu ý khi sử dụng URN là: không phải một Web Feature Service nào cũng có thể lấy được các đối tượng dữ liệu. Do đó, nó chỉ có ích khi được dùng để định danh duy nhất cho đối tượng. Sử dụng URL và URN sẽ có ích cho các ứng dụng cần truy xuất đến các đối tượng thô một cách đơn giản bởi vì các ứng dụng này không cần biết gì về chi tiết của việc cài đặt. Cách định danh này cũng rất có ích khi mà nó được tích hợp với các công nghệ XML cao cấp như là XSLT hoặc RDF, và cũng có ích cho việc debug. 39
  51. Chương 3. Web Feature Service (WFS) 3.3.3. Trạng thái của Feature (Feature State) Định nghĩa của các Feature của một WFS được cung cấp bởi một lược đồ ứng dụng GML (GML application schema). Ở phần sau sẽ mô tả cách mà client yêu cầu một tài liệu XML có chứa định nghĩa của các đối tượng có trên server được cung cấp bởi lược đồ ứng dụng GML này. Các định nghĩa lược đồ ứng dụng này cần phải tuân thủ mô tả của ngôn ngữ đánh dấu địa lí của chuẩn OpenGIS (OpenGIS Geography Markup Language- GML ), phiên bản 2.1.1. Một ứng dụng client sử dụng định nghĩa lược đồ ứng dụng GML của một loại Feature nào đó để chỉ đến tất cả các Feature thuộc loại Feature này và chỉ đến tên và kiểu dữ liệu của các thuộc tính của các Feature này. Giá trị của các thuộc tính của một Feature sẽ cấu thành trạng thái của Feature đó (Feature state). Một ứng dụng client tham chiếu đến các Feature bằng cách chỉ ra tên của loại Feature đó và tên của các thuộc tính của Feature. Một ứng dụng client có thể yêu cầu một transaction WFS thực hiện cập nhật trạng thái của một Feature thông qua các operation insert, update, delete. 3.3.4. Tên của các thuộc tính Một Web Feature Service tham chiếu đến tên các thuộc tính của Feature được định nghĩa trong lược đồ ứng dụng GML. Tuy nhiên, vì trạng thái của một Feature được thể hiện bằng GML, nên tên các thuộc tính được Web Feature Service sử dụng phải tuân thủ theo mô tả của một tài liệu XML. Thêm nữa, tên các thuộc tính có thể chứa phần Namespace theo như mô tả của Namespace của XML. Định nghĩa dưới đây được trích ra từ mô tả của XML: NCName ::= (Letter | '_') (NCNameChar)* NCNameChar ::=Letter|Digit|'.'|'-'|'_'|CombiningChar|Extender QName ::= (Prefix ':')? LocalPart Prefix ::= NCName LocalPart ::= NCName 40
  52. Chương 3. Web Feature Service (WFS) Ví dụ: Ví dụ của các tên thuộc tính hợp lệ là: Age, Temperature, _KHz, myns:INWATERA_1M.WKB_GEOM Ví dụ của các tên thuộc tính không hợp lệ: +Domain, 123_SomeName 3.3.5. Tham chiếu đến thuộc tính 3.3.5.1. Giới thiệu GML cho phép các Feature địa lý được phép chứa các thuộc tính phi địa lí phức hợp. Vấn đề đặt ra là làm cách nào để có thể tham chiếu được đến các thuộc tình này ở nhiều nơi khác nhau (chẳng hạn như trong câu truy vấn hoặc trong 1 chuỗi Filter). WFS phải dùng đến cấu trúc XPath được mô tả dưới đây để tham chiếu đến các thuộc tính và các thuộc tính con của Feature. 3.3.5.2. Biểu thức XPath (XPath expression) Ngôn ngữ đường dẫn XML (XML Path Language) chính là ngôn ngữ dùng để chỉ ra các phần của một tài liệu XML, còn ở đây nó được dùng để chỉ đển các thuộc tính của Feature, các thuộc tính này được chỉ đến bởi các thành phần (element) hoặc các thuộc tính của tài liệu XML. Theo tài liệu này thì các WFS không cần phải hỗ trợ hoàn toàn ngôn ngữ XPath, để giảm chi phí cài đặt thì các WFS chỉ phải hỗ trợ các phần sau đây của ngôn ngữ XPath. 1)WFS phải hỗ trợ các đường dẫn đến các địa chỉ được viết tắt. 2)Đường dẫn đến các địa chỉ phải dùng kí tự “/” để ngăn cách giữa các cấp. 3)Bước đầu tiên của đường dẫn phải tương ứng với thành phần gốc của thuộc tính của Feature đang được tham chiếu tới hoặc tương ứng với thành phần gốc của loại Feature mà có bước kế tiếp tương ứng với thành phần gốc của thuộc tính của Feature đang được tham chiếu tới. 41
  53. Chương 3. Web Feature Service (WFS) Ví dụ: Xét tài liệu XML sau đây mô tả về 1 đối tượng person. 42
  54. Chương 3. Web Feature Service (WFS) 43
  55. Chương 3. Web Feature Service (WFS) 44
  56. Chương 3. Web Feature Service (WFS) Chú ý là thuộc tính Address là 1 thuộc tính phức hợp thuộc loại AddressType. Một Feature person có thể được mô tả như sau: Smith Fred 35 Male 15,15 Main St. 5 SomeCity 45
  57. Chương 3. Web Feature Service (WFS) SomeProvince X1X 1X1 Canada 416-123-4567 416-890-1234 Sử dụng biếu thức XPath thì các thuộc tính của Feature Person có thể được tham chiếu như dưới đây: LastName FirstName Age Sex Source Location Address Address/StreetNumber Address/StreetName Address/City Address/Province Address/Postal_Code Address/Country Phone[1] Phone[2] Chú ý là đối với Feature này thì mỗi đường dẫn được bắt đầu bằng thành phần gốc của thuộc tính của Feature đang được tham chiếu, tương ứng với tên của thuộc tính. Mỗi thuộc tính được tham chiếu tới bởi loại đường dẫn này có thể được bắt đầu bởi thành phần gốc của Feature (chính là tên loại Feature). Do đó thuộc tính LastName có thể được tham chiếu bằng đường dẫn Person/LastName. Thuộc tính City có thể được tham chiếu tới bởi đường dẫn Person/Address/City. 46
  58. Chương 3. Web Feature Service (WFS) Thành phần Phone xuất hiện nhiều lần và vị từ [1], [2] được dùng để chỉ cụ thể thành phần này là thành phần thứ mấy. Vị từ [1] dùng để chỉ lần xuất hiện thứ nhất của thành phần Phone, vị từ [2] chỉ lần xuất hiện thứ 2 của thành phần Phone. 3.3.6. Thành phần Mỗi nhà cung cấp chỉ có được một số khả năng nhất định nào đó. Thành phần được dùng để truy xuất đến các khả năng riêng của từng nhà cung cấp của một Web Feature Service nào đó. Thành phần được định nghĩa như sau: Thành phần này chỉ đơn giản chứa lệnh (command ) hoặc là thao tác (operation) riêng biệt của nhà cung cấp. Thuộc tính VendorId được dùng để chỉ nhà cung cấp hiểu lệnh và thao tác được mô tả trong thành phần . Thuộc tính này được đưa ra để cho một Web Feature Service biết là nó có thể xử lí được một lệnh nào đó hay không. Thuộc tình safeToIgnore chỉ cho Web Feature Service biết là nó nên làm gì nếu như nó không nhận ra các lệnh hay các thao tác đó. Thuộc tính safeToIgnore có 2 giá trị là True và False, ý nghĩa của chúng như sau: Nếu safeToIgnore=False thì Web Feature Service không thể bỏ qua thao tác được yêu cầu, nếu như nó không thể giải quyết được thì coi như thao tác này thất bại. Nếu safeToIgnore=True thì Web Feature Service có thể bỏ qua thành phần này. 47
  59. Chương 3. Web Feature Service (WFS) Ví dụ: mô tả cách dùng thành phần để kích hoạt một chức năng của một cơ sở dữ liệu quan hệ dựa trên SQL. Thành phần này chỉ ra rằng đây là một lệnh Oracle và lệnh này có thể bỏ qua: ALTER SESSION ENABLE PARALLEL DML 3.3.7. Filter Một Filter định nghĩa một tập hợp Feature sẽ được thao tác. Tập hợp này có thể bao gồm một hoặc nhiều Feature (có thể đếm được) hoặc một tập hợp các Feature được định nghĩa bởi các ràng buộc không gian hoặc phi không gian (đây là các ràng buộc trên các thuộc tính vô hướng hay các thuộc tính địa lý của các loại đối tượng). Các Filter này được mô tả trong tài liệu OGC Filter Encoding Implementation Specification. 3.3.8. Thông báo về các biệt lệ (Exception Reporting) Nếu như Web Feature Service gặp phải lỗi khi xử lí một truy vấn nào đó hoặc là khi nó không hiểu được một câu truy vấn nào đó, nó có thể phát sinh một tài liệu XML để chỉ ra lỗi đã xảy ra. Định dạng của loại tài liệu dùng để thông báo lỗi này được mô tả bởi lược đồ thông báo lỗi (định nghĩa trong phần A.2). Một thành phần có thể chứa một hoặc nhiều lỗi. Thuộc tính bắt buộc version được dùng để chỉ phiên bản của lược đồ thông báo lỗi. Trong phiên bàn WFS này thì giá trị này cố định là 1.2.0. Các thông báo lỗi cụ thể được chứa trong thành phần . Thuộc tính tùy chọn code dùng để chỉ mã lỗi của lỗi phát sinh. Thuộc tính tùy chọn locator được dùng để chỉ nơi gây ra lỗi trong câu truy vấn. Một số thành phần trong tài liệu này chứa thuộc tính handle, thuộc tính này liên kết một cái tên gợi nhớ với mỗi thành phần. Nếu thuộc tính này tồn tại thì giá trị của nó có thể xuất hiện trong thuộc tính Locator của thành phần . Nếu như thuộc tính này 48
  60. Chương 3. Web Feature Service (WFS) không tồn tại thì Web Feature Server có thể dùng các phương pháp khác để chỉ nơi gây ra lỗi, chẳng hạn như dùng số thứ tự của dòng gây ra lỗi . Ví dụ: Ví dụ dưới đây dùng để chỉ ra một lỗi là: câu lệnh Insert đầu tiên bị lỗi vì nó thiểu một dấu đóng tag XML trong câu truy vấn. parse error: missing closing tag for element WKB_GEOM 3.3.9. Các thuộc tính XML chung 3.3.9.1. Thuộc tính version Tất cả các câu truy vấn gởi lên một WFS đều có chứa một thuộc tính là version. Thuộc tính bắt buộc version dùng để chỉ ra phiên bản WFS của câu truy vấn này. Giá trị mặc định của version là 1.0.0, đây cũng là phiên bản mà tài liệu này mô tả. 3.3.9.2. Thuộc tính service Tất cả các câu truy vấn gởi lên một WFS đều chứa thuộc tính bắt buộc là service. Thuộc tính này dùng để chỉ ra loại dịch vụ được gọi thực hiện. Khi truy vấn đến một Web Feature Service thì service có giá trị là “WFS”. 49
  61. Chương 3. Web Feature Service (WFS) 3.3.9.3. Thuộc tính handle Ưng dụng client sử dụng thuộc tính handle để gán cho mỗi câu truy vấn một tên gợi nhớ. Nếu client có sử dụng thuộc tính này thì khi có lỗi xảy ra Web Feature Service sẽ dùng handle để chỉ ra chỗ bị lỗi. 3.4. DescribeFeatureType 3.4.1. Giới thiệu Chức năng của operation DescribeFeatureType là tạo ra một mô tả lược đồ của các kiểu của feature được hỗ trợ bởi WFS. Các mô tả lược đồ định nghĩa làm thế nào mà một WFS trông đợi các thể hiện của feature được mã hóa để đưa vào đầu vào và làm thế nào mà các thể hiện của feature được xuất ra ở đầu ra. 3.4.2. Request Một thành phần DescribeFeatureType có thể không chứa hoặc chứa nhiều thành phần TypeName mã hóa cho tên của các kiểu feature được mô tả. Nếu nội dung của thành phần DescribeFeatureType là rỗng, thì request sẽ được hiểu là yêu cầu tất cả các kiểu của feature mà WFS hỗ trợ. Tài liệu XML mã hóa cho request DescribeFeatureType được định nghĩa theo đọan lược đồ XML sau: <xsd:attribute name="outputFormat" type="xsd:string" 50
  62. Chương 3. Web Feature Service (WFS) use="optional" default="XMLSCHEMA"/> Thuộc tính outputFormat dùng để chỉ ngôn ngữ mô tả lược đồ. Định dạng xuất bắt buộc cho operation DescribeFeatureType là một lược đồ XML, và giá trị của tham số này là XLMSCHEMA. Các định dạng khác cũng có thể chấp nhận nếu được đặc tả trong tài liệu Capabilities XML. 3.4.3. Response Nếu thuộc tính outputFormat có giá trị là XLMSCHEMA thì trong response của DescribeFeatureType request, WFS phải đưa ra lược đồ XML là một lược đồ ứng dụng GML hợp lệ nó định nghĩa lược đồ của các kiểu feature được liệt kê trong request. Một tàl liệu lược đồ XML chỉ có thể mô tả các thành phần nằm trong cùng một không gian tên. Điều này có nghĩa là WFS không thể có các feature trong nhiều không gian tên trong cùng một lược đồ XML. Để vượt qua giới hạn này, WFS sẽ tạo ra một lược đồ XML gọi là lược đồ “bao” nó chứa trong đó các lược đồ của các feature từ nhiều không gian tên khác nhau trong câu request. Ví dụ: xem xét một request sau: ns01:TREESA_1M ns02:ROADL_1M 51
  63. Chương 3. Web Feature Service (WFS) WFS sẽ trả về một response cho request trên như sau: Trong ví dụ trên, WFS dùng một request DescribeFeatureType để lấy về các lược đồ cho các feature nằm trong các không gian tên khác nhau. 3.4.4. Biệt lệ Nếu trong khi gọi request DescribeFeatureType mà xảy ra lỗi thì WFS sẽ gửi đi một biệt lệ. 3.5. GetFeature 3.5.1. Giới thiệu Operation GetFeature cho phép lấy các feature của một WFS. Sau khi xử lý request của GetFeature, WFS sẽ gửi lại một tài liệu XML chứa các kết quả cho client. 52
  64. Chương 3. Web Feature Service (WFS) 3.5.2. Request Tài liệu XML mã hóa cho request của GetFeature được định nghĩa bởi đọan lược đồ XML sau đây: 53
  65. Chương 3. Web Feature Service (WFS) Thành phần chứa một hoặc nhiều thành phần mà mỗi thành phần sẽ chứa trong đó một câu truy vấn. Kết quả của tất cả các câu truy vấn trong request của GetFeature được nối lại thành một chuỗi kết quả duy nhất. Thuộc tính outputFormat sẽ định nghĩa định dạng dùng để tạo chuỗi kết quả. Giá trị mặc định là GML2. Các định dạng khác cũng có thể chấp nhận nếu được đặc tả trong tài liệu Capabilities XML. Thuộc tính tùy chọn maxFeatures được dùng để giới hạn số lượng các feature mà một request có thể gọi. Một khi đạt tới giới hạn này thì chuỗi kết quả sẽ được nối lại ngay tại điểm đó. Mỗi một câu truy vấn trong một request GetFeature được định nghĩa bằng cách sử dụng thành phần . Thành phần này định nghĩa kiểu feature cần truy vấn, thuộc tính cần lấy của nó và các ràng buộc áp dụng trên các thuộc tính đó. Thuộc tính typeName dùng để chỉ ra tên của kiểu feature hoặc lớp feature được truy vấn. Thuộc tính featureVersion cung cấp việc định phiên bản cho các feature. Thành phần dùng để kiệt kê các thuộc tính của feature mà các thuộc tính này được chọn trong câu truy vấn và giá trị của chúng được xuất ra trong response cho request GetFeature. Các ứng dụng client có thể xác định các thuộc tính của feature bằng cách tạo ra câu request DescribeFeatureType trước khi tạo ra câu request GetFeature. Nếu không có thành phần nào được chỉ định thì tất cả các thuộc tính của feature sẽ được truy vấn. Thành phần dùng để định nghĩa các ràng buộc trên câu truy vấn. Kể cả ràng buộc không gian và phi không gian đều có thể được mô tả trong đặc tả bộ lọc. 54
  66. Chương 3. Web Feature Service (WFS) Nếu thành phần không được dùng trong thành phần thì câu truy vấn này không có ràng buộc và tất cả mọi thể hiện của feature đều được truy vấn. Thành phần tương tự như thành phần và thêm ý nghĩa rằng WFS sẽ khóa các feature được chọn lại, thường là cho mục đích cập nhật feature. 3.5.3. Response Định dạng của response cho một request của GetFeature được quy định bởi thuộc tính outputFormat. Giá trị mặc định cho thuộc tính này là GML2. Đoạn lược đồ XML sau mô tả công dụng của thuộc tính schemaLocation trên thành phần gốc: Đối với lọai request , WFS cần phải tạo ra chuỗi kết quả bao gồm cả định danh khóa. Định danh khóa này được mã hóa dựa trên thuộc tính lockId được định nghĩa trong thành phần . Đoạn lược đồ XML sau mình họa làm thế nào để thêm thuộc tính lockID vào câu response của operation. 55
  67. Chương 3. Web Feature Service (WFS) 3.5.4. Biệt lệ Nếu trong khi gọi request GetFeature mà xảy ra lỗi thì WFS sẽ gửi đi một biệt lệ. 3.6. LockFeature 3.6.1. Giới thiệu Kết nối Internet vốn là không trạng thái. Điều đó dẫnn đến hậu quả là các giao tác được thực hiện mà không có sự bảo đảm. Để hiểu rõ hơn, ta hãy xét một tác vụ cập nhập. Client gọi cập nhật một feature. Feature được hiệu chỉnh ở client rồi được gửi ngược lại cơ sở dữ liệu thông qua request yêu cầu cập nhật của operation Transaction. Quá trình thực hiện sẽ xảy ra mất mát do ở đây không có gì bảo đảm rằng trong lúc feature đang được cập nhật ở phía client thì không có một client khác cũng đến và cập nhật feature này trên cơ sở dữ liệu. Một cách duy nhất để đảm bảo quá trình thực hiện là yêu cầu quá trình truy xuất dữ liệu được thực hiện hoàn toàn tách biệt, có nghĩa là khi có một giao tác truy cập vào cơ sở dữ liệu thì không được có một giao tác khác cũng đồng thời truy cập vào cơ sở dữ liệu đó. Điều này được thực hiện bằng cách sử dụng khóa để điều khiển sự truy cập đến cơ sở dữ liệu. Mục đích của operation LockFeature là để đưa ra một cơ chế khóa feature lâu dài và được bảo đảm về sừ bền vững. LockFeature là tùy chọn và không cần được hỗ trợ bởi các WFS. Nếu có hỗ trợ thì nó phải được đặc tả trong tài liệu Capabilities XML. 56
  68. Chương 3. Web Feature Service (WFS) 3.6.2. Request Tài liệu XML mã hóa cho request của LockFeature được định nghĩa bởi đoạn lược đồ XML sau: 57
  69. Chương 3. Web Feature Service (WFS) Thành phần có thể chứa trong nó một hay nhiều thành phần định nghĩa cho các giao tác khóa trên nhiều thể hiện của feature của cùng loại feature. Thuộc tính expiry được dùng để chỉ ra giới hạn trong bao lâu mà WFS có thể giữ được khóa trên các thể hiện của feature cho đến khi có sự kiện không có giao tác nào được phát ra nữa thì sẽ giải phóng khóa. Giá trị của nó được tính theo phút. Khi số phút này hết, thì WFS sẽ giải phóng khóa nếu nó kết thúc. Bất cứ giao tác nào nhằm tác động đến khóa thông qua định danh khóa đều bị dịch vụ từ chối. Tuy nhiên lại không có đặc tả cho biết khóa sẽ được giữ trong bao lâu nếu thuộc tính này không được định nghĩa. Tuy nhiên, hầu hết các WFS sẽ có các phương thức để kiểm tra và giải phóng khóa sau một khoảng thời gian không có giao tác nào tác động tới nó. Thuộc tính tùy chọn lockAction được dùng để điều khiển các khóa của feature. Nếu có giá trị là ALL thì WFS sẽ cố gắng khóa trên tất cả các feature được yêu cầu truy vấn trong request. Nếu tất cả các feature không được khóa thì operation sẽ báo thất bại. Nếu có giá trị là SOME thì cố gắng khóa trên các feature nào trong câu request mà nó khóa được mà thôi. Giá trị mặc định của thuộc tính lockAction là ALL. 3.6.3. Response Tài liệu XML mã hóa cho response của request của LockFeature được định nghĩa bởi đoạn lược đồ XML sau: 58
  70. Chương 3. Web Feature Service (WFS) Trong response của một LockFeature request, WFS sẽ tạo ra một tài liệu XML. Tài liệu này chứa một định danh khóa mà ứng dụng client có thể dùng trong các operation của WFS để giao tác đến một tập các thể hiện feature đã được khóa. Trong response có thể có các thành phần tùy chọn và tùy thuộc vào giá trị của thuộc tính lockAction trong câu request. Nếu nó có giá trị là SOME thì thành phần phải chứa các thành phần và . Thành phần liệt kê các định danh feature đã được khóa bởi request LockFeature. Thành phần liệt kê các định danh feature không thể khóa bởi WFS (có thể do nó được khóa bởi một ai khác). Không có định dạng cho các định danh khóa. Chỉ có một yêu cầu duy nhất là tập ký tự trong định danh khóa phải theo tập ký tự của request giao tác. 3.6.4. Biệt lệ Nếu WFS không hỗ trợ LockFeature thì nó sẽ gửi một biệt lệ để báo rằng operation này không được hỗ trợ khi có một yêu cầu về LockFeature được gởi đến. 59
  71. Chương 3. Web Feature Service (WFS) Nếu WFS hỗ trợ LockFeature và khi xảy ra một lỗi trong request thì nó sẽ gửi ra một biệt lệ. 3.7. Transaction 3.7.1. Giới thiệu Operation Transaction được dùng để mô tả các giao tác làm thay đổi dữ liệu của các feature cho phép truy xuất qua môi trường web. Một WFS có thể thực hiện operation Transaction một cách trực tiếp hoặc được chuyển qua ngôn ngữ của kho lưu trữ đích mà nó kết nối tới và để cho kho lưu trữ thực hiện giao tác này. Khi giao tác chấm dứt, WFS sẽ gửi trả về một lài liệu XML mô tả trạng thái kết thúc của giao tác. Operation Transaction là tùy chọn cho các WFS, nó không cần thiết phải hỗ trợ giao tác này. Nếu được hỗ trợ thì nó phải được đặc tả trong tài liệu Capabilities XML. 3.7.2. Request 3.7.2.1. Định nghĩa lược đồ Tài liệu XML của request cho Transaction được định nghĩa bởi đoạn lược đồ XML sau: 60
  72. Chương 3. Web Feature Service (WFS) 61
  73. Chương 3. Web Feature Service (WFS) 3.7.2.2. Mô tả các thuộc tính Thuộc tính hadle dùng để gán một tên dễ nhớ cho thành phần tương ứng với nó. Ngoài ra nó còn giúp cho việc báo lỗi đến ứng dụng client được dễ hiểu hơn. Khi lỗi xảy ra, WFS sẽ dùng thuộc tính handle để định vị lỗi nhằm phát sinh ra biệt lệ một cách chính xác. Nếu thuộc tính này không được xác định, WFS sẽ cố gắng thông báo vị trí của biệt lệ tương ứng với lỗi trong request của Transaction dựa trên số dòng hoặc một cơ chế nào khác. Giả sử WFS có hỗ trợ operation LockFeature và/hoặc operation GetFeatureWithLock, thì thuộc tính releaseAction được dùng để điều khiển việc giải phóng các feature đã khóa khi request của Transaction hoàn thành. Nếu thuộc tính này có giá trị ALL thì chỉ ra rằng tất cả các khóa của các feature bị khóa với định danh khóa sẽ được giải phóng khi giao tác chấm dứt, bất chấp trong số các feature đang bị khóa vẫn còn có feature đang được truy cập. Nếu thuộc tính này có giá trị SOME thì chỉ ra rằng chỉ những khóa của các feature có trong request của Transaction sẽ được giải phóng, và khi đó, thuộc tính releaseAction của thành phần hoặc sẽ được trả về giá trị “0” sau khi kết thúc giao tác. Giá trị mặc định của releaseAction là ALL. 62
  74. Chương 3. Web Feature Service (WFS) 3.7.2.3. Thành phần Thành phần có thể không chứa hoặc chứa nhiều các thành phần , , , chúng mô tả các thao tác thêm, cập nhật, xóa các thể hiện của feature. Một thành phần trống vẫn hợp lệ song sẽ không có ích. Thành phần tùy chọn chỉ ra rằng giao tác sẽ thực hiện trên các thể hiện feature đã được khóa nào. Nếu WFS không hỗ trợ khả năng khóa feature thì thành phần sẽ bị bỏ qua. Nếu WFS có hỗ trợ khóa và có một định danh khóa không hợp lệ thì WFS sẽ gửi ra một biệt lệ và giao tác sẽ chấm dứt. Thành phần đã được định nghĩa ở mục “Các thành phần mở rộng”. 3.7.2.4. Thành phần Thành phần được dùng để thêm mới các thể hiện của feature. Trong một operation Transaction có thể có nhiều thành phần và với mỗi thành phần có thể được dùng để tạo mới nhiều thể hiện của feature. Trong response trả về cho giao tác , WFS sẽ trả về một danh sách các định danh feature mới được gán cho các thể hiện của feature được thêm mới. Các định danh feature được hiển thị theo đúng trình tự được thực hiện trong thành phần của giao tác. Ví dụ: Giao tác sau sẽ tạo mới hai thể hiện của kiểu feature INWATERA_1M. <wfs:Transaction version="1.0.0" service="WFS" xmlns=" " xmlns:gml=" " xmlns:ogc=" " xmlns:wfs=" " xmlns:xsi=" " xsi:schemaLocation=" 63