Chương 3. Web Feature Service (WFS)
use="optional"/> use="required"/> 62 Chương 3. Web Feature Service (WFS) version="1.0.0" service="WFS" xmlns="http://www.someserver.com/myns" xmlns:gml="http://www.opengis.net/gml" xmlns:ogc="http://www.opengis.net/ogc" xmlns:wfs="http://www.opengis.net/wfs" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.someserver.com/myns 63 Chương 3. Web Feature Service (WFS) http://www.someserver.com/wfs/cwwfs.cgi? request=describefeaturetype&typename=INWATERA_1M.xsd http://www.opengis.net/wfs ../wfs/1.0.0/WFS-transaction.xsd"> srsName="http://www.opengis.net/gml/srs/epsg.xml#4326"> srsName="http://www.opengis.net/gml/srs/epsg.xml#4326"> gml:outerBoundaryIs> 64 Chương 3. Web Feature Service (WFS) version="1.0.0" service="WFS" xmlns="http://www.someserver.com/myns" xmlns:ogc="http://www.opengis.net/ogc" xmlns:wfs="http://www.opengis.net/wfs" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 65 Chương 3. Web Feature Service (WFS) xsi:schemaLocation="http://www.opengis.net/wfs ../wfs/1.0.0/WFS-transaction.xsd"> version="1.0.0" service="WFS" xmlns="http://www.someserver.com/myns" xmlns:ogc="http://www.opengis.net/ogc" xmlns:wfs="http://www.opengis.net/wfs" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/wfs ../wfs/1.0.0/WFS-transaction.xsd"> 66 Chương 3. Web Feature Service (WFS) version="1.0.0" service="WFS" xmlns="http://www.someserver.com/myns" xmlns:ogc="http://www.opengis.net/ogc" xmlns:wfs="http://www.opengis.net/wfs" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/wfs ../wfs/1.0.0/WFS-transaction.xsd"> 67 Chương 3. Web Feature Service (WFS) version="1.0.0" service="WFS" xmlns:myns="http://www.someserver.com/myns" xmlns:ogc="http://www.opengis.net/ogc" xmlns:wfs="http://www.opengis.net/wfs" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/wfs ../wfs/1.0.0/WFS-transaction.xsd"> version="1.0.0" service="WFS" xmlns="http://www.someserver.com/myns" xmlns:wfs="http://www.opengis.net/wfs" 68 Chương 3. Web Feature Service (WFS) xmlns:gml="http://www.opengis.net/gml" xmlns:ogc="http://www.opengis.net/ogc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/wfs ../wfs/1.0.0/WFS-transaction.xsd"> srsName="http://www.opengis.net/gml/srs/epsg.xml#4326"> type="wfs:WFS_TransactionResponseType"/> type="wfs:InsertResultType" 69 Chương 3. Web Feature Service (WFS) minOccurs="0" maxOccurs="unbounded"/> type="wfs:TransactionResultType"/> type="xsd:string" use="required" fixed="1.0.0"/> use="optional"/> use="optional"/> 70 Chương 3. Web Feature Service (WFS) version="1.0.0" xmlns:wfs="http://www.opengis.net/wfs" xmlns:ogc="http://www.opengis.net/ogc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/wfs ../wfs/1.0.0/WFS-transaction.xsd"> 71 Chương 3. Web Feature Service (WFS) type="wfs:GetCapabilitiesType"/> type="xsd:string" use="optional"/> type="xsd:string" use="required" fixed="WFS"/> 72 Chương 3. Web Feature Service (WFS) 73 Chương 4. Bộ lọc (Filter) 74 Chương 4. Bộ lọc (Filter) type="ogc:BinarySpatialOpType" substitutionGroup="ogc:spatialOps"/> type="ogc:BinarySpatialOpType" substitutionGroup="ogc:spatialOps"/> type="ogc:BinarySpatialOpType" substitutionGroup="ogc:spatialOps"/> type="ogc:BinarySpatialOpType" substitutionGroup="ogc:spatialOps"/> type="ogc:BinarySpatialOpType" substitutionGroup="ogc:spatialOps"/> type="ogc:BinarySpatialOpType" substitutionGroup="ogc:spatialOps"/> 75 Chương 4. Bộ lọc (Filter) type="ogc:BinarySpatialOpType" substitutionGroup="ogc:spatialOps"/> type="ogc:BinarySpatialOpType" substitutionGroup="ogc:spatialOps"/> type="ogc:DistanceBufferType" substitutionGroup="ogc:spatialOps"/> type="ogc:DistanceBufferType" substitutionGroup="ogc:spatialOps"/> type="ogc:BBOXType" substitutionGroup="ogc:spatialOps"/> abstract="true"/> 76 Chương 4. Bộ lọc (Filter) type="ogc:DistanceType"/> use="required"/> 77 Chương 4. Bộ lọc (Filter) type="ogc:BinaryComparisonOpType" substitutionGroup="ogc:comparisonOps"/> type="ogc:BinaryComparisonOpType" substitutionGroup="ogc:comparisonOps"/> type="ogc:BinaryComparisonOpType" substitutionGroup="ogc:comparisonOps"/> type="ogc:BinaryComparisonOpType" substitutionGroup="ogc:comparisonOps"/> 78 Chương 4. Bộ lọc (Filter) type="ogc:BinaryComparisonOpType" substitutionGroup="ogc:comparisonOps"/> type="ogc:BinaryComparisonOpType" substitutionGroup="ogc:comparisonOps"/> type="ogc:PropertyIsLikeType" substitutionGroup="ogc:comparisonOps"/> type="ogc:PropertyIsNullType" substitutionGroup="ogc:comparisonOps"/> type="ogc:PropertyIsBetweenType" substitutionGroup="ogc:comparisonOps"/> type="ogc:ComparisonOpsType" abstract="true"/> minOccurs="2" maxOccurs="2"/> 793.7.2.2. Mô tả các thuộc tính
Thuộc tính hadle dùng để gán một tên dễ nhớ cho thành phần tương ứng với nó.
Ngoài ra nó còn giúp cho việc báo lỗi đến ứng dụng client được dễ hiểu hơn. Khi lỗi
xảy ra, WFS sẽ dùng thuộc tính handle để định vị lỗi nhằm phát sinh ra biệt lệ một
cách chính xác. Nếu thuộc tính này không được xác định, WFS sẽ cố gắng thông
báo vị trí của biệt lệ tương ứng với lỗi trong request của Transaction dựa trên số
dòng hoặc một cơ chế nào khác.
Giả sử WFS có hỗ
trợ operation LockFeature và/hoặc operation
GetFeatureWithLock, thì thuộc tính releaseAction được dùng để điều khiển việc
giải phóng các feature đã khóa khi request của Transaction hoàn thành. Nếu thuộc
tính này có giá trị ALL thì chỉ ra rằng tất cả các khóa của các feature bị khóa với
định danh khóa
trong số các feature đang bị khóa vẫn còn có feature đang được truy cập. Nếu thuộc
tính này có giá trị SOME thì chỉ ra rằng chỉ những khóa của các feature có trong
request của Transaction sẽ được giải phóng, và khi đó, thuộc tính releaseAction
của thành phần
trị “0” sau khi kết thúc giao tác. Giá trị mặc định của releaseAction là ALL.
3.7.2.3. Thành phần
Thành phần
thể hiện của feature. Một thành phần
không có ích.
Thành phần tùy chọn
hiện feature đã được khóa nào. Nếu WFS không hỗ trợ khả năng khóa feature thì
thành phần
khóa không hợp lệ thì WFS sẽ gửi ra một biệt lệ và giao tác sẽ chấm dứt.
Thành phần
3.7.2.4. Thành phần
Thành phần
một operation Transaction có thể có nhiều thành phần
phần
Trong response trả về cho giao tác
định danh feature mới được gán cho các thể hiện của feature được thêm mới. Các
định danh feature được hiển thị theo đúng trình tự được thực hiện trong thành phần
Ví dụ: Giao tác sau sẽ tạo mới hai thể hiện của kiểu feature INWATERA_1M.
3.7.2.5. Thành phần
Thành phần
một operation Transaction có thể có nhiều thành phần
phần
Thành phần
tên và giá trị cập nhật của thuộc tính của kiểu feature được định danh bằng thuộc
tính typeName. Thành phần
thuộc tính cần cập nhật. Thành phần tùy chọn
thuộc tính đó. Nếu thành phần này không được định nghĩa thì giá trị NULL sẽ được
gán cho thuộc tính này. Nếu thuộc tính này không được phép có giá trị NULL thì
WFS sẽ đưa ra môt biệt lệ.
Phạm vi của thành phần
được dùng để giới hạn phạm vi của giao tác cập nhật.
Ví dụ: Ví dụ sau cho thấy giao tác cập nhật thuộc tính POPULATION của định
danh feature BUILTUPA_1M.1013
Cập nhật thuộc tính POPULATION_TYPE của danh sách các feature sau với
giá trị mới là “CITY”. Các feature cần cập nhật có các định danh feature sau:
BUILTUPA_1M.1013, BUILTUPA_1M.34, BUILTUPA_1M.24256
3.7.2.6. Thành phần
Thành phần
xóa đi. Phạm vi của giao tác xóa được giới hạn bởi thành phần
Ví dụ: Xóa một feature đơn.
Xóa một tập các thể hiện feature.
Xóa một tập các thể hiện của feature INWATERA_1M nằm trong miền đa giác
được chỉ định. Thành phấn
va đa giác được biểu diễn bằng GML.
3.7.3. Response
Trong response trả về cho request của Transaction, WFS trả về một tài liệu
XML mô tả trạng thái kết thúc của giao tác.
Tài liệu XML mã hóa cho response được mô tả bằng đoạn lược đồ XML sau.
Thành phần
thành phần
Thành phần
thêm vào. Một thành phần
trong câu request.
Kết quả của toàn bộ giao tác được mô tả trong thành phần
Thành phần này phải chứa một thành phần
của giao tác. Còn thành phần
ra còn thành phần
Ví dụ: Giả sư có giao tác tạo mới các thể hiện của feature “STMT1”, “STMT2”,
“STMT3”. Response cho giao tác này như sau:
3.7.4. Biệt lệ
Khi xảy ra một lỗi trong request của operation Transaction thì WFS sẽ gửi ra
một biệt lệ.
3.8. GetCapabilities
3.8.1. Giới thiệu
Một WFS phải mô tả được khả năng của nó. Cụ thể là WFS phải tạo được một
tài liệu Capabilities XML để mô tả khả năng của nó.
3.8.2. Request
Thành phần
XML của nó. Request này được định nghĩa bằng đoạn lược đồ XML sau:
Trong đó thuộc tính service đã được định nghĩa trong mục “Các thành phần
chung”.
3.8.3. Response
Tài liệu mô tả khả năng của WFS gồm các phần sau.
1) Dịch vụ: phần này cung cấp thông tin về bản thân dịch vụ.
2)Chả năng: phần này chỉ ra danh sách các request mà WFS có thể thực hiện.
3)Danh sách kiểu feature: phần này định nghĩa các kiểu feature và các giao tác
có thể có trên mỗi feature. Ngoài ra còn có một số thông tin phụ thêm chẳng hạn
như SRS.
4)Khả năng của bộ lọc: phần này là tùy chọn. Nếu có phần này, WFS sẽ thực
hiện thêm các bộ lọc trong đó, còn nếu không WFS chỉ thực hiện các bộ lọc mặc
định tối thiểu mà thôi.
Thuộc tính version để chỉ ra lược đồ nào được áp dụng. Định dạng của nó có thể
gồm một, hai hoặc ba con số được phân cách nhau bằng dấu chấm: “x” hoặc “x.y”
hoặc “x.y.z” với số ngoài cùng bên tay trái là số có nghĩa nhất.
3.8.4. Biệt lệ
Khi xảy ra lỗi trong request của GetCapabilities, WFS sẽ trả về một biệt lệ.
Chương 4. Bộ lọc (Filter)
4.1. Giới thiệu:
Một biểu thức Filter là 1 điều kiện ràng buộc về giá trị của các thuộc tính của 1
loại đối tựong nào đó, mục đích của Filter là để xác định 1 tập các đối tượng để thực
hiện các thao tác.
Filter được cài đặt tuân theo các đặc tả của XML Điều này sẽ rất thuận lợi, bởi
vì ngày nay đã có rất nhiều công cụ hỗ trợ đọc, ghi … XML. Ta có thể chuyển 1
Filter được cài đặt theo chuẩn XML thành 1 mệnh đề WHERE trong câu lệnh SQL
để thực hiện truy vấn dữ liệu từ cơ sở dữ liệu. Tương tự, 1 Filter được cài đặt theo
chuẩn XML sẽ có thể được chuyển sang các biểu thức XPath hoặc XPointer để lấy
dữ liệu từ 1 tài liệu XML.
4.2. Sử dụng Filter:
Filter có thể được sử dụng trong nhiều dịch vụ web khác nhau theo các chuẩn
của OGC , trong bài báo cáo này thì Filter được dùng để tạo ra các ràng buộc đối
với các Feature cần lấy về trong request GetFeature của WFS.
4.3. Đặc tả của Filter:
Thành phần gốc của 1 biếu thức Filter, tức là thành phần
bởi đoạn lược đồ XML sau đây:
Các thành phần
với các phép toán logic, phép toán không gian và phép toán so sánh. Ngoài ra, nếu
sử dụng thành phần
thể.
4.4. Các phép toán không gian (Spatial Operators)
4.4.1. Mục đích
Các phép toán không gian này được dùng để kiểm tra xem các tham số của nó có
thỏa mãn 1 mối quan hệ về mặt không gian nào đó hay không. Phép toán này có kết
quả là TRUE nếu như các tham số đó có quan hệ, ngược lại là FALSE.
4.4.2. Mô tả
Các phép toán không gian này được mô tả bằng đoạn lược đồ XML sau:
Một phép toán không gian được dùng để kiểm tra xem giữa 1 thuộc tính địa lý,
được chỉ ra bởi tên thuộc tính, và 1 đối tượng địa lý (1 hình chữ nhật hoặc 1 đa
giác…) có thỏa mãn mối quan hệ được chỉ ra bởi phép toán đó không. Chẳng hạn
có thể sử dụng phép toán
là Polygon (đa giác) có cắt 1 hình chữ nhật được chỉ ra trong tham số của phép toán
đó không.
Các phép toán Equals, Disjoint, Touches, Within, Overlaps, Crosses,
Contains cũng có ý nghĩa tương tự. Ta có thể suy ra từ nghĩa của các tên của các
phép toán này.
Thành phần BBOX chính là ràng buộc về hình chữ nhật bao. Nó tương đương
với phép toán
tượng địa lý có quan hệ cắt nhau với 1 hình chữ nhật xác định nào đó.
Các phép toán
tính có nằm trong 1 đối tượng địa lý hoặc là nằm cách đối tượng địa lý này 1
khoảng cách xác định được chỉ ra hay không. Khoảng cách này được chỉ ra bởi
thành phần
4.5. Các phép toán so sánh (Comparison operators)
4.5.1. Giới thiệu:
Các phép toán này được dùng để đánh giá phép so sánh về mặt toán học giữa 2
tham số. Nếu các tham số này thỏa điều kiện của phép so sánh này thì phép toán trả
về TRUE, ngược lại phép toán trả về FALSE.
4.5.2. Mô tả:
Dưới đây là đoạn lược đồ XML mô tả các phép toán so sánh này: