Hình 4.10. Mơ tả Geoserver
dinhDau, toaDo1, dinhCuoi, toaDo2 Câu lệnh yêu cầu tìm đường
Client
Server
Kết quả: Danh sách các tọa độ
“Service tìm đường” MS SQL Server Tập tin hình học (shape file) *.frm *.myd, *.myi MySQL Server 4.1 Geoserver 1.3
164
Geoserver đĩng vai trị là server chuyên cung cấp dữ liệu. Ứng dụng sử dụng bốn lớp dữ liệu là: đường, bách hĩa tổng hợp, bệnh viện, trường học. Trong các lớp trên, lớp đường được lấy từ dữ liệu của MySQL. Các lớp cịn lại được lấy từ
shapefile.
Hiện nay ứng dụng sử dụng hai nguồn dữ liệu là shape file và MySQL. Đối với shape file thì chỉ cần nạp tập tin .shp vào. Đối với MySQL thì phải nạp tập tin dữ liệu vào MySQL, sau đĩ kết nối MySQL với Geoserver.
Hình 4.11. Kết xuất của Geoserver
Các tập tin dữ liệu .gml được Geoserver phát sinh sẽ được server “Bản đồ ASPX” chuyển sang tập tin .svg.
Ứng dụng sử dụng phương thức HTTP POST và tác vụ GetFeatureType.
4.8.2.3.1 Phương thức HTTP POST
Sử dụng phương thức HTTP POST sẽ yêu cầu client chuyển các yêu cầu trong phần thân tài liệu POST vào trong dịng URL. Khi này WFS khơng bao giờ được phép yêu cầu thêm bất cứ tham số phụ nào để bổ sung vào cuối dịng URL nhằm mục đích xây dựng một kết quả hợp lệ cho yêu cầu tác vụ.
Geoserver hỗ trợ cả hai phương thức HTTP GET và HTTP POST. Sử dụng phương thức nào cũng cho kết quả như nhau. Tuy nhiên, ứng dụng cĩ sử dụng gĩi
Geoserver 1.3 Tập tin GML Bản đồ ASPX
Chuyển đổi dữ liệu sang SVG
Tập tin SVG
165
CarbonTools giao tiếp với Geoserver, mà một lớp trong cơng cụ này (lớp HandlerWFS) chỉ hỗ trợ phương thức HTTP POST. Do đĩ, luận văn sử dụng phương thức HTTP POST để cài đặt. Từđĩ, phần báo cáo chỉ đề cập HTTP POST, cịn phần mơ tả chi tiết nằm ngồi phạm vi nghiên cứu. (xin xem thêm tập tin “04- 094_Web_Feature_Service_Implementation_Specification_V1[1].1.pdf”, phần HTTP POST trong thư mục Ref\ThamKhaoChinh\GIS)
4.8.2.3.2 Tác vụ GetFeatureType
Tác vụ GetFeature cho phép nhận về các tính năng từ một WFS. Một yêu cầu GetFeature được xử lý bởi một WFS. Khi giá trị của thuộc tính outputFormat được thiết lập là text/gml; subtype=gml/3.1.1, một tài liệu GML chứa kết quả sẽđược trả
về cho trình khách (client).
Nếu một WFS cài đặt “Xlink traversal” (tạm dịch là bộ phân tích liên kết), thì một WFS client cĩ thể dùng thuộc tính traverseXlinkDepth và traverseXlinkExpiry
để yêu cầu các thành phần được định danh bằng một liên kết. Yêu cầu: (Request)
Mã hĩa dạng XML của một yêu cầu GetFeature được định nghĩa theo giản đồ
phân đoạn XML sau:
<xsd:element name="GetFeature" type="wfs:GetFeatureType"/> <xsd:complexType name="GetFeatureType">
<xsd:complexContent>
<xsd:extension base="wfs:BaseRequestType"> <xsd:sequence>
<xsd:element ref="wfs:Query" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attribute name="resultType" type="wfs:ResultTypeType" use="optional" default="results"/> <xsd:attribute name="outputFormat" type="xsd:string" use="optional" default="text/xml; subtype=3.1.1"/> <xsd:attribute name="maxFeatures" type="xsd:positiveInteger" use="optional"/>
166 <xsd:attribute name="traverseXlinkDepth" type="xsd:string" use="optional"/> <xsd:attribute name="traverseXlinkExpiry" type="xsd:positiveInteger" use="optional"/> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:simpleType name="ResultTypeType"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="results"/> <xsd:enumeration value="hits"/> </xsd:restriction> </xsd:simpleType>
<xsd:element name="Query" type="wfs:QueryType"/> <xsd:complexType name="QueryType">
<xsd:sequence>
<xsd:choice minOccurs="0" maxOccurs="unbounded"> <xsd:element ref="wfs:PropertyName"/>
<xsd:element ref="ogc:Function"/> </xsd:choice>
<xsd:element ref="ogc:Filter" minOccurs="0" maxOccurs="1"/> <xsd:element ref="ogc:SortBy" minOccurs="0" maxOccurs="1"/> </xsd:sequence> <xsd:attribute name="handle" type="xsd:string" use="optional"/> <xsd:attribute name="typeName" type="wfs:TypeNameListType" use="required"/> <xsd:attribute name="featureVersion" type="xsd:string" use="optional"/>
<xsd:attribute name="srsName" type="xsd:anyURI" use="optional"/> </xsd:complexType> <xsd:simpleType name="Base_TypeNameListType"> <xsd:list itemType="QName"/> </xsd:simpleType> <xsd:simpleType name="TypeNameListType"> <xsd:restriction base="wfs:Base_TypeNameListType"> <xsd:pattern value="((\w:)?\w(=\w)?){1,}"/> </xsd:restriction> </xsd:simpleType>
167
4.8.2.3.3 CarbonTools: cơng cụ hỗ trợ kèm theo Geoserver
CarbonTools là một cơng cụ phát triển phần mềm được thiết kế dành riêng cho nhà phát triển và phân tích thơng tin địa lý. Cơng cụ này đĩng gĩi các giải pháp tương tác thuộc về khơng gian địa lý như các đặc tả của OGC (Open Geospatial Consortium). CarbonTools là một sản phẩm của nhiều năm kinh nghiệm, cơng cụ
này giải quyết nhiều vấn đề và đưa ra một giao diện lập trình ứng dụng (API).
Gĩi CarbonTools được thiết kế cho phép mở rộng. Thư viện cốt lõi cung cấp một nền mở cho phép mở rộng hỗ trợ cho các nguồn dữ liệu khơng gian địa lý mới, các bộ quản lý dịch vụ và nhiều kĩ thuật trực quan mới, …. Hơn thế nữa, một lượng lớn các giải pháp cĩ thể được cung cấp khi sử dụng CarbonTools: các ứng dụng desktop độc lập, các mở rộng phần mềm của phía thứ ba, các dịch vụ Web .Net và nhiều hơn thế nữa.
Các cơng cụ CarbonTools .Net, kèm theo bộ cung cụ này, cung cấp một mở
rộng cho các cơng cụ .Net Form. Điều này làm cho các tác vụ WMS/WFS/GML phức tạp cĩ thể được thực hiện bằng cách kéo thả các thành phần vào Form. Các
điều khiển này cung cấp một khởi điểm tốt để phát triển các ứng dụng thỏa OGC.
Để giúp đỡ nhà phát triển, một số tiện ích được kèm theo gĩi này cùng với mã nguồn đầy đủ. Trong sốđĩ là CarbonViewer, một bộ hiển thị WMS/WFS/GML độc lập.
CarbonTools gồm cĩ 9 gĩi riêng rẽ:
• CarbonTools.Controls : Chứa các điều khiển hỗ trợ lập trình giao diện
• CarbonTools.Core.Base : Chứa các lớp cơ sở. • CarbonTools.Core.Drawing : Chứa các lớp hỗ trợ vẽ hình. • CarbonTools.Core.Features : Chứa các lớp dùng cho quản lý dữ liệu địa lý … • CarbonTools.Core.Geometries: Chứa các lớp về đối tượng hình học như đường thẳng, đa giác….
168
• CarbonTools.Core.OGCCapabilities : Chứa các lớp hỗ trợ phân tích khả
năng của một WFS hay WMS.
• CarbonTools.Core.WFS : Chứa các lớp hỗ trợ giao tiếp, gởi các yêu cầu WFS tới WFS server.
• CarbonTools.Core.WMS: Chứa các lớp hỗ trợ giao tiếp, gởi các yêu cấu WMS tới WFS server
Trong các gĩi trên, gĩi được sử dụng chính trong chương trình phát sinh bản
đồ SVG là CarbonTools.Core.WFS, các lớp trong gĩi này là:
Class Description
HandlerWFS Quản lý tương tác với một WFS thỏa đặc tả của OGC
QueryBuilder Chuyển dữ liệu nguồn (SourceWFS) thành một câu truy vấn dịch vụ thỏa đặc tả WFS của OGC
SourceWFS Quản lý dữ liệu truy cập và truy vấn đối với một dịch vụ WFS thỏa đặc tả WFS của OGC. Dữ liệu quản lý bao gồm :
• Address (Một dịnh danh tài nguyên cho dịch vụ)
• BBox (Đường bao của vùng địa lý)
• FilterProperty (Tên thuộc tính chứa hình học mà đường bao sẽ được áp dụng)
169
Tên cột Kiểu dữ liệu Chiều dài Cho phép rỗng
Id Số nguyên 4 khơng Name Chuỗi 255 Cĩ daiLo Số nguyên 4 Cĩ yêu cầu) • Layers (các lớp dữ liệu) • Maxfeature (Số tính năng tối đa cần lấy) ….
WFSLayerType Kiểu và tên lớp được dùng trong câu truy vấn
Ta sẽ dùng SourceWFS để lưu trữ các thơng tin về một yêu cầu GetFeature.
Đồng thời dùng HandlerWFS để gửi yêu cầu đi và nhận dữ liệu trả về từ WFS server, sau đĩ xử lý và tạo nội dung SVG .