1. Trang chủ
  2. » Giáo Dục - Đào Tạo

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

18 204 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Cấu trúc

  • Mô tả cụ thể về các lớp này

  • Định dạng dữ liệu không gian trong MySQL

    • Định dạng Well-Known Text (WKT)

    • Định dạng Well-Known Binary (WKB)

  • Tạo 1 cơ sở dữ liệu trong MySQL dùng cho dữ liệu không gian

    • Các kiểu dữ liệu không gian trong MySQL:

    • Tạo các giá trị không gian

      • Tạo các giá trị địa lý bằng các hàm của WKT

      • Tạo đối tượng địa lý sử dụng các hàm của WKB

    • Tạo các cột lưu dữ liệu không gian

    • Thêm dữ liệu vào các cột lưu trữ thông tin không gian

    • Lấy dữ liệu không gian

    • Phân tích thông tin không gian

      • Các hàm dùng để chuyển đổi kiểu định dạng của đối tượng địa

      • Các hàm địa lý

      • Các hàm của lớp Point

      • Các hàm của lớp LineString

      • Các hàm của lớp MultiLineString

      • Các hàm của lớp Polygon

      • Các hàm của đối tượng MultiPolygon

      • Các hàm của lớp GeometryCollection

    • Các hàm dùng để tạo ra các đối tượng mới từ những đối tượng

      • Các hàm kiểm tra mối quan hệ giữa các đối tượng

  • Kết nối với MySQL trong .NET

Nội dung

Chương CarbonTools 5.2.2.3 Lớp CarbonTools.Core.WFS.HandlerWFS Các thuộc tính STT Kiểu liệu Ý nghĩa Data CarbonTools.Core.Features Dữ liệu lấy từ DataFeatures Tên thuộc tính server sau thực request Synchronous CarbonTools.Core.WFS.Source Thông tin request WFS Source cần gởi lên server boolean Cho biết request thực theo kiểu đồng hay không đồng OperationDone EventHandler Đây delegate có tác dụng thơng báo mà q trình nhận liệu không đồng thực xong ProgressChang EventHandler ed Đây delegate, có tác dụng thơng báo tình trạng tiến trình nhận liệu khơng đồng Bảng 5.6 Các thuộc tính CarbonTools.Core.WFS.HandlerWFS Phương thức GetFeature(): Gởi request lên server với thông tin chứa Source lấy kết về, lưu Data 98 Chương CarbonTools Ví dụ thực GetFeature request //Thiết lập thông tin cho request SourceWFS source = new SourceWFS(); source.Address = “http://localhost/OpenGISServer/VNesOpenGISServer.aspx”; source.Layers.Add(new WFSLayerType(“quan”)); source.Layers.Add(new WFSLayerType(“duong”)); //Thực gởi request phương pháp không đồng //bộ HandlerWFS handlerWFS = new HandlerWFS( source); handlerWFS.ProgressChanged += new EventHandler(handler_ProgressChanged); handlerWFS.OperationDone += new EventHandler(handlerWFS_OperationDone); handlerWFS.Synchronous = false; handlerWFS.GetFeature(); //Lấy kết trả LayerItemCollection collection = handlerWFS.Data.Features; //Duyệt qua danh sách Feature foreach (Item item in items) { string sName = item.Name; if (item is ItemElement) { //Nếu thuộc tính bình thường if (((ItemElement)item).Value != null) string sValue =((ItemElement)item).Value; else if (item is ItemMember) {} //Nếu thuộc tính địa lý (tức kiểu //Point, LineString…) else if (item is ItemGeometry) { 99 Chương CarbonTools //Nếu thuộc tính Point if (((ItemGeometry)(item)).GeometryObject is CarbonTools.Core.Geometries.Point) { CarbonTools.Core.Geometries.Point point = (CarbonTools.Core.Geometries.Point) ((ItemGeometry) (Item)).GeometryObject; string sX = point.X; if (point.Y != Double.MaxValue) string sY = point.Y; if (point.Z != Double.MaxValue) string sZ = point.Z; } //Nếu thuộc tính LineString else if (((ItemGeometry)(item)).GeometryObject is CarbonTools.Core.Geometries.LineString) { } //Nếu thuộc tính Polygon else if (((ItemGeometry)(item)).GeometryObject is CarbonTools.Core.Geometries.Polygon) { System.Collections.CollectionBase coll = ((CarbonTools.Core.Geometries.Polygon) ((ItemGeometry)(item)).GeometryObject) Interior as System.Collections.CollectionBase; if (coll.Count > 0) 100 Chương CarbonTools } //Nếu thuộc tính Collection else if (((ItemGeometry)(item)).GeometryObject is System.Collections.CollectionBase) { System.Collections.CollectionBase coll = (System.Collections.CollectionBase) ((ItemGeometry)(item)).GeometryObject; //Nếu PointCollection if(((ItemGeometry)item)).GeometryObject is CarbonTools.Core.Geometries.PointCollection) {} //Nếu LineStringCollection else if (((ItemGeometry)(item)).GeometryObject is CarbonTools.Core.Geometries LineStringCollection) { } //Nếu thuộc tính PolygonCollection elseif (((ItemGeometry)(item)).GeometryObject is CarbonTools.Core.Geometries.PolygonCollection) } else if (((ItemGeometry)(item)).GeometryObject is CarbonTools.Core.Geometries.Envelope) 101 Chương CarbonTools { } if (item.Attributes.Count > 0) { IEnumerator enumerator = item.Attributes.GetEnumerator(); while (enumerator.MoveNext()) { ItemElement elem = enumerator.Current as ItemElement; string sName = elem.Name; string sValue = elem.Value; } } } } 5.3 Dùng CarbonTools gởi GetMap request Để thực gởi GetMap request ta cần sử dụng lớp quan trọng sau: HandlerWMS, DataRaster, SourceWMS 5.3.1 Lớp CarbonTools.Core.WMS.SourceWMS Lớp chứa thông tin cần thiết để thực GetMap request Các thuộc tính lớp 102 Chương CarbonTools STT Tên thuộc Kiểu liệu Ý nghĩa tính Version string Phiên WMS mà server cài đặt Address System.Uri Địa gởi request BBox CarbonTools.Core Vùng hình chữ nhật cần lấy hình ảnh BoundingBox BgColor Color Màu ảnh cần lấy Format string Định dạng ảnh cần lấy Height int Chiều cao ảnh Width int Chiều rộng ảnh Transparent Bool Cho biết ảnh trả có transparent không Layers Chứa danh sách Layer cần lấy ArrayList Bảng 5.7 Các thuộc tính CarbonTools.Core.WMS.SourceWMS 5.3.2 Lớp CarbonTools.Core.Base.DataRaster Lớp chứa hình ảnh server gởi Các thuộc tính STT Tên thuộc tính Kiểu liệu Ý nghĩa Map Chứa ảnh server Image gởi BBox CarbonTools.Core.BoundingBox Hình chữ nhật bao ảnh Bảng 5.8 Các thuộc tính CarbonTools.Core.Base.DataRaster 5.3.3 Lớp CarbonTools.Core.WMS.HandlerWMS Lớp có tác dụng gởi WMS request lên server nhận kết trả ảnh 103 Chương CarbonTools Các thuộc tính STT Kiểu liệu Ý nghĩa Source CarbonTools.Core Chứa thơng tin request cần WMS.SourceWMS Tên thuộc tính gởi lên server CarbonTools.Core Chứa hình ảnh trả Data Base.DataRaster Synchronous bool Cho biết gởi request theo phương pháp bất đồng hay không Bảng 5.9 Các thuộc tính CarbonTools.Core.WMS.HandlerWMS Phương thức GetMap(): Thực việc gởi GetMap request với thông tin Source nhận kết về, lưu thuộc tính Data 5.3.4 Vi dụ thực GetMap request //Lấy thông tin cần thiết để gởi request sourceWms = new SourceWMS(); sourceWms.Version = “1.1.0”; sourceWms.Address = “http://localhost/OpenGISServer/VNesOpenGISServer.aspx”; sourceWms.BBox = new BoundingBox(Double.Parse(txtMinX.Text),Double.Par se(txtMinY.Text),Double.Parse(txtMaxX.Text),Doubl e.Parse(txtMaxY.Text),cmbCoordinate.Text); sourceWms.BgColor = txtBackColor.BackColor; sourceWms.Format = cmbFormat.Text; sourceWms.Height = Int32.Parse(txtHeight.Text); sourceWms.Width = Int32.Parse(txtWidth.Text); //Chọn Layer cần lấy về, Layer thiết lập thêm có thêm //thuộc tính style cho for (int i = 0;i < SelectedLayers.Count;i++) { 104 Chương CarbonTools if (SelectedStyles[i] != null) sourceWms.Layers.Add(newWMSLayerType(((LayerItem) SelectedLayers[i]).Name,((MapStyle) SelectedStyles[i]).Name)); else sourceWms.Layers.Add(new WMSLayerType(((LayerItem)SelectedLayers [i]).Name,"")); } sourceWms.Transparent = chkTransparent.Checked; Thực gởi request //Tạo HandlerWMS với Source sourceWms handlerWms = new HandlerWMS(sourceWms); handlerWms.ProgressChanged += new EventHandler(handler_GetMapProgressChanged); handlerWms.OperationDone += new EventHandler(handler_GetMapOperationDone); handlerWms.Synchronous = false; handlerWms.GetMap(); //Nhận ảnh trả picMap.Image = ((DataRaster)handlerWms.Data).Map; 5.4 Dùng CarbonTools gởi DescribeFeatureType request Để thực DescribeFeatureType request ta dùng lớp SourceWFS HandlerWFS Hai lớp trình bày phần gởi GetFeature request Khi gởi request, ta cần xác định loại Feature cần mô tả SourceWFS Nhưng kết trả đối tượng XmlDocument, ta phải tự đọc hiểu tài liệu Xml để lấy kết 105 Chương CarbonTools Loại request không hỗ trợ để gởi theo phương pháp bất đồng bộ, phải gởi theo phương pháp đồng Thực gởi DescribeFeatureType request hàm XmlDocument xml = HandlerWFS.GetFeatureSchema(); Sau hàm thực xong lệnh thực Ví dụ thực DescribeFeatureType request SourceWFS source = new SourceWFS(); source.Address = http://localhost/OpenGISServer/VNesOpenGISServer aspx”; source.Layers.Add(new WFSLayerType(“quan”)); source.Layers.Add(new WFSLayerType(“duong”)); HandlerWFS handlerWFS = new HandlerWFS( source); XmlDocument XmlResult = handlerWFS.GetFeatureSchemaXml(); Ta phải tự đọc kết từ XmlDocument này, CarbonTools không hỗ trợ lấy kết từ 5.5 Dùng CarbonTools gởi request Transaction LockFeature Đối với request CarbonTools hỗ trợ việc gởi request hàm: HandlerWFS.SendXml(XmlDocument sentDocument, out XmlDocument receivedDocument) Hàm gởi sentDocument lên server với Address Source lưu kết trả receivedDocument Ta phải tự tạo sentDocument để gởi phải tự đọc receivedDocument trả để lấy kết 106 Chương Cài đặt chương trình OpenGISServer Chương Cài đặt chương trình OpenGIS Server 6.1 Giới thiệu Server cài đặt ASP.NET hỗ trợ loại Request sau: Các Request Web Feature Service: • GetCapabilities • GetFeature • DescribeFeatureType • Transaction • LockFeature Các Request Web Map Service: • GetCapabilities • GetMap 6.2 Tổ chức lưu trữ liệu Hệ quản trị sở liệu sử dụng để cài đặt Server MySQL Version 4.1 Hệ quản trị hỗ trợ tốt cho ứng dụng OpenGIS có hàm, kiểu liệu tn theo đặc tả OpenGIS Chi tiết MySQL với hỗ trợ cho OpenGIS xem thêm phần phụ lục Dữ liệu Server liệu địa lý thành phố Hồ Chí Minh, gồm bảng sau: 107 Chương Cài đặt chương trình OpenGISServer Tên bảng Ý nghĩa bachhoatonghop Lưu trữ thông tin cửa hàng bách hóa tổng hợp thành phố baotang Lưu trữ thông tin bảo tàng thành phố benhvien Lưu trữ thông tin bệnh viện thành phố benxe Lưu trữ thông tin bến xe thành phố buudien Lưu trữ thông tin bưu điện thành phố cho Lưu trữ thông tin chợ thành phố chua Lưu trữ thông tin chùa thành phố diadanh Lưu trữ thông tin địa danh khác thành phố duong Lưu trữ thông tin đường thành phố khachsan Lưu trữ thông tin khách sạn thành phố lanhsuquan Lưu trữ thông tin lãnh quán thành phố nganhang Lưu trữ thông tin ngân hàng thành phố nhatho Lưu trữ thông tin nhà thờ thành phố quan Lưu trữ thông tin quận thành phố sieuthi Lưu trữ thông tin siêu thị thành phố song Lưu trữ thông tin sông thành phố truongcap3 Lưu trữ thông tin trường cấp thành phố truongdaihoc Lưu trữ thông tin trường đại học thành phố tuyensinh Lưu trữ thông tin trường học thành phố ubndquan Lưu trữ thông tin ủy ban nhân dân thành phố ypagesit Lưu trữ thông tin số công ty, tổ chức lockedfeature Lưu trữ đối tượng bị khóa Request LockFeature Bảng 6.1.Các bảng liệu CSDL TpHCM 108 Chương Cài đặt chương trình OpenGISServer Mô tả chi tiết bảng sở liệu Các bảng: bachhoatonghop, baotang, benhvien, benxe, buudien, cho, chua, diadanh, khachsan, lanhsuquan, nganhang, nhatho, sieuthi, truongcap3, truongdaihoc, ubndquan có cấu trúc sau: STT Kiểu liệu Ý nghĩa geographicalshape Kiểu Point (*), lưu trữ Là điểm, cho biết tọa theo định dạng riêng bên độ đối tượng MySQL Tên cột đồ TEN Kiểu chuỗi Tên đối tượng THUOC Kiểu chuỗi Quận mà đối tượng thuộc ID Số nguyên (AutoNumber) Định danh đối tượng, khóa Bảng 6.2.Cấu trúc chung bảng liệu 109 Chương Cài đặt chương trình OpenGISServer Bảng “duong”: STT Tên cột geographicalshape Kiểu liệu Ý nghĩa Kiểu MultiLineString (*), Cho biết điểm tạo lưu trữ theo định dạng nên đường riêng MySQL FNODE_ Số thực TNODE_ Số thực LPOLY_ Số thực RPOLY_ Số thực LENGTH Số thực DUONG_ Số thực DUONG_ID Số thực ROAD_NAME Chuỗi 10 DAI_LO Số thực 11 HO_TRAI Chuỗi 12 HO_PHAI Chuỗi 13 LO_GIOI_MO Số thực 14 LO_GIOI_CU Số thực 15 ID Số nguyên Chiều dài đường Tên đường Định danh đường, khóa Bảng 6.3.Bảng “duong” 110 Chương Cài đặt chương trình OpenGISServer • Bảng “quan” STT Kiểu liệu Ý nghĩa geographicalshape Kiểu Polygon (*), lưu Các điểm tạo nên trữ theo định dạng riêng đường viền xung quanh MySQL Tên cột phạm vi quận DIENTICH Số thực Diện tích quận CHUVI Số thực Chu vi quận TENQUAN Chuỗi Tên quận ID Số nguyên Định danh quận, khóa Bảng 6.4.Bảng “quan” Bảng “song” STT Kiểu liệu Ý nghĩa geographicalshape Kiểu Polygon (*), lưu Các điểm tạo nên trữ theo định dạng riêng đường viền xung quanh MySQL Tên cột phạm vi sơng DIENTICH Số thực Diện tích sơng CHUVI Số thực Chu vi sông TENSONG Chuỗi Tên sông ID Số nguyên Định danh sông, khóa Bảng 6.5.Bảng “song” 111 Chương Cài đặt chương trình OpenGISServer Bảng “tuyensinh” STT Kiểu liệu Ý nghĩa geographicalshape Kiểu Point(*), lưu trữ Là điểm cho biết tọa theo định dạng riêng độ đối tượng MySQL Tên cột đồ TEN Chuỗi Tên trường THUOC Chuỗi Quận mà trường thuộc DIACHI Chuỗi Địa trường DIENTHOAI Chuỗi Số điện thoại trường PHUONG Chuỗi Phường mà trường thuộc MOTA Chuỗi Mô tả trường ID Số nguyên Định danh trường, khóa Bảng 6.6.Bảng “tuyensinh” 112 Chương Cài đặt chương trình OpenGISServer Bảng ypagesit STT Tên cột Kiểu liệu Ý nghĩa geographicalshape Kiểu Point(*), lưu trữ Là điểm cho biết tọa theo định dạng riêng độ công ty tổ MySQL chức thành phố NAME Chuỗi Tên công ty, tổ chức S_NAME Chuỗi Tên viết tắt S_TYPE Chuỗi Loại dịch vụ cung cấp S_EXTADDR Chuỗi Địa S_NUMBER Chuỗi Đường số S_STREET Chuỗi Tên đường S_WARD Chuỗi Phường S_DISTRICT Chuỗi Quận 10 S_PHONE Chuỗi Số điện thoại 11 S_FAX Chuỗi FAX 12 S_WEB Chuỗi WEB 13 S_EMAIL Chuỗi EMAIL 14 S_GTSL Chuỗi Giới thiệu 15 ID Số nguyên Định danh, khóa Bảng 6.7.Bảng “ypagesit” Các loại Feature (FeatureType) Server: Mỗi loại Feature Server tương ứng với bảng sở liệu Cụ thể ta có loại Feature sau: BachHoaTongHop, BaoTang, BenhVien, BenXe, BuuDien, Cho, Chua, DiaDanh, Duong, KhachSan, LanhSuQuan, NganHang, NhaTho, uan, SieuThi, Song, TruongCap3, TruongDaiHoc, TuyenSinh, UBNDQuan, YPageSit 113 Chương Cài đặt chương trình OpenGISServer Các loại Feature: BachHoaTongHop, BaoTang, BenhVien, BenXe, BuuDien, Cho, Chua, DiaDanh, KhachSan, LanhSuQuan, NganHang, NhaTho, SieuThi, TruongCap3, TruongDaiHoc, UBNDQuan Có thuộc tính kiểu liệu cho thuộc tính nên nhóm chung vào nhóm gọi loại Feature “nơi chốn” Các thuộc tính kiểu liệu thuộc tính loại Feature cột kiểu liệu cột bảng tương ứng 6.3 Giao tiếp với client giao thức HTTP Server hỗ trợ giao thức để truyền nhận liệu từ client HTTP GET HTTP POST 6.3.1 Nhận liệu từ client giao thức HTTP GET: Để lấy tham số gởi với URL giao thức ta dùng hàm sau: HttpContext.Current.Request[Tên tham số] Ví dụ: Đối với chuỗi URL: http://localhost/OpenGISServer/VNesOpenGISServer.aspx?SERVICE =WFS&VERSION=1.0.0 Để lấy tham số SERVICE ta viết sau: string s = HttpContext.Current.Request["SERVICE"]; Nếu tên tham số khơng có chuỗi URL hàm trả null 6.3.2 Nhận liệu từ client giao thức HTTP POST Đối với giao thức HTTP POST liệu client gởi lên không thêm vào cuối chuỗi URL mà gởi phần body request Trong NET, phần liệu client gởi lên lưu thuộc tính InputStream lớp Request, Stream 114 Chương Cài đặt chương trình OpenGISServer HttpContext.Current.Request.InputStream Ví dụ lấy liệu client gởi lên, sử dụng lớp StreamReader để đọc liệu từ Stream chuyển từ Stream sang text để xử lí: Stream stream = Request.InputStream; StreamReader read = new StreamReader(stream); string sPostContent = read.ReadToEnd(); 6.3.3 Trả kết cho Client Để trả chuỗi kết cho client, ta dùng hàm Response.Write(s) Tuy nhiên, dùng hàm để trả kết cho client client khơng nhận chuỗi s mà cịn nhận chuỗi HTML kèm Chuỗi HTML gồm tag dùng cho việc hiển thị trang web Tuy nhiên, ứng dụng chuỗi HTML không cần thiết Để server đừng gởi thêm chuỗi HTML này, ta dùng hàm Response.End() sau hàm Response.Write(s) Response.Write(sResponse); Response.End(); 6.4 Đọc liệu từ chuỗi XML Để đọc liệu từ chuỗi Xml ta sử dụng lớp sau: XmlDocument, XmlNode, XmlNodeList, XmlElement, XmlAttributes 6.4.1 Ví dụ đọc tài liệu Xml Xét chuỗi sRequestXml có nội dung sau:

Ngày đăng: 30/07/2014, 17:20

TỪ KHÓA LIÊN QUAN