Chương 3. Web Feature Service (WFS)

use="optional"/>

use="required"/>

3.7.2.2. Mô tả các thuộc tính

Thuộc tính hadle dùng để gán một tên dễ nhớ cho thành phần tương ứng với nó.

Ngoài ra nó còn giúp cho việc báo lỗi đến ứng dụng client được dễ hiểu hơn. Khi lỗi

xảy ra, WFS sẽ dùng thuộc tính handle để định vị lỗi nhằm phát sinh ra biệt lệ một

cách chính xác. Nếu thuộc tính này không được xác định, WFS sẽ cố gắng thông

báo vị trí của biệt lệ tương ứng với lỗi trong request của Transaction dựa trên số

dòng hoặc một cơ chế nào khác.

Giả sử WFS có hỗ

trợ operation LockFeature và/hoặc operation

GetFeatureWithLock, thì thuộc tính releaseAction được dùng để điều khiển việc

giải phóng các feature đã khóa khi request của Transaction hoàn thành. Nếu thuộc

tính này có giá trị ALL thì chỉ ra rằng tất cả các khóa của các feature bị khóa với

định danh khóa sẽ được giải phóng khi giao tác chấm dứt, bất chấp

trong số các feature đang bị khóa vẫn còn có feature đang được truy cập. Nếu thuộc

tính này có giá trị SOME thì chỉ ra rằng chỉ những khóa của các feature có trong

request của Transaction sẽ được giải phóng, và khi đó, thuộc tính releaseAction

của thành phần hoặc sẽ được trả về giá

trị “0” sau khi kết thúc giao tác. Giá trị mặc định của releaseAction là ALL.

62

Chương 3. Web Feature Service (WFS)

3.7.2.3. Thành phần

Thành phần có thể không chứa hoặc chứa nhiều các thành phần

, , , chúng mô tả các thao tác thêm, cập nhật, xóa các

thể hiện của feature. Một thành phần trống vẫn hợp lệ song sẽ

không có ích.

Thành phần tùy chọn chỉ ra rằng giao tác sẽ thực hiện trên các thể

hiện feature đã được khóa nào. Nếu WFS không hỗ trợ khả năng khóa feature thì

thành phần sẽ bị bỏ qua. Nếu WFS có hỗ trợ khóa và có một định danh

khóa không hợp lệ thì WFS sẽ gửi ra một biệt lệ và giao tác sẽ chấm dứt.

Thành phần đã được định nghĩa ở mục “Các thành phần mở rộng”.

3.7.2.4. Thành phần

Thành phần được dùng để thêm mới các thể hiện của feature. Trong

một operation Transaction có thể có nhiều thành phần và với mỗi thành

phần có thể được dùng để tạo mới nhiều thể hiện của feature.

Trong response trả về cho giao tác , WFS sẽ trả về một danh sách các

định danh feature mới được gán cho các thể hiện của feature được thêm mới. Các

định danh feature được hiển thị theo đúng trình tự được thực hiện trong thành phần

của giao tác.

Ví dụ: Giao tác sau sẽ tạo mới hai thể hiện của kiểu feature INWATERA_1M.

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">

-98.54,24.26 ...

150

ABCDE

152

250

111

srsName="http://www.opengis.net/gml/srs/epsg.xml#4326">

-99.99,22.22 ...

gml:outerBoundaryIs>

111

64

Chương 3. Web Feature Service (WFS)

FGHIJ

222

333

444

3.7.2.5. Thành phần

Thành phần được dùng để cập nhật các thể hiện của feature. Trong

một operation Transaction có thể có nhiều thành phần và với mỗi thành

phần có thể được dùng để cập nhật nhiều thể hiện của feature.

Thành phần chứa một hoặc nhiều thành phần cho biết

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 trong thành phần chỉ ra tên

thuộc tính cần cập nhật. Thành phần tùy chọn chỉ ra giá trị cập nhật cho

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 ràng buộc bởi thành phần . 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

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">

POPULATION

4070000

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

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">

POPULATION_TYPE

CITY

66

Chương 3. Web Feature Service (WFS)

3.7.2.6. Thành phần

Thành phần dùng để chỉ ra rằng một hoặc nhiều thể hiện feature sẽ bị

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.

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)

Xóa một tập các thể hiện feature.

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">

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 được dùng để ràng buộc phạm vi của giao tác

va đa giác được biểu diễn bằng GML.

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">

WKB_GEOM

srsName="http://www.opengis.net/gml/srs/epsg.xml#4326">

-95.7,38.1 -97.8,38.2 ...

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.

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)

Thành phần có thể không chứa hoặc chứa nhiều

thành phần và chứa một thành phần .

Thành phần chứa một hoặc nhiều định danh feature mới được

thêm vào. Một thành phần tương ứng với 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 và có thể chứa thành phần

. Trong đó, thành phần mô tả trạng thái hoàn thành

của giao tác. Còn thành phần chỉ ra phần nào trong giao tác bị lỗi. Ngoài

ra còn thành phần dùng để báo các thông điệp lỗi.

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:

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)

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 dùng để yêu cầu WFS gửi tài liệu Capabilities

XML của nó. Request này được định nghĩa bằng đoạn lược đồ XML sau:

type="wfs:GetCapabilitiesType"/>

type="xsd:string" use="optional"/>

type="xsd:string" use="required" fixed="WFS"/>

Trong đó thuộc tính service đã được định nghĩa trong mục “Các thành phần

chung”.

72

Chương 3. Web Feature Service (WFS)

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ệ.

73

Chương 4. Bộ lọc (Filter)

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 , được mô tả

bởi đoạn lược đồ XML sau đây:

74

Chương 4. Bộ lọc (Filter)

Các thành phần , , và tương ứng

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ì 1 Filter có thể chỉ đến 1 hoặc 1 số đối tượng cụ

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:

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"/>

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 để kiểm tra xem 1 thuộc tính có kiểu dữ liệu

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.

77

Chương 4. Bộ lọc (Filter)

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 .. , nghĩa là nó xác định các đối

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 kiểm tra xem giá trị địa lý của 1 thuộc

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:

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"/>

79