Tài liệu Đề 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ụ: i
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...
183 trang |
Chia sẻ: tranhong10 | Lượt xem: 2338 | Lượt tải: 0
Bạn đang xem trước 20 trang mẫu tài liệu Đề 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ụ, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
i
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
ii
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.
iii
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.
iv
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
v
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
vi
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
vii
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
viii
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
ix
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
x
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
xi
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
Chương 1. Tổng quan
1
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
Chương 1. Tổng quan
2
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.
Chương 1. Tổng quan
3
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.
Chương 1. Tổng quan
4
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ý đó.
Chương 2. Web Map Service (WMS)
5
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.
Chương 2. Web Map Service (WMS)
6
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)
Chương 2. Web Map Service (WMS)
7
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.
Chương 2. Web Map Service (WMS)
8
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ị đó (“,,”)
Chương 2. Web Map Service (WMS)
9
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.
Chương 2. Web Map Service (WMS)
10
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,...
Chương 2. Web Map Service (WMS)
11
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.
Chương 2. Web Map Service (WMS)
12
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,
Chương 2. Web Map Service (WMS)
13
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ệ.
Chương 2. Web Map Service (WMS)
14
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”.
Tham số request
Bắt buộc/
Tùy chọn
Mô tả
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”.
Chương 2. Web Map Service (WMS)
15
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ị
UpdateSequence trong
request của client
Giá trị UpdateSequence
trong thông tin metadata
của server
Response của server
none any
Tài liệu Capabilities XML
mới nhất
any none
Tài liệu Capabilities XML
mới nhất
equal equal
Biệt lệ:
code=CurrentUpdateSequence
lower higher
Tài liệu Capabilities XML
mới nhất
higher lower
Biệt lệ:
code=InvalidUpdateSequence
Bảng 2.4.Mối quan hệ giữa giá trị UpdateSequence trong client và server
Chương 2. Web Map Service (WMS)
16
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.
Chương 2. Web Map Service (WMS)
17
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
Chương 2. Web Map Service (WMS)
18
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.
Chương 2. Web Map Service (WMS)
19
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
Chương 2. Web Map Service (WMS)
20
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
Chương 2. Web Map Service (WMS)
21
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
Chương 2. Web Map Service (WMS)
22
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.
Chương 2. Web Map Service (WMS)
23
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
dương
0: lớp không được yêu cầu bởi Cascading Map Server
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
dương
0: WMS có thể chỉnh lại chiều rộng bản đồ.
n: bản đồ được cố định chiều rộng và WMS không
thể thay đổi.
fixedHeight 0, nguyên
dương
0: WMS có thể chỉnh lại chiều cao bản đồ.
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
Chương 2. Web Map Service (WMS)
24
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.
Chương 2. Web Map Service (WMS)
25
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.
Chương 2. Web Map Service (WMS)
26
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ụ.
Chương 2. Web Map Service (WMS)
27
2.3.2.2. GetMap request
Tham số request
Bắt buộc/
Tùy chọn
Mô tả
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
Chương 2. Web Map Service (WMS)
28
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ệ.
Chương 2. Web Map Service (WMS)
29
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ố
Chương 2. Web Map Service (WMS)
30
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.
Chương 2. Web Map Service (WMS)
31
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
Chương 2. Web Map Service (WMS)
32
đượ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.
Chương 2. Web Map Service (WMS)
33
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.
Tham số request
Bắt buộc/
Tùy chọn
Mô tả
VERSION=version Bắt buộc Phiên bản request.
REQUEST=GetFeatureInfo Bắt buộc Tên request.
Bắt buộc
Phần copy lại các tham số của request
GetMap.
QUERY_LAYERS=layer_list Bắt buộc
Danh sách các lớp cần truy vấn, được
phân cách bởi dấu phẩy.
INFO_FORMAT=output_format Tùy chọn
Định dạng thông tin của feature (kiểu
MIME).
FEATURE_COUNT=number Tùy chọn
Số lượng feature cần lấy thông tin
(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.
EXCEPTIONS=exception_format Tùy chọn
Định dạng của biệt lệ
(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.
Chương 2. Web Map Service (WMS)
34
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.
Chương 2. Web Map Service (WMS)
35
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).
Chương 3. Web Feature Service (WFS)
36
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.
Chương 3. Web Feature Service (WFS)
37
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.
Hình 3.1. Lược đồ giao thức
document
Network
request
document
request
document
request
Client Server
Chương 3. Web Feature Service (WFS)
38
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:
Chương 3. Web Feature Service (WFS)
39
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.
Chương 3. Web Feature Service (WFS)
40
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
Chương 3. Web Feature Service (WFS)
41
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.
Chương 3. Web Feature Service (WFS)
42
Ví dụ: Xét tài liệu XML sau đây mô tả về 1 đối tượng person.
<schema
targetNamespace=""
xmlns:myns=""
xmlns:gml=""
xmlns:xsd=""
xmlns=""
elementFormDefault="qualified"
version="1.0">
<import namespace=""
schemaLocation="../gml/2.1/feature.xsd"/>
<element name="Person" type="myns:PersonType"
substitutionGroup="gml:_Feature"/>
Chương 3. Web Feature Service (WFS)
43
<element name="Age" type="integer"
nillable="true"/>
<attribute name="sin" type="xsd:anyURI"
use="required" />
<element name="Location"
type="gml:PointPropertyType"
nillable="true"/>
<element name="Address" type="myns:AddressType"
nillable="true"/>
<element name="Phone" type="xsd:string"
minOccurs="0" maxOccurs="unbounded"/>
<attribute name="sin" type="xsd:anyURI"
use="required"/>
Chương 3. Web Feature Service (WFS)
44
Chương 3. Web Feature Service (WFS)
45
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:
<myns:Person
sin="111222333"
xmlns:myns=
xmlns:gml=
xmlns:xlink=
xmlns:xsi=
xsi:schemaLocation="
erson.xsd">
Smith
Fred
35
Male
15,15
Main St.
5
SomeCity
Chương 3. Web Feature Service (WFS)
46
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.
Chương 3. Web Feature Service (WFS)
47
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:
<xsd:attribute name="vendorId" type="xsd:string"
use="required"/>
<xsd:attribute name="safeToIgnore" type="xsd:boolean"
use="required"/>
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.
Chương 3. Web Feature Service (WFS)
48
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
Chương 3. Web Feature Service (WFS)
49
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.
<ServiceExceptionReport
version="1.2.0"
xmlns=
xmlns:xsi=
xsi:schemaLocation="
../wfs/1.0.0/OGC-exception.xsd">
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”.
Chương 3. Web Feature Service (WFS)
50
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:element name="DescribeFeatureType"
type="wfs:DescribeFeatureTypeType"/>
<xsd:element name="TypeName" type="xsd:QName"
minOccurs="0" maxOccurs="unbounded"/>
<xsd:attribute name="version" type="xsd:string"
use="required" fixed="1.0.0"/> <xsd:attribute
ame="service" type="xsd:string" use="required"
ixed="WFS"/>
<xsd:attribute name="outputFormat" type="xsd:string"
Chương 3. Web Feature Service (WFS)
51
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:
<DescribeFeatureType
version="1.0.0"
service="WFS"
xmlns=
xmlns:ns01=
xmlns:ns02=
xmlns:xsi=
xsi:schemaLocation="
../wfs/1.0.0/WFS-basic.xsd">
ns01:TREESA_1M
ns02:ROADL_1M
Chương 3. Web Feature Service (WFS)
52
WFS sẽ trả về một response cho request trên như sau:
<schema
xmlns=
elementFormDefault="qualified"
attributeFormDefault="unqualified">
<import namespace=
schemaLocation="
request=DescribeFeatureType&typeName=ns01:TREESA_1M"/>
<import namespace=
schemaLocation="
request=DescribeFeatureType&typeName=ns02:ROADL_1M"/>
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.
Chương 3. Web Feature Service (WFS)
53
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:
<xsd:attribute name="version"
type="xsd:string" use="required" fixed="1.0.0"/>
<xsd:attribute name="service"
type="xsd:string" use="required" fixed="WFS"/>
<xsd:attribute name="handle"
type="xsd:string" use="optional"/>
<xsd:attribute name="outputFormat"
type="xsd:string" use="optional" default="GML2"/>
<xsd:attribute name="maxFeatures"
type="xsd:positiveInteger"
use="optional"/>
<xsd:element ref="ogc:PropertyName" minOccurs="0"
maxOccurs="unbounded"/>
<xsd:element ref="ogc:Filter" minOccurs="0"
maxOccurs="1"/>
<xsd:attribute name="handle"
type="xsd:string" use="optional"/>
Chương 3. Web Feature Service (WFS)
54
<xsd:attribute name="typeName"
type="xsd:QName" use="required"/>
<xsd:attribute name="featureVersion"
type="xsd:string" use="optional"/>
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.
Chương 3. Web Feature Service (WFS)
55
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:
<wfs:FeatureCollection
xmlns=
xmlns:myns=
xmlns:gml=
xmlns:xsi=
xsi:schemaLocation="
request=DescribeFeatureType&typename=TREESA_1M,ROADL_1M">
Đố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.
Chương 3. Web Feature Service (WFS)
56
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.
Chương 3. Web Feature Service (WFS)
57
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:
<xsd:element name="Lock"
type="wfs:LockType"
maxOccurs="unbounded"/>
<xsd:attribute name="version"
type="xsd:string" use="required" fixed="1.0.0"/>
<xsd:attribute name="service"
type="xsd:string" use="required" fixed="WFS"/>
<xsd:attribute name="expiry"
type="xsd:positiveInteger" use="optional"/>
<xsd:attribute name="lockAction"
type="wfs:AllSomeType" use="optional"/>
<xsd:element ref="ogc:Filter" minOccurs="0"
maxOccurs="1"/>
<xsd:attribute name="handle"
type="xsd:string" use="optional"/>
<xsd:attribute name="typeName"
type="xsd:QName" use="required"/>
Chương 3. Web Feature Service (WFS)
58
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:
<xsd:element name="WFS_LockFeatureResponse"
type="wfs:WFS_LockFeatureResponseType"/>
<xsd:element name="FeaturesLocked"
type="wfs:Featur
Các file đính kèm theo tài liệu này:
- file_goc_780468.pdf