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