Các lớp trong chương trình 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
Trang 1xmlns: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">
<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”
Trang 2 Đọ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”
Trang 3 Để 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
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
ctHTTPClass
Lớp trừu tượng, có tác dụng lấy các tham số mà client gửi lên trong request
Trang 4GetClass
Kế thừa từ lớp 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
PostClass
Kế thừa từ lớp 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
……
Trang 5WFS/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
Trang 6WFS/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
eature
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
“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
Trang 7WFS/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
Classes/DescribeFeatureTypeSolution/Get
ParameterClasses/AbstractHttp
Là 1 lớp ảo, có tác dụng lấy các tham
số của DescribeFeatureType request
WFS/WFS Operation
Classes/DescribeFeatureTypeSolution/Get
ParameterClasses/HttpGetRequest
Là lớp con của lớp WFS/WFS OperationClasses/DescribeFeatureTyp 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 GET WFS/WFS Operation
Classes/DescribeFeatureTypeSolution/Get
ParameterClasses/HttpPostRequest
Là lớp con của lớp WFS/WFS OperationClasses/DescribeFeatureTyp 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 WFS/WFS Operation
Classes/DescribeFeatureTypeSolution/Des
cribeFeatureTypeSolution
Có chức năng nhận 1
DescribeFeatureType request, lấy về
mô tả của các loại Feature và tạo chuỗi response bằng Xml
WFS/WFS Operation
Classes/GetFeatureSolution/GetParameter
Classes/AbstractHttp
Là 1 lớp ảo, có tác dụng lấy các tham
số của GetFeature request
WFS/WFS Operation
Classes/GetFeatureSolution/GetParameter
Là lớp con của lớp WFS/WFS OperationClasses/GetFeatureSolution/
Trang 8Classes/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
Classes/GetFeatureSolution/GetParameter
Classes/HttpPostRequest
Là lớp con của lớp WFS/WFS OperationClasses/GetFeatureSolution/
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
Classes/GetFeatureSolution/GetFeatureSo
lution
Có chức năng nhận 1 GetFeature
request, truy vấn cơ sở dữ liệu để lấy
về các Feature được yêu cầu và tạo chuỗi response bằng Xml
WFS/WFS Operation
Classes/LockFeatureSolution/GetParamet
erClasses/AbstractHttp
Là 1 lớp ảo, có tác dụng lấy các tham
số của LockFeature request
WFS/WFS Operation
Classes/LockFeatureSolution/GetParamet
erClasses/HttpGetRequest
Là lớp con của lớp WFS/WFS OperationClasses/LockFeatureSolutio 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
Classes/LockFeatureSolution/GetParamet
erClasses/HttpPostRequest
Là lớp con của lớp WFS/WFS OperationClasses/LockFeatureSolutio 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
Trang 9WFS/WFS Operation
Classes/LockFeatureSolution/LockFeature
Solution
Có chức năng nhận 1 LockFeature
request, khóa các Feature theo yêu cầu
và tạo chuỗi response bằng Xml WFS/WFS Operation
Classes/LockFeatureSolution/DataBaseAc
cess
Gồm các hàm thực hiện các thao tác trên cơ sở dữ liệu liên quan tới chức năng khóa và mở khóa các Feature WFS/WFS Operation
Classes/TransactionSolution/OperationSol
ution/HTTPGETDelete
Có chức năng nhận Transaction
request với Operation là Delete, được
gởi lên bằng giao thức HTTP GET, thực hiện xóa các Feature theo yêu cầu và tạo response tương ứng
WFS/WFS Operation
Classes/TransactionSolution/OperationSol
ution/HTTPPOSTDelete
Có chức năng nhận Transaction
request với Operation là Delete, được
gởi lên bằng HTTP POST, thực hiện xóa các Feature theo yêu cầu và tạo response tương ứng
WFS/WFS Operation
Classes/TransactionSolution/OperationSol
ution/HTTPPOSTUpdate
Có chức năng nhận Transaction
request với Operation là Update,
được gởi lên bằng HTTP POST, thực hiện việc cập nhật các Feature theo yêu cầu và tạo response tương ứng WFS/WFS Operation
Classes/TransactionSolution/OperationSol
ution/HTTPPOSTInsert
Có chức năng nhận Transaction
request với Operation là Insert, được
gởi lên bằng HTTP POST, thực hiện việc thêm các Feature theo yêu cầu và tạo response tương ứng
WFS/WFS Operation
Classes/TransactionSolution/DataBaseAcc
ess
Gồm các hàm dùng để thao tác trên cơ
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
Trang 10WFS/WFS Operation
Classes/TransactionSolution/TransactionS
olution
Có chức năng nhận 1 Transaction request, thực hiện yêu cầu transaction tương ứng và trả về chuỗi response bằng Xml
WFS/WFS Operation
Classes/GetCapabilitiesSolution
Có chức năng nhận 1 GetCapabilities 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
Classes/FeatureRequest
Chứa 1 loại Feature cần truy vấn và 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
Trang 11Chươ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 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 đó
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
Trang 127.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
Trang 137.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
Trang 147.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
Trang 157.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
Trang 167.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
Trang 177.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
Trang 187.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