Tải bản đầy đủ (.pdf) (18 trang)

Web cho ứng dụng GIS và xây dựng ứng dụng minh họa khai thác dịch vụ - 8 pdf

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (892.31 KB, 18 trang )

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

xmlns:wfs=" />xmlns:xsi=" instance"
xsi:schemaLocation=" />../wfs/1.0.0/WFS-transaction.xsd">
<wfs:Update typeName="duong">
<wfs:Property>
<wfs:Name>NAME</wfs:Name>
<wfs:Value>Ngơ Gia Tự</wfs:Value>
</wfs:Property>
<ogc:Filter>
<ogc:FeatureId fid="duong.3"/>
</ogc:Filter>
</wfs:Update>
<wfs:Delete typeName=”quan”>
<ogc:Filter>
<ogc:FeatureId fid="quan.1"/>
</ogc:Filter>
</wfs:Delete>
</wfs:Transaction>

Mỗi XmlNode sẽ tương ứng với 1 tag trong chuỗi Xml, chẳng hạn tag
<wfs:Transaction> là 1 XmlNode.
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 <wfs:Transaction> có 2 node con là
<wfs:Update> và <wfs:Delete>. Node <wfs:Update> này chứa 2 node con
là <wfs:Property> và <ogc:Filter>.
Node <wfs:Update> và node <wfs:Delete> có 1 attribute là “typeName”.

116



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

Đọc dữ liệu từ chuỗi Xml này.
Trước hết, cần phải tạo 1 XmlDocument tương ứng với chuỗi này:
XmlDocument requestDocument = new XmlDocument();
requestDocument.LoadXml(sRequestXml);

Lấy node đầu tiên <wfs:Transaction>:
XmlNode first = requestDocument.FirstNode;

Lấy 2 node con <wfs:Update> và <wfs:Delete>:
XmlNodeList childs = first.ChildNodes;
XmlNode updateNode = childs[0];
XmlNode deleteNode = childs[1];

Lấy attribute “typeName” của node <wfs:Update>
string sUpdateTypeName = updateNode.Attributes[“typeName”];

Nếu như node khơng chứa attribute này thì hàm này trả về null.
Lấy giá trị của Node <wfs:Name>, sử dụng thuộc tính InnerXml của lớp
XmlNode
string Name = updateNode.FirstChild.FirstChild.InnerXml;

Lấy tên của Node <wfs:Update>, có cả phần NameSpace phía trước tên
node
string sNodeName = updateNode.Name;

Khi đó sNodeName = “wfs:Update”, trong đó “wfs” là NameSpace của Update”.
Lấy tên của Node <wfs:Update>, khơng lấy phần NameSpace phía trước

tên node
string sLocalNodeName = updateNode.LocalName;

Khi đó sLocalNodeName = “Update”.

117


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

Để lấy chuỗi Xml tương ứng với Node <wfs:Update>:
string xmlUpdate = updateNode.OuterXml;

Khi đó, chuỗi xmlUpdate sẽ có giá trị là:
<wfs:Update typeName="duong">
<wfs:Property>
<wfs:Name>NAME</wfs:Name>
<wfs:Value>Ngơ Gia Tự</wfs:Value>
</wfs:Property>
<ogc:Filter>
<ogc:FeatureId fid="duong.3"/>
</ogc:Filter>
</wfs:Update>

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

118


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
“Song” lấy từ csdl trả về cho client.

120


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
“YPageSit” lấy từ csdl trả về client.

121



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

.

WFS/WFS Operation

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

Classes/DescribeFeatureTypeSolution/Get OperationClasses/DescribeFeatureTyp
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

Classes/DescribeFeatureTypeSolution/Des DescribeFeatureType request, lấy về
mô tả của các loại Feature và tạo

cribeFeatureTypeSolution

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/GetFeatureSolution/GetParameter

số của GetFeature request .


Classes/AbstractHttp
WFS/WFS Operation

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

Classes/GetFeatureSolution/GetParameter

OperationClasses/GetFeatureSolution/

122


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.

WFS/WFS Operation

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

Classes/GetFeatureSolution/GetFeatureSo

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

lution

về các Feature được yêu cầu và tạo
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.

WFS/WFS Operation

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

Classes/LockFeatureSolution/GetParamet

OperationClasses/LockFeatureSolutio

erClasses/HttpPostRequest

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

123



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.

WFS/WFS Operation

Có chức năng nhận Transaction

Classes/TransactionSolution/OperationSol request với Operation là Delete, được
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

Classes/TransactionSolution/OperationSol request với Operation là Delete, được
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

Classes/TransactionSolution/OperationSol request với Operation là Update,
đượ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

Classes/TransactionSolution/OperationSol request với Operation là Insert, được
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

Classes/TransactionSolution/DataBaseAcc sở dữ liệu. Thực hiện thêm, xóa, sửa
các bảng trong csdl theo yêu cầu.

ess

124


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

Chương trình có 1 trang ASP.NET ở địa chỉ
http://localhost/OpenGISServer/VNesOpenGISServer.aspx


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.
Các file Xml lưu trữ các thông tin về server.
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.
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.
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
của DescribeFeatureType request

125


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
Chương trình OpenGISClient là 1 chương trình được cài đặt bằng C# ở dạng
Window Form.
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.
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 q 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 đó.
Các request mà OpenGISClient hỗ trợ gồm:
WFS:
• GetCapabilities
• DescribeFeatureType
• GetFeature
• LockFeature
• Transaction
WMS:
• GetCapabilities
• GetMap
Chương trình sử dụng bộ thư viện CarbonTools. Bộ thư viện này hỗ trợ thực
hiện request.

126


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



×