Chương 6. Cài đặt chương trình OpenGISServer

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

NAME

Ngô Gia Tự

(cid:153) Mỗi XmlNode sẽ tương ứng với 1 tag trong chuỗi Xml, chẳng hạn tag

là 1 XmlNode.

(cid:153) Mỗi XmlNode có chứa nhiều XmlNode con, và có thể chứa các Attributes

của node đó.

Chẳng hạn, trong ví dụ trên thì node có 2 node con là

. Node này chứa 2 node con

.

116

Node và node có 1 attribute là “typeName”.

Chương 6. Cài đặt chương trình OpenGISServer

(cid:153) Đọc dữ liệu từ chuỗi Xml này.

XmlDocument requestDocument = new XmlDocument();

requestDocument.LoadXml(sRequestXml);

(cid:131) Trước hết, cần phải tạo 1 XmlDocument tương ứng với chuỗi này:

XmlNode first = requestDocument.FirstNode;

(cid:131) Lấy node đầu tiên :

XmlNodeList childs = first.ChildNodes;

XmlNode updateNode = childs[0];

XmlNode deleteNode = childs[1];

(cid:131) Lấy 2 node con :

string sUpdateTypeName = updateNode.Attributes[“typeName”];

(cid:131) Lấy attribute “typeName” của node

(cid:131) Nếu như node không chứa attribute này thì hàm này trả về null.

(cid:131) Lấy giá trị của Node , sử dụng thuộc tính InnerXml của lớp

string Name = updateNode.FirstChild.FirstChild.InnerXml;

XmlNode

(cid:131) Lấy tên của Node , có cả phần NameSpace phía trước tên

string sNodeName = updateNode.Name;

node

Khi đó sNodeName = “wfs:Update”, trong đó “wfs” là NameSpace của Update”.

(cid:131) Lấy tên của Node , không lấy phần NameSpace phía trước

string sLocalNodeName = updateNode.LocalName;

tên node

117

Khi đó sLocalNodeName = “Update”.

Chương 6. Cài đặt chương trình OpenGISServer

string xmlUpdate = updateNode.OuterXml;

(cid:131) Để lấy chuỗi Xml tương ứng với Node :

NAME

Ngô Gia Tự

Khi đó, chuỗi xmlUpdate sẽ có giá trị là:

6.5. Các lớp trong chương trình

Tên lớp Mô tả

Others/ExceptionBuilder Xây dựng chuỗi XML dùng để báo

các lỗi về cho client khi có lỗi trong

request

Other/OtherTasks Chứa tên các FeatureType trong

chương trình

Chức các thuộc tính của các

FeatureType

Chứa các hàm thực hiện những tác vụ

phụ trong chương trình

WFS/CheckBasicParameterClasses/Abstra Lớp trừu tượng, có tác dụng lấy các

ctHTTPClass tham số mà client gửi lên trong

118

request.

Chương 6. Cài đặt chương trình OpenGISServer

WFS/CheckBasicParameterClasses/HTTP

Kế thừa từ lớp

GetClass CheckBasicParameterClasses/Abstrac

tHTTPClass, có tác dụng lấy các tham

số mà client gửi lên trong 1 HTTP

GET request

WFS/CheckBasicParameterClasses/HTTP Kế thừa từ lớp

PostClass CheckBasicParameterClasses/Abstrac

tHTTPClass, có tác dụng lấy các tham

số mà client gửi lên trong 1 HTTP

POST request

WFS/FeatureClass/AbstractFeature Là 1 lớp abstract, gồm các hàm dùng

để thực hiện các tác vụ liên quan đến

các FeatureType trên Server, chẳng

hạn như:

Đọc từ cơ sở dữ liệu để lấy về các

Feature thỏa 1 số điều kiện nào đó

Tạo ra chuỗi Xml mô tả các Feature

để trả về cho client (chức năng này

được cài đặt cụ thể ở các lớp con của

nó).

Lấy các thuộc tính của Feature

119

……

Chương 6. Cài đặt chương trình OpenGISServer

WFS/FeatureClass/DistrictFeature

Kế thừa từ lớp

WFS/FeatureClass/AbstractFeature.

Có chức năng thực hiện các thao tác

trên loại Feature “Quan”:

Lấy các thuộc tính của loại Feature

“Quan”.

Tạo chuỗi Xml mô tả với các Feature

“Quan” lấy được từ cơ sở dữ liệu để

trả về cho client

WFS/FeatureClass/PlaceFeature Kế thừa từ lớp

WFS/FeatureClass/AbstractFeature.

Có chức năng thực hiện các thao tác

trên các Feature thuộc loại Feature

“nơi chốn”

Lấy các thuộc tính của loại Feature

“noi chon”.

Tạo chuỗi Xml mô tả với các Feature

“noi chon” lấy được từ cơ sở dữ liệu

để trả về cho client

WFS/FeatureClass/RiverFeature Kế thừa từ lớp

WFS/FeatureClass/AbstractFeature.

Có chức năng thực hiện các thao tác

trên các Feature thuộc loại Feature

“Song”

Lấy các thuộc tính của loại Feature

“Song”.

Tạo chuỗi Xml mô tả với các Feature

120

“Song” lấy từ csdl trả về cho client.

Chương 6. Cài đặt chương trình OpenGISServer

WFS/FeatureClass/RoadFeature Kế thừa từ lớp

WFS/FeatureClass/AbstractFeature.

Có chức năng thực hiện các thao tác

trên các Feature thuộc loại Feature

“Duong”

Lấy các thuộc tính của loại Feature

“Duong”.

Tạo chuỗi Xml mô tả với các Feature

“Duong” lấy được từ cơ sở dữ liệu để

trả về cho client

WFS/FeatureClass/UniversityEnrollmentF Kế thừa từ lớp

eature WFS/FeatureClass/AbstractFeature.

Có chức năng thực hiện các thao tác

trên các Feature thuộc loại Feature

“UBNDQuan”

Lấy các thuộc tính của loại Feature

“UBNDQuan”.

Tạo chuỗi Xml mô tả với các Feature

“UBNDQuan” lấy được từ cơ sở dữ

liệu để trả về cho client

WFS/FeatureClass/YPageSitFeature Kế thừa từ lớp

WFS/FeatureClass/AbstractFeature.

Có chức năng thực hiện các thao tác

trên các Feature thuộc loại Feature

“YPageSit”

Lấy các thuộc tính của loại Feature

“YPageSit”.

Tạo chuỗi Xml mô tả với các Feature

121

“YPageSit” lấy từ csdl trả về client.

Chương 6. Cài đặt chương trình OpenGISServer

WFS/FilterClasses/FilterSolution Có chức năng tạo ra chuỗi query dùng

để truy vấn cơ sở dữ liệu từ đối tượng

XmlDocument mô tả chuỗi Filter.

WFS/WFS Operation Là 1 lớp ảo, có tác dụng lấy các tham

Classes/DescribeFeatureTypeSolution/Get số của DescribeFeatureType request

ParameterClasses/AbstractHttp .

Là lớp con của lớp WFS/WFS WFS/WFS Operation

OperationClasses/DescribeFeatureTyp Classes/DescribeFeatureTypeSolution/Get

eSolution/GetParameterClasses/Abstr ParameterClasses/HttpGetRequest

actHttp.

Có tác dụng lấy các tham số của

DescribeFeatureType request được

gởi lên bằng giao thức HTTP GET.

WFS/WFS Operation Là lớp con của lớp WFS/WFS

Classes/DescribeFeatureTypeSolution/Get OperationClasses/DescribeFeatureTyp

ParameterClasses/HttpPostRequest eSolution/GetParameterClasses/Abstr

actHttp.

Có tác dụng lấy các tham số của

DescribeFeatureType request được

gởi lên bằng giao thức HTTP POST.

Có chức năng nhận 1 WFS/WFS Operation

DescribeFeatureType request, lấy về Classes/DescribeFeatureTypeSolution/Des

mô tả của các loại Feature và tạo cribeFeatureTypeSolution

chuỗi response bằng Xml.

Là 1 lớp ảo, có tác dụng lấy các tham WFS/WFS Operation

số của GetFeature request . Classes/GetFeatureSolution/GetParameter

Classes/AbstractHttp

WFS/WFS Operation Là lớp con của lớp WFS/WFS

122

Classes/GetFeatureSolution/GetParameter OperationClasses/GetFeatureSolution/

Chương 6. Cài đặt chương trình OpenGISServer

Classes/HttpGetRequest GetParameterClasses/AbstractHttp.

Có tác dụng lấy các tham số của

GetFeature request được gởi lên

bằng giao thức HTTP GET.

WFS/WFS Operation Là lớp con của lớp WFS/WFS

Classes/GetFeatureSolution/GetParameter OperationClasses/GetFeatureSolution/

Classes/HttpPostRequest GetParameterClasses/AbstractHttp.

Có tác dụng lấy các tham số của

GetFeature request được gởi lên

bằng giao thức HTTP POST.

Có chức năng nhận 1 GetFeature WFS/WFS Operation

request, truy vấn cơ sở dữ liệu để lấy Classes/GetFeatureSolution/GetFeatureSo

về các Feature được yêu cầu và tạo lution

chuỗi response bằng Xml.

WFS/WFS Operation Là 1 lớp ảo, có tác dụng lấy các tham

Classes/LockFeatureSolution/GetParamet số của LockFeature request .

erClasses/AbstractHttp

WFS/WFS Operation Là lớp con của lớp WFS/WFS

Classes/LockFeatureSolution/GetParamet OperationClasses/LockFeatureSolutio

erClasses/HttpGetRequest n/GetParameterClasses/AbstractHttp.

Có tác dụng lấy các tham số của

LockFeature request được gởi lên

bằng giao thức HTTP GET.

Là lớp con của lớp WFS/WFS WFS/WFS Operation

OperationClasses/LockFeatureSolutio Classes/LockFeatureSolution/GetParamet

n/GetParameterClasses/AbstractHttp. erClasses/HttpPostRequest

Có tác dụng lấy các tham số của

LockFeature request được gởi lên

123

bằng giao thức HTTP POST.

Chương 6. Cài đặt chương trình OpenGISServer

WFS/WFS Operation Có chức năng nhận 1 LockFeature

Classes/LockFeatureSolution/LockFeature request, khóa các Feature theo yêu cầu

Solution và tạo chuỗi response bằng Xml.

WFS/WFS Operation Gồm các hàm thực hiện các thao tác

Classes/LockFeatureSolution/DataBaseAc trên cơ sở dữ liệu liên quan tới chức

cess năng khóa và mở khóa các Feature.

Có chức năng nhận Transaction WFS/WFS Operation

request với Operation là Delete, được Classes/TransactionSolution/OperationSol

gởi lên bằng giao thức HTTP GET, ution/HTTPGETDelete

thực hiện xóa các Feature theo yêu

cầu và tạo response tương ứng.

Có chức năng nhận Transaction WFS/WFS Operation

request với Operation là Delete, được Classes/TransactionSolution/OperationSol

gởi lên bằng HTTP POST, thực hiện ution/HTTPPOSTDelete

xóa các Feature theo yêu cầu và tạo

response tương ứng

Có chức năng nhận Transaction WFS/WFS Operation

request với Operation là Update, Classes/TransactionSolution/OperationSol

được gởi lên bằng HTTP POST, thực ution/HTTPPOSTUpdate

hiện việc cập nhật các Feature theo

yêu cầu và tạo response tương ứng

Có chức năng nhận Transaction WFS/WFS Operation

request với Operation là Insert, được Classes/TransactionSolution/OperationSol

gởi lên bằng HTTP POST, thực hiện ution/HTTPPOSTInsert

việc thêm các Feature theo yêu cầu và

tạo response tương ứng.

Gồm các hàm dùng để thao tác trên cơ WFS/WFS Operation

sở dữ liệu. Thực hiện thêm, xóa, sửa Classes/TransactionSolution/DataBaseAcc

124

các bảng trong csdl theo yêu cầu. ess

Chương 6. Cài đặt chương trình OpenGISServer

WFS/WFS Operation Có chức năng nhận 1 Transaction

Classes/TransactionSolution/TransactionS request, thực hiện yêu cầu transaction

olution tương ứng và trả về chuỗi response

bằng Xml.

WFS/WFS Operation Có chức năng nhận 1 GetCapabilities

Classes/GetCapabilitiesSolution request, lấy thông tin về các khả năng

của server và trả về chuỗi response

bằng Xml.

WFS/WFS Operation Chứa 1 loại Feature cần truy vấn và

Classes/FeatureRequest các điều kiện truy vấn đối với lớp đó.

WFS/WFSSolution Nhận 1 WFS request, xác định loại

request cụ thể và gọi lớp tương ứng để

thực hiện request này

Bảng 6.8.Các lớp trong chương trình

http://localhost/OpenGISServer/VNesOpenGISServer.aspx

(cid:153) Chương trình có 1 trang ASP.NET ở địa chỉ

Trang này sẽ trực tiếp nhận các request từ client, thực hiện 1 số kiểm tra để đảm

bảo tính hợp lệ của request, xác định loại request là WFS hay WMS và gọi lớp

tương ứng để đáp ứng request.

(cid:153) Các file Xml lưu trữ các thông tin về server.

(cid:131) File XmlFiles/WFS_Capabilities.xml: File này chứa nội dung của tài liệu

Xml dùng làm response cho request GetCapabilities.

(cid:131) File XmlFiles/ExceptionFrame.xml: File này chứa phần khung nội dung

của chuỗi Xml dùng làm response khi request có lỗi.

(cid:131) Các file trong thư mục WFS/FeatureTypeFiles: đây là các file chứa các tài

liệu xml dùng để mô tả các loại Feature. Các file này hỗ trợ cho response

125

của DescribeFeatureType request

Chương 7. Cài đặt các chương trình client

Chương 7. Cài đặt các chương trình client

7.1. Cài đặt chương trình OpenGisClientDemo

7.1.1. Giới thiệu

7.1.1.1. Tính năng

(cid:153) Chương trình OpenGISClient là 1 chương trình được cài đặt bằng C# ở dạng

Window Form.

(cid:153) Chức năng của chương trình là minh họa 1 cách cụ thể, rõ ràng việc thực

hiện các request WFS và WMS lên các server hỗ trợ WFS và WMS.

(cid:153) Chương trình lưu 1 danh sách các server hỗ trợ WFS và WMS, có thể thêm

các server mới. Trong quá trình thực hiện request, ta có thể chọn bất kì

server nào để gởi request và nhận kết quả từ server đó.

(cid:153) Các request mà OpenGISClient hỗ trợ gồm:

(cid:131) WFS:

• GetCapabilities

• DescribeFeatureType

• GetFeature

• LockFeature

• Transaction

(cid:131) WMS:

• GetCapabilities

• GetMap

(cid:153) Chương trình sử dụng bộ thư viện CarbonTools. Bộ thư viện này hỗ trợ thực

126

hiện request.

Chương 7. Cài đặt các chương trình client

7.1.1.2. Màn hình giao diện

7.1.1.2.1. Màn hình chính

Hình 7.1. Màn hình chính

127

Chương 7. Cài đặt các chương trình client

7.1.1.2.2. Màn hình minh họa thực hiện request WFS - GetCapabilities

Hình 7.2.Màn hình minh họa thực hiện request WFS – GetCapabilities

128

Chương 7. Cài đặt các chương trình client

7.1.1.2.3. Màn hình minh họa thực hiện request WFS – DescribeFeatureType.

Hình 7.3.Màn hình minh họa thực hiện request WFS – DescribeFeatureType

129

Chương 7. Cài đặt các chương trình client

7.1.1.2.4. Màn hình minh họa thực hiện request WFS – GetFeature

Hình 7.4.Màn hình minh họa thực hiện request WFS – GetFeature

130

Chương 7. Cài đặt các chương trình client

7.1.1.2.5. Màn hình minh họa thực hiện request WFS – GetFeature

Hình 7.5.Màn hình minh họa thực hiện request WFS – GetFeature

131

Chương 7. Cài đặt các chương trình client

7.1.1.2.6. Màn hình minh họa thực hiện request WFS – Transaction

Hình 7.6.Màn hình minh họa thực hiện request WFS – Transaction

132

Chương 7. Cài đặt các chương trình client

7.1.1.2.7. Màn hình minh họa thực hiện request WMS – GetCapabilities

Hình 7.7.Màn hình minh họa thực hiện request WMS – GetCapabilities

133